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