• F
    pmac_zilog: Fix unexpected irq · 7cf82b1b
    Finn Thain 提交于
    On most 68k Macs the SCC IRQ is an autovector interrupt and cannot be
    masked. This can be a problem when pmac_zilog starts up.
    
    For example, the serial debugging code in arch/m68k/kernel/head.S may be
    used beforehand. It disables the SCC interrupts at the chip but doesn't
    ack them. Then when a pmac_zilog port is used, the machine locks up with
    "unexpected interrupt".
    
    This can happen in pmz_shutdown() since the irq is freed before the
    channel interrupts are disabled.
    
    Fix this by clearing interrupt enable bits before the handler is
    uninstalled. Also move the interrupt control bit flipping into a separate
    pmz_interrupt_control() routine. Replace all instances of these operations
    with calls to this routine. Omit the zssync() calls that seem to serve no
    purpose.
    Signed-off-by: NFinn Thain <fthain@telegraphics.com.au>
    Acked-by: NAlan Cox <alan@linux.intel.com>
    Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
    7cf82b1b
pmac_zilog.c 53.4 KB