svn commit: r217330 - head/sys/x86/x86

Warner Losh imp at bsdimp.com
Thu Jan 13 05:27:40 UTC 2011


On 01/12/2011 14:27, mdf at FreeBSD.org wrote:
> On Wed, Jan 12, 2011 at 1:21 PM, John Baldwin<jhb at freebsd.org>  wrote:
>> On Wednesday, January 12, 2011 4:08:50 pm Matthew D Fleming wrote:
>>> Author: mdf
>>> Date: Wed Jan 12 21:08:49 2011
>>> New Revision: 217330
>>> URL: http://svn.freebsd.org/changeset/base/217330
>>>
>>> Log:
>>>    Fix a brain fart.  Since this file is shared between i386 and amd64, a
>>>    bus_size_t may be 32 or 64 bits.  Change the bounce_zone alignment field
>>>    to explicitly be 32 bits, as I can't really imagine a DMA device that
>>>    needs anything close to 2GB alignment of data.
>> Hmm, we do have devices with 4GB boundaries though.  I think I'd prefer it if
>> you instead if you did this:
>>
>> #if defined(amd64) || defined(PAE)
>> #define SYSCTL_ADD_BUS_SIZE_T           SYSCTL_ADD_UQUAD
>> #else
>> #define SYSCTL_ADD_BUS_SIZE_T           SYSCTL_ADD_UINT
>> #endif
>>
>> and then just used SYSCTL_ADD_BUS_SIZE_T() in the code so we could let the
>> members in the bounce zone retain the same types passed to
>> bus_dma_tag_create().
> But would there be a device that can't start DMA except on a 4GB
> boundary?  I thought that's what this member was for.

You never know about weird, custom devices...

This is  safer and would be more future proof.  its the whole reason we 
have the different types...  And sysctl is too type-poor these days, 
imho, since it goes to the base type and has little facility to go for 
the logical type.  Go on, tell me how to specify a physical address that 
will always work...

Warner


More information about the svn-src-all mailing list