[Skiboot] [PATCH 1/3] npu2-hw-procedures: Don't set iovalid for opencapi devices
Andrew Donnellan
andrew.donnellan at au1.ibm.com
Mon Mar 18 11:27:17 AEDT 2019
On 16/3/19 3:44 am, Frederic Barrat wrote:
> set_iovalid() is called on the PHY reset path. The hw logic it touches
> is meaningless for opencapi. It's not hurting as long as all the links
> under the NPU are in opencapi mode, but in case of mixing opencapi and
> nvlink, we'll be in troubles: the code finds which bit to modify based
> on the brick index, which varies depending on the mode. So calling
> that function on an opencapi device may modify a nvlink brick! For
> example, for brick index 3.
>
> So we simply avoid doing anything when calling set_iovalid() for an
> opencapi device.
>
> Signed-off-by: Frederic Barrat <fbarrat at linux.ibm.com>
Makes sense.
Reviewed-by: Andrew Donnellan <andrew.donnellan at au1.ibm.com>
> ---
> hw/npu2-hw-procedures.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/hw/npu2-hw-procedures.c b/hw/npu2-hw-procedures.c
> index a10ccb7c..3ee646cd 100644
> --- a/hw/npu2-hw-procedures.c
> +++ b/hw/npu2-hw-procedures.c
> @@ -218,6 +218,9 @@ static void set_iovalid(struct npu2_dev *ndev, bool raise)
> uint64_t addr, val, mask;
> int rc;
>
> + if (ndev->type == NPU2_DEV_TYPE_OPENCAPI)
> + return;
> +
> addr = (ndev->pl_xscom_base & 0x3F000000) | 0x9;
> mask = PPC_BIT(6 + obus_brick_index(ndev));
> val = raise ? mask : 0;
>
--
Andrew Donnellan OzLabs, ADL Canberra
andrew.donnellan at au1.ibm.com IBM Australia Limited
More information about the Skiboot
mailing list