pci_id_driver_map: Support preferring iris over i965
authorJordan Justen <jordan.l.justen@intel.com>
Sat, 9 Mar 2019 00:59:44 +0000 (16:59 -0800)
committerJordan Justen <jordan.l.justen@intel.com>
Wed, 28 Aug 2019 20:38:34 +0000 (13:38 -0700)
This adds the ability for intel devices that:

 * Only load on i965
 * Only load on iris
 * First attempt i965, and try iris next
 * First attempt iris, and try i965 next

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
include/pci_ids/i965_pci_ids.h
src/loader/pci_id_driver_map.h

index 646df447bd7f3a3be9746e36fd8ed7772ed4ad77..7d1d051e4e11fb02ba9ee288fa3e74c057657809 100644 (file)
@@ -1,4 +1,11 @@
-#ifndef IRIS
+/*
+ * IRIS not defined: include all devices supported by i965 or iris
+ * IRIS == 0: devices where i965 is supported
+ * IRIS == 1: devices where iris is supported, and will be tried before i965
+ * IRIS == 2: devices where iris is supported, and will be tried after i965
+ */
+#if !defined(IRIS) || IRIS == 0
+/* Only try to load i965. Do not attempt iris. */
 CHIPSET(0x29A2, i965,    "Intel(R) 965G")
 CHIPSET(0x2992, i965,    "Intel(R) 965Q")
 CHIPSET(0x2982, i965,    "Intel(R) 965G")
@@ -97,6 +104,8 @@ CHIPSET(0x22B1, chv,     "Intel(R) HD Graphics XXX (Braswell)") /* Overridden in
 CHIPSET(0x22B2, chv,     "Intel(R) HD Graphics (Cherryview)")
 CHIPSET(0x22B3, chv,     "Intel(R) HD Graphics (Cherryview)")
 #endif
+#if !defined(IRIS) || IRIS == 0 || IRIS == 2
+/* First try to load i965, then try iris */
 CHIPSET(0x1602, bdw_gt1, "Intel(R) Broadwell GT1")
 CHIPSET(0x1606, bdw_gt1, "Intel(R) Broadwell GT1")
 CHIPSET(0x160A, bdw_gt1, "Intel(R) Broadwell GT1")
@@ -239,3 +248,10 @@ CHIPSET(0x4500, ehl_4x8, "Intel(R) HD Graphics (Elkhart Lake 4x8)")
 CHIPSET(0x4571, ehl_4x8, "Intel(R) HD Graphics (Elkhart Lake 4x8)")
 CHIPSET(0x4551, ehl_4x4, "Intel(R) HD Graphics (Elkhart Lake 4x4)")
 CHIPSET(0x4541, ehl_2x4, "Intel(R) HD Graphics (Elkhart Lake 2x4)")
+#endif
+#if !defined(IRIS) || IRIS == 0 || IRIS == 1
+/* First try to load iris, then try i965 */
+#endif
+#if !defined(IRIS) || IRIS == 1
+/* Only try to load iris. Do not attempt i965. */
+#endif
index 99fe4ad216191140dac77b7b7c1034f6adc3c3a5..2909f69f24fb5d971aefc1000811ebdeddb26edb 100644 (file)
@@ -19,13 +19,23 @@ static const int i915_chip_ids[] = {
 
 static const int i965_chip_ids[] = {
 #define CHIPSET(chip, family, name) chip,
+#define IRIS 0 /* all i965 devices */
 #include "pci_ids/i965_pci_ids.h"
+#undef IRIS
+#undef CHIPSET
+};
+
+static const int iris_chip_ids_1[] = {
+#define CHIPSET(chip, family, name) chip,
+#define IRIS 1 /* iris devices to try before i965 */
+#include "pci_ids/i965_pci_ids.h"
+#undef IRIS
 #undef CHIPSET
 };
 
-static const int iris_chip_ids[] = {
+static const int iris_chip_ids_2[] = {
 #define CHIPSET(chip, family, name) chip,
-#define IRIS 1
+#define IRIS 2 /* iris devices to try after i965 */
 #include "pci_ids/i965_pci_ids.h"
 #undef IRIS
 #undef CHIPSET
@@ -83,8 +93,9 @@ static const struct {
    int (*predicate)(int fd);
 } driver_map[] = {
    { 0x8086, "i915", i915_chip_ids, ARRAY_SIZE(i915_chip_ids) },
+   { 0x8086, "iris", iris_chip_ids_1, ARRAY_SIZE(iris_chip_ids_1) },
    { 0x8086, "i965", i965_chip_ids, ARRAY_SIZE(i965_chip_ids) },
-   { 0x8086, "iris", iris_chip_ids, ARRAY_SIZE(iris_chip_ids) },
+   { 0x8086, "iris", iris_chip_ids_2, ARRAY_SIZE(iris_chip_ids_2) },
    { 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) },