A bug in busdma_machdep-v6.c?

Olivier Houchard mlfbsd at ci0.org
Sun Mar 3 00:15:29 UTC 2013


On Sat, Mar 02, 2013 at 04:02:45PM -0800, Thomas Skibo wrote:
> 
> Hello.
> 
> I've been trying to solve a tcp checksum bug and I think I see a problem 
> in _bus_dmamap_load_buffer():
> 
> In the following code bit, a segment is tacked onto the previous 
> segment's slist[] entry if it is adjacent to the previous segment in 
> virtual memory.  That's okay if all cache operations use virtual 
> addresses but if the level 2 cache operations need physical addresses 
> (ARM_L2_PIPT), the physical address of the second segment is lost.  I 
> don't think bus_dmamap_sync() is properly wb/invalidating the second 
> segment from the level 2 cache.
> 

Hi Thomas,

That makes sense. I'll commit your patch tomorrow if nobody else does it before.

Thanks !

Olivier


More information about the freebsd-arm mailing list