diff options
Diffstat (limited to 'SOURCES/0001-device-detect-vGPUs.patch')
-rw-r--r-- | SOURCES/0001-device-detect-vGPUs.patch | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/SOURCES/0001-device-detect-vGPUs.patch b/SOURCES/0001-device-detect-vGPUs.patch new file mode 100644 index 0000000..08f591f --- /dev/null +++ b/SOURCES/0001-device-detect-vGPUs.patch @@ -0,0 +1,59 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Karol Herbst <kherbst@redhat.com> +Date: Tue, 28 Apr 2020 18:54:04 +0200 +Subject: [PATCH] device: detect vGPUs + +Using ENODEV as this prevents probe failed errors in dmesg. + +v2: move check further down + +Signed-off-by: Karol Herbst <kherbst@redhat.com> +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +index c732074bf790..f977dddcd809 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +@@ -2948,7 +2948,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + { + struct nvkm_subdev *subdev; + u64 mmio_base, mmio_size; +- u32 boot0, strap; ++ u32 boot0, boot1, strap; + void __iomem *map = NULL; + int ret = -EEXIST, i; + unsigned chipset; +@@ -2998,9 +2998,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + } + } + +- /* read boot0 and strapping information */ + boot0 = ioread32_native(map + 0x000000); +- strap = ioread32_native(map + 0x101000); + + /* chipset can be overridden for devel/testing purposes */ + chipset = nvkm_longopt(device->cfgopt, "NvChipset", 0); +@@ -3158,6 +3156,17 @@ nvkm_device_ctor(const struct nvkm_device_func *func, + nvdev_info(device, "NVIDIA %s (%08x)\n", + device->chip->name, boot0); + ++ /* vGPU detection */ ++ boot1 = ioread32_native(map + 0x000004); ++ if (device->card_type >= TU100 && (boot1 & 0x00030000)) { ++ nvdev_info(device, "vGPUs are not supported\n"); ++ ret = -ENODEV; ++ goto done; ++ } ++ ++ /* read strapping information */ ++ strap = ioread32_native(map + 0x101000); ++ + /* determine frequency of timing crystal */ + if ( device->card_type <= NV_10 || device->chipset < 0x17 || + (device->chipset >= 0x20 && device->chipset < 0x25)) +-- +2.26.2 + |