freebsd-skq/sys/x86
Ian Lepore 53f93ed3ff Fix an alignment check that is wrong in half the busdma implementations.
This will enable the elimination of a workaround in the USB driver that
artifically allocates buffers twice as big as they need to be (which
actually saves memory for very small buffers on the buggy platforms).

When deciding how to allocate a dma buffer, armv4, armv6, mips, and
x86/iommu all correctly check for the tag alignment <= maxsize as enabling
simple uma/malloc based allocation.  Powerpc, sparc64, x86/bounce, and
arm64/bounce were all checking for alignment < maxsize; on those platforms
when alignment was equal to the max size it would fall back to page-based
allocators even for very small buffers.

This change makes all platforms use the <= check.  It should be noted that
on all platforms other than arm[v6] and mips, this check is relying on
undocumented behavior in malloc(9) that if you allocate a block of a given
size it will be aligned to the next larger power-of-2 boundary.  There is
nothing in the malloc(9) man page that makes that explicit promise (but the
busdma code has been relying on this behavior all along so I guess it works).

Arm and mips code uses the allocator in kern/subr_busdma_buffalloc.c, which
does explicitly implement this promise about size and alignment.  Other
platforms probably should switch to the aligned allocator.
2015-11-02 23:37:19 +00:00
..
acpica Add ASUS Sandybridge laptops to the similar x2apic disable logic 2015-09-16 01:44:11 +00:00
bios Add missing header needed by free(9). 2012-09-30 15:42:20 +00:00
cpufreq Pull in r267961 and r267973 again. Fix for issues reported will follow. 2014-06-28 03:56:17 +00:00
include xen: Code cleanup and small bug fixes 2015-10-21 10:44:07 +00:00
iommu dmar_ctx_dtr() does not exist since r284869. Remove the static function 2015-09-22 16:50:59 +00:00
isa Set the initial system time to a sane (as in: not end of 21st century) value when 2015-06-29 17:02:09 +00:00
pci Add domain support to PCI bus allocation 2015-09-16 23:34:51 +00:00
x86 Fix an alignment check that is wrong in half the busdma implementations. 2015-11-02 23:37:19 +00:00
xen xen: Add missing semi-colon for BITSET_DEFINE() 2015-10-24 19:04:55 +00:00