From: Greg Kroah-Hartman Date: Mon, 7 Dec 2015 13:43:44 +0000 (-0500) Subject: 4.3-stable patches X-Git-Tag: v3.10.94~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6933ba9a9ef9c49cad10e63cc68031b0909c81e7;p=thirdparty%2Fkernel%2Fstable-queue.git 4.3-stable patches added patches: xen-events-always-allocate-legacy-interrupts-on-pv-guests.patch --- diff --git a/queue-4.3/series b/queue-4.3/series index 16e22563047..7953f9cd3e7 100644 --- a/queue-4.3/series +++ b/queue-4.3/series @@ -122,3 +122,4 @@ tty-audit-fix-audit-source.patch tty-fix-tty_send_xchar-lock-order-inversion.patch xhci-workaround-to-get-intel-xhci-reset-working-more-reliably.patch staging-lustre-use-jiffies-for-lp_last_query-times.patch +xen-events-always-allocate-legacy-interrupts-on-pv-guests.patch diff --git a/queue-4.3/xen-events-always-allocate-legacy-interrupts-on-pv-guests.patch b/queue-4.3/xen-events-always-allocate-legacy-interrupts-on-pv-guests.patch new file mode 100644 index 00000000000..9661db3b56b --- /dev/null +++ b/queue-4.3/xen-events-always-allocate-legacy-interrupts-on-pv-guests.patch @@ -0,0 +1,82 @@ +From b4ff8389ed14b849354b59ce9b360bdefcdbf99c Mon Sep 17 00:00:00 2001 +From: Boris Ostrovsky +Date: Fri, 20 Nov 2015 11:25:04 -0500 +Subject: xen/events: Always allocate legacy interrupts on PV guests + +From: Boris Ostrovsky + +commit b4ff8389ed14b849354b59ce9b360bdefcdbf99c upstream. + +After commit 8c058b0b9c34 ("x86/irq: Probe for PIC presence before +allocating descs for legacy IRQs") early_irq_init() will no longer +preallocate descriptors for legacy interrupts if PIC does not +exist, which is the case for Xen PV guests. + +Therefore we may need to allocate those descriptors ourselves. + +Signed-off-by: Boris Ostrovsky +Suggested-by: Thomas Gleixner +Signed-off-by: David Vrabel +Cc: Vitaly Kuznetsov +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/include/asm/irq.h | 5 +++++ + arch/arm64/include/asm/irq.h | 5 +++++ + drivers/xen/events/events_base.c | 5 +++-- + 3 files changed, 13 insertions(+), 2 deletions(-) + +--- a/arch/arm/include/asm/irq.h ++++ b/arch/arm/include/asm/irq.h +@@ -40,6 +40,11 @@ extern void arch_trigger_all_cpu_backtra + #define arch_trigger_all_cpu_backtrace(x) arch_trigger_all_cpu_backtrace(x) + #endif + ++static inline int nr_legacy_irqs(void) ++{ ++ return NR_IRQS_LEGACY; ++} ++ + #endif + + #endif +--- a/arch/arm64/include/asm/irq.h ++++ b/arch/arm64/include/asm/irq.h +@@ -21,4 +21,9 @@ static inline void acpi_irq_init(void) + } + #define acpi_irq_init acpi_irq_init + ++static inline int nr_legacy_irqs(void) ++{ ++ return 0; ++} ++ + #endif +--- a/drivers/xen/events/events_base.c ++++ b/drivers/xen/events/events_base.c +@@ -39,6 +39,7 @@ + #include + #include + #include ++#include + #include + #include + #endif +@@ -420,7 +421,7 @@ static int __must_check xen_allocate_irq + return xen_allocate_irq_dynamic(); + + /* Legacy IRQ descriptors are already allocated by the arch. */ +- if (gsi < NR_IRQS_LEGACY) ++ if (gsi < nr_legacy_irqs()) + irq = gsi; + else + irq = irq_alloc_desc_at(gsi, -1); +@@ -446,7 +447,7 @@ static void xen_free_irq(unsigned irq) + kfree(info); + + /* Legacy IRQ descriptors are managed by the arch. */ +- if (irq < NR_IRQS_LEGACY) ++ if (irq < nr_legacy_irqs()) + return; + + irq_free_desc(irq);