loader: Check if the kernel driver is i915 before loading iris
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 28 Jan 2020 01:21:03 +0000 (17:21 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 28 Jan 2020 23:35:09 +0000 (15:35 -0800)
To prevent it from trying to load on say gma500 hardware.

Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3595>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3595>

src/loader/loader.c
src/loader/pci_id_driver_map.h

index 668e6d5184b09ecd1e09e757b746938a6c74b608..a2fe0a241a2278549df7fa85341075c787f28656 100644 (file)
@@ -114,6 +114,13 @@ static char *loader_get_kernel_driver_name(int fd)
 #endif
 }
 
+bool
+is_kernel_i915(int fd)
+{
+   char *kernel_driver = loader_get_kernel_driver_name(fd);
+   return kernel_driver && strcmp(kernel_driver, "i915") == 0;
+}
+
 #if defined(HAVE_LIBDRM)
 int
 loader_open_render_node(const char *name)
index 9b4618e160148a75f21cadb765c1347f9ea88c4b..1dc07be390c014a728523ebea47724f172c90058 100644 (file)
@@ -57,6 +57,7 @@ static const int vmwgfx_chip_ids[] = {
 };
 
 bool is_nouveau_vieux(int fd);
+bool is_kernel_i915(int fd);
 
 static const struct {
    int vendor_id;
@@ -67,7 +68,7 @@ static const struct {
 } driver_map[] = {
    { 0x8086, "i915", i915_chip_ids, ARRAY_SIZE(i915_chip_ids) },
    { 0x8086, "i965", i965_chip_ids, ARRAY_SIZE(i965_chip_ids) },
-   { 0x8086, "iris", NULL, -1 },
+   { 0x8086, "iris", NULL, -1, is_kernel_i915 },
    { 0x1002, "radeon", r100_chip_ids, ARRAY_SIZE(r100_chip_ids) },
    { 0x1002, "r200", r200_chip_ids, ARRAY_SIZE(r200_chip_ids) },
    { 0x1002, "r300", r300_chip_ids, ARRAY_SIZE(r300_chip_ids) },