[Skiboot] [PATCH v4 6/9] npu: move npu_set_fence_state() to phb_ops
Cédric Le Goater
clg at kaod.org
Sat Dec 18 02:26:50 AEDT 2021
On 12/17/21 03:36, Nicholas Piggin wrote:
> From: Stewart Smith <stewart at flamingspork.com>
>
> This lets us consider not building in npu.o
I would instead introduce an empty stub for npu_set_fence_state()
in npu.h.
Thanks,
C.
> 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 {
>
More information about the Skiboot
mailing list