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