Skip to content
  • Dou Liyang's avatar
    x86/apic: Initialize interrupt mode after timer init · 935356ce
    Dou Liyang authored
    
    
    A cold or warm boot through BIOS sets the APIC in default interrupt
    delivery mode. A dump-capture kernel will not go through a BIOS reset and
    leave the interrupt delivery mode in the state which was active on the
    crashed kernel, but the dump kernel startup code assumes default delivery
    mode which can result in interrupt delivery/handling to fail.
    
    To solve this problem, it's required to set up the final interrupt delivery
    mode as soon as possible. As IOAPIC setup needs the timer initialized for
    verifying the timer interrupt delivery mode, the earliest point is right
    after timer setup in late_time_init().
    
    That results in the following init order:
    
      1) Set up the legacy timer, if applicable on the platform
    
      2) Set up APIC/IOAPIC which includes the verification of the legacy timer
         interrupt delivery.
    
      3) TSC calibration
    
      4) Local APIC timer setup
    
    
    Signed-off-by: default avatarDou Liyang <douly.fnst@cn.fujitsu.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: yinghai@kernel.org
    Cc: bhe@redhat.com
    Link: https://lkml.kernel.org/r/1505293975-26005-12-git-send-email-douly.fnst@cn.fujitsu.com
    935356ce