Subject: problem with DMA driver (vm race?)
To: None <tech-kern@NetBSD.ORG, port-i386@NetBSD.ORG>
From: Matthias Drochner <firstname.lastname@example.org>
Date: 06/24/1996 16:39:23
I encountered a strange problem in a driver for a
homegrown PCI card:
The card (CAMAC controller) does DMA. For sake of
latency, I do the transfer directly into the user buffer.
(not mapped into kernel space - vmapbuf() causes too much
The driver function is laid out as follows:
[error handling for res]
vsunlock(buf, len, 1)
If the machine is heavily loaded (esp. process creation) the
"vsunlock()" occasionaly causes a panic in "vm_fault_unwire()":
"unwire: page not in pmap". The reason is (I checked it explicitely
before calling "vsunlock()") that the page directory entry for
the user buffer became zero in the meantime.
(The check tests
The system is NetBSD-1.1.
Can anybody explain this?