Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Aug 2012 08:12:07 -0700
From:      Tim Kientzle <tim@kientzle.com>
To:        Warner Losh <imp@bsdimp.com>
Cc:        Hans Petter Selasky <hans.petter.selasky@bitfrost.no>, freebsd-arm@freebsd.org, freebsd-mips@freebsd.org, freebsd-arch@freebsd.org
Subject:   Re: Partial cacheline flush problems on ARM and MIPS
Message-ID:  <DA9750F9-7B8A-49AF-8ECA-AC7D565CF3F5@kientzle.com>
In-Reply-To: <A749E691-BF25-4B72-B929-56ABEB10F3E9@bsdimp.com>
References:  <6D83AF9D-577B-4C83-84B7-C4E3B32695FC@bsdimp.com> <zarafa.503b0e81.5c36.1a2f71091ebf9bd2@eric2.bitfrost> <A749E691-BF25-4B72-B929-56ABEB10F3E9@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On Aug 27, 2012, at 6:38 AM, Warner Losh wrote:

>=20
> On Aug 27, 2012, at 12:06 AM, Hans Petter Selasky wrote:
>=20
>> Hi,
>> Correct.
>>=20
>>> We also need some rules about working with buffers obtained from
>>> bus_dmamem_alloc() and external buffers passed to bus_dmamap_load(). =
 I
>>> think the rule should be that a buffer obtained from =
bus_dmamem_alloc(),
>>> or more formally any region of memory mapped by a bus_dmamap_load(), =
is
>>> a single logical object which can only be accessed by one entity at =
a
>>> time.  That means that there cannot be two concurrent DMA operations
>>> happening in different regions of the same buffer, nor can DMA and =
CPU
>>> access be happening concurrently even if in different parts of the
>>> buffer. =20
>>=20
>> Is this something which we can fix using a simple =
__align(USB_DMA_ALIGN) on elements in C-structures which are allowed to =
be DMA loaded.
>=20
> No. I don't think so.  the reason is that you can't define =
USB_DMA_ALGIN to be a constant on MIPS, at least, or I think ARM because =
that's determined at run time.

But don't mbuf structures do pretty much what Hans is suggesting?

Why is mbuf okay?

Tim




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DA9750F9-7B8A-49AF-8ECA-AC7D565CF3F5>