• Geert Uytterhoeven's avatar
    m68k: Ignore disabled HSYNC interrupt on Atari for irqs_disabled() · 3c776a07
    Geert Uytterhoeven authored
    When running a multi-platform kernel on Atari, warning messages like
    the following may be printed:
    
        WARNING: at /root/linux-3.10.1/init/main.c:698 do_one_initcall+0x12e/0x13a()
        initcall param_sysfs_init+0x0/0x1a4 returned with disabled interrupts
    
    This is caused by the different definitions of ALLOWINT for Atari and
    other platforms:
    
        #if defined(MACH_ATARI_ONLY)
        #define ALLOWINT        (~0x500)
        #else
        #define ALLOWINT        (~0x700)
        #endif
    
    On Atari, we want to disable the high-frequency HSYNC interrupt:
      - On Atari-only kernels, this is handled completely through ALLOWINT,
      - On multi-platform kernels, this is handled by disabling the HSYNC
        interrupt from the interrupt handler.
    
    However, as in the latter case arch_irqs_disabled_flags() didn't ignore the
    disabling of the HSYNC interrupt, irqs_disabled() would detect false
    positives.
    
    Ignore the HSYNC interrupt when running on Atari to fix this.
    For single-platform kernels this test is optimized away by the compiler.
    Reported-by: default avatarThorsten Glaser <tg@debian.org>
    Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
    Tested-by: default avatarThorsten Glaser <tg@debian.org>
    3c776a07
irqflags.h 1.63 KB