Re: [PATCH RFC 01/15] uaccess: count pagefault_disable() levels in pagefault_disabled

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* David Hildenbrand <dahi@xxxxxxxxxxxxxxxxxx> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-arch" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux