layerscape: add patches-5.4
[openwrt/staging/wigyori.git] / target / linux / layerscape / patches-5.4 / 809-jailhouse-0005-ivshmem-net-Enable-INTx.patch
diff --git a/target/linux/layerscape/patches-5.4/809-jailhouse-0005-ivshmem-net-Enable-INTx.patch b/target/linux/layerscape/patches-5.4/809-jailhouse-0005-ivshmem-net-Enable-INTx.patch
new file mode 100644 (file)
index 0000000..d872567
--- /dev/null
@@ -0,0 +1,51 @@
+From 3734c2c9ac0fd763deceb686efc93b293acca4c6 Mon Sep 17 00:00:00 2001
+From: Jan Kiszka <jan.kiszka@siemens.com>
+Date: Sun, 27 Nov 2016 15:15:51 +0100
+Subject: [PATCH] ivshmem-net: Enable INTx
+
+Activate INTx notification when it has to be used instead of MSI-X,
+disable it after use.
+
+Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
+(cherry picked from commit 8790717bdca6ea58f18baac1749ac347b23b7263)
+---
+ drivers/net/ivshmem-net.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/ivshmem-net.c
++++ b/drivers/net/ivshmem-net.c
+@@ -31,6 +31,8 @@
+ #define JAILHOUSE_CFG_SHMEM_PTR       0x40
+ #define JAILHOUSE_CFG_SHMEM_SZ        0x48
++#define IVSHMEM_INTX_ENABLE   0x1
++
+ #define IVSHM_NET_STATE_RESET 0
+ #define IVSHM_NET_STATE_INIT  1
+ #define IVSHM_NET_STATE_READY 2
+@@ -47,7 +49,7 @@
+ #define IVSHM_NET_VQ_ALIGN 64
+ struct ivshmem_regs {
+-      u32 imask;
++      u32 intxctrl;
+       u32 istat;
+       u32 ivpos;
+       u32 doorbell;
+@@ -869,6 +871,8 @@ static int ivshm_net_probe(struct pci_de
+               goto err_int;
+       pci_set_master(pdev);
++      if (!in->using_msix)
++              writel(IVSHMEM_INTX_ENABLE, &in->ivshm_regs->intxctrl);
+       writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
+@@ -895,6 +899,7 @@ static void ivshm_net_remove(struct pci_
+               free_irq(in->msix.vector, ndev);
+               pci_disable_msix(pdev);
+       } else {
++              writel(0, &in->ivshm_regs->intxctrl);
+               free_irq(pdev->irq, ndev);
+       }