public inbox for patches@lists.linux.dev
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: patches@lists.linux.dev
Cc: Shinas Rasheed <srasheed@marvell.com>,
	Paolo Abeni <pabeni@redhat.com>, Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.6 160/283] octeon_ep: support Octeon CN10K devices
Date: Sat, 28 Feb 2026 13:05:02 -0500	[thread overview]
Message-ID: <20260228180709.1583486-160-sashal@kernel.org> (raw)
In-Reply-To: <20260228180709.1583486-1-sashal@kernel.org>

From: Shinas Rasheed <srasheed@marvell.com>

[ Upstream commit 0807dc76f3bf500f9a22465eedd2290da7357efb ]

Add PCI Endpoint NIC support for Octeon CN10K devices.
CN10K devices are part of Octeon 10 family products with
similar PCI NIC characteristics. These include:
- CN10KA
- CNF10KA
- CNF10KB
- CN10KB

Update supported device list in Documentation

Signed-off-by: Shinas Rasheed <srasheed@marvell.com>
Link: https://lore.kernel.org/r/20231117103817.2468176-1-srasheed@marvell.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Stable-dep-of: 73e6ffa37ceb ("octeon_ep: disable per ring interrupts")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../ethernet/marvell/octeon_ep.rst            |   4 +
 .../net/ethernet/marvell/octeon_ep/Makefile   |   3 +-
 .../marvell/octeon_ep/octep_cnxk_pf.c         | 886 ++++++++++++++++++
 .../ethernet/marvell/octeon_ep/octep_main.c   |  20 +
 .../ethernet/marvell/octeon_ep/octep_main.h   |   6 +
 .../marvell/octeon_ep/octep_regs_cnxk_pf.h    | 400 ++++++++
 6 files changed, 1318 insertions(+), 1 deletion(-)
 create mode 100644 drivers/net/ethernet/marvell/octeon_ep/octep_cnxk_pf.c
 create mode 100644 drivers/net/ethernet/marvell/octeon_ep/octep_regs_cnxk_pf.h

diff --git a/Documentation/networking/device_drivers/ethernet/marvell/octeon_ep.rst b/Documentation/networking/device_drivers/ethernet/marvell/octeon_ep.rst
index cad96c8d1f97d..613a818d5db6e 100644
--- a/Documentation/networking/device_drivers/ethernet/marvell/octeon_ep.rst
+++ b/Documentation/networking/device_drivers/ethernet/marvell/octeon_ep.rst
@@ -24,6 +24,10 @@ Supported Devices
 Currently, this driver support following devices:
  * Network controller: Cavium, Inc. Device b200
  * Network controller: Cavium, Inc. Device b400
+ * Network controller: Cavium, Inc. Device b900
+ * Network controller: Cavium, Inc. Device ba00
+ * Network controller: Cavium, Inc. Device bc00
+ * Network controller: Cavium, Inc. Device bd00
 
 Interface Control
 =================
diff --git a/drivers/net/ethernet/marvell/octeon_ep/Makefile b/drivers/net/ethernet/marvell/octeon_ep/Makefile
index 2026c8118158c..02a4a21bc2986 100644
--- a/drivers/net/ethernet/marvell/octeon_ep/Makefile
+++ b/drivers/net/ethernet/marvell/octeon_ep/Makefile
@@ -6,4 +6,5 @@
 obj-$(CONFIG_OCTEON_EP) += octeon_ep.o
 
 octeon_ep-y := octep_main.o octep_cn9k_pf.o octep_tx.o octep_rx.o \
