Home | History | Annotate | Download | only in vax
History log of /src/sys/arch/vax/vax/bus_dma.c
RevisionDateAuthorComments
 1.40  17-Dec-2023  andvar Fix printf format specifier for size. Fixes DEBUG_DMA build option.
 1.39  11-Oct-2022  andvar fix typos in log messages s/bus_dmamem_create/bus_dmamap_create/ and
s/bus_dmamem_load/bus_dmamap_load/.
Inspired by recent similar fixes in OpenBSD.
 1.38  26-Jul-2022  andvar s/functin/function/ in copy pasted comment.
 1.37  24-May-2022  andvar s/entrace/entrance/ in copy pasted comment.
 1.36  21-Nov-2020  thorpej malloc(9) -> kmem(9)
 1.35  27-Apr-2018  maxv branches: 1.35.14;
M_CLUSTER -> M_EXT_CLUSTER
 1.34  12-Nov-2010  uebayasi branches: 1.34.58;
Pull in uvm/uvm.h where UVM's page level interface is used.
 1.33  18-Mar-2009  cegger branches: 1.33.4;
bzero -> memset
 1.32  04-Jun-2008  ad branches: 1.32.6; 1.32.12;
vm_page: put TAILQ_ENTRY into a union with LIST_ENTRY, so we can use both.
 1.31  28-Apr-2008  martin branches: 1.31.2;
Remove clause 3 and 4 from TNF licenses
 1.30  11-Mar-2008  matt branches: 1.30.2; 1.30.4;
Rototill the vax code. Switch to devicet/PRIV_ALLOC. Cleanup vax autoconf
code. Move to prototype definitions. staticfy, constify, avoid casting.
Use device_* accessors.
 1.29  03-Feb-2008  matt branches: 1.29.2; 1.29.6;
Add physaddr support from mbufs (commented out since it doesn't quite work
right yet).
 1.28  31-Mar-2007  matt branches: 1.28.14; 1.28.20;
Don't use an uninitialized lastaddr (initialize it to 0).
 1.27  04-Mar-2007  christos branches: 1.27.2; 1.27.4;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.26  01-Mar-2006  yamt branches: 1.26.20;
merge yamt-uio_vmspace branch.

- use vmspace rather than proc or lwp where appropriate.
the latter is more natural to specify an address space.
(and less likely to be abused for random purposes.)
- fix a swdmover race.
 1.25  11-Dec-2005  christos branches: 1.25.2; 1.25.4; 1.25.6;
merge ktrace-lwp.
 1.24  24-Nov-2005  yamt bus_dmamem_map: honour BUS_DMA_NOWAIT. noted by Manuel Bouyer.
bus_space_map: always do NOWAIT allocation as it used to be before yamt-km.

we have too many copies!
 1.23  01-Apr-2005  yamt branches: 1.23.2; 1.23.8;
merge yamt-km branch.
- don't use managed mappings/backing objects for wired memory allocations.
save some resources like pv_entry. also fix (most of) PR/27030.
- simplify kernel memory management API.
- simplify pmap bootstrap of some ports.
- some related cleanups.
 1.22  09-Mar-2005  matt Add a dm_maxsegsz public member to bus_dmamap_t. This allows a user of the API
to select the maximum segment size for each bus_dmamap_load (up to the maxsegsz
supplied to bus_dmamap_create). dm_maxsegsz is reset to the value supplied to
bus_dmamap_create when the dmamap is unloaded.
 1.21  28-Nov-2004  thorpej branches: 1.21.4; 1.21.6;
bus_dmamap_load_mbuf(): Skip zero-length mbufs.
kern/24811
 1.20  15-Jul-2003  lukem __KERNEL_RCSID()
 1.19  29-Jun-2003  fvdl branches: 1.19.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.18  28-Jun-2003  darrenr Pass lwp pointers throughtout the kernel, as required, so that the lwpid can
be inserted into ktrace records. The general change has been to replace
"struct proc *" with "struct lwp *" in various function prototypes, pass
the lwp through and use l_proc to get the process pointer when needed.

Bump the kernel rev up to 1.6V
 1.17  01-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.16  01-Dec-2002  matt Fix inconsistencies in various definitions of avail_*, virtual_*, and
