Home | History | Annotate | Download | only in pci
History log of /src/sys/arch/alpha/pci/cia_dma.c
RevisionDateAuthorComments
 1.38  09-Feb-2024  andvar fix spelling mistakes, mainly in comments and log messages.
 1.37  19-Jul-2021  thorpej For CIA/Pyxis and Tsunami/Typhoon/Titan, save the firmware's idea of
the DMA window configuration, and restore it at shutdown time. Make
sure that all assumptions we've made on the firmware's configuration
of DMA windows is correct.
 1.36  18-Jul-2021  thorpej Oops, pass the correct bus_dma_tag_t to the "hi" sgmap init function.
 1.35  17-Jul-2021  thorpej Back in rev 1.21, mhitch@ fixed an issue with his 1.5GB RAM PWS 500au
by using a fall-back to the ISA DMA window if DMA was out of range for
the 1G @ 1G PCI DMA window. Alas, the ISA DMA window is pretty small
(8M @ 8M), and it's possible to starve it with PCI devices that might
have, for example, large control data structures there.

So, instead, if the system has more than 1G of RAM, use Window 3
(previously unused) as a SGMAP window 1G @ 3G, and set that as the
fall-back if the direct-mapped window fails.
 1.34  04-Jul-2021  thorpej Remove unnecessary #include <sys/malloc.h>
 1.33  18-Jun-2021  thorpej Wrap a couple of long lines.
 1.32  05-May-2021  thorpej Moar static.
 1.31  11-Oct-2020  thorpej branches: 1.31.6;
Add some bus_dma instrumentation.
 1.30  10-Oct-2020  thorpej G/C alpha_XXX_dmamap() / alpha_XXX_dmamap_or. They haven't been needed
for a long time.
 1.29  04-Nov-2013  christos mark variables used
 1.28  06-Feb-2012  matt branches: 1.28.6; 1.28.10;
Do a minor cleanup of alpha (this will make applying pullups post branching
easier).
u_int{8,16,32,64}_t -> uint{*}_t
Change all old-style definitions to C89 prototypes.
Whitespace cleanup.
Constification in db_disasm.c
 1.27  01-Jul-2011  dyoung branches: 1.27.2; 1.27.6;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.26  15-Dec-2010  matt Remove unneeded includes of <uvm/uvm_extern.h>
 1.25  18-Mar-2009  cegger branches: 1.25.4;
Ansify function definitions w/o arguments. Generated with sed.
 1.24  14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.23  14-Mar-2009  dsl Remove all the __P() from sys (excluding sys/dist)
Diff checked with grep and MK1 eyeball.
i386 and amd64 GENERIC and sys still build.
 1.22  28-Apr-2008  martin branches: 1.22.8; 1.22.14;
Remove clause 3 and 4 from TNF licenses
 1.21  14-Mar-2007  mhitch branches: 1.21.36; 1.21.38; 1.21.40;
Contrary to the comment in cia_dma_get_tag(), there are machines with cia
that have over 1.0G. Allow direct dma requests to fall back to SGMAPs.
my PWS 500au with 1.5G of memory now works with dma operations.
 1.20  11-Dec-2005  christos branches: 1.20.24; 1.20.26; 1.20.30; 1.20.32;
merge ktrace-lwp.
 1.19  04-Dec-2003  keihan branches: 1.19.14; 1.19.16;
netbsd.org -> NetBSD.org

All "netbsd.org" is now gone from src/sys/arch.
 1.18  19-Jul-2001  thorpej branches: 1.18.2; 1.18.22;
ALCOR/ALCOR2/PYXIS have a 256-byte DMA prefetch threshold.
 1.17  03-Jan-2001  thorpej branches: 1.17.4;
The code that creates/destroys SGMAP DMA maps is the same; put it
in a common place and share it.
 1.16  29-Jun-2000  mrg remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.15  06-Feb-2000  thorpej If we have a Pyxis with the DMA page crossing bug, don't allow coalescing
of adjacent DMA segments.

XXX This is still not perfect... but making it perfect will probably
require additions to the bus_dma interface and the ISA autoconfiguration
interface.
 1.14  25-Jan-2000  thorpej Fix a fatal typo in a Pyxis SGMAP TLB bug workaround. Noticed by
Jeff Roberson <nomad@nop.aliensystems.com>.
 1.13  14-Aug-1998  thorpej branches: 1.13.6; 1.13.12;
vm_offset_t -> {paddr_t,vaddr_t}, vm_size_t -> vsize_t
 1.12  23-Jun-1998  thorpej Duuuh! Align the SGMAP page tables to 32K, not 32M.
 1.11  06-Jun-1998  thorpej Don't call *_dma_init() twice; there's no need to. Just do it in *attach().
 1.10  04-Jun-1998  thorpej Deal with a hardware bug in Pass 1 and Pass 2 Pyxis chips. Basically,
the scatter/gather TLB cannot be invalidated on these chips. So, to
work around this, we configure the otherwise unsed DMA Window 2 as a
2M SGMAP window at 128M, point all of its page table entries at the
DMA spill page, and, when the TLB is to be invalidated, put the PCI bus
into loopback mode, and create a target hit on Window 2 every 64k for
the number of TLB entries (plus a few ... it seems to not work unless
we read a few extra times), forcing out old TLB entries to make room for
the new, dummy target hits.
 1.9  03-Jun-1998  thorpej Allow the DMA tag to specify a boundary contraint. If the device has a