-	       octep_ethtool.o octep_ctrl_mbox.o octep_ctrl_net.o
+	       octep_ethtool.o octep_ctrl_mbox.o octep_ctrl_net.o \
+	       octep_cnxk_pf.o
diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_cnxk_pf.c b/drivers/net/ethernet/marvell/octeon_ep/octep_cnxk_pf.c
new file mode 100644
index 0000000000000..abb03e9119e72
--- /dev/null
+++ b/drivers/net/ethernet/marvell/octeon_ep/octep_cnxk_pf.c
@@ -0,0 +1,886 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Marvell Octeon EP (EndPoint) Ethernet Driver
+ *
+ * Copyright (C) 2020 Marvell.
+ *
+ */
+
+#include <linux/pci.h>
+#include <linux/netdevice.h>
+#include <linux/etherdevice.h>
+
+#include "octep_config.h"
+#include "octep_main.h"
+#include "octep_regs_cnxk_pf.h"
+
+/* We will support 128 pf's in control mbox */
+#define CTRL_MBOX_MAX_PF	128
+#define CTRL_MBOX_SZ		((size_t)(0x400000 / CTRL_MBOX_MAX_PF))
+
+/* Names of Hardware non-queue generic interrupts */
+static char *cnxk_non_ioq_msix_names[] = {
+	"epf_ire_rint",
+	"epf_ore_rint",
+	"epf_vfire_rint",
+	"epf_rsvd0",
+	"epf_vfore_rint",
+	"epf_rsvd1",
+	"epf_mbox_rint",
+	"epf_rsvd2_0",
+	"epf_rsvd2_1",
+	"epf_dma_rint",
+	"epf_dma_vf_rint",
+	"epf_rsvd3",
+	"epf_pp_vf_rint",
+	"epf_rsvd3",
+	"epf_misc_rint",
+	"epf_rsvd5",
+	/* Next 16 are for OEI_RINT */
+	"epf_oei_rint0",
+	"epf_oei_rint1",
+	"epf_oei_rint2",
+	"epf_oei_rint3",
+	"epf_oei_rint4",
+	"epf_oei_rint5",
+	"epf_oei_rint6",
+	"epf_oei_rint7",
+	"epf_oei_rint8",
+	"epf_oei_rint9",
+	"epf_oei_rint10",
+	"epf_oei_rint11",
+	"epf_oei_rint12",
+	"epf_oei_rint13",
+	"epf_oei_rint14",
+	"epf_oei_rint15",
+	/* IOQ interrupt */
+	"octeon_ep"
+};
+
+/* Dump useful hardware CSRs for debug purpose */
+static void cnxk_dump_regs(struct octep_device *oct, int qno)
+{
+	struct device *dev = &oct->pdev->dev;
+
+	dev_info(dev, "IQ-%d register dump\n", qno);
+	dev_info(dev, "R[%d]_IN_INSTR_DBELL[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_IN_INSTR_DBELL(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_IN_INSTR_DBELL(qno)));
+	dev_info(dev, "R[%d]_IN_CONTROL[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_IN_CONTROL(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_IN_CONTROL(qno)));
+	dev_info(dev, "R[%d]_IN_ENABLE[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_IN_ENABLE(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_IN_ENABLE(qno)));
+	dev_info(dev, "R[%d]_IN_INSTR_BADDR[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_IN_INSTR_BADDR(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_IN_INSTR_BADDR(qno)));
+	dev_info(dev, "R[%d]_IN_INSTR_RSIZE[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_IN_INSTR_RSIZE(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_IN_INSTR_RSIZE(qno)));
+	dev_info(dev, "R[%d]_IN_CNTS[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_IN_CNTS(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_IN_CNTS(qno)));
+	dev_info(dev, "R[%d]_IN_INT_LEVELS[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_IN_INT_LEVELS(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_IN_INT_LEVELS(qno)));
+	dev_info(dev, "R[%d]_IN_PKT_CNT[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_IN_PKT_CNT(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_IN_PKT_CNT(qno)));
+	dev_info(dev, "R[%d]_IN_BYTE_CNT[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_IN_BYTE_CNT(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_IN_BYTE_CNT(qno)));
+
+	dev_info(dev, "OQ-%d register dump\n", qno);
+	dev_info(dev, "R[%d]_OUT_SLIST_DBELL[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_OUT_SLIST_DBELL(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_OUT_SLIST_DBELL(qno)));
+	dev_info(dev, "R[%d]_OUT_CONTROL[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_OUT_CONTROL(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_OUT_CONTROL(qno)));
+	dev_info(dev, "R[%d]_OUT_ENABLE[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_OUT_ENABLE(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_OUT_ENABLE(qno)));
+	dev_info(dev, "R[%d]_OUT_SLIST_BADDR[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_OUT_SLIST_BADDR(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_OUT_SLIST_BADDR(qno)));
+	dev_info(dev, "R[%d]_OUT_SLIST_RSIZE[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_OUT_SLIST_RSIZE(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_OUT_SLIST_RSIZE(qno)));
+	dev_info(dev, "R[%d]_OUT_CNTS[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_OUT_CNTS(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_OUT_CNTS(qno)));
+	dev_info(dev, "R[%d]_OUT_INT_LEVELS[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_OUT_INT_LEVELS(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_OUT_INT_LEVELS(qno)));
+	dev_info(dev, "R[%d]_OUT_PKT_CNT[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_OUT_PKT_CNT(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_OUT_PKT_CNT(qno)));
+	dev_info(dev, "R[%d]_OUT_BYTE_CNT[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_OUT_BYTE_CNT(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_OUT_BYTE_CNT(qno)));
+	dev_info(dev, "R[%d]_ERR_TYPE[0x%llx]: 0x%016llx\n",
+		 qno, CNXK_SDP_R_ERR_TYPE(qno),
+		 octep_read_csr64(oct, CNXK_SDP_R_ERR_TYPE(qno)));
+}
+
+/* Reset Hardware Tx queue */
+static int cnxk_reset_iq(struct octep_device *oct, int q_no)
+{
+	struct octep_config *conf = oct->conf;
+	u64 val = 0ULL;
+
+	dev_dbg(&oct->pdev->dev, "Reset PF IQ-%d\n", q_no);
+
+	/* Get absolute queue number */
+	q_no += conf->pf_ring_cfg.srn;
+
+	/* Disable the Tx/Instruction Ring */
+	octep_write_csr64(oct, CNXK_SDP_R_IN_ENABLE(q_no), val);
+
+	/* clear the Instruction Ring packet/byte counts and doorbell CSRs */
+	octep_write_csr64(oct, CNXK_SDP_R_IN_CNTS(q_no), val);
+	octep_write_csr64(oct, CNXK_SDP_R_IN_INT_LEVELS(q_no), val);
+	octep_write_csr64(oct, CNXK_SDP_R_IN_PKT_CNT(q_no), val);
+	octep_write_csr64(oct, CNXK_SDP_R_IN_BYTE_CNT(q_no), val);
+	octep_write_csr64(oct, CNXK_SDP_R_IN_INSTR_BADDR(q_no), val);
+	octep_write_csr64(oct, CNXK_SDP_R_IN_INSTR_RSIZE(q_no), val);
+
+	val = 0xFFFFFFFF;
+	octep_write_csr64(oct, CNXK_SDP_R_IN_INSTR_DBELL(q_no), val);
+
+	return 0;
+}
+
+/* Reset Hardware Rx queue */
+static void cnxk_reset_oq(struct octep_device *oct, int q_no)
+{
+	u64 val = 0ULL;
+
+	q_no += CFG_GET_PORTS_PF_SRN(oct->conf);
+
+	/* Disable Output (Rx) Ring */
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_ENABLE(q_no), val);
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_SLIST_BADDR(q_no), val);
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_SLIST_RSIZE(q_no), val);
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_INT_LEVELS(q_no), val);
+
+	/* Clear count CSRs */
+	val = octep_read_csr(oct, CNXK_SDP_R_OUT_CNTS(q_no));
+	octep_write_csr(oct, CNXK_SDP_R_OUT_CNTS(q_no), val);
+
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_PKT_CNT(q_no), 0xFFFFFFFFFULL);
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_SLIST_DBELL(q_no), 0xFFFFFFFF);
+}
+
+/* Reset all hardware Tx/Rx queues */
+static void octep_reset_io_queues_cnxk_pf(struct octep_device *oct)
+{
+	struct pci_dev *pdev = oct->pdev;
+	int q;
+
+	dev_dbg(&pdev->dev, "Reset OCTEP_CNXK PF IO Queues\n");
+
+	for (q = 0; q < CFG_GET_PORTS_ACTIVE_IO_RINGS(oct->conf); q++) {
+		cnxk_reset_iq(oct, q);
+		cnxk_reset_oq(oct, q);
+	}
+}
+
+/* Initialize windowed addresses to access some hardware registers */
+static void octep_setup_pci_window_regs_cnxk_pf(struct octep_device *oct)
+{
+	u8 __iomem *bar0_pciaddr = oct->mmio[0].hw_addr;
+
+	oct->pci_win_regs.pci_win_wr_addr = (u8 __iomem *)(bar0_pciaddr + CNXK_SDP_WIN_WR_ADDR64);
+	oct->pci_win_regs.pci_win_rd_addr = (u8 __iomem *)(bar0_pciaddr + CNXK_SDP_WIN_RD_ADDR64);
+	oct->pci_win_regs.pci_win_wr_data = (u8 __iomem *)(bar0_pciaddr + CNXK_SDP_WIN_WR_DATA64);
+	oct->pci_win_regs.pci_win_rd_data = (u8 __iomem *)(bar0_pciaddr + CNXK_SDP_WIN_RD_DATA64);
+}
+
+/* Configure Hardware mapping: inform hardware which rings belong to PF. */
+static void octep_configure_ring_mapping_cnxk_pf(struct octep_device *oct)
+{
+	struct octep_config *conf = oct->conf;
+	struct pci_dev *pdev = oct->pdev;
+	u64 pf_srn = CFG_GET_PORTS_PF_SRN(oct->conf);
+	int q;
+
+	for (q = 0; q < CFG_GET_PORTS_ACTIVE_IO_RINGS(conf); q++) {
+		u64 regval = 0;
+
+		if (oct->pcie_port)
+			regval = 8 << CNXK_SDP_FUNC_SEL_EPF_BIT_POS;
+
+		octep_write_csr64(oct, CNXK_SDP_EPVF_RING(pf_srn + q), regval);
+
+		regval = octep_read_csr64(oct, CNXK_SDP_EPVF_RING(pf_srn + q));
+		dev_dbg(&pdev->dev, "Write SDP_EPVF_RING[0x%llx] = 0x%llx\n",
+			CNXK_SDP_EPVF_RING(pf_srn + q), regval);
+	}
+}
+
+/* Initialize configuration limits and initial active config */
+static void octep_init_config_cnxk_pf(struct octep_device *oct)
+{
+	struct octep_config *conf = oct->conf;
+	struct pci_dev *pdev = oct->pdev;
+	u8 link = 0;
+	u64 val;
+	int pos;
+
+	/* Read ring configuration:
+	 * PF ring count, number of VFs and rings per VF supported
+	 */
+	val = octep_read_csr64(oct, CNXK_SDP_EPF_RINFO);
+	dev_info(&pdev->dev, "SDP_EPF_RINFO[0x%x]:0x%llx\n", CNXK_SDP_EPF_RINFO, val);
+	conf->sriov_cfg.max_rings_per_vf = CNXK_SDP_EPF_RINFO_RPVF(val);
+	conf->sriov_cfg.active_rings_per_vf = conf->sriov_cfg.max_rings_per_vf;
+	conf->sriov_cfg.max_vfs = CNXK_SDP_EPF_RINFO_NVFS(val);
+	conf->sriov_cfg.active_vfs = conf->sriov_cfg.max_vfs;
+	conf->sriov_cfg.vf_srn = CNXK_SDP_EPF_RINFO_SRN(val);
+
+	val = octep_read_csr64(oct, CNXK_SDP_MAC_PF_RING_CTL(oct->pcie_port));
+	dev_info(&pdev->dev, "SDP_MAC_PF_RING_CTL[%d]:0x%llx\n", oct->pcie_port, val);
+	conf->pf_ring_cfg.srn =  CNXK_SDP_MAC_PF_RING_CTL_SRN(val);
+	conf->pf_ring_cfg.max_io_rings = CNXK_SDP_MAC_PF_RING_CTL_RPPF(val);
+	conf->pf_ring_cfg.active_io_rings = conf->pf_ring_cfg.max_io_rings;
+	dev_info(&pdev->dev, "pf_srn=%u rpvf=%u nvfs=%u rppf=%u\n",
+		 conf->pf_ring_cfg.srn, conf->sriov_cfg.active_rings_per_vf,
+		 conf->sriov_cfg.active_vfs, conf->pf_ring_cfg.active_io_rings);
+
+	conf->iq.num_descs = OCTEP_IQ_MAX_DESCRIPTORS;
+	conf->iq.instr_type = OCTEP_64BYTE_INSTR;
+	conf->iq.db_min = OCTEP_DB_MIN;
+	conf->iq.intr_threshold = OCTEP_IQ_INTR_THRESHOLD;
+
+	conf->oq.num_descs = OCTEP_OQ_MAX_DESCRIPTORS;
+	conf->oq.buf_size = OCTEP_OQ_BUF_SIZE;
+	conf->oq.refill_threshold = OCTEP_OQ_REFILL_THRESHOLD;
+	conf->oq.oq_intr_pkt = OCTEP_OQ_INTR_PKT_THRESHOLD;
+	conf->oq.oq_intr_time = OCTEP_OQ_INTR_TIME_THRESHOLD;
+
+	conf->msix_cfg.non_ioq_msix = CNXK_NUM_NON_IOQ_INTR;
+	conf->msix_cfg.ioq_msix = conf->pf_ring_cfg.active_io_rings;
+	conf->msix_cfg.non_ioq_msix_names = cnxk_non_ioq_msix_names;
+
+	pos = pci_find_ext_capability(oct->pdev, PCI_EXT_CAP_ID_SRIOV);
+	if (pos) {
+		pci_read_config_byte(oct->pdev,
+				     pos + PCI_SRIOV_FUNC_LINK,
+				     &link);
+		link = PCI_DEVFN(PCI_SLOT(oct->pdev->devfn), link);
+	}
+	conf->ctrl_mbox_cfg.barmem_addr = (void __iomem *)oct->mmio[2].hw_addr +
+					   CNXK_PEM_BAR4_INDEX_OFFSET +
+					   (link * CTRL_MBOX_SZ);
+
+	conf->fw_info.hb_interval = OCTEP_DEFAULT_FW_HB_INTERVAL;
+	conf->fw_info.hb_miss_count = OCTEP_DEFAULT_FW_HB_MISS_COUNT;
+}
+
+/* Setup registers for a hardware Tx Queue  */
+static void octep_setup_iq_regs_cnxk_pf(struct octep_device *oct, int iq_no)
+{
+	struct octep_iq *iq = oct->iq[iq_no];
+	u32 reset_instr_cnt;
+	u64 reg_val;
+
+	iq_no += CFG_GET_PORTS_PF_SRN(oct->conf);
+	reg_val = octep_read_csr64(oct, CNXK_SDP_R_IN_CONTROL(iq_no));
+
+	/* wait for IDLE to set to 1 */
+	if (!(reg_val & CNXK_R_IN_CTL_IDLE)) {
+		do {
+			reg_val = octep_read_csr64(oct, CNXK_SDP_R_IN_CONTROL(iq_no));
+		} while (!(reg_val & CNXK_R_IN_CTL_IDLE));
+	}
+
+	reg_val |= CNXK_R_IN_CTL_RDSIZE;
+	reg_val |= CNXK_R_IN_CTL_IS_64B;
+	reg_val |= CNXK_R_IN_CTL_ESR;
+	octep_write_csr64(oct, CNXK_SDP_R_IN_CONTROL(iq_no), reg_val);
+
+	/* Write the start of the input queue's ring and its size  */
+	octep_write_csr64(oct, CNXK_SDP_R_IN_INSTR_BADDR(iq_no),
+			  iq->desc_ring_dma);
+	octep_write_csr64(oct, CNXK_SDP_R_IN_INSTR_RSIZE(iq_no),
+			  iq->max_count);
+
+	/* Remember the doorbell & instruction count register addr
+	 * for this queue
+	 */
+	iq->doorbell_reg = oct->mmio[0].hw_addr +
+			   CNXK_SDP_R_IN_INSTR_DBELL(iq_no);
+	iq->inst_cnt_reg = oct->mmio[0].hw_addr +
+			   CNXK_SDP_R_IN_CNTS(iq_no);
+	iq->intr_lvl_reg = oct->mmio[0].hw_addr +
+			   CNXK_SDP_R_IN_INT_LEVELS(iq_no);
+
+	/* Store the current instruction counter (used in flush_iq calculation) */
+	reset_instr_cnt = readl(iq->inst_cnt_reg);
+	writel(reset_instr_cnt, iq->inst_cnt_reg);
+
+	/* INTR_THRESHOLD is set to max(FFFFFFFF) to disable the INTR */
+	reg_val = CFG_GET_IQ_INTR_THRESHOLD(oct->conf) & 0xffffffff;
+	octep_write_csr64(oct, CNXK_SDP_R_IN_INT_LEVELS(iq_no), reg_val);
+}
+
+/* Setup registers for a hardware Rx Queue  */
+static void octep_setup_oq_regs_cnxk_pf(struct octep_device *oct, int oq_no)
+{
+	u64 reg_val;
+	u64 oq_ctl = 0ULL;
+	u32 time_threshold = 0;
+	struct octep_oq *oq = oct->oq[oq_no];
+
+	oq_no += CFG_GET_PORTS_PF_SRN(oct->conf);
+	reg_val = octep_read_csr64(oct, CNXK_SDP_R_OUT_CONTROL(oq_no));
+
+	/* wait for IDLE to set to 1 */
+	if (!(reg_val & CNXK_R_OUT_CTL_IDLE)) {
+		do {
+			reg_val = octep_read_csr64(oct, CNXK_SDP_R_OUT_CONTROL(oq_no));
+		} while (!(reg_val & CNXK_R_OUT_CTL_IDLE));
+	}
+
+	reg_val &= ~(CNXK_R_OUT_CTL_IMODE);
+	reg_val &= ~(CNXK_R_OUT_CTL_ROR_P);
+	reg_val &= ~(CNXK_R_OUT_CTL_NSR_P);
+	reg_val &= ~(CNXK_R_OUT_CTL_ROR_I);
+	reg_val &= ~(CNXK_R_OUT_CTL_NSR_I);
+	reg_val &= ~(CNXK_R_OUT_CTL_ES_I);
+	reg_val &= ~(CNXK_R_OUT_CTL_ROR_D);
+	reg_val &= ~(CNXK_R_OUT_CTL_NSR_D);
+	reg_val &= ~(CNXK_R_OUT_CTL_ES_D);
+	reg_val |= (CNXK_R_OUT_CTL_ES_P);
+
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_CONTROL(oq_no), reg_val);
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_SLIST_BADDR(oq_no),
+			  oq->desc_ring_dma);
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_SLIST_RSIZE(oq_no),
+			  oq->max_count);
+
+	oq_ctl = octep_read_csr64(oct, CNXK_SDP_R_OUT_CONTROL(oq_no));
+
+	/* Clear the ISIZE and BSIZE (22-0) */
+	oq_ctl &= ~0x7fffffULL;
+
+	/* Populate the BSIZE (15-0) */
+	oq_ctl |= (oq->buffer_size & 0xffff);
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_CONTROL(oq_no), oq_ctl);
+
+	/* Get the mapped address of the pkt_sent and pkts_credit regs */
+	oq->pkts_sent_reg = oct->mmio[0].hw_addr + CNXK_SDP_R_OUT_CNTS(oq_no);
+	oq->pkts_credit_reg = oct->mmio[0].hw_addr +
+			      CNXK_SDP_R_OUT_SLIST_DBELL(oq_no);
+
+	time_threshold = CFG_GET_OQ_INTR_TIME(oct->conf);
+	reg_val = ((u64)time_threshold << 32) |
+		  CFG_GET_OQ_INTR_PKT(oct->conf);
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_INT_LEVELS(oq_no), reg_val);
+}
+
+/* Setup registers for a PF mailbox */
+static void octep_setup_mbox_regs_cnxk_pf(struct octep_device *oct, int q_no)
+{
+	struct octep_mbox *mbox = oct->mbox[q_no];
+
+	mbox->q_no = q_no;
+
+	/* PF mbox interrupt reg */
+	mbox->mbox_int_reg = oct->mmio[0].hw_addr + CNXK_SDP_EPF_MBOX_RINT(0);
+
+	/* PF to VF DATA reg. PF writes into this reg */
+	mbox->mbox_write_reg = oct->mmio[0].hw_addr + CNXK_SDP_R_MBOX_PF_VF_DATA(q_no);
+
+	/* VF to PF DATA reg. PF reads from this reg */
+	mbox->mbox_read_reg = oct->mmio[0].hw_addr + CNXK_SDP_R_MBOX_VF_PF_DATA(q_no);
+}
+
+/* Poll OEI events like heartbeat */
+static void octep_poll_oei_cnxk_pf(struct octep_device *oct)
+{
+	u64 reg0;
+
+	/* Check for OEI INTR */
+	reg0 = octep_read_csr64(oct, CNXK_SDP_EPF_OEI_RINT);
+	if (reg0) {
+		octep_write_csr64(oct, CNXK_SDP_EPF_OEI_RINT, reg0);
+		if (reg0 & CNXK_SDP_EPF_OEI_RINT_DATA_BIT_MBOX)
+			queue_work(octep_wq, &oct->ctrl_mbox_task);
+		if (reg0 & CNXK_SDP_EPF_OEI_RINT_DATA_BIT_HBEAT)
+			atomic_set(&oct->hb_miss_cnt, 0);
+	}
+}
+
+/* OEI interrupt handler */
+static irqreturn_t octep_oei_intr_handler_cnxk_pf(void *dev)
+{
+	struct octep_device *oct = (struct octep_device *)dev;
+
+	octep_poll_oei_cnxk_pf(oct);
+	return IRQ_HANDLED;
+}
+
+/* Process non-ioq interrupts required to keep pf interface running.
+ * OEI_RINT is needed for control mailbox
+ * MBOX_RINT is needed for pfvf mailbox
+ */
+static void octep_poll_non_ioq_interrupts_cnxk_pf(struct octep_device *oct)
+{
+	octep_poll_oei_cnxk_pf(oct);
+}
+
+/* Interrupt handler for input ring error interrupts. */
+static irqreturn_t octep_ire_intr_handler_cnxk_pf(void *dev)
+{
+	struct octep_device *oct = (struct octep_device *)dev;
+	struct pci_dev *pdev = oct->pdev;
+	u64 reg_val = 0;
+	int i = 0;
+
+	/* Check for IRERR INTR */
+	reg_val = octep_read_csr64(oct, CNXK_SDP_EPF_IRERR_RINT);
+	if (reg_val) {
+		dev_info(&pdev->dev,
+			 "received IRERR_RINT intr: 0x%llx\n", reg_val);
+		octep_write_csr64(oct, CNXK_SDP_EPF_IRERR_RINT, reg_val);
+
+		for (i = 0; i < CFG_GET_PORTS_ACTIVE_IO_RINGS(oct->conf); i++) {
+			reg_val = octep_read_csr64(oct,
+						   CNXK_SDP_R_ERR_TYPE(i));
+			if (reg_val) {
+				dev_info(&pdev->dev,
+					 "Received err type on IQ-%d: 0x%llx\n",
+					 i, reg_val);
+				octep_write_csr64(oct, CNXK_SDP_R_ERR_TYPE(i),
+						  reg_val);
+			}
+		}
+	}
+	return IRQ_HANDLED;
+}
+
+/* Interrupt handler for output ring error interrupts. */
+static irqreturn_t octep_ore_intr_handler_cnxk_pf(void *dev)
+{
+	struct octep_device *oct = (struct octep_device *)dev;
+	struct pci_dev *pdev = oct->pdev;
+	u64 reg_val = 0;
+	int i = 0;
+
+	/* Check for ORERR INTR */
+	reg_val = octep_read_csr64(oct, CNXK_SDP_EPF_ORERR_RINT);
+	if (reg_val) {
+		dev_info(&pdev->dev,
+			 "Received ORERR_RINT intr: 0x%llx\n", reg_val);
+		octep_write_csr64(oct, CNXK_SDP_EPF_ORERR_RINT, reg_val);
+		for (i = 0; i < CFG_GET_PORTS_ACTIVE_IO_RINGS(oct->conf); i++) {
+			reg_val = octep_read_csr64(oct, CNXK_SDP_R_ERR_TYPE(i));
+			if (reg_val) {
+				dev_info(&pdev->dev,
+					 "Received err type on OQ-%d: 0x%llx\n",
+					 i, reg_val);
+				octep_write_csr64(oct, CNXK_SDP_R_ERR_TYPE(i),
+						  reg_val);
+			}
+		}
+	}
+	return IRQ_HANDLED;
+}
+
+/* Interrupt handler for vf input ring error interrupts. */
+static irqreturn_t octep_vfire_intr_handler_cnxk_pf(void *dev)
+{
+	struct octep_device *oct = (struct octep_device *)dev;
+	struct pci_dev *pdev = oct->pdev;
+	u64 reg_val = 0;
+
+	/* Check for VFIRE INTR */
+	reg_val = octep_read_csr64(oct, CNXK_SDP_EPF_VFIRE_RINT(0));
+	if (reg_val) {
+		dev_info(&pdev->dev,
+			 "Received VFIRE_RINT intr: 0x%llx\n", reg_val);
+		octep_write_csr64(oct, CNXK_SDP_EPF_VFIRE_RINT(0), reg_val);
+	}
+	return IRQ_HANDLED;
+}
+
+/* Interrupt handler for vf output ring error interrupts. */
+static irqreturn_t octep_vfore_intr_handler_cnxk_pf(void *dev)
+{
+	struct octep_device *oct = (struct octep_device *)dev;
+	struct pci_dev *pdev = oct->pdev;
+	u64 reg_val = 0;
+
+	/* Check for VFORE INTR */
+	reg_val = octep_read_csr64(oct, CNXK_SDP_EPF_VFORE_RINT(0));
+	if (reg_val) {
+		dev_info(&pdev->dev,
+			 "Received VFORE_RINT intr: 0x%llx\n", reg_val);
+		octep_write_csr64(oct, CNXK_SDP_EPF_VFORE_RINT(0), reg_val);
+	}
+	return IRQ_HANDLED;
+}
+
+/* Interrupt handler for dpi dma related interrupts. */
+static irqreturn_t octep_dma_intr_handler_cnxk_pf(void *dev)
+{
+	struct octep_device *oct = (struct octep_device *)dev;
+	u64 reg_val = 0;
+
+	/* Check for DMA INTR */
+	reg_val = octep_read_csr64(oct, CNXK_SDP_EPF_DMA_RINT);
+	if (reg_val)
+		octep_write_csr64(oct, CNXK_SDP_EPF_DMA_RINT, reg_val);
+
+	return IRQ_HANDLED;
+}
+
+/* Interrupt handler for dpi dma transaction error interrupts for VFs  */
+static irqreturn_t octep_dma_vf_intr_handler_cnxk_pf(void *dev)
+{
+	struct octep_device *oct = (struct octep_device *)dev;
+	struct pci_dev *pdev = oct->pdev;
+	u64 reg_val = 0;
+
+	/* Check for DMA VF INTR */
+	reg_val = octep_read_csr64(oct, CNXK_SDP_EPF_DMA_VF_RINT(0));
+	if (reg_val) {
+		dev_info(&pdev->dev,
+			 "Received DMA_VF_RINT intr: 0x%llx\n", reg_val);
+		octep_write_csr64(oct, CNXK_SDP_EPF_DMA_VF_RINT(0), reg_val);
+	}
+	return IRQ_HANDLED;
+}
+
+/* Interrupt handler for pp transaction error interrupts for VFs  */
+static irqreturn_t octep_pp_vf_intr_handler_cnxk_pf(void *dev)
+{
+	struct octep_device *oct = (struct octep_device *)dev;
+	struct pci_dev *pdev = oct->pdev;
+	u64 reg_val = 0;
+
+	/* Check for PPVF INTR */
+	reg_val = octep_read_csr64(oct, CNXK_SDP_EPF_PP_VF_RINT(0));
+	if (reg_val) {
+		dev_info(&pdev->dev,
+			 "Received PP_VF_RINT intr: 0x%llx\n", reg_val);
+		octep_write_csr64(oct, CNXK_SDP_EPF_PP_VF_RINT(0), reg_val);
+	}
+	return IRQ_HANDLED;
+}
+
+/* Interrupt handler for mac related interrupts. */
+static irqreturn_t octep_misc_intr_handler_cnxk_pf(void *dev)
+{
+	struct octep_device *oct = (struct octep_device *)dev;
+	struct pci_dev *pdev = oct->pdev;
+	u64 reg_val = 0;
+
+	/* Check for MISC INTR */
+	reg_val = octep_read_csr64(oct, CNXK_SDP_EPF_MISC_RINT);
+	if (reg_val) {
+		dev_info(&pdev->dev,
+			 "Received MISC_RINT intr: 0x%llx\n", reg_val);
+		octep_write_csr64(oct, CNXK_SDP_EPF_MISC_RINT, reg_val);
+	}
+	return IRQ_HANDLED;
+}
+
+/* Interrupts handler for all reserved interrupts. */
+static irqreturn_t octep_rsvd_intr_handler_cnxk_pf(void *dev)
+{
+	struct octep_device *oct = (struct octep_device *)dev;
+	struct pci_dev *pdev = oct->pdev;
+
+	dev_info(&pdev->dev, "Reserved interrupts raised; Ignore\n");
+	return IRQ_HANDLED;
+}
+
+/* Tx/Rx queue interrupt handler */
+static irqreturn_t octep_ioq_intr_handler_cnxk_pf(void *data)
+{
+	struct octep_ioq_vector *vector = (struct octep_ioq_vector *)data;
+	struct octep_oq *oq = vector->oq;
+
+	napi_schedule_irqoff(oq->napi);
+	return IRQ_HANDLED;
+}
+
+/* soft reset */
+static int octep_soft_reset_cnxk_pf(struct octep_device *oct)
+{
+	dev_info(&oct->pdev->dev, "CNXKXX: Doing soft reset\n");
+
+	octep_write_csr64(oct, CNXK_SDP_WIN_WR_MASK_REG, 0xFF);
+
+	/* Firmware status CSR is supposed to be cleared by
+	 * core domain reset, but due to a hw bug, it is not.
+	 * Set it to RUNNING right before reset so that it is not
+	 * left in READY (1) state after a reset.  This is required
+	 * in addition to the early setting to handle the case where
+	 * the OcteonTX is unexpectedly reset, reboots, and then
+	 * the module is removed.
+	 */
+	OCTEP_PCI_WIN_WRITE(oct, CNXK_PEMX_PFX_CSX_PFCFGX(0, 0, CNXK_PCIEEP_VSECST_CTL),
+			    FW_STATUS_RUNNING);
+
+	/* Set chip domain reset bit */
+	OCTEP_PCI_WIN_WRITE(oct, CNXK_RST_CHIP_DOMAIN_W1S, 1);
+	/* Wait till Octeon resets. */
+	mdelay(10);
+	/* restore the  reset value */
+	octep_write_csr64(oct, CNXK_SDP_WIN_WR_MASK_REG, 0xFF);
+
+	return 0;
+}
+
+/* Re-initialize Octeon hardware registers */
+static void octep_reinit_regs_cnxk_pf(struct octep_device *oct)
+{
+	u32 i;
+
+	for (i = 0; i < CFG_GET_PORTS_ACTIVE_IO_RINGS(oct->conf); i++)
+		oct->hw_ops.setup_iq_regs(oct, i);
+
+	for (i = 0; i < CFG_GET_PORTS_ACTIVE_IO_RINGS(oct->conf); i++)
+		oct->hw_ops.setup_oq_regs(oct, i);
+
+	oct->hw_ops.enable_interrupts(oct);
+	oct->hw_ops.enable_io_queues(oct);
+
+	for (i = 0; i < CFG_GET_PORTS_ACTIVE_IO_RINGS(oct->conf); i++)
+		writel(oct->oq[i]->max_count, oct->oq[i]->pkts_credit_reg);
+}
+
+/* Enable all interrupts */
+static void octep_enable_interrupts_cnxk_pf(struct octep_device *oct)
+{
+	u64 intr_mask = 0ULL;
+	int srn, num_rings, i;
+
+	srn = CFG_GET_PORTS_PF_SRN(oct->conf);
+	num_rings = CFG_GET_PORTS_ACTIVE_IO_RINGS(oct->conf);
+
+	for (i = 0; i < num_rings; i++)
+		intr_mask |= (0x1ULL << (srn + i));
+
+	octep_write_csr64(oct, CNXK_SDP_EPF_IRERR_RINT_ENA_W1S, intr_mask);
+	octep_write_csr64(oct, CNXK_SDP_EPF_ORERR_RINT_ENA_W1S, intr_mask);
+	octep_write_csr64(oct, CNXK_SDP_EPF_OEI_RINT_ENA_W1S, -1ULL);
+
+	octep_write_csr64(oct, CNXK_SDP_EPF_VFIRE_RINT_ENA_W1S(0), -1ULL);
+	octep_write_csr64(oct, CNXK_SDP_EPF_VFORE_RINT_ENA_W1S(0), -1ULL);
+
+	octep_write_csr64(oct, CNXK_SDP_EPF_MISC_RINT_ENA_W1S, intr_mask);
+	octep_write_csr64(oct, CNXK_SDP_EPF_DMA_RINT_ENA_W1S, intr_mask);
+
+	octep_write_csr64(oct, CNXK_SDP_EPF_DMA_VF_RINT_ENA_W1S(0), -1ULL);
+	octep_write_csr64(oct, CNXK_SDP_EPF_PP_VF_RINT_ENA_W1S(0), -1ULL);
+}
+
+/* Disable all interrupts */
+static void octep_disable_interrupts_cnxk_pf(struct octep_device *oct)
+{
+	u64 intr_mask = 0ULL;
+	int srn, num_rings, i;
+
+	srn = CFG_GET_PORTS_PF_SRN(oct->conf);
+	num_rings = CFG_GET_PORTS_ACTIVE_IO_RINGS(oct->conf);
+
+	for (i = 0; i < num_rings; i++)
+		intr_mask |= (0x1ULL << (srn + i));
+
+	octep_write_csr64(oct, CNXK_SDP_EPF_IRERR_RINT_ENA_W1C, intr_mask);
+	octep_write_csr64(oct, CNXK_SDP_EPF_ORERR_RINT_ENA_W1C, intr_mask);
+	octep_write_csr64(oct, CNXK_SDP_EPF_OEI_RINT_ENA_W1C, -1ULL);
+
+	octep_write_csr64(oct, CNXK_SDP_EPF_VFIRE_RINT_ENA_W1C(0), -1ULL);
+	octep_write_csr64(oct, CNXK_SDP_EPF_VFORE_RINT_ENA_W1C(0), -1ULL);
+
+	octep_write_csr64(oct, CNXK_SDP_EPF_MISC_RINT_ENA_W1C, intr_mask);
+	octep_write_csr64(oct, CNXK_SDP_EPF_DMA_RINT_ENA_W1C, intr_mask);
+
+	octep_write_csr64(oct, CNXK_SDP_EPF_DMA_VF_RINT_ENA_W1C(0), -1ULL);
+	octep_write_csr64(oct, CNXK_SDP_EPF_PP_VF_RINT_ENA_W1C(0), -1ULL);
+}
+
+/* Get new Octeon Read Index: index of descriptor that Octeon reads next. */
+static u32 octep_update_iq_read_index_cnxk_pf(struct octep_iq *iq)
+{
+	u32 pkt_in_done = readl(iq->inst_cnt_reg);
+	u32 last_done, new_idx;
+
+	last_done = pkt_in_done - iq->pkt_in_done;
+	iq->pkt_in_done = pkt_in_done;
+
+	new_idx = (iq->octep_read_index + last_done) % iq->max_count;
+
+	return new_idx;
+}
+
+/* Enable a hardware Tx Queue */
+static void octep_enable_iq_cnxk_pf(struct octep_device *oct, int iq_no)
+{
+	u64 loop = HZ;
+	u64 reg_val;
+
+	iq_no += CFG_GET_PORTS_PF_SRN(oct->conf);
+
+	octep_write_csr64(oct, CNXK_SDP_R_IN_INSTR_DBELL(iq_no), 0xFFFFFFFF);
+
+	while (octep_read_csr64(oct, CNXK_SDP_R_IN_INSTR_DBELL(iq_no)) &&
+	       loop--) {
+		schedule_timeout_interruptible(1);
+	}
+
+	reg_val = octep_read_csr64(oct,  CNXK_SDP_R_IN_INT_LEVELS(iq_no));
+	reg_val |= (0x1ULL << 62);
+	octep_write_csr64(oct, CNXK_SDP_R_IN_INT_LEVELS(iq_no), reg_val);
+
+	reg_val = octep_read_csr64(oct, CNXK_SDP_R_IN_ENABLE(iq_no));
+	reg_val |= 0x1ULL;
+	octep_write_csr64(oct, CNXK_SDP_R_IN_ENABLE(iq_no), reg_val);
+}
+
+/* Enable a hardware Rx Queue */
+static void octep_enable_oq_cnxk_pf(struct octep_device *oct, int oq_no)
+{
+	u64 reg_val = 0ULL;
+
+	oq_no += CFG_GET_PORTS_PF_SRN(oct->conf);
+
+	reg_val = octep_read_csr64(oct,  CNXK_SDP_R_OUT_INT_LEVELS(oq_no));
+	reg_val |= (0x1ULL << 62);
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_INT_LEVELS(oq_no), reg_val);
+
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_SLIST_DBELL(oq_no), 0xFFFFFFFF);
+
+	reg_val = octep_read_csr64(oct, CNXK_SDP_R_OUT_ENABLE(oq_no));
+	reg_val |= 0x1ULL;
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_ENABLE(oq_no), reg_val);
+}
+
+/* Enable all hardware Tx/Rx Queues assined to PF */
+static void octep_enable_io_queues_cnxk_pf(struct octep_device *oct)
+{
+	u8 q;
+
+	for (q = 0; q < CFG_GET_PORTS_ACTIVE_IO_RINGS(oct->conf); q++) {
+		octep_enable_iq_cnxk_pf(oct, q);
+		octep_enable_oq_cnxk_pf(oct, q);
+	}
+}
+
+/* Disable a hardware Tx Queue assined to PF */
+static void octep_disable_iq_cnxk_pf(struct octep_device *oct, int iq_no)
+{
+	u64 reg_val = 0ULL;
+
+	iq_no += CFG_GET_PORTS_PF_SRN(oct->conf);
+
+	reg_val = octep_read_csr64(oct, CNXK_SDP_R_IN_ENABLE(iq_no));
+	reg_val &= ~0x1ULL;
+	octep_write_csr64(oct, CNXK_SDP_R_IN_ENABLE(iq_no), reg_val);
+}
+
+/* Disable a hardware Rx Queue assined to PF */
+static void octep_disable_oq_cnxk_pf(struct octep_device *oct, int oq_no)
+{
+	u64 reg_val = 0ULL;
+
+	oq_no += CFG_GET_PORTS_PF_SRN(oct->conf);
+	reg_val = octep_read_csr64(oct, CNXK_SDP_R_OUT_ENABLE(oq_no));
+	reg_val &= ~0x1ULL;
+	octep_write_csr64(oct, CNXK_SDP_R_OUT_ENABLE(oq_no), reg_val);
+}
+
+/* Disable all hardware Tx/Rx Queues assined to PF */
+static void octep_disable_io_queues_cnxk_pf(struct octep_device *oct)
+{
+	int q = 0;
+
+	for (q = 0; q < CFG_GET_PORTS_ACTIVE_IO_RINGS(oct->conf); q++) {
+		octep_disable_iq_cnxk_pf(oct, q);
+		octep_disable_oq_cnxk_pf(oct, q);
+	}
+}
+
+/* Dump hardware registers (including Tx/Rx queues) for debugging. */
+static void octep_dump_registers_cnxk_pf(struct octep_device *oct)
+{
+	u8 srn, num_rings, q;
+
+	srn = CFG_GET_PORTS_PF_SRN(oct->conf);
+	num_rings = CFG_GET_PORTS_ACTIVE_IO_RINGS(oct->conf);
+
+	for (q = srn; q < srn + num_rings; q++)
+		cnxk_dump_regs(oct, q);
+}
+
+/**
+ * octep_device_setup_cnxk_pf() - Setup Octeon device.
+ *
+ * @oct: Octeon device private data structure.
+ *
+ * - initialize hardware operations.
+ * - get target side pcie port number for the device.
+ * - setup window access to hardware registers.
+ * - set initial configuration and max limits.
+ * - setup hardware mapping of rings to the PF device.
+ */
+void octep_device_setup_cnxk_pf(struct octep_device *oct)
+{
+	oct->hw_ops.setup_iq_regs = octep_setup_iq_regs_cnxk_pf;
+	oct->hw_ops.setup_oq_regs = octep_setup_oq_regs_cnxk_pf;
+	oct->hw_ops.setup_mbox_regs = octep_setup_mbox_regs_cnxk_pf;
+
+	oct->hw_ops.oei_intr_handler = octep_oei_intr_handler_cnxk_pf;
+	oct->hw_ops.ire_intr_handler = octep_ire_intr_handler_cnxk_pf;
+	oct->hw_ops.ore_intr_handler = octep_ore_intr_handler_cnxk_pf;
+	oct->hw_ops.vfire_intr_handler = octep_vfire_intr_handler_cnxk_pf;
+	oct->hw_ops.vfore_intr_handler = octep_vfore_intr_handler_cnxk_pf;
+	oct->hw_ops.dma_intr_handler = octep_dma_intr_handler_cnxk_pf;
+	oct->hw_ops.dma_vf_intr_handler = octep_dma_vf_intr_handler_cnxk_pf;
+	oct->hw_ops.pp_vf_intr_handler = octep_pp_vf_intr_handler_cnxk_pf;
+	oct->hw_ops.misc_intr_handler = octep_misc_intr_handler_cnxk_pf;
+	oct->hw_ops.rsvd_intr_handler = octep_rsvd_intr_handler_cnxk_pf;
+	oct->hw_ops.ioq_intr_handler = octep_ioq_intr_handler_cnxk_pf;
+	oct->hw_ops.soft_reset = octep_soft_reset_cnxk_pf;
+	oct->hw_ops.reinit_regs = octep_reinit_regs_cnxk_pf;
+
+	oct->hw_ops.enable_interrupts = octep_enable_interrupts_cnxk_pf;
+	oct->hw_ops.disable_interrupts = octep_disable_interrupts_cnxk_pf;
+	oct->hw_ops.poll_non_ioq_interrupts = octep_poll_non_ioq_interrupts_cnxk_pf;
+
+	oct->hw_ops.update_iq_read_idx = octep_update_iq_read_index_cnxk_pf;
+
+	oct->hw_ops.enable_iq = octep_enable_iq_cnxk_pf;
+	oct->hw_ops.enable_oq = octep_enable_oq_cnxk_pf;
+	oct->hw_ops.enable_io_queues = octep_enable_io_queues_cnxk_pf;
+
+	oct->hw_ops.disable_iq = octep_disable_iq_cnxk_pf;
+	oct->hw_ops.disable_oq = octep_disable_oq_cnxk_pf;
+	oct->hw_ops.disable_io_queues = octep_disable_io_queues_cnxk_pf;
+	oct->hw_ops.reset_io_queues = octep_reset_io_queues_cnxk_pf;
+
+	oct->hw_ops.dump_registers = octep_dump_registers_cnxk_pf;
+
+	octep_setup_pci_window_regs_cnxk_pf(oct);
+
+	oct->pcie_port = octep_read_csr64(oct, CNXK_SDP_MAC_NUMBER) & 0xff;
+	dev_info(&oct->pdev->dev,
+		 "Octeon device using PCIE Port %d\n", oct->pcie_port);
+
+	octep_init_config_cnxk_pf(oct);
+	octep_configure_ring_mapping_cnxk_pf(oct);
+
+	/* Firmware status CSR is supposed to be cleared by
+	 * core domain reset, but due to IPBUPEM-38842, it is not.
+	 * Set it to RUNNING early in boot, so that unexpected resets
+	 * leave it in a state that is not READY (1).
+	 */
+	OCTEP_PCI_WIN_WRITE(oct, CNXK_PEMX_PFX_CSX_PFCFGX(0, 0, CNXK_PCIEEP_VSECST_CTL),
+			    FW_STATUS_RUNNING);
+}
diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
index b19f756e24489..db24c290a9079 100644
--- a/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
+++ b/drivers/net/ethernet/marvell/octeon_ep/octep_main.c
@@ -24,6 +24,10 @@ struct workqueue_struct *octep_wq;
 static const struct pci_device_id octep_pci_id_tbl[] = {
 	{PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, OCTEP_PCI_DEVICE_ID_CN93_PF)},
 	{PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, OCTEP_PCI_DEVICE_ID_CNF95N_PF)},
+	{PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, OCTEP_PCI_DEVICE_ID_CN10KA_PF)},
+	{PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, OCTEP_PCI_DEVICE_ID_CNF10KA_PF)},
+	{PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, OCTEP_PCI_DEVICE_ID_CNF10KB_PF)},
+	{PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, OCTEP_PCI_DEVICE_ID_CN10KB_PF)},
 	{0, },
 };
 MODULE_DEVICE_TABLE(pci, octep_pci_id_tbl);
