Subject: Re: MicroVAX I: in need of modern OS.
To: Brian D Chase <bdc@world.std.com>
From: Anders Magnusson <ragge@ludd.luth.se>
List: port-vax
Date: 02/05/1999 23:43:59
> 
> Wait, I'm confused.  I thought we got past this whole mapping thing when
> you explained that Q-bus address space == Physical address space on the
> MicroVAX I (hence no mapping registers required)?  I don't care about the
> 18bit Unibus :-)  At least not until I find an 11/730 within hauling
> distance.
> 
Ok, we leave it until then :-)

> I was just wanting to know in general how you locate DMA buffers in
> physical memory such that:
There are no actual "buffers". A device normally just do DMA into 
the physical memory at some address.

> 1) the CPU knows where they are,
If I want to DMA 512 byte to address 0x80123400, I first check which
Page table entry that matches that address, then I extract the physical
address from the PTE.

> 2) the device knows where they are, and
The physical address extracted from the PTE is written into some device-
specific register.

> 3) how virtual memory management and DMA on a physical address space
> peacefully coexist.
Memory is always physical. The MMU is a layer between the CPU and memory.
An I/O device address the memory directly; therefore the MMU isn't
involved in any DMA transfers.

> It may be more appropriate to ask it in one of the kernel tech lists. 
This isn't anything netbsd-specific, morely CPU-architecture specific.
If you have the "VAX Architecture Reference Manual" available I would
recommend chapter 5-8, which gives a rather good description of this.

-- Ragge