linux: Release 4.4.15-openpower1

New patches:
 - powerpc/boot: Add OPAL console to epapr wrappers
 - net/mlx5: Add pci shutdown callback, for kexec support
 - tty/hvc: Use IRQF_SHARED for OPAL hvc consoles
 - tty/hvc: Use opal irqchip interface if available

Reworked due to upstream fixes:
 - xhci: do not halt the secondary HCD

Superseded by upstream fixes:
 - Revert "usb: xhci: stop everything on the first call to xhci_stop"
 - xhci: do not halt the secondary HCD

Signed-off-by: Joel Stanley <joel@jms.id.au>
diff --git a/openpower/linux/0009-tty-hvc-Use-IRQF_SHARED-for-OPAL-hvc-consoles.patch b/openpower/linux/0009-tty-hvc-Use-IRQF_SHARED-for-OPAL-hvc-consoles.patch
new file mode 100644
index 0000000..82fabee
--- /dev/null
+++ b/openpower/linux/0009-tty-hvc-Use-IRQF_SHARED-for-OPAL-hvc-consoles.patch
@@ -0,0 +1,88 @@
+From e51e878aac1ea5018c7accac28afa4db8c620489 Mon Sep 17 00:00:00 2001
+From: Samuel Mendoza-Jonas <sam@mendozajonas.com>
+Date: Wed, 13 Jul 2016 11:15:41 +1000
+Subject: [PATCH 09/10] tty/hvc: Use IRQF_SHARED for OPAL hvc consoles
+
+Commit 2def86a7200c
+("hvc: Convert to using interrupts instead of opal events")
+enabled the use of interrupts in the hvc_driver for OPAL platforms.
+However on machines with more than one hvc console, any console after
+the first will fail to register an interrupt handler in
+notifier_add_irq() since all consoles share the same IRQ number but do
+not set the IRQF_SHARED flag:
+
+[   51.179907] genirq: Flags mismatch irq 31. 00000000 (hvc_console) vs.
+00000000 (hvc_console)
+[   51.180010] hvc_open: request_irq failed with rc -16.
+
+This error propagates up to hvc_open() and the console is closed, but
+OPAL will still generate interrupts that are not handled, leading to
+rcu_sched stall warnings.
+
+Set IRQF_SHARED when calling request_irq, allowing additional consoles
+to start properly. This is only set for consoles handled by
+hvc_opal_probe(), leaving other types unaffected.
+
+Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
+Cc: <stable@vger.kernel.org> # 4.1.x-
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ drivers/tty/hvc/hvc_console.h | 1 +
+ drivers/tty/hvc/hvc_irq.c     | 7 +++++--
+ drivers/tty/hvc/hvc_opal.c    | 3 +++
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/tty/hvc/hvc_console.h b/drivers/tty/hvc/hvc_console.h
+index 913101980827..798c48d0d32c 100644
+--- a/drivers/tty/hvc/hvc_console.h
++++ b/drivers/tty/hvc/hvc_console.h
+@@ -60,6 +60,7 @@ struct hvc_struct {
+ 	struct winsize ws;
+ 	struct work_struct tty_resize;
+ 	struct list_head next;
++	unsigned long flags;
+ };
+ 
+ /* implemented by a low level driver */
+diff --git a/drivers/tty/hvc/hvc_irq.c b/drivers/tty/hvc/hvc_irq.c
+index c9adb0559f61..57d9df7ee1c9 100644
+--- a/drivers/tty/hvc/hvc_irq.c
++++ b/drivers/tty/hvc/hvc_irq.c
+@@ -14,6 +14,9 @@ static irqreturn_t hvc_handle_interrupt(int irq, void *dev_instance)
+ 	/* if hvc_poll request a repoll, then kick the hvcd thread */
+ 	if (hvc_poll(dev_instance))
+ 		hvc_kick();
++	/* We're safe to always return IRQ_HANDLED as the hvcd thread will
++	 * iterate through each hvc_struct
++	 */
+ 	return IRQ_HANDLED;
+ }
+ 
+@@ -28,8 +31,8 @@ int notifier_add_irq(struct hvc_struct *hp, int irq)
+ 		hp->irq_requested = 0;
+ 		return 0;
+ 	}
+-	rc = request_irq(irq, hvc_handle_interrupt, 0,
+-			   "hvc_console", hp);
++	rc = request_irq(irq, hvc_handle_interrupt, hp->flags,
++			"hvc_console", hp);
+ 	if (!rc)
+ 		hp->irq_requested = 1;
+ 	return rc;
+diff --git a/drivers/tty/hvc/hvc_opal.c b/drivers/tty/hvc/hvc_opal.c
+index 276b796b24e4..510799311099 100644
+--- a/drivers/tty/hvc/hvc_opal.c
++++ b/drivers/tty/hvc/hvc_opal.c
+@@ -230,6 +230,9 @@ static int hvc_opal_probe(struct platform_device *dev)
+ 	hp = hvc_alloc(termno, irq, ops, MAX_VIO_PUT_CHARS);
+ 	if (IS_ERR(hp))
+ 		return PTR_ERR(hp);
++
++	/* hvc consoles on powernv may need to share a single irq */
++	hp->flags = IRQF_SHARED;
+ 	dev_set_drvdata(&dev->dev, hp);
+ 
+ 	return 0;
+-- 
+2.8.1
+