• S
    x86, irq: Move __setup_vector_irq() before the first irq enable in cpu online path · 9d133e5d
    Suresh Siddha 提交于
    Lowest priority delivery of logical flat mode is broken on some systems,
    such that even when IO-APIC RTE says deliver the interrupt to a particular CPU,
    interrupt subsystem delivers the interrupt to totally different CPU.
    
    For example, this behavior was observed on a P4 based system with SiS chipset
    which was reported by Li Zefan. We have been handling this kind of behavior by
    making sure that in logical flat mode, we assign the same vector to irq
    mappings on all the 8 possible logical cpu's.
    
    But we have been doing this initial assignment (__setup_vector_irq()) a little
    late (before which interrupts were already enabled for a short duration).
    
    Move the __setup_vector_irq() before the first irq enable point in the
    cpu online path to avoid the issue of not handling some interrupts that
    wrongly hit the cpu which is still coming online.
    Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
    LKML-Reference: <20100129194330.283696385@sbs-t61.sc.intel.com>
    Tested-by: NLi Zefan <lizf@cn.fujitsu.com>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
    9d133e5d
io_apic.c 101.5 KB