proc0paddr.
 1.15  25-Sep-2002  thorpej Don't include <sys/map.h>.
 1.14  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.13  10-Sep-2001  chris branches: 1.13.4; 1.13.12;
Update pmap_update to now take the updated pmap as an argument.
This will allow improvements to the pmaps so that they can more easily defer expensive operations, eg tlb/cache flush, til the last possible moment.

Currently this is a no-op on most platforms, so they should see no difference.

Reviewed by Jason.
 1.12  26-May-2001  chs branches: 1.12.2; 1.12.4;
replace vm_page_t with struct vm_page *.
 1.11  24-Apr-2001  thorpej Sprinkle pmap_update() calls after calls to:
- pmap_enter()
- pmap_remove()
- pmap_protect()
- pmap_kenter_pa()
- pmap_kremove()
as described in pmap(9).

These calls are relatively conservative. It may be possible to
optimize these a little more.
 1.10  21-Mar-2001  soren s/vm_page_alloc_memory/uvm_pglistalloc/ in panic message.
 1.9  29-Jun-2000  mrg branches: 1.9.2;
remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.8  26-Jun-2000  mrg remove/move more mach vm header files:

<vm/pglist.h> -> <uvm/uvm_pglist.h>
<vm/vm_inherit.h> -> <uvm/uvm_inherit.h>
<vm/vm_kern.h> -> into <uvm/uvm_extern.h>
<vm/vm_object.h> -> nothing
<vm/vm_pager.h> -> into <uvm/uvm_pager.h>

also includes a bunch of <vm/vm_page.h> include removals (due to redudancy
with <vm/vm.h>), and a scattering of other similar headers.
 1.7  26-Jun-2000  simonb Change the kernel mmap interface so that the offset to map is an
"off_t" and the return value is a "paddr_t" to allow mappings
at offsets past 2^31 bytes. Somewhat inspired by FreeBSD, which
only changed the offset to a "vm_offset_t".

Includes updates for the i386, pc532 and sh3 mmmmap from Jason Thorpe.
 1.6  04-Mar-2000  matt branches: 1.6.4;
expunge vm_offset_t and vm_size_t.
add bus_dma support for the vs4000 dma translation map (sgmap).
enhance the vsbus for the lance to work with it.
remove the sgmap init code from ka46/48/49.c
 1.5  13-Nov-1999  thorpej Update for pmap_enter() API change. No functional difference.
 1.4  03-Aug-1999  ragge branches: 1.4.2; 1.4.4; 1.4.8;
Add a "generic" struct for dma without anything fancy.
 1.3  08-Jul-1999  thorpej Change the pmap_extract() interface to:
boolean_t pmap_extract(pmap_t, vaddr_t, paddr_t *);
This makes it possible for the pmap to map physical address 0.
 1.2  25-May-1999  thorpej branches: 1.2.2;
bus_dmamem_map() maps DMA safe memory, which is usually one or more
managed pages, into KVA space. Since the pages are managed, we should
use pmap_enter(), not pmap_kenter_pa().

Also, when entering the mappings, enter with an access_type of
VM_PROT_READ | VM_PROT_WRITE. We do this for a couple of reasons:

(1) On systems that have H/W mod/ref attributes, the hardware
may not be able to track mod/ref done by a bus master.

(2) On systems that have to do mod/ref emulation, this prevents
a mod/ref page fault from potentially happening while in an
interrupt context, which can be problematic.

This latter change is fairly important if we ever want to be able to
transfer DMA-safe memory pages to anonymous memory objects; we will need
to know that the pages are modified, or else data could be lost!

Note that while the pages are unowned (i.e. "just DMA-safe memory pages"),
they won't consume any swap resources, as the mappings are wired, and
the pages aren't on the active or inactive queues.
 1.1  14-Apr-1999  ragge First towards use of bus.h routines on vax. Allocate DMA memory for
