freebsd-dev/sys/amd64
Justin T. Gibbs daf6545e61 Enforce stronger semantics for bus-dma alignment (currently only on amd64).
Now all contiguous regions returned from bus-dma will be aligned to the
alignment constraint and all but the last region are guaranteed to be
a multiple of the alignment in length.  This also means that the relative
alignment of two adjacent bytes in the I/O stream have a difference of 1
even if they are not physically contiguous.

The old code, when needing to perform a copy in order to align data, only
copied the amount of data needed to reach the next page boundary.  This
often left an unaligned end to the segment.  Drivers such as Xen's blkfront
can't deal with such segments.

The downside to this approach is that, once an unaligned region is encountered,
the remainder of the I/O will be bounced.  However, bouncing should be rare.
It is typically caused by non-performance critical userland programs that
don't bother to align their I/O buffers (e.g. bsdlabel).  In-kernel I/O
buffers are always aligned to at least a page boundary.

Reviewed by:	scottl
MFC after:      2 weeks
2010-02-22 17:03:45 +00:00
..
acpica Simplify a macro not to generate unncessary symbols. 2009-12-08 22:38:42 +00:00
amd64 Enforce stronger semantics for bus-dma alignment (currently only on amd64). 2010-02-22 17:03:45 +00:00
compile
conf Adjust style (following the already existing rules) for the newly 2010-02-15 23:44:48 +00:00
ia32 Fix array overflow. This routine is only called from procfs, 2010-01-24 12:13:38 +00:00
include Remove redundant inclusion of <sys/cdefs.h>. 2010-02-20 14:13:47 +00:00
isa Handling all the three clocks (hardclock, softclock, profclock) with the 2010-01-15 16:04:30 +00:00
linux32 Fix some problems with effective mmap() offsets > 32 bits. This was 2009-10-28 20:17:54 +00:00
pci number of cleanups in i386 and amd64 pci md code 2009-09-24 07:11:23 +00:00
Makefile Adjustments to make a tags file a bit more suitable to amd64. 2008-12-01 14:15:10 +00:00