summaryrefslogtreecommitdiff
path: root/src/loader
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2020-01-27 17:21:03 -0800
committerKenneth Graunke <kenneth@whitecape.org>2020-01-28 15:35:09 -0800
commitbaf9327fa1b6cd1a75c5080a86f8fd12555e3d75 (patch)
tree93cee00b568ead0f9f19cc32958ff1303a4f0382 /src/loader
parent2969012d03be1b0690eed6a855ffc57535c721eb (diff)
loader: Check if the kernel driver is i915 before loading iris
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>
Diffstat (limited to 'src/loader')
-rw-r--r--src/loader/loader.c7
-rw-r--r--src/loader/pci_id_driver_map.h3
2 files changed, 9 insertions, 1 deletions
diff --git a/src/loader/loader.c b/src/loader/loader.c
index 668e6d5184b..a2fe0a241a2 100644
--- a/src/loader/loader.c
+++ b/src/loader/loader.c
@@ -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)
diff --git a/src/loader/pci_id_driver_map.h b/src/loader/pci_id_driver_map.h
index 9b4618e1601..1dc07be390c 100644
--- a/src/loader/pci_id_driver_map.h
+++ b/src/loader/pci_id_driver_map.h
@@ -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) },