About the "USB Cache and busdma usage in USB" thread
Hans Petter Selasky
hselasky at c2i.net
Mon Aug 3 15:59:51 UTC 2009
On Monday 03 August 2009 17:01:37 Rafal Jaworowski wrote:
> Hans,
> So how do you want to proceed with these cache sync issues? We need to
> fix this before 8.0.
Hi,
CC'ed current: We have a case on ARM where bus_dmamap_sync() is not suffient
to update the CPU cache. One reason for this is that USB needs to invalidate
the same memory area multiple times. Busdma sync expects paired operation when
using the PRE and POST flags, from what I understand. I do not consider this
an USB issue, hence Semihalf has got the USB stack working by manually
inserting CPU flush/invalidate calls into usb_pc_cpu_invalidate() and
usb_pc_cpu_flush(). Their other solution however which modifies the
bus_dmamap_sync() flags will break on platforms with more than 4 GByte of
memory.
Maybe Rafal can give a quick summar to new people at the -current list, or see
previous thread on the ARM mailing list.
USB needs a solution where it can call a function given a busdma mapping,
preferably with an offset and length, which handles the cache sync issue and
works with bounce pages on +4GB systems.
--HPS
More information about the freebsd-current
mailing list