Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 3 Mar 2013 01:15:04 +0100
From:      Olivier Houchard <mlfbsd@ci0.org>
To:        Thomas Skibo <ThomasSkibo@sbcglobal.net>
Cc:        freebsd-arm@freebsd.org
Subject:   Re: A bug in busdma_machdep-v6.c?
Message-ID:  <20130303001504.GA55003@ci0.org>
In-Reply-To: <51329325.7070301@sbcglobal.net>
References:  <51329325.7070301@sbcglobal.net>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130303001504.GA55003>