Home | History | Annotate | Download | only in integrator
History log of /src/sys/arch/evbarm/integrator/int_bus_dma.c
RevisionDateAuthorComments
 1.19  20-Dec-2023  thorpej Remove unnecessary <sys/malloc.h>.
 1.18  18-Sep-2012  matt Remove bounce buffer support since there is now generic bounce buffer support
 1.17  04-Nov-2010  uebayasi branches: 1.17.8; 1.17.18;
Fix DEBUG kernel build.
 1.16  05-Mar-2007  matt branches: 1.16.64; 1.16.66;
Use uint8_t * instead of void */char * for ptr arithmetic.
 1.15  04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.14  11-Dec-2005  christos branches: 1.14.26;
merge ktrace-lwp.
 1.13  06-Sep-2003  rearnsha branches: 1.13.16;
Add bouncing support
 1.12  15-Jul-2003  lukem __KERNEL_RCSID()
 1.11  17-Aug-2002  thorpej branches: 1.11.6;
Use separate function pointers for dmamap_sync pre- vs post- operations.
Change the bus_dmamap_sync() macro to test the ops argument against pre-
and post- constants. The compiler will optimize out dead code because
of the constants. Since post- operations are not needed on ARM (except
for ISA bounce buffers), this eliminate a large number of function calls
which are noops, each of which cost at least 6 cycles just in the call
and return overhead (not to mention whatever other useless work the
compiler decides to do in the callee).
 1.10  31-Jul-2002  thorpej Overhaul how DMA ranges work in the ARM bus_dma implementation.

A new "arm32_dma_range" structure now describes a DMA window, with
a system address base, bus address base, and length. In addition to
providing info about which memory regions are legal for DMA, the new
structure provides address translation support, as well.

As before, if a tag does not list any ranges, then all addresses are
considered valid, and no DMA address translation is performed.

This allows us to remove a large chunk of code which was duplicated and
tweaked slightly (to do the address translation) from the stock ARM
bus_dma in the XScale IOP and ARM Integrator ports.

Test compiled on all ARM platforms, test booted on Intel IQ80321 and Shark.
 1.9  28-Jul-2002  thorpej Change the way that DMA map syncs are done. Instead of remembering
the virtual address for each DMA segment, just cache a pointer to the
original buffer/buftype used to load the DMA map, and use that. This
lets us shrink the bus_dma_segment_t down from 12 bytes to 8, and the
cache flushing is also more efficient.

Tested on an i80321 -- changes to others are mechanical.
 1.8  02-Jun-2002  drochner move initialization of the "struct pglist" returned by uvm_pglistalloc()
from the calling code into uvm_pglistalloc() itself for consistency
and easier error handling
 1.7  05-Apr-2002  thorpej branches: 1.7.2; 1.7.4;
* Rewrite the 32-bit ARM pte.h based on the ARM architecture manual.
Significant cleanup, here, including better PTE bit names.
* Add XScale PTE extensions (ECC enable, write-allocate cache mode).
* Mechanical changes everywhere else to update for new pte.h. While
doing this, two bugs (as a result of typos) were fixed in

arm/arm32/bus_dma.c
evbarm/integrator/int_bus_dma.c
 1.6  24-Mar-2002  thorpej * arm_byte_to_page() -> arm_btop()
* arm_page_to_byte() -> arm_ptob()
 1.5  25-Jan-2002  thorpej Overhaul bus_dmamap_sync for the ARM:
* Track which process (XXX really, vmspace) owns the mapping. When
we sync the map, if the mapping doesn't belong to the kernel or to
the current process (XXX really, vmspace), then no cache fobbing
is necessary, since the cache is Wb-Inv'd on context switch (XXX need
to revisit this when we support FCSE).
* Be smarter about which cache operation we do when sync'ing the map:
- PREREAD -- Invalidate D$ (XXX right now, we actually do Wb-Inv)
- PREWRITE -- Write-back D$ (note, we do NOT invalidate here)
- PREREAD|PREWRITE -- Wb-Inv D$

More work is needed here. In particular, a version for CPUs
with write-through caches should be provided, to eliminate
the write-back steps (which are noops on such CPUs, but skipping
two branches would be nice).
 1.4  25-Jan-2002  thorpej Overhaul of the ARM cache code. This is mostly a simplification
pass. Rather than providing a whole slew of cache operations that
aren't ever used, distill them down to some useful primitives:

icache_sync_all Synchronize I-cache
icache_sync_range Synchronize I-cache range

dcache_wbinv_all Write-back and Invalidate D-cache
dcache_wbinv_range Write-back and Invalidate D-cache range
dcache_inv_range Invalidate D-cache range
dcache_wb_range Write-back D-cache range

idcache_wbinv_all Write-back and Invalidate D-cache,
Invalidate I-cache
idcache_wbinv_range Write-back and Invalidate D-cache,
Invalidate I-cache range

Note: This does not yet include an overhaul of the actual asm files
that implement the primitives. Instead, we've provided a safe default
for each CPU type, and the individual CPU types can now be optimized
one at a time.
 1.3  26-Nov-2001  thorpej branches: 1.3.2;
Don't include <machine/psl.h> directly.
 1.2  23-Nov-2001  thorpej Use <arm/cpufunc.h>, not <machine/cpufunc.h>.
 1.1  27-Oct-2001  rearnsha branches: 1.1.2;
Basic support for the Integrator/AP board.
 1.1.2.8  19-Aug-2002  thorpej Partial (ARM only) sync with trunk -- significant performance improvements
for XScale-based systems.
 1.1.2.7  01-Aug-2002  nathanw Catch up to -current.
 1.1.2.6  20-Jun-2002  nathanw Catch up to -current.
 1.1.2.5  17-Apr-2002  nathanw Catch up to -current.
 1.1.2.4  01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.1.2.3  28-Feb-2002  nathanw Catch up to -current.
 1.1.2.2  08-Jan-2002  nathanw Catch up to -current.
 1.1.2.1  27-Oct-2001  nathanw file int_bus_dma.c was added on branch nathanw_sa on 2002-01-08 00:24:26 +0000
 1.3.2.5  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.3.2.4  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.3.2.3  11-Feb-2002  jdolecek Sync w/ -current.
 1.3.2.2  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.3.2.1  26-Nov-2001  thorpej file int_bus_dma.c was added on branch kqueue on 2002-01-10 19:42:32 +0000
 1.7.4.1  07-Dec-2002  he Pull up revision 1.9 (requested by thorpej in ticket #568):
Change the way DMA map syncs are done. Instead of remembering
the virtual address for each DMA segment, just cache a
pointer to the original buffer/buftype used to load the
DMA map, and use that. Shrinks bus_dma_segment_t from 12
to 8 bytes, and the cache flushing is also more efficient.
 1.7.2.2  30-Aug-2002  gehenna catch up with -current.
 1.7.2.1  14-Jul-2002  gehenna catch up with -current.
 1.11.6.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.11.6.2  18-Sep-2004  skrll Sync with HEAD.
 1.11.6.1  03-Aug-2004  skrll Sync with HEAD
 1.13.16.1  03-Sep-2007  yamt sync with head.
 1.14.26.1  12-Mar-2007  rmind Sync with HEAD.
 1.16.66.1  05-Mar-2011  rmind sync with head
 1.16.64.1  06-Nov-2010  uebayasi Sync with HEAD.
 1.17.18.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.17.8.1  30-Oct-2012  yamt sync with head

RSS XML Feed