Commit 2924779b authored by Karol Herbst's avatar Karol Herbst Committed by Ben Skeggs

drm/nouveau/device: detect vGPUs

Using ENODEV as this prevents probe failed errors in dmesg.

v2: move check further down
Signed-off-by: default avatarKarol Herbst <kherbst@redhat.com>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 51c05340
...@@ -2948,7 +2948,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func, ...@@ -2948,7 +2948,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func,
{ {
struct nvkm_subdev *subdev; struct nvkm_subdev *subdev;
u64 mmio_base, mmio_size; u64 mmio_base, mmio_size;
u32 boot0, strap; u32 boot0, boot1, strap;
void __iomem *map = NULL; void __iomem *map = NULL;
int ret = -EEXIST, i; int ret = -EEXIST, i;
unsigned chipset; unsigned chipset;
...@@ -2998,9 +2998,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func, ...@@ -2998,9 +2998,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func,
} }
} }
/* read boot0 and strapping information */
boot0 = ioread32_native(map + 0x000000); boot0 = ioread32_native(map + 0x000000);
strap = ioread32_native(map + 0x101000);
/* chipset can be overridden for devel/testing purposes */ /* chipset can be overridden for devel/testing purposes */
chipset = nvkm_longopt(device->cfgopt, "NvChipset", 0); chipset = nvkm_longopt(device->cfgopt, "NvChipset", 0);
...@@ -3158,6 +3156,17 @@ nvkm_device_ctor(const struct nvkm_device_func *func, ...@@ -3158,6 +3156,17 @@ nvkm_device_ctor(const struct nvkm_device_func *func,
nvdev_info(device, "NVIDIA %s (%08x)\n", nvdev_info(device, "NVIDIA %s (%08x)\n",
device->chip->name, boot0); 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 */ /* determine frequency of timing crystal */
if ( device->card_type <= NV_10 || device->chipset < 0x17 || if ( device->card_type <= NV_10 || device->chipset < 0x17 ||
(device->chipset >= 0x20 && device->chipset < 0x25)) (device->chipset >= 0x20 && device->chipset < 0x25))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment