On Sat, Aug 10, 2013 at 9:10 AM, Andi Kleen <a...@firstfloor.org> wrote: > > Hmm. I can do that, but wouldn't that make CONFIG_PREEMPT_VOLUNTARY > mostly equivalent to CONFIG_PREEMPT_NONE?
According the the Kconfig help, PREEMPT_VOLUNTARY is about the *explicit* preemption points. And we do have a lot of them in "might_sleep()". And personally, I think it makes a *lot* more sense to have a "might_sleep()" in the MM allocators than it does to have it in copy_from_user(). But yes, it's obviously a gray area on exactly where you'd want to put them. But for a "get_user()" that can literally be just a few instructions? Why would we make that a preemption point? Or even a copy of few tens of bytes? I'd *much* rather have preemption points in places that actually loop, and that have real work associated with them. Now, the *debug* logic is entirely different, of course. Maybe the problem is that we have mixed up the two so badly, and we have "might_sleep()" that implies more of a debug issue than a preemption issue, and then people add those because they want the debug coverage (and then you *absolutely* want it even for a single-byte user mode access). And then because the concept is tied together with preemption, we end up doing preemption even for that single-byte access despite the fact that it makes no sense what-so-ever. So I think your patches are fine, but I do think we should take a deeper look at this. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/