LANCE chip on vaxstations.
 1.2.2.2  02-Aug-1999  thorpej Update from trunk.
 1.2.2.1  21-Jun-1999  thorpej Sync w/ -current.
 1.4.8.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.4.4.1  15-Nov-1999  fvdl Sync with -current
 1.4.2.2  27-Mar-2001  bouyer Sync with HEAD.
 1.4.2.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.6.4.1  30-Jun-2000  simonb Pull up mmap paddr_t/off_t changes from trunk.
 1.9.2.2  21-Jun-2001  nathanw Catch up to -current.
 1.9.2.1  09-Apr-2001  nathanw Catch up with -current.
 1.12.4.1  01-Oct-2001  fvdl Catch up with -current.
 1.12.2.3  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.12.2.2  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.12.2.1  13-Sep-2001  thorpej Update the kqueue branch to HEAD.
 1.13.12.1  15-Jul-2002  gehenna catch up with -current.
 1.13.4.4  11-Dec-2002  thorpej Sync with HEAD.
 1.13.4.3  18-Oct-2002  nathanw Catch up to -current.
 1.13.4.2  20-Jun-2002  nathanw Catch up to -current.
 1.13.4.1  10-Sep-2001  nathanw file bus_dma.c was added on branch nathanw_sa on 2002-06-20 03:42:18 +0000
 1.19.2.8  11-Dec-2005  christos Sync with head.
 1.19.2.7  01-Apr-2005  skrll Sync with HEAD.
 1.19.2.6  19-Feb-2005  skrll Don't deref a NULL struct lwp *. This shouldn't happen, but...
 1.19.2.5  18-Dec-2004  skrll Sync with HEAD.
 1.19.2.4  21-Sep-2004  skrll Fix the sync with head I botched.
 1.19.2.3  18-Sep-2004  skrll Sync with HEAD.
 1.19.2.2  03-Aug-2004  skrll Sync with HEAD
 1.19.2.1  02-Jul-2003  darrenr Apply the aborted ktrace-lwp changes to a specific branch. This is just for
others to review, I'm concerned that patch fuziness may have resulted in some
errant code being generated but I'll look at that later by comparing the diff
from the base to the branch with the file I attempt to apply to it. This will,
at the very least, put the changes in a better context for others to review
them and attempt to tinker with removing passing of 'struct lwp' through
the kernel.
 1.21.6.2  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.21.6.1  12-Feb-2005  yamt use new apis.
 1.21.4.1  29-Apr-2005  kent sync with -current
 1.23.8.1  29-Nov-2005  yamt sync with head.
 1.23.2.4  17-Mar-2008  yamt sync with head.
 1.23.2.3  04-Feb-2008  yamt sync with head.
 1.23.2.2  03-Sep-2007  yamt sync with head.
 1.23.2.1  21-Jun-2006  yamt sync with head.
 1.25.6.1  22-Apr-2006  simonb Sync with head.
 1.25.4.1  09-Sep-2006  rpaulo sync with head
 1.25.2.3  18-Feb-2006  yamt actually adapt _bus_dmamap_load_buffer.
 1.25.2.2  18-Feb-2006  yamt remove a now unused variable.
 1.25.2.1  18-Feb-2006  yamt adapt vax.
 1.26.20.2  15-Apr-2007  yamt sync with head.
 1.26.20.1  12-Mar-2007  rmind Sync with HEAD.
 1.27.4.1  11-Jul-2007  mjf Sync with head.
 1.27.2.1  10-Apr-2007  ad Sync with head.
 1.28.20.1  18-Feb-2008  mjf Sync with HEAD.
 1.28.14.1  23-Mar-2008  matt sync with HEAD
 1.29.6.3  05-Jun-2008  mjf Sync with HEAD.

Also fix build.
 1.29.6.2  02-Jun-2008  mjf Sync with HEAD.
 1.29.6.1  03-Apr-2008  mjf Sync with HEAD.
 1.29.2.1  24-Mar-2008  keiichi sync with head.
 1.30.4.2  04-May-2009  yamt sync with head.
 1.30.4.1  16-May-2008  yamt sync with head.
 1.30.2.2  17-Jun-2008  yamt sync with head.
 1.30.2.1  18-May-2008  yamt sync with head.
 1.31.2.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.32.12.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.32.6.1  28-Apr-2009  skrll Sync with HEAD.
 1.33.4.1  05-Mar-2011  rmind sync with head
 1.34.58.1  02-May-2018  pgoyette Synch with HEAD
 1.35.14.1  14-Dec-2020  thorpej Sync w/ HEAD.

RSS XML Feed