[PATCH] vfio/nvgrace-gpu: add GB10 device ID (0x2e12)

Eric Curtin posted 1 patch 5 days, 4 hours ago
drivers/vfio/pci/nvgrace-gpu/main.c | 2 ++
1 file changed, 2 insertions(+)
[PATCH] vfio/nvgrace-gpu: add GB10 device ID (0x2e12)
Posted by Eric Curtin 5 days, 4 hours ago
The NVIDIA GB10 GPU (device ID 0x2e12, found in DGX GB10 systems) is a
Grace-Blackwell chip that shares the same NVLink-C2C coherent memory
architecture as the existing GH200/GB200/GB300 entries.  It exposes
CPU-coherent device memory via the ACPI DSD properties
nvidia,gpu-mem-base-pa / nvidia,gpu-mem-size and requires the same
specialised BAR emulation provided by nvgrace-gpu-vfio-pci.

Without this entry the device falls through to the generic vfio-pci
driver, which fails the iommufd IOMMU_RESV_DIRECT check because the
NVLink-C2C memory apertures appear as RESV_DIRECT in the IOMMU group
reserved regions, yielding:

  vfio-pci 000f:01:00.0: Firmware has requested this device have a
  1:1 IOMMU mapping, rejecting configuring the device without a 1:1
  mapping.  Contact your platform vendor.

Tested on a DGX GB10 system (aarch64, kernel 6.17.0-1014-nvidia).

Signed-off-by: Eric Curtin <ericcurtin17@gmail.com>
---
 drivers/vfio/pci/nvgrace-gpu/main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/vfio/pci/nvgrace-gpu/main.c b/drivers/vfio/pci/nvgrace-gpu/main.c
index fa056b69f899..ac1acf41df86 100644
--- a/drivers/vfio/pci/nvgrace-gpu/main.c
+++ b/drivers/vfio/pci/nvgrace-gpu/main.c
@@ -1244,6 +1244,8 @@ static const struct pci_device_id nvgrace_gpu_vfio_pci_table[] = {
 	{ PCI_DRIVER_OVERRIDE_DEVICE_VFIO(PCI_VENDOR_ID_NVIDIA, 0x2941) },
 	/* GB300 SKU */
 	{ PCI_DRIVER_OVERRIDE_DEVICE_VFIO(PCI_VENDOR_ID_NVIDIA, 0x31C2) },
+	/* GB10 SKU */
+	{ PCI_DRIVER_OVERRIDE_DEVICE_VFIO(PCI_VENDOR_ID_NVIDIA, 0x2E12) },
 	{}
 };
 
-- 
2.43.0
Re: [PATCH] vfio/nvgrace-gpu: add GB10 device ID (0x2e12)
Posted by Alex Williamson 4 days, 8 hours ago
On Tue, 19 May 2026 20:45:45 +0100
Eric Curtin <ericcurtin17@gmail.com> wrote:

> The NVIDIA GB10 GPU (device ID 0x2e12, found in DGX GB10 systems) is a
> Grace-Blackwell chip that shares the same NVLink-C2C coherent memory
> architecture as the existing GH200/GB200/GB300 entries.  It exposes
> CPU-coherent device memory via the ACPI DSD properties
> nvidia,gpu-mem-base-pa / nvidia,gpu-mem-size and requires the same
> specialised BAR emulation provided by nvgrace-gpu-vfio-pci.
> 
> Without this entry the device falls through to the generic vfio-pci
> driver, which fails the iommufd IOMMU_RESV_DIRECT check because the
> NVLink-C2C memory apertures appear as RESV_DIRECT in the IOMMU group
> reserved regions, yielding:
> 
>   vfio-pci 000f:01:00.0: Firmware has requested this device have a
>   1:1 IOMMU mapping, rejecting configuring the device without a 1:1
>   mapping.  Contact your platform vendor.
> 
> Tested on a DGX GB10 system (aarch64, kernel 6.17.0-1014-nvidia).

This is proposing a patch against upstream v7.1-rc, not a vendor or
downstream kernel.  What relevant testing against upstream has been
performed?

It's unclear to me how using the nvgrace-gpu driver rather than
vfio-pci gets around a RESV_DIRECT mapping requirement on the IOMMU
group.  Can you elaborate?

The requirement is enforced when setting the group to a container for
the legacy path or when binding the device when using iommufd.  Both of
those occur irrespective of using vfio-pci or a variant driver.

I also don't find that a DGX Spark GB10 exposes the ACPI DSD properties
claimed here, so while the architecture may be similar, the support for
the nvgrace-gpu specific functionality doesn't appear to be present.
Thanks,

Alex
 
> Signed-off-by: Eric Curtin <ericcurtin17@gmail.com>
> ---
>  drivers/vfio/pci/nvgrace-gpu/main.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/vfio/pci/nvgrace-gpu/main.c b/drivers/vfio/pci/nvgrace-gpu/main.c
> index fa056b69f899..ac1acf41df86 100644
> --- a/drivers/vfio/pci/nvgrace-gpu/main.c
> +++ b/drivers/vfio/pci/nvgrace-gpu/main.c
> @@ -1244,6 +1244,8 @@ static const struct pci_device_id nvgrace_gpu_vfio_pci_table[] = {
>  	{ PCI_DRIVER_OVERRIDE_DEVICE_VFIO(PCI_VENDOR_ID_NVIDIA, 0x2941) },
>  	/* GB300 SKU */
>  	{ PCI_DRIVER_OVERRIDE_DEVICE_VFIO(PCI_VENDOR_ID_NVIDIA, 0x31C2) },
> +	/* GB10 SKU */
> +	{ PCI_DRIVER_OVERRIDE_DEVICE_VFIO(PCI_VENDOR_ID_NVIDIA, 0x2E12) },
>  	{}
>  };
>