Messages in this thread | | | Date | Thu, 7 May 2015 13:12:39 +0200 | From | Ingo Molnar <> | Subject | Re: [PATCH RFC 01/15] uaccess: count pagefault_disable() levels in pagefault_disabled |
| |
* David Hildenbrand <dahi@linux.vnet.ibm.com> wrote:
> > AFAICR we did this to avoid having to do both: > > > > preempt_disable(); > > pagefault_disable(); > > > > in a fair number of places -- just like this patch-set does, this is > > touching two cachelines where one would have been enough. > > > > Also, removing in_atomic() from fault handlers like you did > > significantly changes semantics for interrupts (soft, hard and NMI). > > > > So while I agree with most of these patches, I'm very hesitant on the > > above little detail. > > Just to make sure we have a common understanding (as written in my > cover letter): > > Your suggestion won't work with !CONFIG_PREEMPT > (!CONFIG_PREEMPT_COUNT). If there is no preempt counter, in_atomic() > won't work. So doing a preempt_disable() instead of a > pagefault_disable() is not going to work. (not sure how -RT handles > that - most probably with CONFIG_PREEMPT_COUNT being enabled, due to > atomic debug). > > That's why I dropped that check for a reason.
So, what's the point of disabling the preempt counter?
Looks like the much simpler (and faster) solution would be to eliminate CONFIG_PREEMPT_COUNT (i.e. make it always available), and use it for pagefault-disable.
> This patchset is about decoupling both concept. (not ending up with > to mechanisms doing almost the same)
So that's really backwards: just because we might not have a handy counter we introduce _another one_, and duplicate checks for it ;-)
Why not keep a single counter, if indeed what we care about most in the pagefault_disable() case is atomicity?
Thanks,
Ingo
| |