Commit Graph

39 Commits

Author SHA1 Message Date
thorpej
5edc9ef4a4 When computing the segment size, consider the maximum segment
size in the DMA map.
2000-07-17 04:47:56 +00:00
mrg
80bb8049ba remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h> 2000-06-29 09:02:51 +00:00
mrg
2f159a1bac 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.
2000-06-26 14:20:25 +00:00
simonb
889c658b5b 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.
2000-06-26 04:55:19 +00:00
thorpej
0c4f8a876b Implement an internal DMA map flag which prevents coalescing of
adjacent DMA segments.
2000-02-06 01:23:30 +00:00
mjacob
e1598bac13 fix misspelling 2000-01-20 17:16:25 +00:00
thorpej
fd6f6e85b2 Slight changes so that bounce buffers can be implemented for the Jensen. 1999-12-08 23:40:35 +00:00
thorpej
abff7cb610 Update for pmap_enter() API change. 1999-11-13 00:27:21 +00:00
chs
f3a668ed84 eliminate the PMAP_NEW option by making it required for all ports.
ports which previously had no support for PMAP_NEW now implement
the pmap_k* interfaces as wrappers around the non-k versions.
1999-09-12 01:16:55 +00:00
thorpej
3ebbe095e0 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.
1999-07-08 18:05:21 +00:00
thorpej
5832084eaf 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.
1999-05-25 23:14:03 +00:00
mycroft
9c6b797796 Changes for modified pmap_enter() API:
* Map the message buffer with access_type = VM_PROT_READ|VM_PROT_WRITE `just
  because'.
* Map the file system buffers with access_type = VM_PROT_READ|VM_PROT_WRITE to
  avoid possible problems with pagemove().
* Do not use VM_PROT_EXEC with either of the above.
* Map pages for /dev/mem with access_type = prot.  Also, DO NOT use
  pmap_kenter() for this, as we DO NOT want to lose modification information.
* Map pages in dumpsys() with VM_PROT_READ.
* Map pages in m68k mappedcopyin()/mappedcopyout() and writeback() with
  access_type = prot.
* For now, bus_dma*(), pmap_map(), vmapbuf(), and similar functions still use
  access_type = 0.  This should probably be revisited.
1999-03-26 23:41:25 +00:00
mrg
d2397ac5f7 completely remove Mach VM support. all that is left is the all the
header files as UVM still uses (most of) these.
1999-03-24 05:50:49 +00:00
thorpej
2671c2fa42 Make bus_dmamap_load_uio() work, from Kevin Lahey <kml@nas.nasa.gov>. 1998-09-21 22:51:56 +00:00
thorpej
e7a551d60e Some internal cleanup; pass a tag around, not individual arguments. 1998-08-17 20:15:55 +00:00
thorpej
d5df55112a vm_offset_t -> {paddr_t,vaddr_t}, vm_size_t -> vsize_t 1998-08-14 16:50:00 +00:00
thorpej
2fc1260cc0 Implement bus_dmamap_load_uio(). 1998-07-17 21:09:59 +00:00
thorpej
d6041754c2 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).
1998-06-03 18:25:53 +00:00
thorpej
50be447da3 Sync the bus_dmamap_load back-end functions between alpha and i386. (only
slight, unnecessary differences)
1998-06-03 04:15:05 +00:00
matt
5d6bc16daa more optimizations 1998-05-29 15:55:34 +00:00
matt
164da176e8 Add boundary checks to _bus_dma_load... 1998-05-29 15:25:07 +00:00
thorpej
49aa171ab9 Add support for chaining DMA windows together, for falling back on
SGMAPs if a direct-mapped window fails.
1998-05-13 21:21:16 +00:00
thorpej
4665241bf8 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.
1998-05-07 20:09:37 +00:00
thorpej
6bbfd3e9ff Use pmap_kenter_pa() in _bus_dmamem_map() if PMAP_NEW. 1998-03-17 04:59:36 +00:00
thorpej
58509e699f Add support for UVM. 1998-02-24 07:38:01 +00:00
thorpej
c26f962957 Use kernel_map in bus_dmamem_{map,free}(). 1998-02-11 03:08:31 +00:00
thorpej
30aa56fc66 Use M_DMAMAP where appropriate. 1998-02-11 01:37:51 +00:00
thorpej
b1d8bffad8 Flush the CPU write buffer in _bus_dmamap_sync(). 1998-02-04 07:35:30 +00:00
thorpej
8abe76d2f0 Add offset and length parameters to bus_dmamap_sync(), used for specifiying
partial syncs of a DMA mapping.
1998-02-04 05:12:46 +00:00
thorpej
99cc8482d1 Change the last argument of bus_dmamap_sync() from bus_dmasync_op_t to int,
and allow more than one synchronization operation to be specified in
a single call.  Dissallow mixing of PRE and POST operations.
1998-02-04 01:57:27 +00:00
thorpej
5fd0d10994 Add dm_mapsize to bus_dmamap_t and rename BUS_DMAMEM_NOSYNC toBUS_DMA_COHERENT. 1998-02-04 00:04:25 +00:00
thorpej
5ac7e550d1 Implement bus_dmamap_load_mbuf(). 1998-01-27 02:35:58 +00:00
thorpej
12809e3434 If mapping only one segment of DMA memory into KVA space, use K0SEG. 1998-01-19 03:12:20 +00:00
thorpej
14807c2914 Use avail_start/avail_end. 1998-01-09 06:37:04 +00:00
thorpej
55800b610a Implement bus_dmamem_mmap(). 1997-09-05 02:05:37 +00:00
thorpej
90798596fe Remove references to vm_pmap. 1997-09-02 20:37:23 +00:00
thorpej
693b3e7262 Nuke the idea of <machine/options.h>. It completely defeats the purpose
of fine-grain option dependencies.
1997-09-02 13:17:47 +00:00
thorpej
38f15737fd Protect access to kmem_map with splimp()/splx(). From Chuck Cranor. 1997-08-25 21:17:48 +00:00
thorpej
46b89d7739 Pull thorpej-bus-dma branch into mainline. 1997-06-06 23:54:24 +00:00