On Tue, 04 May 2021 09:52:02 -0600 Alex Williamson <alex.williamson@xxxxxxxxxx> wrote: > Revert the uAPI changes from the below commit with notice that these > regions and capabilities are no longer provided. > > Fixes: b392a1989170 ("vfio/pci: remove vfio_pci_nvlink2") > Reported-by: Greg Kurz <groug@xxxxxxxx> > Signed-off-by: Alex Williamson <alex.williamson@xxxxxxxxxx> > --- > > Greg (Kurz), please double check this resolves the issue. Thanks! > It does. Feel free to add: Reviewed-by: Greg Kurz <groug@xxxxxxxx> and Tested-by: Greg Kurz <groug@xxxxxxxx> Thanks for the quick fix. Cheers, -- Greg > include/uapi/linux/vfio.h | 46 +++++++++++++++++++++++++++++++++++++++++---- > 1 file changed, 42 insertions(+), 4 deletions(-) > > diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h > index 34b1f53a3901..ef33ea002b0b 100644 > --- a/include/uapi/linux/vfio.h > +++ b/include/uapi/linux/vfio.h > @@ -333,10 +333,21 @@ struct vfio_region_info_cap_type { > #define VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG (3) > > /* 10de vendor PCI sub-types */ > -/* subtype 1 was VFIO_REGION_SUBTYPE_NVIDIA_NVLINK2_RAM, don't use */ > +/* > + * NVIDIA GPU NVlink2 RAM is coherent RAM mapped onto the host address space. > + * > + * Deprecated, region no longer provided > + */ > +#define VFIO_REGION_SUBTYPE_NVIDIA_NVLINK2_RAM (1) > > /* 1014 vendor PCI sub-types */ > -/* subtype 1 was VFIO_REGION_SUBTYPE_IBM_NVLINK2_ATSD, don't use */ > +/* > + * IBM NPU NVlink2 ATSD (Address Translation Shootdown) register of NPU > + * to do TLB invalidation on a GPU. > + * > + * Deprecated, region no longer provided > + */ > +#define VFIO_REGION_SUBTYPE_IBM_NVLINK2_ATSD (1) > > /* sub-types for VFIO_REGION_TYPE_GFX */ > #define VFIO_REGION_SUBTYPE_GFX_EDID (1) > @@ -630,9 +641,36 @@ struct vfio_device_migration_info { > */ > #define VFIO_REGION_INFO_CAP_MSIX_MAPPABLE 3 > > -/* subtype 4 was VFIO_REGION_INFO_CAP_NVLINK2_SSATGT, don't use */ > +/* > + * Capability with compressed real address (aka SSA - small system address) > + * where GPU RAM is mapped on a system bus. Used by a GPU for DMA routing > + * and by the userspace to associate a NVLink bridge with a GPU. > + * > + * Deprecated, capability no longer provided > + */ > +#define VFIO_REGION_INFO_CAP_NVLINK2_SSATGT 4 > + > +struct vfio_region_info_cap_nvlink2_ssatgt { > + struct vfio_info_cap_header header; > + __u64 tgt; > +}; > > -/* subtype 5 was VFIO_REGION_INFO_CAP_NVLINK2_LNKSPD, don't use */ > +/* > + * Capability with an NVLink link speed. The value is read by > + * the NVlink2 bridge driver from the bridge's "ibm,nvlink-speed" > + * property in the device tree. The value is fixed in the hardware > + * and failing to provide the correct value results in the link > + * not working with no indication from the driver why. > + * > + * Deprecated, capability no longer provided > + */ > +#define VFIO_REGION_INFO_CAP_NVLINK2_LNKSPD 5 > + > +struct vfio_region_info_cap_nvlink2_lnkspd { > + struct vfio_info_cap_header header; > + __u32 link_speed; > + __u32 __pad; > +}; > > /** > * VFIO_DEVICE_GET_IRQ_INFO - _IOWR(VFIO_TYPE, VFIO_BASE + 9, > >