Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/dev/ic



On Sun, Dec 09, 2007 at 06:47:16AM +0900, Izumi Tsutsui wrote:
> dyoung%pobox.com@localhost wrote:
> 
> > > > use a nop with I bit set at the end of the tx chain.  This avoids a race
> > > > between status update and clearing the suspend bit on machines which 
> > > > can't
> > > > write data smaller than 32bits at a time.
> > > This should fix PR port-alpha/30560.
> > 
> > It looks to me like this problem can be solved more simply by
> > reading/writing the cb_status and cb_command fields simultaneously as
> > one 32-bit word.
> 
> The problem is that fxp(4) driver has to update cb_command
> bits during the cb_status possibly being updated by fxp chip.
> They are both 16 bits and in the same 32 bit word,
> so 16bit atomic op is required to solve it but it
> isn't available on all alpha (it's the BWX extention
> though all PCI generation alphas might have it,

They don't, see e.g. AXPpci33 (NoName). But you can use load linked/store
conditional instructions to get atomic 16-bit writes. But there would have
to be a MI API for that, possibly unimplementable on some machines other than
alpha.

Pavel



Home | Main Index | Thread Index | Old Index