lkml.org 
[lkml]   [2014]   [Nov]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRE: [RFC 0/2] Reenable might_sleep() checks for might_fault() when atomic
    Date
    From: David Hildenbrand [mailto:dahi@linux.vnet.ibm.com]
    > > From: David Hildenbrand
    > > ...
    > > > Although it might not be optimal, but keeping a separate counter for
    > > > pagefault_disable() as part of the preemption counter seems to be the only
    > > > doable thing right now. I am not sure if a completely separated counter is even
    > > > possible, increasing the size of thread_info.
    > >
    > > What about adding (say) 0x10000 for the more restrictive test?
    > >
    > > David
    > >
    >
    > You mean as part of the preempt counter?
    >
    > The current layout (on my branch) is
    >
    > * PREEMPT_MASK: 0x000000ff
    > * SOFTIRQ_MASK: 0x0000ff00
    > * HARDIRQ_MASK: 0x000f0000
    > * NMI_MASK: 0x00100000
    > * PREEMPT_ACTIVE: 0x00200000
    >
    > I would have added
    > * PAGEFAULT_MASK: 0x03C00000

    I'm not sure where you'd need to add the bits.

    I think the above works because disabling 'HARDIRQ' implicitly
    disables 'SOFTIRQ' and 'PREEMPT' (etc), so if 256+ threads
    disable PREEMPT everything still works.

    So if disabling pagefaults implies that pre-emption is disabled
    (but SOFTIRQ is still allowed) then you need to insert your bit(s)
    between 0xff00 and 0x00ff.
    OTOH if disabling pre-emption implies that pagefaults are disabled
    then you'd need to use the lsb and change all the above values.

    Which makes me think that 'PREEMPT_ACTIVE' isn't right at all.
    Two threads disabling NMIs (or 32 disabling HARDIRQ) won't DTRT.

    OTOH I'm only guessing at how this is used.

    David





    \
     
     \ /
      Last update: 2014-11-27 18:01    [W:5.055 / U:0.132 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site