lkml.org 
[lkml]   [2002]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectNUMA-Q breakage 5/7 in_interrupt() race
    On smaller machines, bootstrapping proceeds far enough to see races
    in kmaps near generic_file_read() etc. This is precisely the
    in_interrupt() BUG(), but it's quite clear this is happening in
    process context. Not even the smaller machines can survive this.
    That is, it is impossible to run at all without it (or an equivalent).

    Robert, please apply.


    Thanks,
    Bill


    ===== include/asm-i386/hardirq.h 1.7 vs edited =====
    --- 1.7/include/asm-i386/hardirq.h Mon May 20 10:51:17 2002
    +++ edited/include/asm-i386/hardirq.h Thu Jul 11 19:51:02 2002
    @@ -22,8 +22,24 @@
    * Are we in an interrupt context? Either doing bottom half
    * or hardware interrupt processing?
    */
    -#define in_interrupt() ({ int __cpu = smp_processor_id(); \
    - (local_irq_count(__cpu) + local_bh_count(__cpu) != 0); })
    +static inline int in_interrupt(void)
    +{
    + int total_count, retval, cpu;
    +
    + preempt_disable();
    + cpu = smp_processor_id();
    +
    + total_count = local_irq_count(cpu) + local_bh_count(cpu);
    +
    + if (total_count)
    + retval = 1;
    + else
    + retval = 0;
    +
    + preempt_disable();
    +
    + return retval;
    +}

    #define in_irq() (local_irq_count(smp_processor_id()) != 0)

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 13:27    [W:0.030 / U:30.064 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site