Re: memory barriers in bus_dmamap_sync() ?

看板FB_current作者時間14年前 (2012/01/12 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串12/13 (看更多)
On Jan 10, 2012, at 2:37 PM, Luigi Rizzo wrote: > I was glancing through manpages and implementations of bus_dma(9) > and i am a bit unclear on what this API (in particular, = bus_dmamap_sync() ) > does in terms of memory barriers. >=20 > I see that the x86/amd64 and ia64 code only does the bounce buffers. > The mips seems to do some coherency-related calls. >=20 > How do we guarantee, say, that a recently built packet is > to memory before issuing the tx command to the NIC ? >=20 In short, i386 and amd64 architectures do bus snooping between the cpu = cache and the memory and bus controllers, and coherency is implicit and = guaranteed. No explicit barriers or flushes are needed for device = mastered DMA. Other CPU architectures have appropriate cache flushes = and memory barriers built into their busdma implementations. Note that = this is a different scenario than device register accesses, which is = essentially host mastered DMA. Scott _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
文章代碼(AID): #1F3SvcQV (FB_current)
討論串 (同標題文章)
文章代碼(AID): #1F3SvcQV (FB_current)