Messages in this thread | | | Date | Thu, 14 Feb 2002 14:01:36 +0000 (GMT) | From | Hugh Dickins <> | Subject | Re: [PATCH] __free_pages_ok oops |
| |
On Thu, 14 Feb 2002, Andrea Arcangeli wrote: > On Thu, Feb 14, 2002 at 12:10:37PM +0100, Gerd Knorr wrote: > > > > I've recently changed the code to make it *not* call unmap_kiobuf/vfree > > from irq context. Instead bttv 0.8.x doesn't allow you to close the > > device with DMA xfers in flight. If you try this the release() fops > > handler will block until the transfer is done, then unmap_kiobuf from > > process context, then return. > > perfect, that's the right fix for 2.4 (waiting DMA to complete at > ->release looks also much saner). unmap_kiobuf wasn't supposed to be run > from irq handlers. Everything dealing with userspace mappings cannot run > from irq handlers, tlb flushes, VM, swapping etc... everything must run > from normal kernel context. If you obey this rule, my previous email to > this thread will still apply. I wasn't aware of bttv running > unmap_kiobuf from irq.
It's good that Gerd has made his change, but we don't know who else might have been doing similar. unmap_kiobuf does not involve unmapping virtual address space: it used to be safe run from irq handlers, now not.
We don't have to make a change for 2.4.18, but we really should add some kind of safety check there in 2.4.soon: either of the "it's a BUG()" kind I first suggested (which may embarrass us by firing too often), or of the "we can handle that" kind which I last suggested.
I don't disagree with Andrew's and your count-LRU approach, but it does have slight drawbacks, as you noted.
> As said this should be a matter only for 2.5, now that Gerd recalls > unmap_kiobuf from normal kernel context.
That's just a hope: you may be right, we simply don't know.
Hugh
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |