Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Aug 2012 07:25:37 +1000
From:      Peter Jeremy <peter@rulingia.com>
To:        Ian Lepore <freebsd@damnhippie.dyndns.org>
Cc:        arm@freebsd.org, mips@freebsd.org
Subject:   Re: On-stack allocation of DMA S/G lists
Message-ID:  <20120807212537.GB10572@server.rulingia.com>
In-Reply-To: <1344355782.1128.186.camel@revolution.hippie.lan>
References:  <20120703111753.GB72292@server.rulingia.com> <20120708110516.GA38312@server.rulingia.com> <201207120826.05577.jhb@freebsd.org> <201208061026.06328.jhb@freebsd.org> <1344355782.1128.186.camel@revolution.hippie.lan>

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

--/NkBOFFp2J2Af1nK
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On 2012-Aug-07 10:09:42 -0600, Ian Lepore <freebsd@damnhippie.dyndns.org> w=
rote:
>And just for the record, looking at the problem from an even more
>distant vantage... is there really a problem with stack-allocating the
>segments?  On a 64-bit arch the struct is like 16 bytes.  Typical usage
>is to allocate a tag allowing 1 or just a few segments.  Is anyone
>really going to create a tag specifying hundreds of segments that would
>overflow the stack?

The example that led me to study the code was drm(4).  Video cards
typically require fairly large allocations (32MB in my case) but don't
require the RAM to be contiguous - ie it created a tag with 8192
segments in my case.  This may not be relevant to most arm or mips
hosts but drm(4) is MI code that can (theoretically) be built on these
architectures and is a real example where a tag can have many
segments.

>  If they try, wouldn't failing the tag create be good enough?

No.  The caller specifies the hardware limits for the device.  They
should not need to take into account implementation details that
mean the full hardware capabilities are not needed.  We don't fail
a tag create if it specifies that RAM above 4GB can be used when
we don't have any.  Why should be fail a tag create that allows the
use of up to 8192 tags when we only support 1?

--=20
Peter Jeremy

--/NkBOFFp2J2Af1nK
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iEYEARECAAYFAlAhh9EACgkQ/opHv/APuIfXtQCgkPCHfBAMkK0mE0tBmKqiwVva
qO8AnA6dmeOhECocgwzP3A21OG/gEI/i
=OnWm
-----END PGP SIGNATURE-----

--/NkBOFFp2J2Af1nK--



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