[Skiboot] [PATCH] hw/npu2.c: Add ibm, nvlink-speed device-tree property
Alistair Popple
alistair at popple.id.au
Fri Aug 18 15:14:04 AEST 2017
Stewart,
We're going to change the values of the enum here so I'm going to resubmit this
patch. Thanks.
Regards,
Alistair
On Thu, 17 Aug 2017 06:12:47 PM Alistair Popple wrote:
> NVLink2 links can support multiple different speeds. However the device driver
> has no way of determining which speed was programmed so pass it down as a device
> tree property.
>
> Signed-off-by: Alistair Popple <alistair at popple.id.au>
> ---
> doc/device-tree/nvlink.rst | 7 ++++++-
> hw/npu2.c | 8 ++++++++
> 2 files changed, 14 insertions(+), 1 deletion(-)
>
> diff --git a/doc/device-tree/nvlink.rst b/doc/device-tree/nvlink.rst
> index 6ce44e9..2876ca8 100644
> --- a/doc/device-tree/nvlink.rst
> +++ b/doc/device-tree/nvlink.rst
> @@ -105,7 +105,12 @@ Emulated PCI device bindings
> vendor-id = <0x1014>;
> ibm,gpu = <0x100002f7>; /* phandle pointing the associated GPU PCI device node */
> memory-region = <0x10000abc>; /* phandle pointing to the GPU memory */
> - phandle = <0x100002fc>;
> + ibm,nvlink-speed = <0x1>;
> +
> + ; Denotes the speed the link is running at:
> + ; 0x0 == 20 Gbps, 0x1 == 25.00000 Gbps, 0x2 = 25.78125 Gbps
> +
> + phandle = <0x100002fc>;
> };
>
> pci at 1 {
> diff --git a/hw/npu2.c b/hw/npu2.c
> index 74e3325..cab7347 100644
> --- a/hw/npu2.c
> +++ b/hw/npu2.c
> @@ -683,6 +683,14 @@ static int npu2_dn_fixup(struct phb *phb,
> npu2_dn_fixup_gmb(pd->dn, dev);
> dt_add_property_cells(pd->dn, "ibm,nvlink", dev->dt_node->phandle);
>
> + /* NVLink supports multiple speeds and device drivers need to know what
> + * speed has been set by firmware. The speed is actually controlled by
> + * Hostboot, so until we get a HDAT entry telling us what speed they
> + * programmed we will just hard code it here and hope it matches. If it
> + * doesn't it is always possible to manually override it when installing
> + * the device driver. */
> + dt_add_property_cells(pd->dn, "ibm,nvlink-speed", 0x1);
> +
> /* NPU devices require a slot location to associate with GPUs */
> dev->slot_label = dt_prop_get_def(pd->dn, "ibm,slot-label", NULL);
> if (!dev->slot_label) {
>
More information about the Skiboot
mailing list