diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2019-04-14 12:00:03 -0400 |
|---|---|---|
| committer | Borislav Petkov <bp@suse.de> | 2019-04-17 09:30:12 -0400 |
| commit | 451f743a64e1cf979f5fe21a1b2a015feb559f72 (patch) | |
| tree | f1dd9593f402a9b7a9b110ac6c353e3aa7ef1233 | |
| parent | 758a2e312228410f2f5092ade558109e93dc3ee8 (diff) | |
x86/irq/32: Invoke irq_ctx_init() from init_IRQ()
irq_ctx_init() is invoked from native_init_IRQ() or from xen_init_IRQ()
code. There is no reason to have this split. The interrupt stacks must be
allocated no matter what.
Invoke it from init_IRQ() before invoking the native or XEN init
implementation.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Juergen Gross <jgross@suse.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Josh Abraham <j.abraham1776@gmail.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: Mike Rapoport <rppt@linux.vnet.ibm.com>
Cc: Nicolai Stange <nstange@suse.de>
Cc: Sean Christopherson <sean.j.christopherson@intel.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: x86-ml <x86@kernel.org>
Cc: xen-devel@lists.xenproject.org
Link: https://lkml.kernel.org/r/20190414160146.001162606@linutronix.de
| -rw-r--r-- | arch/x86/kernel/irqinit.c | 4 | ||||
| -rw-r--r-- | drivers/xen/events/events_base.c | 1 |
2 files changed, 2 insertions, 3 deletions
diff --git a/arch/x86/kernel/irqinit.c b/arch/x86/kernel/irqinit.c index a0693b71cfc1..26b5cb5386b9 100644 --- a/arch/x86/kernel/irqinit.c +++ b/arch/x86/kernel/irqinit.c | |||
| @@ -91,6 +91,8 @@ void __init init_IRQ(void) | |||
| 91 | for (i = 0; i < nr_legacy_irqs(); i++) | 91 | for (i = 0; i < nr_legacy_irqs(); i++) |
| 92 | per_cpu(vector_irq, 0)[ISA_IRQ_VECTOR(i)] = irq_to_desc(i); | 92 | per_cpu(vector_irq, 0)[ISA_IRQ_VECTOR(i)] = irq_to_desc(i); |
| 93 | 93 | ||
| 94 | irq_ctx_init(smp_processor_id()); | ||
| 95 | |||
| 94 | x86_init.irqs.intr_init(); | 96 | x86_init.irqs.intr_init(); |
| 95 | } | 97 | } |
| 96 | 98 | ||
| @@ -104,6 +106,4 @@ void __init native_init_IRQ(void) | |||
| 104 | 106 | ||
| 105 | if (!acpi_ioapic && !of_ioapic && nr_legacy_irqs()) | 107 | if (!acpi_ioapic && !of_ioapic && nr_legacy_irqs()) |
| 106 | setup_irq(2, &irq2); | 108 | setup_irq(2, &irq2); |
| 107 | |||
| 108 | irq_ctx_init(smp_processor_id()); | ||
| 109 | } | 109 | } |
diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c index 117e76b2f939..084e45882c73 100644 --- a/drivers/xen/events/events_base.c +++ b/drivers/xen/events/events_base.c | |||
| @@ -1687,7 +1687,6 @@ void __init xen_init_IRQ(void) | |||
| 1687 | 1687 | ||
| 1688 | #ifdef CONFIG_X86 | 1688 | #ifdef CONFIG_X86 |
| 1689 | if (xen_pv_domain()) { | 1689 | if (xen_pv_domain()) { |
| 1690 | irq_ctx_init(smp_processor_id()); | ||
| 1691 | if (xen_initial_domain()) | 1690 | if (xen_initial_domain()) |
| 1692 | pci_xen_initial_domain(); | 1691 | pci_xen_initial_domain(); |
| 1693 | } | 1692 | } |
