drm/amdgpu: filter out radeon PCI device IDs
authorjsg <jsg@openbsd.org>
Thu, 7 Apr 2022 07:11:21 +0000 (07:11 +0000)
committerjsg <jsg@openbsd.org>
Thu, 7 Apr 2022 07:11:21 +0000 (07:11 +0000)
From Alex Deucher
f724a438d986701536d68d29ad2b5248385e35ab in linux 5.15.y/5.15.27
bdbeb0dde4258586bb2f481b12da1e83aa4766f3 in mainline linux

sys/dev/pci/drm/amd/amdgpu/amdgpu_drv.c

index ce524e3..ce2d8ef 100644 (file)
@@ -891,6 +891,636 @@ MODULE_PARM_DESC(smu_pptable_id,
        "specify pptable id to be used (-1 = auto(default) value, 0 = use pptable from vbios, > 0 = soft pptable id)");
 module_param_named(smu_pptable_id, amdgpu_smu_pptable_id, int, 0444);
 
+/* These devices are not supported by amdgpu.
+ * They are supported by the mach64, r128, radeon drivers
+ */
+static const u16 amdgpu_unsupported_pciidlist[] = {
+       /* mach64 */
+       0x4354,
+       0x4358,
+       0x4554,
+       0x4742,
+       0x4744,
+       0x4749,
+       0x474C,
+       0x474D,
+       0x474E,
+       0x474F,
+       0x4750,
+       0x4751,
+       0x4752,
+       0x4753,
+       0x4754,
+       0x4755,
+       0x4756,
+       0x4757,
+       0x4758,
+       0x4759,
+       0x475A,
+       0x4C42,
+       0x4C44,
+       0x4C47,
+       0x4C49,
+       0x4C4D,
+       0x4C4E,
+       0x4C50,
+       0x4C51,
+       0x4C52,
+       0x4C53,
+       0x5654,
+       0x5655,
+       0x5656,
+       /* r128 */
+       0x4c45,
+       0x4c46,
+       0x4d46,
+       0x4d4c,
+       0x5041,
+       0x5042,
+       0x5043,
+       0x5044,
+       0x5045,
+       0x5046,
+       0x5047,
+       0x5048,
+       0x5049,
+       0x504A,
+       0x504B,
+       0x504C,
+       0x504D,
+       0x504E,
+       0x504F,
+       0x5050,
+       0x5051,
+       0x5052,
+       0x5053,
+       0x5054,
+       0x5055,
+       0x5056,
+       0x5057,
+       0x5058,
+       0x5245,
+       0x5246,
+       0x5247,
+       0x524b,
+       0x524c,
+       0x534d,
+       0x5446,
+       0x544C,
+       0x5452,
+       /* radeon */
+       0x3150,
+       0x3151,
+       0x3152,
+       0x3154,
+       0x3155,
+       0x3E50,
+       0x3E54,
+       0x4136,
+       0x4137,
+       0x4144,
+       0x4145,
+       0x4146,
+       0x4147,
+       0x4148,
+       0x4149,
+       0x414A,
+       0x414B,
+       0x4150,
+       0x4151,
+       0x4152,
+       0x4153,
+       0x4154,
+       0x4155,
+       0x4156,
+       0x4237,
+       0x4242,
+       0x4336,
+       0x4337,
+       0x4437,
+       0x4966,
+       0x4967,
+       0x4A48,
+       0x4A49,
+       0x4A4A,
+       0x4A4B,
+       0x4A4C,
+       0x4A4D,
+       0x4A4E,
+       0x4A4F,
+       0x4A50,
+       0x4A54,
+       0x4B48,
+       0x4B49,
+       0x4B4A,
+       0x4B4B,
+       0x4B4C,
+       0x4C57,
+       0x4C58,
+       0x4C59,
+       0x4C5A,
+       0x4C64,
+       0x4C66,
+       0x4C67,
+       0x4E44,
+       0x4E45,
+       0x4E46,
+       0x4E47,
+       0x4E48,
+       0x4E49,
+       0x4E4A,
+       0x4E4B,
+       0x4E50,
+       0x4E51,
+       0x4E52,
+       0x4E53,
+       0x4E54,
+       0x4E56,
+       0x5144,
+       0x5145,
+       0x5146,
+       0x5147,
+       0x5148,
+       0x514C,
+       0x514D,
+       0x5157,
+       0x5158,
+       0x5159,
+       0x515A,
+       0x515E,
+       0x5460,
+       0x5462,
+       0x5464,
+       0x5548,
+       0x5549,
+       0x554A,
+       0x554B,
+       0x554C,
+       0x554D,
+       0x554E,
+       0x554F,
+       0x5550,
+       0x5551,
+       0x5552,
+       0x5554,
+       0x564A,
+       0x564B,
+       0x564F,
+       0x5652,
+       0x5653,
+       0x5657,
+       0x5834,
+       0x5835,
+       0x5954,
+       0x5955,
+       0x5974,
+       0x5975,
+       0x5960,
+       0x5961,
+       0x5962,
+       0x5964,
+       0x5965,
+       0x5969,
+       0x5a41,
+       0x5a42,
+       0x5a61,
+       0x5a62,
+       0x5b60,
+       0x5b62,
+       0x5b63,
+       0x5b64,
+       0x5b65,
+       0x5c61,
+       0x5c63,
+       0x5d48,
+       0x5d49,
+       0x5d4a,
+       0x5d4c,
+       0x5d4d,
+       0x5d4e,
+       0x5d4f,
+       0x5d50,
+       0x5d52,
+       0x5d57,
+       0x5e48,
+       0x5e4a,
+       0x5e4b,
+       0x5e4c,
+       0x5e4d,
+       0x5e4f,
+       0x6700,
+       0x6701,
+       0x6702,
+       0x6703,
+       0x6704,
+       0x6705,
+       0x6706,
+       0x6707,
+       0x6708,
+       0x6709,
+       0x6718,
+       0x6719,
+       0x671c,
+       0x671d,
+       0x671f,
+       0x6720,
+       0x6721,
+       0x6722,
+       0x6723,
+       0x6724,
+       0x6725,
+       0x6726,
+       0x6727,
+       0x6728,
+       0x6729,
+       0x6738,
+       0x6739,
+       0x673e,
+       0x6740,
+       0x6741,
+       0x6742,
+       0x6743,
+       0x6744,
+       0x6745,
+       0x6746,
+       0x6747,
+       0x6748,
+       0x6749,
+       0x674A,
+       0x6750,
+       0x6751,
+       0x6758,
+       0x6759,
+       0x675B,
+       0x675D,
+       0x675F,
+       0x6760,
+       0x6761,
+       0x6762,
+       0x6763,
+       0x6764,
+       0x6765,
+       0x6766,
+       0x6767,
+       0x6768,
+       0x6770,
+       0x6771,
+       0x6772,
+       0x6778,
+       0x6779,
+       0x677B,
+       0x6840,
+       0x6841,
+       0x6842,
+       0x6843,
+       0x6849,
+       0x684C,
+       0x6850,
+       0x6858,
+       0x6859,
+       0x6880,
+       0x6888,
+       0x6889,
+       0x688A,
+       0x688C,
+       0x688D,
+       0x6898,
+       0x6899,
+       0x689b,
+       0x689c,
+       0x689d,
+       0x689e,
+       0x68a0,
+       0x68a1,
+       0x68a8,
+       0x68a9,
+       0x68b0,
+       0x68b8,
+       0x68b9,
+       0x68ba,
+       0x68be,
+       0x68bf,
+       0x68c0,
+       0x68c1,
+       0x68c7,
+       0x68c8,
+       0x68c9,
+       0x68d8,
+       0x68d9,
+       0x68da,
+       0x68de,
+       0x68e0,
+       0x68e1,
+       0x68e4,
+       0x68e5,
+       0x68e8,
+       0x68e9,
+       0x68f1,
+       0x68f2,
+       0x68f8,
+       0x68f9,
+       0x68fa,
+       0x68fe,
+       0x7100,
+       0x7101,
+       0x7102,
+       0x7103,
+       0x7104,
+       0x7105,
+       0x7106,
+       0x7108,
+       0x7109,
+       0x710A,
+       0x710B,
+       0x710C,
+       0x710E,
+       0x710F,
+       0x7140,
+       0x7141,
+       0x7142,
+       0x7143,
+       0x7144,
+       0x7145,
+       0x7146,
+       0x7147,
+       0x7149,
+       0x714A,
+       0x714B,
+       0x714C,
+       0x714D,
+       0x714E,
+       0x714F,
+       0x7151,
+       0x7152,
+       0x7153,
+       0x715E,
+       0x715F,
+       0x7180,
+       0x7181,
+       0x7183,
+       0x7186,
+       0x7187,
+       0x7188,
+       0x718A,
+       0x718B,
+       0x718C,
+       0x718D,
+       0x718F,
+       0x7193,
+       0x7196,
+       0x719B,
+       0x719F,
+       0x71C0,
+       0x71C1,
+       0x71C2,
+       0x71C3,
+       0x71C4,
+       0x71C5,
+       0x71C6,
+       0x71C7,
+       0x71CD,
+       0x71CE,
+       0x71D2,
+       0x71D4,
+       0x71D5,
+       0x71D6,
+       0x71DA,
+       0x71DE,
+       0x7200,
+       0x7210,
+       0x7211,
+       0x7240,
+       0x7243,
+       0x7244,
+       0x7245,
+       0x7246,
+       0x7247,
+       0x7248,
+       0x7249,
+       0x724A,
+       0x724B,
+       0x724C,
+       0x724D,
+       0x724E,
+       0x724F,
+       0x7280,
+       0x7281,
+       0x7283,
+       0x7284,
+       0x7287,
+       0x7288,
+       0x7289,
+       0x728B,
+       0x728C,
+       0x7290,
+       0x7291,
+       0x7293,
+       0x7297,
+       0x7834,
+       0x7835,
+       0x791e,
+       0x791f,
+       0x793f,
+       0x7941,
+       0x7942,
+       0x796c,
+       0x796d,
+       0x796e,
+       0x796f,
+       0x9400,
+       0x9401,
+       0x9402,
+       0x9403,
+       0x9405,
+       0x940A,
+       0x940B,
+       0x940F,
+       0x94A0,
+       0x94A1,
+       0x94A3,
+       0x94B1,
+       0x94B3,
+       0x94B4,
+       0x94B5,
+       0x94B9,
+       0x9440,
+       0x9441,
+       0x9442,
+       0x9443,
+       0x9444,
+       0x9446,
+       0x944A,
+       0x944B,
+       0x944C,
+       0x944E,
+       0x9450,
+       0x9452,
+       0x9456,
+       0x945A,
+       0x945B,
+       0x945E,
+       0x9460,
+       0x9462,
+       0x946A,
+       0x946B,
+       0x947A,
+       0x947B,
+       0x9480,
+       0x9487,
+       0x9488,
+       0x9489,
+       0x948A,
+       0x948F,
+       0x9490,
+       0x9491,
+       0x9495,
+       0x9498,
+       0x949C,
+       0x949E,
+       0x949F,
+       0x94C0,
+       0x94C1,
+       0x94C3,
+       0x94C4,
+       0x94C5,
+       0x94C6,
+       0x94C7,
+       0x94C8,
+       0x94C9,
+       0x94CB,
+       0x94CC,
+       0x94CD,
+       0x9500,
+       0x9501,
+       0x9504,
+       0x9505,
+       0x9506,
+       0x9507,
+       0x9508,
+       0x9509,
+       0x950F,
+       0x9511,
+       0x9515,
+       0x9517,
+       0x9519,
+       0x9540,
+       0x9541,
+       0x9542,
+       0x954E,
+       0x954F,
+       0x9552,
+       0x9553,
+       0x9555,
+       0x9557,
+       0x955f,
+       0x9580,
+       0x9581,
+       0x9583,
+       0x9586,
+       0x9587,
+       0x9588,
+       0x9589,
+       0x958A,
+       0x958B,
+       0x958C,
+       0x958D,
+       0x958E,
+       0x958F,
+       0x9590,
+       0x9591,
+       0x9593,
+       0x9595,
+       0x9596,
+       0x9597,
+       0x9598,
+       0x9599,
+       0x959B,
+       0x95C0,
+       0x95C2,
+       0x95C4,
+       0x95C5,
+       0x95C6,
+       0x95C7,
+       0x95C9,
+       0x95CC,
+       0x95CD,
+       0x95CE,
+       0x95CF,
+       0x9610,
+       0x9611,
+       0x9612,
+       0x9613,
+       0x9614,
+       0x9615,
+       0x9616,
+       0x9640,
+       0x9641,
+       0x9642,
+       0x9643,
+       0x9644,
+       0x9645,
+       0x9647,
+       0x9648,
+       0x9649,
+       0x964a,
+       0x964b,
+       0x964c,
+       0x964e,
+       0x964f,
+       0x9710,
+       0x9711,
+       0x9712,
+       0x9713,
+       0x9714,
+       0x9715,
+       0x9802,
+       0x9803,
+       0x9804,
+       0x9805,
+       0x9806,
+       0x9807,
+       0x9808,
+       0x9809,
+       0x980A,
+       0x9900,
+       0x9901,
+       0x9903,
+       0x9904,
+       0x9905,
+       0x9906,
+       0x9907,
+       0x9908,
+       0x9909,
+       0x990A,
+       0x990B,
+       0x990C,
+       0x990D,
+       0x990E,
+       0x990F,
+       0x9910,
+       0x9913,
+       0x9917,
+       0x9918,
+       0x9919,
+       0x9990,
+       0x9991,
+       0x9992,
+       0x9993,
+       0x9994,
+       0x9995,
+       0x9996,
+       0x9997,
+       0x9998,
+       0x9999,
+       0x999A,
+       0x999B,
+       0x999C,
+       0x999D,
+       0x99A0,
+       0x99A2,
+       0x99A4,
+};
+
 const struct pci_device_id amdgpu_pciidlist[] = {
 #ifdef  CONFIG_DRM_AMDGPU_SI
        {0x1002, 0x6780, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI},
@@ -1274,7 +1904,7 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
        struct drm_device *ddev;
        struct amdgpu_device *adev;
        unsigned long flags = ent->driver_data;
-       int ret, retry = 0;
+       int ret, retry = 0, i;
        bool supports_atomic = false;
        bool is_fw_fb;
        resource_size_t base, size;
@@ -1282,6 +1912,12 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
        if (amdgpu_aspm == -1 && !pcie_aspm_enabled(pdev))
                amdgpu_aspm = 0;
 
+       /* skip devices which are owned by radeon */
+       for (i = 0; i < ARRAY_SIZE(amdgpu_unsupported_pciidlist); i++) {
+               if (amdgpu_unsupported_pciidlist[i] == pdev->device)
+                       return -ENODEV;
+       }
+
        if (amdgpu_virtual_display ||
            amdgpu_device_asic_has_dc_support(flags & AMD_ASIC_MASK))
                supports_atomic = true;