[Skiboot] [PATCH v4 6/9] npu: move npu_set_fence_state() to phb_ops

Nicholas Piggin npiggin at gmail.com
Fri Dec 17 13:36:44 AEDT 2021


From: Stewart Smith <stewart at flamingspork.com>

This lets us consider not building in npu.o

Reviewed-by: Dan Horák <dan at danny.cz>
Signed-off-by: Stewart Smith <stewart at flamingspork.com>
---
 core/hmi.c    | 2 +-
 hw/npu.c      | 7 +++++--
 include/npu.h | 1 -
 include/pci.h | 3 +++
 4 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/core/hmi.c b/core/hmi.c
index ce5abd7d6..fe3d82529 100644
--- a/core/hmi.c
+++ b/core/hmi.c
@@ -908,7 +908,7 @@ static void find_npu_checkstop_reason(int flat_chip_id,
 
 		if (phb->phb_type == phb_type_pcie_v3) {
 			/* Set the NPU to fenced since it can't recover. */
-			npu_set_fence_state(phb_to_npu(phb), true);
+			phb->ops->set_fence_state(phb, true);
 		}
 
 		/* Set up the HMI event */
diff --git a/hw/npu.c b/hw/npu.c
index 35e6372d2..542f37397 100644
--- a/hw/npu.c
+++ b/hw/npu.c
@@ -925,7 +925,9 @@ static int64_t npu_eeh_next_error(struct phb *phb,
 }
 
 /* For use in error injection and handling. */
-void npu_set_fence_state(struct npu *p, bool fence) {
+static void npu_set_fence_state(struct phb *phb, bool fence) {
+	struct npu *p = phb_to_npu(phb);
+
 	p->fenced = fence;
 
 	if (fence)
@@ -968,7 +970,7 @@ static int64_t npu_err_inject(struct phb *phb, uint64_t pe_number,
 		return OPAL_PARAMETER;
 	} else if (type == 1) {
 		/* Emulate fence mode. */
-		npu_set_fence_state(p, true);
+		npu_set_fence_state(phb, true);
 	} else {
 		/* Cause a freeze with an invalid MMIO read.  If the BAR is not
 		 * enabled, this will checkstop the machine.
@@ -1012,6 +1014,7 @@ static const struct phb_ops npu_ops = {
 	.get_diag_data2		= NULL,
 	.set_capi_mode		= NULL,
 	.set_capp_recovery	= NULL,
+	.set_fence_state	= npu_set_fence_state,
 };
 
 static void assign_mmio_bars(uint32_t gcid, uint32_t xscom,
diff --git a/include/npu.h b/include/npu.h
index 50cc9c9fc..45818a28f 100644
--- a/include/npu.h
+++ b/include/npu.h
@@ -153,7 +153,6 @@ int64_t npu_dev_procedure(void *dev, struct pci_cfg_reg_filter *pcrf,
 			  uint32_t offset, uint32_t len, uint32_t *data,
 			  bool write);
 
-void npu_set_fence_state(struct npu *p, bool fence);
 void npu_dev_procedure_reset(struct npu_dev *dev);
 
 #define NPUDBG(p, fmt, a...)	prlog(PR_DEBUG, "NPU%d: " fmt, \
diff --git a/include/pci.h b/include/pci.h
index caae74431..101442490 100644
--- a/include/pci.h
+++ b/include/pci.h
@@ -340,6 +340,9 @@ struct phb_ops {
 	/* Get/set PBCQ Tunnel BAR register */
 	void (*get_tunnel_bar)(struct phb *phb, uint64_t *addr);
 	int64_t (*set_tunnel_bar)(struct phb *phb, uint64_t addr);
+
+	/* Currently only used by NPU HMI code */
+	void (*set_fence_state)(struct phb *phb, bool fence);
 };
 
 enum phb_type {
-- 
2.23.0



More information about the Skiboot mailing list