freebsd-skq/sys/arm
cognet 5c7a1afd08 Busdma enhancements, especially for managing small uncacheable buffers.
- Use the new architecture-agnostic buffer pool manager that uses uma(9)
  to manage a set of power-of-2 sized buffers for bus_dmamem_alloc().

- Create pools of buffers backed by both regular and uncacheable memory,
  and use them to handle regular versus BUS_DMA_COHERENT allocations.

- Use uma(9) to manage a pool of bus_dmamap structs instead of local code
  to manage a static list of 500 items (it took 3300 maps to get to
  multi-user mode, so the static pool wasn't much of an optimization).

- Small BUS_DMA_COHERENT allocations no longer waste an entire page per
  allocation, or set pages to uncached when they contain data other than
  DMA buffers.  There's no longer a need for drivers to work around the
  inefficiency by allocing large buffers then sub-dividing them.

- Because we know the alignment and padding of buffers allocated by
  bus_dmamem_alloc() (whether coherent or regular memory, and whether
  obtained from the pool allocator or directly from the kernel) we
  can avoid doing partial cacheline flushes on them.

- Add a fast-out to _bus_dma_could_bounce() (and some comments about
  what the routine really does because the old misplaced comment was wrong).

- Everywhere the dma tag alignment is used, the interpretation is that
  an alignment of 1 means no special alignment.  If the tag is created
  with an alignment argument of zero, store it in the tag as one, and
  remove all the code scattered around that changed 0->1 at point of use.

- Remove stack-allocated arrays of segments, use a local array of two
  segments within the tag struct, or dynamically allocate an array at first
  use if nsegments > 2.  On an arm system I tested, only 5 of 97 tags used
  more than two segments.  On my x86 desktop it was only 7 of 111 tags.

Submitted by:	Ian Lepore <freebsd@damnhippie.dyndns.org>
2012-12-20 00:38:08 +00:00
..
arm Busdma enhancements, especially for managing small uncacheable buffers. 2012-12-20 00:38:08 +00:00
at91 Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
broadcom/bcm2835 Add sysctls for changing GPIO pins function 2012-12-18 22:18:54 +00:00
compile
conf Use NFSCL since NFSCLIENT build is broken at the moment 2012-12-19 20:33:16 +00:00
econa Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
include Properly implement pmap_[get|set]_memattr 2012-12-19 00:24:31 +00:00
lpc Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
mv Allow building LINT by defining both SAMPLE_AT_RESET on the one hand 2012-11-27 01:10:58 +00:00
s3c2xx0 Create a common set_stackptrs in sys/arm/machdep.c. 2012-09-22 06:41:56 +00:00
sa11x0 Create a common set_stackptrs in sys/arm/machdep.c. 2012-09-22 06:41:56 +00:00
tegra Merge the FDT versions of initarm. 2012-11-03 22:39:07 +00:00
ti Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
versatile Add support for QEMU's version of Versatile Platform Board 2012-12-13 23:19:13 +00:00
xscale Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00