All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1] event/dlb2: add support for disabling PASID
@ 2023-06-07 21:00 Abdullah Sevincer
  2023-06-08  5:38 ` Jerin Jacob
                   ` (3 more replies)
  0 siblings, 4 replies; 23+ messages in thread
From: Abdullah Sevincer @ 2023-06-07 21:00 UTC (permalink / raw)
  To: dev; +Cc: jerinj, mike.ximing.chen, Abdullah Sevincer

vfio-pci driver in Linux kernel 6.2 enables PASID by default.
In DLB hardware, enabling PASID puts DLB in SIOV mode. This
breaks DLB PF-PMD mode. For DLB PF-PMD mode to function properly
PASID needs to be disabled for kernel 6.2.

In this commit this issue is addressed and PASID is disabled
by writing a zero to PASID control register.

Signed-off-by: Abdullah Sevincer <abdullah.sevincer@intel.com>
---
 drivers/event/dlb2/pf/dlb2_main.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/drivers/event/dlb2/pf/dlb2_main.c b/drivers/event/dlb2/pf/dlb2_main.c
index 717aa4fc08..63868e2388 100644
--- a/drivers/event/dlb2/pf/dlb2_main.c
+++ b/drivers/event/dlb2/pf/dlb2_main.c
@@ -46,6 +46,7 @@
 #define DLB2_PCI_CAP_ID_MSIX      0x11
 #define DLB2_PCI_EXT_CAP_ID_PRI   0x13
 #define DLB2_PCI_EXT_CAP_ID_ACS   0xD
+#define DLB2_PCI_EXT_CAP_ID_PASID 0x1B	/* Process Address Space ID */
 
 #define DLB2_PCI_PRI_CTRL_ENABLE         0x1
 #define DLB2_PCI_PRI_ALLOC_REQ           0xC
@@ -64,6 +65,8 @@
 #define DLB2_PCI_ACS_CR                  0x8
 #define DLB2_PCI_ACS_UF                  0x10
 #define DLB2_PCI_ACS_EC                  0x20
+#define DLB2_PCI_PASID_CTRL              0x06    /* PASID control register */
+#define DLB2_PCI_PASID_CAP_OFFSET        0x148   /* PASID capability offset */
 
 static int dlb2_pci_find_capability(struct rte_pci_device *pdev, uint32_t id)
 {
@@ -257,12 +260,14 @@ dlb2_pf_reset(struct dlb2_dev *dlb2_dev)
 	uint16_t rt_ctl_word;
 	uint32_t pri_reqs_dword;
 	uint16_t pri_ctrl_word;
+	uint16_t pasid_ctrl;
 
 	int pcie_cap_offset;
 	int pri_cap_offset;
 	int msix_cap_offset;
 	int err_cap_offset;
 	int acs_cap_offset;
+	int pasid_cap_offset;
 	int wait_count;
 
 	uint16_t devsta_busy_word;
@@ -582,6 +587,28 @@ dlb2_pf_reset(struct dlb2_dev *dlb2_dev)
 		}
 	}
 
+	/* The current Linux kernel vfio driver does not expose PASID capability to
+	 * users. It also enables PASID by default, which breaks DLB PF PMD. We have
+	 * to use the hardcoded offset for now to disable PASID.
+	 */
+	pasid_cap_offset = DLB2_PCI_PASID_CAP_OFFSET;
+
+	off = pasid_cap_offset + DLB2_PCI_PASID_CTRL;
+	if (rte_pci_read_config(pdev, &pasid_ctrl, 2, off) != 2)
+		pasid_ctrl = 0;
+
+	if (pasid_ctrl) {
+		DLB2_INFO(dlb2_dev, "DLB2 disabling pasid...\n");
+
+		pasid_ctrl = 0;
+		ret = rte_pci_write_config(pdev, &pasid_ctrl, 2, off);
+		if (ret != 2) {
+			DLB2_LOG_ERR("[%s()] failed to write the pcie config space at offset %d\n",
+				__func__, (int)off);
+			return ret;
+		}
+	}
+
 	return 0;
 }
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2023-11-02 18:18 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-07 21:00 [PATCH v1] event/dlb2: add support for disabling PASID Abdullah Sevincer
2023-06-08  5:38 ` Jerin Jacob
2023-06-08  7:22   ` Thomas Monjalon
2023-06-08  7:28   ` David Marchand
2023-06-08 11:32     ` Jerin Jacob
2023-06-08 14:25       ` Chen, Mike Ximing
2023-08-03  7:56     ` David Marchand
2023-08-03 16:57       ` Sevincer, Abdullah
2023-10-26 16:46         ` Sevincer, Abdullah
2023-10-26 16:38 ` [PATCH v2] event/dlb2: disable PASID for kernel 6.2 Abdullah Sevincer
2023-10-30 21:12 ` [PATCH v3] event/dlb2: fix " Abdullah Sevincer
2023-10-31  8:21   ` Jerin Jacob
2023-10-31 15:13     ` Sevincer, Abdullah
2023-10-31 17:06       ` Jerin Jacob
2023-10-31 17:15         ` Bruce Richardson
2023-10-31 18:42           ` Jerin Jacob
2023-10-31 20:44             ` Bruce Richardson
2023-11-01  4:51               ` Jerin Jacob
2023-11-01 19:05                 ` Sevincer, Abdullah
2023-11-02 10:23                   ` Bruce Richardson
2023-11-02 10:48                     ` Thomas Monjalon
2023-11-02 18:17                       ` Sevincer, Abdullah
2023-10-31  0:10 ` [PATCH v1] event/dlb2: add support for disabling PASID Stephen Hemminger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.