• Jiang Liu's avatar
    x86/xen: Treat SCI interrupt as normal GSI interrupt · b568b860
    Jiang Liu authored
    Currently Xen Domain0 has special treatment for ACPI SCI interrupt,
    that is initialize irq for ACPI SCI at early stage in a special way as:
    xen_init_IRQ()
    	->pci_xen_initial_domain()
    		->xen_setup_acpi_sci()
    			Allocate and initialize irq for ACPI SCI
    
    Function xen_setup_acpi_sci() calls acpi_gsi_to_irq() to get an irq
    number for ACPI SCI. But unfortunately acpi_gsi_to_irq() depends on
    IOAPIC irqdomains through following path
    acpi_gsi_to_irq()
    	->mp_map_gsi_to_irq()
    		->mp_map_pin_to_irq()
    			->check IOAPIC irqdomain
    
    For PV domains, it uses Xen event based interrupt manangement and
    doesn't make uses of native IOAPIC, so no irqdomains created for IOAPIC.
    This causes Xen domain0 fail to install interrupt handler for ACPI SCI
    and all ACPI events will be lost. Please refer to:
    https://lkml.org/lkml/2014/12/19/178
    
    So the fix is to get rid of special treatment for ACPI SCI, just treat
    ACPI SCI as normal GSI interrupt as:
    acpi_gsi_to_irq()
    	->acpi_register_gsi()
    		->acpi_register_gsi_xen()
    			->xen_register_gsi()
    
    With above change, there's no need for xen_setup_acpi_sci() anymore.
    The above change also works with bare metal kernel too.
    Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
    Tested-by: default avatarSander Eikelenboom <linux@eikelenboom.it>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: xen-devel@lists.xenproject.org
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: David Vrabel <david.vrabel@citrix.com>
    Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
    Cc: Len Brown <len.brown@intel.com>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Link: http://lkml.kernel.org/r/1421720467-7709-2-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    b568b860
boot.c 40.5 KB