more strict boundary, the map will use it, otherwise the map will inherit
the tag's, unless the tag's constraint is 0 (no boundary constraint).
 1.8  13-May-1998  thorpej Add support for chaining DMA windows together, for falling back on
SGMAPs if a direct-mapped window fails.
 1.7  07-May-1998  thorpej Simplify the direct-mapped DMA case somewhat by adding a window base
member to the DMA tag, and calling the direct-mapped back-ends directly,
rather than through chipset-specific front-ends which pass the window
base as an additional argument.
 1.6  04-Feb-1998  thorpej Use the common _bus_dmamap_sync() as the _dmamap_sync method in the
bus_dma_tag_t.
 1.5  17-Jan-1998  thorpej Put SGMAP-related stuff in the DMA map structure directly, rather than
indirecting through a pointer.
 1.4  17-Jan-1998  thorpej Fix initialization of DMA window 0:
- Make sure the page table is aligned to at least 32k.
- Don't consider the MEMCS signal when checking for a window hit.
 1.3  02-Sep-1997  thorpej Nuke the idea of <machine/options.h>. It completely defeats the purpose
of fine-grain option dependencies.
 1.2  06-Jun-1997  thorpej branches: 1.2.2; 1.2.6;
Pull thorpej-bus-dma branch into mainline.
 1.1  23-May-1997  thorpej branches: 1.1.2;
file cia_dma.c was initially added on branch thorpej-bus-dma.
 1.1.2.4  06-Jun-1997  thorpej Update for pci_pte*_sgmap -> pci_sgmap_pte* change.
 1.1.2.3  05-Jun-1997  thorpej When invalidating the SGMAP TLB, do a memory barrier synch before writing
the TBIA register, as well as after.
 1.1.2.2  03-Jun-1997  thorpej - Adopt to new common sgmap code.
- Fix several bugs, and reduce housekeeping overhead.
 1.1.2.1  23-May-1997  thorpej Add chipset-specific DMA functions. For all of these chipsets, we have
one 1G direct-mapped DMA window at 1G and one 8M SGMAP-mapped DMA window
at 8M.
 1.2.6.1  04-Sep-1997  thorpej Update marc-pcmcia branch from trunk.
 1.2.2.2  07-Jun-1997  cgd syng thorpej-bus-dma changes with alpha-nwscons branch
 1.2.2.1  06-Jun-1997  cgd file cia_dma.c was added on branch alpha-nwscons on 1997-06-07 04:43:14 +0000
 1.13.12.2  05-Jan-2001  bouyer Sync with HEAD
 1.13.12.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.13.6.2  06-Feb-2000  he Pull up revision 1.15 (requested by thorpej):
Fix host->device DMA data corruption problem on DEC Miata
workstations.
 1.13.6.1  31-Jan-2000  he Pull up revision 1.14 (requested by thorpej):
Fix a fatal typo in a Pyxis SGMAP TLB bug workaround.
 1.17.4.1  03-Aug-2001  lukem update to -current
 1.18.22.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.18.22.2  18-Sep-2004  skrll Sync with HEAD.
 1.18.22.1  03-Aug-2004  skrll Sync with HEAD
 1.18.2.2  19-Jul-2001  thorpej ALCOR/ALCOR2/PYXIS have a 256-byte DMA prefetch threshold.
 1.18.2.1  19-Jul-2001  thorpej file cia_dma.c was added on branch nathanw_sa on 2001-07-19 18:42:43 +0000
 1.19.16.1  03-Sep-2007  yamt sync with head.
 1.19.14.1  31-Mar-2007  bouyer Pull up following revision(s) (requested by mhitch in ticket #1686):
sys/arch/alpha/pci/cia_dma.c: revision 1.21
Contrary to the comment in cia_dma_get_tag(), there are machines with cia
that have over 1.0G. Allow direct dma requests to fall back to SGMAPs.
my PWS 500au with 1.5G of memory now works with dma operations.
 1.20.32.1  11-Jul-2007  mjf Sync with head.
 1.20.30.1  10-Apr-2007  ad Sync with head.
 1.20.26.1  24-Mar-2007  yamt sync with head.
 1.20.24.1  26-Mar-2007  jdc Pull up revision 1.21 (requested by mhitch in ticket #520).

Contrary to the comment in cia_dma_get_tag(), there are machines with cia
that have over 1.0G. Allow direct dma requests to fall back to SGMAPs.
my PWS 500au with 1.5G of memory now works with dma operations.
 1.21.40.2  04-May-2009  yamt sync with head.
 1.21.40.1  16-May-2008  yamt sync with head.
 1.21.38.1  18-May-2008  yamt sync with head.
 1.21.36.1  02-Jun-2008  mjf Sync with HEAD.
 1.22.14.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.22.8.1  28-Apr-2009  skrll Sync with HEAD.
 1.25.4.1  05-Mar-2011  rmind sync with head
 1.27.6.1  18-Feb-2012  mrg merge to -current.
 1.27.2.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.27.2.1  17-Apr-2012  yamt sync with head
 1.28.10.1  18-May-2014  rmind sync with head
 1.28.6.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.31.6.2  01-Aug-2021  thorpej Sync with HEAD.
 1.31.6.1  13-May-2021  thorpej Sync with HEAD.

RSS XML Feed