Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys/dev/ic
David Young wrote:
> On Fri, Oct 20, 2006 at 03:44:00PM +0000, Izumi Tsutsui wrote:
> > I can't think of a good way to avoid race condition between writeback and
> > DMA write against descriptors if cachelinesize > sizeof(struct rtk_desc)...
>
> You must pad struct rtk_desc to the cacheline size to avoid cacheline
> interference. I cannot emphasize enough how important that is!
>
> bus_dma really ought to provide a #define for the machine's cacheline
> size.
Don't you need at least __attribute__((__packed__)) for struct rtk_desc too?
Maybe it's good enough for now but in general you have to expect padding
between struct members and at the end of the struct. So on a 64-bit arch,
the struct may as well look like this in memory:
0: uint32_t rtk_cmdstat
4: pad1
8: uint32_t rtk_vlanctl
12: pad2
16: uint32_t rtk_bufaddr_lo
20: pad3
24: uint32_t rtk_bufaddr_hi
28: pad4
--
Christian
Home |
Main Index |
Thread Index |
Old Index