@@ -1126,6 +1130,14 @@ static const char *octep_devid_to_str(struct octep_device *oct)
 		return "CN93XX";
 	case OCTEP_PCI_DEVICE_ID_CNF95N_PF:
 		return "CNF95N";
+	case OCTEP_PCI_DEVICE_ID_CN10KA_PF:
+		return "CN10KA";
+	case OCTEP_PCI_DEVICE_ID_CNF10KA_PF:
+		return "CNF10KA";
+	case OCTEP_PCI_DEVICE_ID_CNF10KB_PF:
+		return "CNF10KB";
+	case OCTEP_PCI_DEVICE_ID_CN10KB_PF:
+		return "CN10KB";
 	default:
 		return "Unsupported";
 	}
@@ -1171,6 +1183,14 @@ int octep_device_setup(struct octep_device *oct)
 			 OCTEP_MINOR_REV(oct));
 		octep_device_setup_cn93_pf(oct);
 		break;
+	case OCTEP_PCI_DEVICE_ID_CNF10KA_PF:
+	case OCTEP_PCI_DEVICE_ID_CN10KA_PF:
+	case OCTEP_PCI_DEVICE_ID_CNF10KB_PF:
+	case OCTEP_PCI_DEVICE_ID_CN10KB_PF:
+		dev_info(&pdev->dev, "Setting up OCTEON %s PF PASS%d.%d\n",
+			 octep_devid_to_str(oct), OCTEP_MAJOR_REV(oct), OCTEP_MINOR_REV(oct));
+		octep_device_setup_cnxk_pf(oct);
+		break;
 	default:
 		dev_err(&pdev->dev,
 			"%s: unsupported device\n", __func__);
diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_main.h b/drivers/net/ethernet/marvell/octeon_ep/octep_main.h
index 6df902ebb7f33..f67bb87901005 100644
--- a/drivers/net/ethernet/marvell/octeon_ep/octep_main.h
+++ b/drivers/net/ethernet/marvell/octeon_ep/octep_main.h
@@ -23,6 +23,11 @@
 
 #define  OCTEP_PCI_DEVICE_ID_CNF95N_PF 0xB400    //95N PF
 
+#define  OCTEP_PCI_DEVICE_ID_CN10KA_PF  0xB900   //CN10KA PF
+#define  OCTEP_PCI_DEVICE_ID_CNF10KA_PF 0xBA00   //CNF10KA PF
+#define  OCTEP_PCI_DEVICE_ID_CNF10KB_PF 0xBC00   //CNF10KB PF
+#define  OCTEP_PCI_DEVICE_ID_CN10KB_PF  0xBD00   //CN10KB PF
+
 #define  OCTEP_MAX_QUEUES   63
 #define  OCTEP_MAX_IQ       OCTEP_MAX_QUEUES
 #define  OCTEP_MAX_OQ       OCTEP_MAX_QUEUES
@@ -377,6 +382,7 @@ int octep_setup_oqs(struct octep_device *oct);
 void octep_free_oqs(struct octep_device *oct);
 void octep_oq_dbell_init(struct octep_device *oct);
 void octep_device_setup_cn93_pf(struct octep_device *oct);
