Messages in this thread | | | From | Systemkennung Linux <> | Subject | Re: Kernel virtual memory? | Date | Fri, 8 Aug 1997 05:09:25 +0200 (MET DST) |
| |
> DMA needs _physically_ contigious memory, it doesn't use the CPUs MMU. > (At least on Intel. Not 100% sure what can be done with external MMUs, > but I guess DMA still works on physical and not virtual address otherwise > there would be all sort of problems).
The Linux supported MMU 68851, one of the external MMU can translate DMA addresses. For DMA translation it has a separate pagetable tree just like the one that is being used for the CPU. The Linux/m68k systems I know of however don't make use of this possibility; at least in the case of the A2620 accelerator card for the Amiga this even isn't possible.
There are also many MIPS systems (the Jazz family, SGI system) that support virtual DMA. For these systems DMA adresses translation can not be disabled. The trivial approach to handle virtual DMA on these machines is to install a 1:1 translation table. But virtual DMA is a far to nice feature not to be used; on the Jazz machines for example it eleminated the problems with DMA memory allocation as we have it in the floppy driver and gives scatter gather even for the dumbest DMA hardware.
Ralf
| |