patch 'common/cnxk: fix IRQ reconfiguration' has been queued to stable release 23.11.3
Xueming Li
xuemingl at nvidia.com
Mon Nov 11 07:27:29 CET 2024
Hi,
FYI, your patch has been queued to stable release 23.11.3
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/30/24. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://git.dpdk.org/dpdk-stable/log/?h=23.11-staging
This queued commit can be viewed at:
https://git.dpdk.org/dpdk-stable/commit/?h=23.11-staging&id=e1e6e73a44dcd1e62731ed963bdd3b15fe1b7463
Thanks.
Xueming Li <xuemingl at nvidia.com>
---
>From e1e6e73a44dcd1e62731ed963bdd3b15fe1b7463 Mon Sep 17 00:00:00 2001
From: Pavan Nikhilesh <pbhagavatula at marvell.com>
Date: Tue, 1 Oct 2024 18:41:09 +0530
Subject: [PATCH] common/cnxk: fix IRQ reconfiguration
Cc: Xueming Li <xuemingl at nvidia.com>
[ upstream commit 758b58f06a43564f435e3ecc1a8af994564a6b6b ]
Unregister SSO device and NPA IRQs before resizing
IRQs to cleanup stale IRQ handles.
Fixes: 993107f0f440 ("common/cnxk: limit SSO interrupt allocation count")
Signed-off-by: Pavan Nikhilesh <pbhagavatula at marvell.com>
---
drivers/common/cnxk/roc_dev.c | 16 +++++++---------
drivers/common/cnxk/roc_dev_priv.h | 2 ++
drivers/common/cnxk/roc_sso.c | 7 +++++++
3 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/drivers/common/cnxk/roc_dev.c b/drivers/common/cnxk/roc_dev.c
index 35eb8b7628..793d78fdbc 100644
--- a/drivers/common/cnxk/roc_dev.c
+++ b/drivers/common/cnxk/roc_dev.c
@@ -947,8 +947,8 @@ mbox_unregister_vf_irq(struct plt_pci_device *pci_dev, struct dev *dev)
RVU_VF_INT_VEC_MBOX);
}
-static void
-mbox_unregister_irq(struct plt_pci_device *pci_dev, struct dev *dev)
+void
+dev_mbox_unregister_irq(struct plt_pci_device *pci_dev, struct dev *dev)
{
if (dev_is_vf(dev))
mbox_unregister_vf_irq(pci_dev, dev);
@@ -1026,8 +1026,8 @@ roc_pf_vf_flr_irq(void *param)
}
}
-static int
-vf_flr_unregister_irqs(struct plt_pci_device *pci_dev, struct dev *dev)
+void
+dev_vf_flr_unregister_irqs(struct plt_pci_device *pci_dev, struct dev *dev)
{
struct plt_intr_handle *intr_handle = pci_dev->intr_handle;
int i;
@@ -1043,8 +1043,6 @@ vf_flr_unregister_irqs(struct plt_pci_device *pci_dev, struct dev *dev)
dev_irq_unregister(intr_handle, roc_pf_vf_flr_irq, dev,
RVU_PF_INT_VEC_VFFLR1);
-
- return 0;
}
int
@@ -1529,7 +1527,7 @@ thread_fail:
iounmap:
dev_vf_mbase_put(pci_dev, vf_mbase);
mbox_unregister:
- mbox_unregister_irq(pci_dev, dev);
+ dev_mbox_unregister_irq(pci_dev, dev);
if (dev->ops)
plt_free(dev->ops);
mbox_fini:
@@ -1565,10 +1563,10 @@ dev_fini(struct dev *dev, struct plt_pci_device *pci_dev)
if (dev->lmt_mz)
plt_memzone_free(dev->lmt_mz);
- mbox_unregister_irq(pci_dev, dev);
+ dev_mbox_unregister_irq(pci_dev, dev);
if (!dev_is_vf(dev))
- vf_flr_unregister_irqs(pci_dev, dev);
+ dev_vf_flr_unregister_irqs(pci_dev, dev);
/* Release PF - VF */
mbox = &dev->mbox_vfpf;
if (mbox->hwbase && mbox->dev)
diff --git a/drivers/common/cnxk/roc_dev_priv.h b/drivers/common/cnxk/roc_dev_priv.h
index 5b2c5096f8..f1fa498dc1 100644
--- a/drivers/common/cnxk/roc_dev_priv.h
+++ b/drivers/common/cnxk/roc_dev_priv.h
@@ -128,6 +128,8 @@ int dev_irqs_disable(struct plt_intr_handle *intr_handle);
int dev_irq_reconfigure(struct plt_intr_handle *intr_handle, uint16_t max_intr);
int dev_mbox_register_irq(struct plt_pci_device *pci_dev, struct dev *dev);
+void dev_mbox_unregister_irq(struct plt_pci_device *pci_dev, struct dev *dev);
int dev_vf_flr_register_irqs(struct plt_pci_device *pci_dev, struct dev *dev);
+void dev_vf_flr_unregister_irqs(struct plt_pci_device *pci_dev, struct dev *dev);
#endif /* _ROC_DEV_PRIV_H */
diff --git a/drivers/common/cnxk/roc_sso.c b/drivers/common/cnxk/roc_sso.c
index b02c9c7f38..14cdf14554 100644
--- a/drivers/common/cnxk/roc_sso.c
+++ b/drivers/common/cnxk/roc_sso.c
@@ -765,7 +765,14 @@ sso_update_msix_vec_count(struct roc_sso *roc_sso, uint16_t sso_vec_cnt)
return dev_irq_reconfigure(pci_dev->intr_handle, mbox_vec_cnt + npa_vec_cnt);
}
+ /* Before re-configuring unregister irqs */
npa_vec_cnt = (dev->npa.pci_dev == pci_dev) ? NPA_LF_INT_VEC_POISON + 1 : 0;
+ if (npa_vec_cnt)
+ npa_unregister_irqs(&dev->npa);
+
+ dev_mbox_unregister_irq(pci_dev, dev);
+ if (!dev_is_vf(dev))
+ dev_vf_flr_unregister_irqs(pci_dev, dev);
/* Re-configure to include SSO vectors */
rc = dev_irq_reconfigure(pci_dev->intr_handle, mbox_vec_cnt + npa_vec_cnt + sso_vec_cnt);
--
2.34.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2024-11-11 14:23:07.144644499 +0800
+++ 0043-common-cnxk-fix-IRQ-reconfiguration.patch 2024-11-11 14:23:05.102192840 +0800
@@ -1 +1 @@
-From 758b58f06a43564f435e3ecc1a8af994564a6b6b Mon Sep 17 00:00:00 2001
+From e1e6e73a44dcd1e62731ed963bdd3b15fe1b7463 Mon Sep 17 00:00:00 2001
@@ -4,0 +5,3 @@
+Cc: Xueming Li <xuemingl at nvidia.com>
+
+[ upstream commit 758b58f06a43564f435e3ecc1a8af994564a6b6b ]
@@ -10 +12,0 @@
-Cc: stable at dpdk.org
@@ -20 +22 @@
-index 26aa35894b..c905d35ea6 100644
+index 35eb8b7628..793d78fdbc 100644
@@ -23,2 +25,2 @@
-@@ -1047,8 +1047,8 @@ mbox_unregister_vf_irq(struct plt_pci_device *pci_dev, struct dev *dev)
- dev_irq_unregister(intr_handle, roc_pf_vf_mbox_irq, dev, RVU_VF_INT_VEC_MBOX);
+@@ -947,8 +947,8 @@ mbox_unregister_vf_irq(struct plt_pci_device *pci_dev, struct dev *dev)
+ RVU_VF_INT_VEC_MBOX);
@@ -34 +36 @@
-@@ -1126,8 +1126,8 @@ roc_pf_vf_flr_irq(void *param)
+@@ -1026,8 +1026,8 @@ roc_pf_vf_flr_irq(void *param)
@@ -45 +47 @@
-@@ -1143,8 +1143,6 @@ vf_flr_unregister_irqs(struct plt_pci_device *pci_dev, struct dev *dev)
+@@ -1043,8 +1043,6 @@ vf_flr_unregister_irqs(struct plt_pci_device *pci_dev, struct dev *dev)
@@ -54 +56 @@
-@@ -1723,7 +1721,7 @@ thread_fail:
+@@ -1529,7 +1527,7 @@ thread_fail:
@@ -63 +65 @@
-@@ -1761,10 +1759,10 @@ dev_fini(struct dev *dev, struct plt_pci_device *pci_dev)
+@@ -1565,10 +1563,10 @@ dev_fini(struct dev *dev, struct plt_pci_device *pci_dev)
@@ -70 +72 @@
- if (!dev_is_vf(dev)) {
+ if (!dev_is_vf(dev))
@@ -73,3 +75,3 @@
- /* Releasing memory allocated for mbox region */
- if (dev->vf_mbox_mz)
- plt_memzone_free(dev->vf_mbox_mz);
+ /* Release PF - VF */
+ mbox = &dev->mbox_vfpf;
+ if (mbox->hwbase && mbox->dev)
@@ -77 +79 @@
-index 434e165b56..5ab4f72f8f 100644
+index 5b2c5096f8..f1fa498dc1 100644
@@ -80 +82 @@
-@@ -170,6 +170,8 @@ int dev_irqs_disable(struct plt_intr_handle *intr_handle);
+@@ -128,6 +128,8 @@ int dev_irqs_disable(struct plt_intr_handle *intr_handle);
@@ -90 +92 @@
-index 499f93e373..2e3b134bfc 100644
+index b02c9c7f38..14cdf14554 100644
@@ -93 +95 @@
-@@ -842,7 +842,14 @@ sso_update_msix_vec_count(struct roc_sso *roc_sso, uint16_t sso_vec_cnt)
+@@ -765,7 +765,14 @@ sso_update_msix_vec_count(struct roc_sso *roc_sso, uint16_t sso_vec_cnt)
More information about the stable
mailing list