+void octep_device_setup_cnxk_pf(struct octep_device *oct);
 int octep_iq_process_completions(struct octep_iq *iq, u16 budget);
 int octep_oq_process_rx(struct octep_oq *oq, int budget);
 void octep_set_ethtool_ops(struct net_device *netdev);
diff --git a/drivers/net/ethernet/marvell/octeon_ep/octep_regs_cnxk_pf.h b/drivers/net/ethernet/marvell/octeon_ep/octep_regs_cnxk_pf.h
new file mode 100644
index 0000000000000..abe02df8af117
--- /dev/null
+++ b/drivers/net/ethernet/marvell/octeon_ep/octep_regs_cnxk_pf.h
@@ -0,0 +1,400 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Marvell Octeon EP (EndPoint) Ethernet Driver
+ *
+ * Copyright (C) 2020 Marvell.
+ *
+ */
+
+#ifndef _OCTEP_REGS_CNXK_PF_H_
+#define _OCTEP_REGS_CNXK_PF_H_
+
+/* ############################ RST ######################### */
+#define    CNXK_RST_BOOT               0x000087E006001600ULL
+#define    CNXK_RST_CHIP_DOMAIN_W1S    0x000087E006001810ULL
+#define    CNXK_RST_CORE_DOMAIN_W1S    0x000087E006001820ULL
+#define    CNXK_RST_CORE_DOMAIN_W1C    0x000087E006001828ULL
+
+#define     CNXK_CONFIG_XPANSION_BAR             0x38
+#define     CNXK_CONFIG_PCIE_CAP                 0x70
+#define     CNXK_CONFIG_PCIE_DEVCAP              0x74
+#define     CNXK_CONFIG_PCIE_DEVCTL              0x78
+#define     CNXK_CONFIG_PCIE_LINKCAP             0x7C
+#define     CNXK_CONFIG_PCIE_LINKCTL             0x80
+#define     CNXK_CONFIG_PCIE_SLOTCAP             0x84
+#define     CNXK_CONFIG_PCIE_SLOTCTL             0x88
+
+#define     CNXK_PCIE_SRIOV_FDL                  0x188      /* 0x98 */
+#define     CNXK_PCIE_SRIOV_FDL_BIT_POS          0x10
+#define     CNXK_PCIE_SRIOV_FDL_MASK             0xFF
+
+#define     CNXK_CONFIG_PCIE_FLTMSK              0x720
+
+/* ################# Offsets of RING, EPF, MAC ######################### */
+#define    CNXK_RING_OFFSET                      (0x1ULL << 17)
+#define    CNXK_EPF_OFFSET                       (0x1ULL << 25)
+#define    CNXK_MAC_OFFSET                       (0x1ULL << 4)
+#define    CNXK_BIT_ARRAY_OFFSET                 (0x1ULL << 4)
+#define    CNXK_EPVF_RING_OFFSET                 (0x1ULL << 4)
+
+/* ################# Scratch Registers ######################### */
+#define    CNXK_SDP_EPF_SCRATCH                  0x209E0
+
+/* ################# Window Registers ######################### */
+#define    CNXK_SDP_WIN_WR_ADDR64                0x20000
+#define    CNXK_SDP_WIN_RD_ADDR64                0x20010
+#define    CNXK_SDP_WIN_WR_DATA64                0x20020
+#define    CNXK_SDP_WIN_WR_MASK_REG              0x20030
+#define    CNXK_SDP_WIN_RD_DATA64                0x20040
+
+#define    CNXK_SDP_MAC_NUMBER                   0x2C100
+
+/* ################# Global Previliged registers ######################### */
+#define    CNXK_SDP_EPF_RINFO                    0x209F0
+
+#define    CNXK_SDP_EPF_RINFO_SRN(val)           ((val) & 0x7F)
+#define    CNXK_SDP_EPF_RINFO_RPVF(val)          (((val) >> 32) & 0xF)
+#define    CNXK_SDP_EPF_RINFO_NVFS(val)          (((val) >> 48) & 0x7F)
+
+/* SDP Function select */
+#define    CNXK_SDP_FUNC_SEL_EPF_BIT_POS         7
+#define    CNXK_SDP_FUNC_SEL_FUNC_BIT_POS        0
+
+/* ##### RING IN (Into device from PCI: Tx Ring) REGISTERS #### */
+#define    CNXK_SDP_R_IN_CONTROL_START           0x10000
+#define    CNXK_SDP_R_IN_ENABLE_START            0x10010
+#define    CNXK_SDP_R_IN_INSTR_BADDR_START       0x10020
+#define    CNXK_SDP_R_IN_INSTR_RSIZE_START       0x10030
+#define    CNXK_SDP_R_IN_INSTR_DBELL_START       0x10040
+#define    CNXK_SDP_R_IN_CNTS_START              0x10050
+#define    CNXK_SDP_R_IN_INT_LEVELS_START        0x10060
+#define    CNXK_SDP_R_IN_PKT_CNT_START           0x10080
+#define    CNXK_SDP_R_IN_BYTE_CNT_START          0x10090
+
+#define    CNXK_SDP_R_IN_CONTROL(ring)		\
+	(CNXK_SDP_R_IN_CONTROL_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_IN_ENABLE(ring)		\
+	(CNXK_SDP_R_IN_ENABLE_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_IN_INSTR_BADDR(ring)	\
+	(CNXK_SDP_R_IN_INSTR_BADDR_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_IN_INSTR_RSIZE(ring)	\
+	(CNXK_SDP_R_IN_INSTR_RSIZE_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_IN_INSTR_DBELL(ring)	\
+	(CNXK_SDP_R_IN_INSTR_DBELL_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_IN_CNTS(ring)		\
+	(CNXK_SDP_R_IN_CNTS_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_IN_INT_LEVELS(ring)	\
+	(CNXK_SDP_R_IN_INT_LEVELS_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_IN_PKT_CNT(ring)		\
+	(CNXK_SDP_R_IN_PKT_CNT_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_IN_BYTE_CNT(ring)		\
+	(CNXK_SDP_R_IN_BYTE_CNT_START + ((ring) * CNXK_RING_OFFSET))
+
+/* Rings per Virtual Function */
+#define    CNXK_R_IN_CTL_RPVF_MASK	(0xF)
+#define    CNXK_R_IN_CTL_RPVF_POS	(48)
+
+/* Number of instructions to be read in one MAC read request.
+ * setting to Max value(4)
+ */
+#define    CNXK_R_IN_CTL_IDLE                    (0x1ULL << 28)
+#define    CNXK_R_IN_CTL_RDSIZE                  (0x3ULL << 25)
+#define    CNXK_R_IN_CTL_IS_64B                  (0x1ULL << 24)
+#define    CNXK_R_IN_CTL_D_NSR                   (0x1ULL << 8)
+#define    CNXK_R_IN_CTL_D_ESR                   (0x1ULL << 6)
+#define    CNXK_R_IN_CTL_D_ROR                   (0x1ULL << 5)
+#define    CNXK_R_IN_CTL_NSR                     (0x1ULL << 3)
+#define    CNXK_R_IN_CTL_ESR                     (0x1ULL << 1)
+#define    CNXK_R_IN_CTL_ROR                     (0x1ULL << 0)
+
+#define    CNXK_R_IN_CTL_MASK  (CNXK_R_IN_CTL_RDSIZE | CNXK_R_IN_CTL_IS_64B)
+
+/* ##### RING OUT (out from device to PCI host: Rx Ring) REGISTERS #### */
+#define    CNXK_SDP_R_OUT_CNTS_START              0x10100
+#define    CNXK_SDP_R_OUT_INT_LEVELS_START        0x10110
+#define    CNXK_SDP_R_OUT_SLIST_BADDR_START       0x10120
+#define    CNXK_SDP_R_OUT_SLIST_RSIZE_START       0x10130
+#define    CNXK_SDP_R_OUT_SLIST_DBELL_START       0x10140
+#define    CNXK_SDP_R_OUT_CONTROL_START           0x10150
+#define    CNXK_SDP_R_OUT_WMARK_START             0x10160
+#define    CNXK_SDP_R_OUT_ENABLE_START            0x10170
+#define    CNXK_SDP_R_OUT_PKT_CNT_START           0x10180
+#define    CNXK_SDP_R_OUT_BYTE_CNT_START          0x10190
+
+#define    CNXK_SDP_R_OUT_CONTROL(ring)          \
+	(CNXK_SDP_R_OUT_CONTROL_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_OUT_ENABLE(ring)          \
+	(CNXK_SDP_R_OUT_ENABLE_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_OUT_SLIST_BADDR(ring)          \
+	(CNXK_SDP_R_OUT_SLIST_BADDR_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_OUT_SLIST_RSIZE(ring)          \
+	(CNXK_SDP_R_OUT_SLIST_RSIZE_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_OUT_SLIST_DBELL(ring)          \
+	(CNXK_SDP_R_OUT_SLIST_DBELL_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_OUT_CNTS(ring)          \
+	(CNXK_SDP_R_OUT_CNTS_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_OUT_INT_LEVELS(ring)          \
+	(CNXK_SDP_R_OUT_INT_LEVELS_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_OUT_PKT_CNT(ring)          \
+	(CNXK_SDP_R_OUT_PKT_CNT_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_OUT_BYTE_CNT(ring)          \
+	(CNXK_SDP_R_OUT_BYTE_CNT_START + ((ring) * CNXK_RING_OFFSET))
+
+/*------------------ R_OUT Masks ----------------*/
+#define    CNXK_R_OUT_INT_LEVELS_BMODE            BIT_ULL(63)
+#define    CNXK_R_OUT_INT_LEVELS_TIMET            (32)
+
+#define    CNXK_R_OUT_CTL_IDLE                    BIT_ULL(40)
+#define    CNXK_R_OUT_CTL_ES_I                    BIT_ULL(34)
+#define    CNXK_R_OUT_CTL_NSR_I                   BIT_ULL(33)
+#define    CNXK_R_OUT_CTL_ROR_I                   BIT_ULL(32)
+#define    CNXK_R_OUT_CTL_ES_D                    BIT_ULL(30)
+#define    CNXK_R_OUT_CTL_NSR_D                   BIT_ULL(29)
+#define    CNXK_R_OUT_CTL_ROR_D                   BIT_ULL(28)
+#define    CNXK_R_OUT_CTL_ES_P                    BIT_ULL(26)
+#define    CNXK_R_OUT_CTL_NSR_P                   BIT_ULL(25)
+#define    CNXK_R_OUT_CTL_ROR_P                   BIT_ULL(24)
+#define    CNXK_R_OUT_CTL_IMODE                   BIT_ULL(23)
+
+/* ############### Interrupt Moderation Registers ############### */
+#define CNXK_SDP_R_IN_INT_MDRT_CTL0_START         0x10280
+#define CNXK_SDP_R_IN_INT_MDRT_CTL1_START         0x102A0
+#define CNXK_SDP_R_IN_INT_MDRT_DBG_START          0x102C0
+
+#define CNXK_SDP_R_OUT_INT_MDRT_CTL0_START        0x10380
+#define CNXK_SDP_R_OUT_INT_MDRT_CTL1_START        0x103A0
+#define CNXK_SDP_R_OUT_INT_MDRT_DBG_START         0x103C0
+
+#define CNXK_SDP_R_OUT_CNTS_ISM_START             0x10510
+#define CNXK_SDP_R_IN_CNTS_ISM_START              0x10520
+
+#define    CNXK_SDP_R_IN_INT_MDRT_CTL0(ring)		\
+	(CNXK_SDP_R_IN_INT_MDRT_CTL0_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_IN_INT_MDRT_CTL1(ring)		\
+	(CNXK_SDP_R_IN_INT_MDRT_CTL1_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_IN_INT_MDRT_DBG(ring)		\
+	(CNXK_SDP_R_IN_INT_MDRT_DBG_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_OUT_INT_MDRT_CTL0(ring)		\
+	(CNXK_SDP_R_OUT_INT_MDRT_CTL0_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_OUT_INT_MDRT_CTL1(ring)		\
+	(CNXK_SDP_R_OUT_INT_MDRT_CTL1_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_OUT_INT_MDRT_DBG(ring)		\
+	(CNXK_SDP_R_OUT_INT_MDRT_DBG_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_OUT_CNTS_ISM(ring)          \
+	(CNXK_SDP_R_OUT_CNTS_ISM_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_IN_CNTS_ISM(ring)          \
+	(CNXK_SDP_R_IN_CNTS_ISM_START + ((ring) * CNXK_RING_OFFSET))
+
+/* ##################### Mail Box Registers ########################## */
+/* INT register for VF. when a MBOX write from PF happed to a VF,
+ * corresponding bit will be set in this register as well as in
+ * PF_VF_INT register.
+ *
+ * This is a RO register, the int can be cleared by writing 1 to PF_VF_INT
+ */
+/* Basically first 3 are from PF to VF. The last one is data from VF to PF */
+#define    CNXK_SDP_R_MBOX_PF_VF_DATA_START       0x10210
+#define    CNXK_SDP_R_MBOX_PF_VF_INT_START        0x10220
+#define    CNXK_SDP_R_MBOX_VF_PF_DATA_START       0x10230
+
+#define    CNXK_SDP_R_MBOX_PF_VF_DATA(ring)		\
+	(CNXK_SDP_R_MBOX_PF_VF_DATA_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_MBOX_PF_VF_INT(ring)		\
+	(CNXK_SDP_R_MBOX_PF_VF_INT_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_MBOX_VF_PF_DATA(ring)		\
+	(CNXK_SDP_R_MBOX_VF_PF_DATA_START + ((ring) * CNXK_RING_OFFSET))
+
+/* ##################### Interrupt Registers ########################## */
+#define	   CNXK_SDP_R_ERR_TYPE_START	          0x10400
+
+#define    CNXK_SDP_R_ERR_TYPE(ring)		\
+	(CNXK_SDP_R_ERR_TYPE_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_MBOX_ISM_START              0x10500
+#define    CNXK_SDP_R_OUT_CNTS_ISM_START          0x10510
+#define    CNXK_SDP_R_IN_CNTS_ISM_START           0x10520
+
+#define    CNXK_SDP_R_MBOX_ISM(ring)		\
+	(CNXK_SDP_R_MBOX_ISM_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_OUT_CNTS_ISM(ring)	\
+	(CNXK_SDP_R_OUT_CNTS_ISM_START + ((ring) * CNXK_RING_OFFSET))
+
+#define    CNXK_SDP_R_IN_CNTS_ISM(ring)		\
+	(CNXK_SDP_R_IN_CNTS_ISM_START + ((ring) * CNXK_RING_OFFSET))
+
+#define	   CNXK_SDP_EPF_MBOX_RINT_START	          0x20100
+#define	   CNXK_SDP_EPF_MBOX_RINT_W1S_START	  0x20120
+#define	   CNXK_SDP_EPF_MBOX_RINT_ENA_W1C_START   0x20140
+#define	   CNXK_SDP_EPF_MBOX_RINT_ENA_W1S_START   0x20160
+
+#define	   CNXK_SDP_EPF_VFIRE_RINT_START          0x20180
+#define	   CNXK_SDP_EPF_VFIRE_RINT_W1S_START      0x201A0
+#define	   CNXK_SDP_EPF_VFIRE_RINT_ENA_W1C_START  0x201C0
+#define	   CNXK_SDP_EPF_VFIRE_RINT_ENA_W1S_START  0x201E0
+
+#define	   CNXK_SDP_EPF_IRERR_RINT                0x20200
+#define	   CNXK_SDP_EPF_IRERR_RINT_W1S            0x20210
+#define	   CNXK_SDP_EPF_IRERR_RINT_ENA_W1C        0x20220
+#define	   CNXK_SDP_EPF_IRERR_RINT_ENA_W1S        0x20230
+
+#define	   CNXK_SDP_EPF_VFORE_RINT_START          0x20240
+#define	   CNXK_SDP_EPF_VFORE_RINT_W1S_START      0x20260
+#define	   CNXK_SDP_EPF_VFORE_RINT_ENA_W1C_START  0x20280
+#define	   CNXK_SDP_EPF_VFORE_RINT_ENA_W1S_START  0x202A0
+
+#define	   CNXK_SDP_EPF_ORERR_RINT                0x20320
+#define	   CNXK_SDP_EPF_ORERR_RINT_W1S            0x20330
+#define	   CNXK_SDP_EPF_ORERR_RINT_ENA_W1C        0x20340
+#define	   CNXK_SDP_EPF_ORERR_RINT_ENA_W1S        0x20350
+
+#define	   CNXK_SDP_EPF_OEI_RINT                  0x20400
+#define	   CNXK_SDP_EPF_OEI_RINT_W1S              0x20500
+#define	   CNXK_SDP_EPF_OEI_RINT_ENA_W1C          0x20600
+#define	   CNXK_SDP_EPF_OEI_RINT_ENA_W1S          0x20700
+
+#define	   CNXK_SDP_EPF_DMA_RINT                  0x20800
+#define	   CNXK_SDP_EPF_DMA_RINT_W1S              0x20810
+#define	   CNXK_SDP_EPF_DMA_RINT_ENA_W1C          0x20820
+#define	   CNXK_SDP_EPF_DMA_RINT_ENA_W1S          0x20830
+
+#define	   CNXK_SDP_EPF_DMA_INT_LEVEL_START	    0x20840
+#define	   CNXK_SDP_EPF_DMA_CNT_START	            0x20860
+#define	   CNXK_SDP_EPF_DMA_TIM_START	            0x20880
+
+#define	   CNXK_SDP_EPF_MISC_RINT                 0x208A0
+#define	   CNXK_SDP_EPF_MISC_RINT_W1S	            0x208B0
+#define	   CNXK_SDP_EPF_MISC_RINT_ENA_W1C         0x208C0
+#define	   CNXK_SDP_EPF_MISC_RINT_ENA_W1S         0x208D0
+
+#define	   CNXK_SDP_EPF_DMA_VF_RINT_START           0x208E0
+#define	   CNXK_SDP_EPF_DMA_VF_RINT_W1S_START       0x20900
+#define	   CNXK_SDP_EPF_DMA_VF_RINT_ENA_W1C_START   0x20920
+#define	   CNXK_SDP_EPF_DMA_VF_RINT_ENA_W1S_START   0x20940
+
+#define	   CNXK_SDP_EPF_PP_VF_RINT_START            0x20960
+#define	   CNXK_SDP_EPF_PP_VF_RINT_W1S_START        0x20980
+#define	   CNXK_SDP_EPF_PP_VF_RINT_ENA_W1C_START    0x209A0
+#define	   CNXK_SDP_EPF_PP_VF_RINT_ENA_W1S_START    0x209C0
+
+#define	   CNXK_SDP_EPF_MBOX_RINT(index)		\
+		(CNXK_SDP_EPF_MBOX_RINT_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_MBOX_RINT_W1S(index)		\
+		(CNXK_SDP_EPF_MBOX_RINT_W1S_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_MBOX_RINT_ENA_W1C(index)	\
+		(CNXK_SDP_EPF_MBOX_RINT_ENA_W1C_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_MBOX_RINT_ENA_W1S(index)	\
+		(CNXK_SDP_EPF_MBOX_RINT_ENA_W1S_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
+
+#define	   CNXK_SDP_EPF_VFIRE_RINT(index)		\
+		(CNXK_SDP_EPF_VFIRE_RINT_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_VFIRE_RINT_W1S(index)		\
+		(CNXK_SDP_EPF_VFIRE_RINT_W1S_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_VFIRE_RINT_ENA_W1C(index)	\
+		(CNXK_SDP_EPF_VFIRE_RINT_ENA_W1C_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_VFIRE_RINT_ENA_W1S(index)	\
+		(CNXK_SDP_EPF_VFIRE_RINT_ENA_W1S_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
+
+#define	   CNXK_SDP_EPF_VFORE_RINT(index)		\
+		(CNXK_SDP_EPF_VFORE_RINT_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_VFORE_RINT_W1S(index)		\
+		(CNXK_SDP_EPF_VFORE_RINT_W1S_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_VFORE_RINT_ENA_W1C(index)	\
+		(CNXK_SDP_EPF_VFORE_RINT_ENA_W1C_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_VFORE_RINT_ENA_W1S(index)	\
+		(CNXK_SDP_EPF_VFORE_RINT_ENA_W1S_START + ((index) * CNXK_BIT_ARRAY_OFFSET))
+
+#define	   CNXK_SDP_EPF_DMA_VF_RINT(index)		\
+		(CNXK_SDP_EPF_DMA_VF_RINT_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_DMA_VF_RINT_W1S(index)		\
+		(CNXK_SDP_EPF_DMA_VF_RINT_W1S_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_DMA_VF_RINT_ENA_W1C(index)	\
+		(CNXK_SDP_EPF_DMA_VF_RINT_ENA_W1C_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_DMA_VF_RINT_ENA_W1S(index)	\
+		(CNXK_SDP_EPF_DMA_VF_RINT_ENA_W1S_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
+
+#define	   CNXK_SDP_EPF_PP_VF_RINT(index)		\
+		(CNXK_SDP_EPF_PP_VF_RINT_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_PP_VF_RINT_W1S(index)		\
+		(CNXK_SDP_EPF_PP_VF_RINT_W1S_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_PP_VF_RINT_ENA_W1C(index)	\
+		(CNXK_SDP_EPF_PP_VF_RINT_ENA_W1C_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
+#define	   CNXK_SDP_EPF_PP_VF_RINT_ENA_W1S(index)	\
+		(CNXK_SDP_EPF_PP_VF_RINT_ENA_W1S_START + ((index) + CNXK_BIT_ARRAY_OFFSET))
+
+/*------------------ Interrupt Masks ----------------*/
+#define	   CNXK_INTR_R_SEND_ISM       BIT_ULL(63)
+#define	   CNXK_INTR_R_OUT_INT        BIT_ULL(62)
+#define    CNXK_INTR_R_IN_INT         BIT_ULL(61)
+#define    CNXK_INTR_R_MBOX_INT       BIT_ULL(60)
+#define    CNXK_INTR_R_RESEND         BIT_ULL(59)
+#define    CNXK_INTR_R_CLR_TIM        BIT_ULL(58)
+
+/* ####################### Ring Mapping Registers ################################## */
+#define    CNXK_SDP_EPVF_RING_START          0x26000
+#define    CNXK_SDP_IN_RING_TB_MAP_START     0x28000
+#define    CNXK_SDP_IN_RATE_LIMIT_START      0x2A000
+#define    CNXK_SDP_MAC_PF_RING_CTL_START    0x2C000
+
+#define	   CNXK_SDP_EPVF_RING(ring)		\
+		(CNXK_SDP_EPVF_RING_START + ((ring) * CNXK_EPVF_RING_OFFSET))
+#define	   CNXK_SDP_IN_RING_TB_MAP(ring)	\
+		(CNXK_SDP_N_RING_TB_MAP_START + ((ring) * CNXK_EPVF_RING_OFFSET))
+#define	   CNXK_SDP_IN_RATE_LIMIT(ring)		\
+		(CNXK_SDP_IN_RATE_LIMIT_START + ((ring) * CNXK_EPVF_RING_OFFSET))
+#define	   CNXK_SDP_MAC_PF_RING_CTL(mac)	\
+		(CNXK_SDP_MAC_PF_RING_CTL_START + ((mac) * CNXK_MAC_OFFSET))
+
+#define    CNXK_SDP_MAC_PF_RING_CTL_NPFS(val)  ((val) & 0x3)
+#define    CNXK_SDP_MAC_PF_RING_CTL_SRN(val)   (((val) >> 8) & 0x7F)
+#define    CNXK_SDP_MAC_PF_RING_CTL_RPPF(val)  (((val) >> 16) & 0x3F)
+
+/* Number of non-queue interrupts in CNXKxx */
+#define    CNXK_NUM_NON_IOQ_INTR    32
+
+/* bit 0 for control mbox interrupt */
+#define CNXK_SDP_EPF_OEI_RINT_DATA_BIT_MBOX	BIT_ULL(0)
+/* bit 1 for firmware heartbeat interrupt */
+#define CNXK_SDP_EPF_OEI_RINT_DATA_BIT_HBEAT	BIT_ULL(1)
+#define FW_STATUS_RUNNING      2ULL
+#define CNXK_PEMX_PFX_CSX_PFCFGX(pem, pf, offset)      ({ typeof(offset) _off = (offset); \
+							  ((0x8e0000008000 | \
+							    (uint64_t)(pem) << 36 \
+							    | (pf) << 18 \
+							    | ((_off >> 16) & 1) << 16 \
+							    | (_off >> 3) << 3) \
+							   + (((_off >> 2) & 1) << 2)); \
+							})
+
+/* Register defines for use with CNXK_PEMX_PFX_CSX_PFCFGX */
+#define CNXK_PCIEEP_VSECST_CTL  0x418
+
+#define CNXK_PEM_BAR4_INDEX		7
+#define CNXK_PEM_BAR4_INDEX_SIZE	0x400000ULL
+#define CNXK_PEM_BAR4_INDEX_OFFSET	(CNXK_PEM_BAR4_INDEX * CNXK_PEM_BAR4_INDEX_SIZE)
+
+#endif /* _OCTEP_REGS_CNXK_PF_H_ */
-- 
2.51.0


  parent reply	other threads:[~2026-02-28 18:09 UTC|newest]

Thread overview: 284+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-28 18:02 [PATCH 6.6 001/283] RDMA/siw: Fix potential NULL pointer dereference in header processing Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 002/283] RDMA/umad: Reject negative data_len in ib_umad_write Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 003/283] auxdisplay: arm-charlcd: fix release_mem_region() size Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 004/283] hfsplus: return error when node already exists in hfs_bnode_create Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 005/283] rcu: s/boost_kthread_mutex/kthread_mutex Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 006/283] rcu/exp: Move expedited kthread worker creation functions above rcutree_prepare_cpu() Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 007/283] rcu: Refactor expedited handling check in rcu_read_unlock_special() Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 008/283] rcu: Remove local_irq_save/restore() in rcu_preempt_deferred_qs_handler() Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 009/283] rcu: Fix rcu_read_unlock() deadloop due to softirq Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 010/283] audit: move the compat_xxx_class[] extern declarations to audit_arch.h Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 011/283] i3c: Move device name assignment after i3c_bus_init Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 012/283] fs: add <linux/init_task.h> for 'init_fs' Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 013/283] i3c: master: Update hot-join flag only on success Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 014/283] gfs2: Retries missing in gfs2_{rename,exchange} Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 015/283] gfs2: Add metapath_dibh helper Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 016/283] gfs2: Fix use-after-free in iomap inline data write path Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 017/283] i3c: dw: Initialize spinlock to avoid upsetting lockdep Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 018/283] tpm: tpm_i2c_infineon: Fix locality leak on get_burstcount() failure Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 019/283] tpm: st33zp24: Fix missing cleanup on get_burstcount() error Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 020/283] btrfs: qgroup: return correct error when deleting qgroup relation item Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 021/283] btrfs: fix block_group_tree dirty_list corruption Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 022/283] smb: client: fix potential UAF and double free in smb2_open_file() Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 023/283] xen/virtio: Don't use grant-dma-ops when running as Dom0 Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 024/283] ACPICA: Fix NULL pointer dereference in acpi_ev_address_space_dispatch() Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 025/283] io_uring/sync: validate passed in offset Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 026/283] cpuidle: menu: Cleanup after loadavg removal Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 027/283] cpuidle: governors: menu: Always check timers with tick stopped Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 028/283] md/raid10: fix any_working flag handling in raid10_sync_request Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 029/283] iomap: fix submission side handling of completion side errors Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 030/283] ublk: Validate SQE128 flag before accessing the cmd Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 031/283] x86/xen: make some functions static Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 032/283] Partial revert "x86/xen: fix balloon target initialization for PVH dom0" Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 033/283] PM: wakeup: Handle empty list in wakeup_sources_walk_start() Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 034/283] perf: arm_spe: Properly set hw.state on failures Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 035/283] PM: sleep: wakeirq: harden dev_pm_clear_wake_irq() against races Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 036/283] s390/cio: Fix device lifecycle handling in css_alloc_subchannel() Sasha Levin
2026-02-28 18:02 ` [PATCH 6.6 037/283] crypto: qat - fix warning on adf_pfvf_pf_proto.c Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 038/283] selftests/bpf: veristat: fix printing order in output_stats() Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 039/283] libbpf: Fix OOB read in btf_dump_get_bitfield_value Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 040/283] ARM: VDSO: Patch out __vdso_clock_getres() if unavailable Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 041/283] crypto: cavium - fix dma_free_coherent() size Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 042/283] crypto: octeontx " Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 043/283] crypto: hisilicon/zip - support deflate algorithm Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 044/283] crypto: hisilicon/zip - remove zlib and gzip Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 045/283] crypto: hisilicon/zip - adjust the way to obtain the req in the callback function Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 046/283] crypto: hisilicon/sec2 - support skcipher/aead fallback for hardware queue unavailable Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 047/283] hrtimer: Fix trace oddity Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 048/283] bpf, sockmap: Fix incorrect copied_seq calculation Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 049/283] bpf, sockmap: Fix FIONREAD for sockmap Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 050/283] crypto: hisilicon/trng - modifying the order of header files Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 051/283] crypto: hisilicon/trng - support tfms sharing the device Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 052/283] bpf: Fix bpf_xdp_store_bytes proto for read-only arg Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 053/283] scsi: efct: Use IRQF_ONESHOT and default primary handler Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 054/283] EDAC/altera: Remove IRQF_ONESHOT Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 055/283] mfd: wm8350-core: Use IRQF_ONESHOT Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 056/283] sched/rt: Skip currently executing CPU in rto_next_cpu() Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 057/283] pstore/ram: fix buffer overflow in persistent_ram_save_old() Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 058/283] soc: qcom: smem: handle ENOMEM error during probe Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 059/283] EDAC/i5000: Fix snprintf() size calculation in calculate_dimm_size() Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 060/283] EDAC/i5400: Fix snprintf() limit " Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 061/283] arm64: dts: tqma8mpql-mba8mpxl: Fix HDMI CEC pad control settings Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 062/283] clk: qcom: Return correct error code in qcom_cc_probe_by_index() Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 063/283] arm64: dts: qcom: sdm630: fix gpu_speed_bin size Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 064/283] arm64: dts: qcom: sdm845-oneplus: Don't mark ts supply boot-on Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 065/283] arm64: dts: qcom: sdm845-oneplus: Don't keep panel regulator always on Sasha Levin
2026-02-28 18:13   ` David Heidelberg
2026-02-28 18:03 ` [PATCH 6.6 066/283] arm64: dts: qcom: sdm845-oneplus: Mark l14a regulator as boot-on Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 067/283] ARM: dts: allwinner: sun5i-a13-utoo-p66: delete "power-gpios" property Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 068/283] powerpc/uaccess: Move barrier_nospec() out of allow_read_{from/write}_user() Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 069/283] soc: qcom: cmd-db: Use devm_memremap() to fix memory leak in cmd_db_dev_probe Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 070/283] soc: mediatek: svs: Fix memory leak in svs_enable_debug_write() Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 071/283] powerpc/eeh: fix recursive pci_lock_rescan_remove locking in EEH event handling Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 072/283] ARM: dts: lpc32xx: Set motor PWM #pwm-cells property value to 3 cells Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 073/283] arm: dts: lpc32xx: add clocks property to Motor Control PWM device tree node Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 074/283] arm64: dts: amlogic: axg: assign the MMC signal clocks Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 075/283] arm64: dts: amlogic: gx: " Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 076/283] arm64: dts: amlogic: g12: assign the MMC B and C " Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 077/283] arm64: dts: amlogic: g12: assign the MMC A signal clock Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 078/283] arm64: dts: qcom: sdm845-db845c: drop CS from SPIO0 Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 079/283] arm64: dts: qcom: sdm845-db845c: specify power for WiFi CH1 Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 080/283] arm64: dts: qcom: sm6115: Add CX_MEM/DBGC GPU regions Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 081/283] workqueue: Factor out assign_rescuer_work() Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 082/283] workqueue: Only assign rescuer work when really needed Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 083/283] workqueue: Process rescuer work items one-by-one using a cursor Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 084/283] smack: /smack/doi must be > 0 Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 085/283] smack: /smack/doi: accept previously used values Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 086/283] ASoC: nau8821: Consistently clear interrupts before unmasking Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 087/283] ASoC: nau8821: Avoid unnecessary blocking in IRQ handler Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 088/283] ASoC: nau8821: Fixup nau8821_enable_jack_detect() Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 089/283] drm/amdgpu: Use explicit VCN instance 0 in SR-IOV init Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 090/283] drm/msm/disp/dpu: add merge3d support for sc7280 Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 091/283] regulator: core: move supply check earlier in set_machine_constraints() Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 092/283] HID: playstation: Add missing check for input_ff_create_memless Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 093/283] drm/msm/dpu: fix CMD panels on DPU 1.x - 3.x Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 094/283] media: ccs: Accommodate C-PHY into the calculation Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 095/283] drm/msm/a2xx: fix pixel shader start on A225 Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 096/283] platform/chrome: cros_typec_switch: Don't touch struct fwnode_handle::dev Sasha Levin
2026-02-28 18:03 ` [PATCH 6.6 097/283] media: uvcvideo: Fix allocation for small frame sizes Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 098/283] platform/chrome: cros_ec_lightbar: Fix response size initialization Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 099/283] spi: tools: Add include folder to .gitignore Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 100/283] Revert "hwmon: (ibmpex) fix use-after-free in high/low store" Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 101/283] PCI: mediatek: Fix IRQ domain leak when MSI allocation fails Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 102/283] Documentation: PCI: endpoint: Fix ntb/vntb copy & paste errors Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 103/283] PCI/PM: Avoid redundant delays on D3hot->D3cold Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 104/283] PCI/P2PDMA: Release per-CPU pgmap ref when vm_insert_page() fails Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 105/283] Documentation: tracing: Add ring-buffer mapping Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 106/283] docs: fix WARNING document not included in any toctree Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 107/283] Documentation: trace: Refactor toctree Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 108/283] Documentation: tracing: Add PCI tracepoint documentation Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 109/283] PCI: Do not attempt to set ExtTag for VFs Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 110/283] PCI/portdrv: Fix potential resource leak Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 111/283] quota: fix livelock between quotactl and freeze_super Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 112/283] net: mctp-i2c: fix duplicate reception of old data Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 113/283] mctp i2c: initialise event handler read bytes Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 114/283] wifi: cfg80211: stop NAN and P2P in cfg80211_leave Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 115/283] netfilter: nf_tables: reset table validation state on abort Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 116/283] netfilter: nf_conncount: make nf_conncount_gc_list() to disable BH Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 117/283] netfilter: nf_conncount: increase the connection clean up limit to 64 Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 118/283] netfilter: nft_compat: add more restrictions on netlink attributes Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 119/283] netfilter: nf_conncount: fix tracking of connections from localhost Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 120/283] module: add helper function for reading module_buildid() Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 121/283] kallsyms/ftrace: set module buildid in ftrace_mod_address_lookup() Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 122/283] PCI: Mark 3ware-9650SA Root Port Extended Tags as broken Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 123/283] iommu/vt-d: Flush cache for PASID table before using it Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 124/283] dm: use bio_clone_blkg_association Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 125/283] nfsd: never defer requests during idmap lookup Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 126/283] fat: avoid parent link count underflow in rmdir Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 127/283] tcp: tcp_tx_timestamp() must look at the rtx queue Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 128/283] wifi: ath10k: sdio: add missing lock protection in ath10k_sdio_fw_crashed_dump() Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 129/283] PCI: Initialize RCB from pci_configure_device() Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 130/283] PCI: Move pci_read_bridge_windows() below individual window accessors Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 131/283] PCI: Supply bridge device, not secondary bus, to read window details Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 132/283] PCI: Log bridge windows conditionally Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 133/283] PCI: Log bridge info when first enumerating bridge Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 134/283] PCI: Add PCIE_MSG_CODE_ASSERT_INTx message macros Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 135/283] PCI: Add defines for bridge window indexing Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 136/283] PCI/ACPI: Restrict program_hpx_type2() to AER bits Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 137/283] ipc: don't audit capability check in ipc_permissions() Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 138/283] ucount: check for CAP_SYS_RESOURCE using ns_capable_noaudit() Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 139/283] of: unittest: fix possible null-pointer dereferences in of_unittest_property_copy() Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 140/283] mptcp: fix receive space timestamp initialization Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 141/283] octeontx2-af: Fix PF driver crash with kexec kernel booting Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 142/283] bonding: only set speed/duplex to unknown, if getting speed failed Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 143/283] inet: RAW sockets using IPPROTO_RAW MUST drop incoming ICMP Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 144/283] nfc: hci: shdlc: Stop timers and work before freeing context Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 145/283] netfilter: nft_set_hash: fix get operation on big endian Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 146/283] netfilter: nft_counter: fix reset of counters on 32bit archs Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 147/283] netfilter: nft_set_rbtree: check for partial overlaps in anonymous sets Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 148/283] PCI: Add ACS quirk for Pericom PI7C9X2G404 switches [12d8:b404] Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 149/283] net: hns3: fix double free issue for tx spare buffer Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 150/283] procfs: fix missing RCU protection when reading real_parent in do_task_stat() Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 151/283] smb: client: correct value for smbd_max_fragmented_recv_size Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 152/283] net: atm: fix crash due to unvalidated vcc pointer in sigd_send() Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 153/283] net: sunhme: Fix sbus regression Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 154/283] net: Add skb_dstref_steal and skb_dstref_restore Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 155/283] net: Switch to skb_dstref_steal/skb_dstref_restore for ip_route_input callers Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 156/283] xfrm: fix ip_rt_bug race in icmp_route_lookup reverse path Sasha Levin
2026-02-28 18:04 ` [PATCH 6.6 157/283] serial: caif: fix use-after-free in caif_serial ldisc_close() Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 158/283] octeon_ep: support to fetch firmware info Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 159/283] octeon_ep: restructured interrupt handlers Sasha Levin
2026-02-28 18:05 ` Sasha Levin [this message]
2026-02-28 18:05 ` [PATCH 6.6 161/283] octeon_ep: disable per ring interrupts Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 162/283] octeon_ep: set backpressure watermark for RX queues Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 163/283] octeon_ep: ensure dbell BADDR updation Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 164/283] ionic: Rate limit unknown xcvr type messages Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 165/283] octeontx2-pf: Unregister devlink on probe failure Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 166/283] RDMA/rtrs: server: remove dead code Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 167/283] IB/cache: update gid cache on client reregister event Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 168/283] RDMA/hns: Fix WQ_MEM_RECLAIM warning Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 169/283] RDMA/hns: Notify ULP of remaining soft-WCs during reset Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 170/283] power: supply: ab8500: Fix use-after-free in power_supply_changed() Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 171/283] power: supply: act8945a: " Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 172/283] power: supply: bq256xx: " Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 173/283] power: supply: bq25980: " Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 174/283] power: supply: cpcap-battery: " Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 175/283] power: supply: goldfish: " Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 176/283] power: supply: rt9455: " Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 177/283] power: supply: sbs-battery: " Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 178/283] power: reset: nvmem-reboot-mode: respect cell size for nvmem_cell_write Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 179/283] power: supply: bq27xxx: fix wrong errno when bus ops are unsupported Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 180/283] power: supply: wm97xx: Fix NULL pointer dereference in power_supply_changed() Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 181/283] RDMA/rtrs-srv: fix SG mapping Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 182/283] RDMA/rxe: Fix double free in rxe_srq_from_init Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 183/283] tools/power/x86/intel-speed-select: Fix file descriptor leak in isolate_cpus() Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 184/283] mtd: rawnand: cadence: Fix return type of CDMA send-and-wait helper Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 185/283] crypto: ccp - Add an S4 restore flow Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 186/283] crypto: ccp - Move direct access to some PSP registers out of TEE Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 187/283] crypto: ccp - Factor out ring destroy handling to a helper Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 188/283] crypto: ccp - Send PSP_CMD_TEE_RING_DESTROY when PSP_CMD_TEE_RING_INIT fails Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 189/283] mtd: parsers: Fix memory leak in mtd_parser_tplink_safeloader_parse() Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 190/283] RDMA/uverbs: Validate wqe_size before using it in ib_uverbs_post_send Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 191/283] RDMA/rxe: Fix race condition in QP timer handlers Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 192/283] RDMA/core: Fix a couple of obvious typos in comments Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 193/283] svcrdma: Remove queue-shortening warnings Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 194/283] svcrdma: Clean up comment in svc_rdma_accept() Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 195/283] svcrdma: Increase the per-transport rw_ctx count Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 196/283] svcrdma: Reduce the number of rdma_rw contexts per-QP Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 197/283] RDMA/core: add rdma_rw_max_sge() helper for SQ sizing Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 198/283] cxl: Fix premature commit_end increment on decoder commit failure Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 199/283] mtd: parsers: ofpart: fix OF node refcount leak in parse_fixed_partitions() Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 200/283] mtd: spinand: Fix kernel doc Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 201/283] power: supply: qcom_battmgr: Recognize "LiP" as lithium-polymer Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 202/283] RDMA/uverbs: Add __GFP_NOWARN to ib_uverbs_unmarshall_recv() kmalloc Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 203/283] pNFS: fix a missing wake up while waiting on NFS_LAYOUT_DRAIN Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 204/283] scsi: smartpqi: Fix memory leak in pqi_report_phys_luns() Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 205/283] scsi: ufs: host: mediatek: Require CONFIG_PM Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 206/283] scsi: csiostor: Fix dereference of null pointer rn Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 207/283] nvdimm: virtio_pmem: serialize flush requests Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 208/283] fs/nfs: Fix readdir slow-start regression Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 209/283] tracing: Properly process error handling in event_hist_trigger_parse() Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 210/283] tracing: Remove duplicate ENABLE_EVENT_STR and DISABLE_EVENT_STR macros Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 211/283] fbdev: of_display_timing: Fix device node reference leak in of_get_display_timings() Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 212/283] fbdev: au1200fb: Fix a memory leak in au1200fb_drv_probe() Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 213/283] clk: qcom: gcc-sm8550: Use floor ops for SDCC RCGs Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 214/283] clk: qcom: rcg2: compute 2d using duty fraction directly Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 215/283] clk: meson: gxbb: Limit the HDMI PLL OD to /4 on GXL/GXM SoCs Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 216/283] clk: qcom: gcc-sm8450: Update the SDCC RCGs to use shared_floor_ops Sasha Levin
2026-02-28 18:05 ` [PATCH 6.6 217/283] clk: qcom: gcc-sdx75: " Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 218/283] clk: qcom: gcc-qdu1000: " Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 219/283] clk: qcom: gcc-msm8953: Remove ALWAYS_ON flag from cpp_gdsc Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 220/283] clk: qcom: gcc-msm8917: " Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 221/283] clk: qcom: gcc-ipq5018: flag sleep clock as critical Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 222/283] clk: Move clk_{save,restore}_context() to COMMON_CLK section Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 223/283] clk: qcom: dispcc-sdm845: Enable parents for pixel clocks Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 224/283] clk: qcom: gfx3d: add parent to parent request map Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 225/283] clk: mediatek: Fix error handling in runtime PM setup Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 226/283] dmaengine: mediatek: uart-apdma: Fix above 4G addressing TX/RX Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 227/283] dma: dma-axi-dmac: fix SW cyclic transfers Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 228/283] staging: greybus: lights: avoid NULL deref Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 229/283] serial: imx: change SERIAL_IMX_CONSOLE to bool Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 230/283] serial: SH_SCI: improve "DMA support" prompt Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 231/283] mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 232/283] iio: pressure: mprls0025pa: fix scan_type struct Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 233/283] watchdog: starfive-wdt: Fix PM reference leak in probe error path Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 234/283] coresight: etm3x: Fix cpulocked warning on cpuhp Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 235/283] Revert "mmc: rtsx_pci_sdmmc: increase power-on settling delay to 5ms" Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 236/283] mfd: arizona: Fix regulator resource leak on wm5102_clear_write_sequencer() failure Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 237/283] mfd: simple-mfd-i2c: Add MAX77705 support Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 238/283] mfd: simple-mfd-i2c: Add compatible strings for Layerscape QIXIS FPGA Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 239/283] mfd: simple-mfd-i2c: Add SpacemiT P1 support Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 240/283] mfd: simple-mfd-i2c: Keep compatible strings in alphabetical order Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 241/283] mfd: simple-mfd-i2c: Add Delta TN48M CPLD support Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 242/283] drivers: iio: mpu3050: use dev_err_probe for regulator request Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 243/283] usb: bdc: fix sleep during atomic Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 244/283] pinctrl: equilibrium: Fix device node reference leak in pinbank_init() Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 245/283] ovl: Fix uninit-value in ovl_fill_real Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 246/283] iio: sca3000: Fix a resource leak in sca3000_probe() Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 247/283] pinctrl: qcom: sm8250-lpass-lpi: Fix i2s2_data_groups definition Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 248/283] pinctrl: single: fix refcount leak in pcs_add_gpio_func() Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 249/283] leds: qcom-lpg: Check the return value of regmap_bulk_write() Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 250/283] backlight: qcom-wled: Support ovp values for PMI8994 Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 251/283] backlight: qcom-wled: Change PM8950 WLED configurations Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 252/283] dmaengine: fsl-edma-main: Convert to platform remove callback returning void Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 253/283] dmaengine: fsl-edma: don't explicitly disable clocks in .remove() Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 254/283] io_uring/cancel: de-unionize file and user_data in struct io_cancel_data Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 255/283] fs/ntfs3: prevent infinite loops caused by the next valid being the same Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 256/283] fs/ntfs3: Fix slab-out-of-bounds read in DeleteIndexEntryRoot Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 257/283] ACPI: CPPC: Fix remaining for_each_possible_cpu() to use online CPUs Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 258/283] powercap: intel_rapl_tpmi: Remove FW_BUG from invalid version check Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 259/283] kbuild: Add objtool to top-level clean target Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 260/283] selftests/memfd: delete unused declarations Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 261/283] selftests/memfd: use IPC semaphore instead of SIGSTOP/SIGCONT Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 262/283] ACPI: PM: Add unused power resource quirk for THUNDEROBOT ZERO Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 263/283] cpuidle: Skip governor when only one idle state is available Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 264/283] selftests: mlxsw: tc_restrictions: Fix test failure with new iproute2 Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 265/283] net: sparx5/lan969x: fix DWRR cost max to match hardware register width Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 266/283] net: mscc: ocelot: extract ocelot_xmit_timestamp() helper Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 267/283] net: mscc: ocelot: split xmit into FDMA and register injection paths Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 268/283] net: mscc: ocelot: add missing lock protection in ocelot_port_xmit_inj() Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 269/283] ipv6: Fix out-of-bound access in fib6_add_rt2node() Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 270/283] net: sparx5/lan969x: fix PTP clock max_adj value Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 271/283] net: usb: catc: enable basic endpoint checking Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 272/283] xen-netback: reject zero-queue configuration from guest Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 273/283] net/rds: rds_sendmsg should not discard payload_len Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 274/283] net: bridge: mcast: always update mdb_n_entries for vlan contexts Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 275/283] selftests: forwarding: vxlan_bridge_1d: fix test failure with br_netfilter enabled Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 276/283] selftests: forwarding: vxlan_bridge_1d_ipv6: " Sasha Levin
2026-02-28 18:06 ` [PATCH 6.6 277/283] netfilter: nf_conntrack_h323: don't pass uninitialised l3num value Sasha Levin
2026-02-28 18:07 ` [PATCH 6.6 278/283] net: remove WARN_ON_ONCE when accessing forward path array Sasha Levin
2026-02-28 18:07 ` [PATCH 6.6 279/283] netfilter: nf_tables: fix use-after-free in nf_tables_addchain() Sasha Levin
2026-02-28 18:07 ` [PATCH 6.6 280/283] ipv6: fix a race in ip6_sock_set_v6only() Sasha Levin
2026-02-28 18:07 ` [PATCH 6.6 281/283] bpftool: Fix truncated netlink dumps Sasha Levin
2026-02-28 18:07 ` [PATCH 6.6 282/283] ping: annotate data-races in ping_lookup() Sasha Levin
2026-02-28 18:07 ` [PATCH 6.6 283/283] Linux 6.6.128-rc1 Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260228180709.1583486-160-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=pabeni@redhat.com \
    --cc=patches@lists.linux.dev \
    --cc=srasheed@marvell.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox