lkml.org 
[lkml]   [2015]   [May]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [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


\
 
 \ /
  Last update: 2015-05-07 13:21    [W:0.107 / U:0.884 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site