diff --git a/vgpu_unlock_hooks.c b/vgpu_unlock_hooks.c index e4efbae..d740c75 100644 --- a/vgpu_unlock_hooks.c +++ b/vgpu_unlock_hooks.c @@ -572,189 +572,202 @@ static void vgpu_unlock_hmac_sha256(void* dst, typedef struct { uint8_t num_blocks; /* Number of 16 byte blocks up to 'sign'. */ - uint16_t unk0; + uint8_t name1_len; /* Length of first name (unused?) */ + uint8_t name2_len; /* Length of second name (used by VM) */ uint16_t dev_id; uint16_t vend_id; /* Check skipped if zero. */ uint16_t subsys_id; uint16_t subsys_vend_id; /* Check skipped if zero. */ - uint8_t unk1[7]; - char name[31]; + char name1_2[38]; /* First and second name, no separation. */ uint8_t sign[0x20]; } __attribute__((packed)) vgpu_unlock_vgpu_t; +/* Helper macro to initialize the structure above. */ +#define VGPU(dev_id, subsys_id, name) \ + { (10 + 2 * strlen(name) + 15) / 16, /* num_blocks */ \ + strlen(name), /* name1_len */ \ + strlen(name), /* name2_len */ \ + (dev_id), /* dev_id */ \ + 0, /* vend_id */ \ + (subsys_id), /* subsys_id */ \ + 0x10de, /* subsys_vend_id */ \ + { name name } } /* name1_2 */ + static vgpu_unlock_vgpu_t vgpu_unlock_vgpu[] = { /* Tesla M10 */ - { 2, 0x1007, 0x13bd, 0, 0x11cc, 0, { 0 }, { "GRID M10-0B" } }, - { 2, 0x1007, 0x13bd, 0, 0x11cd, 0, { 0 }, { "GRID M10-1B" } }, - { 2, 0x1007, 0x13bd, 0, 0x1339, 0, { 0 }, { "GRID M10-1B4" } }, - { 2, 0x1007, 0x13bd, 0, 0x1286, 0, { 0 }, { "GRID M10-2B" } }, - { 2, 0x1007, 0x13bd, 0, 0x12ee, 0, { 0 }, { "GRID M10-2B4" } }, - { 2, 0x1007, 0x13bd, 0, 0x11ce, 0, { 0 }, { "GRID M10-0Q" } }, - { 2, 0x1007, 0x13bd, 0, 0x11cf, 0, { 0 }, { "GRID M10-1Q" } }, - { 2, 0x1007, 0x13bd, 0, 0x11d0, 0, { 0 }, { "GRID M10-2Q" } }, - { 2, 0x1007, 0x13bd, 0, 0x11d1, 0, { 0 }, { "GRID M10-4Q" } }, - { 2, 0x1007, 0x13bd, 0, 0x11d2, 0, { 0 }, { "GRID M10-8Q" } }, - { 2, 0x1007, 0x13bd, 0, 0x11d3, 0, { 0 }, { "GRID M10-1A" } }, - { 2, 0x1007, 0x13bd, 0, 0x11d4, 0, { 0 }, { "GRID M10-2A" } }, - { 2, 0x1007, 0x13bd, 0, 0x11d5, 0, { 0 }, { "GRID M10-4A" } }, - { 2, 0x1007, 0x13bd, 0, 0x11d6, 0, { 0 }, { "GRID M10-8A" } }, + VGPU(0x13bd, 0x11cc, "GRID M10-0B"), + VGPU(0x13bd, 0x11cd, "GRID M10-1B"), + VGPU(0x13bd, 0x1339, "GRID M10-1B4"), + VGPU(0x13bd, 0x1286, "GRID M10-2B"), + VGPU(0x13bd, 0x12ee, "GRID M10-2B4"), + VGPU(0x13bd, 0x11ce, "GRID M10-0Q"), + VGPU(0x13bd, 0x11cf, "GRID M10-1Q"), + VGPU(0x13bd, 0x11d0, "GRID M10-2Q"), + VGPU(0x13bd, 0x11d1, "GRID M10-4Q"), + VGPU(0x13bd, 0x11d2, "GRID M10-8Q"), + VGPU(0x13bd, 0x11d3, "GRID M10-1A"), + VGPU(0x13bd, 0x11d4, "GRID M10-2A"), + VGPU(0x13bd, 0x11d5, "GRID M10-4A"), + VGPU(0x13bd, 0x11d6, "GRID M10-8A"), /* Tesla M60 */ - { 2, 0x1007, 0x13f2, 0, 0x114c, 0, { 0 }, { "GRID M60-0Q" } }, - { 2, 0x1007, 0x13f2, 0, 0x114d, 0, { 0 }, { "GRID M60-1Q" } }, - { 2, 0x1007, 0x13f2, 0, 0x114e, 0, { 0 }, { "GRID M60-2Q" } }, - { 2, 0x1007, 0x13f2, 0, 0x114f, 0, { 0 }, { "GRID M60-4Q" } }, - { 2, 0x1007, 0x13f2, 0, 0x1150, 0, { 0 }, { "GRID M60-8Q" } }, - { 2, 0x1007, 0x13f2, 0, 0x1176, 0, { 0 }, { "GRID M60-0B" } }, - { 2, 0x1007, 0x13f2, 0, 0x1177, 0, { 0 }, { "GRID M60-1B" } }, - { 2, 0x1007, 0x13f2, 0, 0x117D, 0, { 0 }, { "GRID M60-2B" } }, - { 2, 0x1007, 0x13f2, 0, 0x1337, 0, { 0 }, { "GRID M60-1B4" } }, - { 2, 0x1007, 0x13f2, 0, 0x12ec, 0, { 0 }, { "GRID M60-2B4" } }, - { 2, 0x1007, 0x13f2, 0, 0x11ae, 0, { 0 }, { "GRID M60-1A" } }, - { 2, 0x1007, 0x13f2, 0, 0x11aF, 0, { 0 }, { "GRID M60-2A" } }, - { 2, 0x1007, 0x13f2, 0, 0x11b0, 0, { 0 }, { "GRID M60-4A" } }, - { 2, 0x1007, 0x13f2, 0, 0x11b1, 0, { 0 }, { "GRID M60-8A" } }, + VGPU(0x13f2, 0x114c, "GRID M60-0Q"), + VGPU(0x13f2, 0x114d, "GRID M60-1Q"), + VGPU(0x13f2, 0x114e, "GRID M60-2Q"), + VGPU(0x13f2, 0x114f, "GRID M60-4Q"), + VGPU(0x13f2, 0x1150, "GRID M60-8Q"), + VGPU(0x13f2, 0x1176, "GRID M60-0B"), + VGPU(0x13f2, 0x1177, "GRID M60-1B"), + VGPU(0x13f2, 0x117D, "GRID M60-2B"), + VGPU(0x13f2, 0x1337, "GRID M60-1B4"), + VGPU(0x13f2, 0x12ec, "GRID M60-2B4"), + VGPU(0x13f2, 0x11ae, "GRID M60-1A"), + VGPU(0x13f2, 0x11aF, "GRID M60-2A"), + VGPU(0x13f2, 0x11b0, "GRID M60-4A"), + VGPU(0x13f2, 0x11b1, "GRID M60-8A"), /* Tesla P40 */ - { 2, 0x1007, 0x1b38, 0, 0x11e7, 0, { 0 }, { "GRID P40-1B" } }, - { 2, 0x1007, 0x1b38, 0, 0x11e8, 0, { 0 }, { "GRID P40-1Q" } }, - { 2, 0x1007, 0x1b38, 0, 0x11e9, 0, { 0 }, { "GRID P40-2Q" } }, - { 2, 0x1007, 0x1b38, 0, 0x11ea, 0, { 0 }, { "GRID P40-3Q" } }, - { 2, 0x1007, 0x1b38, 0, 0x11eb, 0, { 0 }, { "GRID P40-4Q" } }, - { 2, 0x1007, 0x1b38, 0, 0x11ec, 0, { 0 }, { "GRID P40-6Q" } }, - { 2, 0x1007, 0x1b38, 0, 0x11ed, 0, { 0 }, { "GRID P40-8Q" } }, - { 2, 0x1007, 0x1b38, 0, 0x11ee, 0, { 0 }, { "GRID P40-12Q" } }, - { 2, 0x1007, 0x1b38, 0, 0x11ef, 0, { 0 }, { "GRID P40-24Q" } }, - { 2, 0x1007, 0x1b38, 0, 0x11f0, 0, { 0 }, { "GRID P40-1A" } }, - { 2, 0x1007, 0x1b38, 0, 0x11f1, 0, { 0 }, { "GRID P40-2A" } }, - { 2, 0x1007, 0x1b38, 0, 0x11f2, 0, { 0 }, { "GRID P40-3A" } }, - { 2, 0x1007, 0x1b38, 0, 0x11f3, 0, { 0 }, { "GRID P40-4A" } }, - { 2, 0x1007, 0x1b38, 0, 0x11f4, 0, { 0 }, { "GRID P40-6A" } }, - { 2, 0x1007, 0x1b38, 0, 0x11f5, 0, { 0 }, { "GRID P40-8A" } }, - { 2, 0x1007, 0x1b38, 0, 0x11f6, 0, { 0 }, { "GRID P40-12A" } }, - { 2, 0x1007, 0x1b38, 0, 0x11f7, 0, { 0 }, { "GRID P40-24A" } }, - { 2, 0x1007, 0x1b38, 0, 0x1287, 0, { 0 }, { "GRID P40-2B" } }, - { 2, 0x1007, 0x1b38, 0, 0x12ef, 0, { 0 }, { "GRID P40-2B4" } }, - { 2, 0x1007, 0x1b38, 0, 0x133a, 0, { 0 }, { "GRID P40-1B4" } }, - { 2, 0x1007, 0x1b38, 0, 0x137e, 0, { 0 }, { "GRID P40-24C" } }, - { 2, 0x1007, 0x1b38, 0, 0x1381, 0, { 0 }, { "GRID P40-4C" } }, - { 2, 0x1007, 0x1b38, 0, 0x1382, 0, { 0 }, { "GRID P40-6C" } }, - { 2, 0x1007, 0x1b38, 0, 0x1383, 0, { 0 }, { "GRID P40-8C" } }, - { 2, 0x1007, 0x1b38, 0, 0x1384, 0, { 0 }, { "GRID P40-12C" } }, + VGPU(0x1b38, 0x11e7, "GRID P40-1B"), + VGPU(0x1b38, 0x11e8, "GRID P40-1Q"), + VGPU(0x1b38, 0x11e9, "GRID P40-2Q"), + VGPU(0x1b38, 0x11ea, "GRID P40-3Q"), + VGPU(0x1b38, 0x11eb, "GRID P40-4Q"), + VGPU(0x1b38, 0x11ec, "GRID P40-6Q"), + VGPU(0x1b38, 0x11ed, "GRID P40-8Q"), + VGPU(0x1b38, 0x11ee, "GRID P40-12Q"), + VGPU(0x1b38, 0x11ef, "GRID P40-24Q"), + VGPU(0x1b38, 0x11f0, "GRID P40-1A"), + VGPU(0x1b38, 0x11f1, "GRID P40-2A"), + VGPU(0x1b38, 0x11f2, "GRID P40-3A"), + VGPU(0x1b38, 0x11f3, "GRID P40-4A"), + VGPU(0x1b38, 0x11f4, "GRID P40-6A"), + VGPU(0x1b38, 0x11f5, "GRID P40-8A"), + VGPU(0x1b38, 0x11f6, "GRID P40-12A"), + VGPU(0x1b38, 0x11f7, "GRID P40-24A"), + VGPU(0x1b38, 0x1287, "GRID P40-2B"), + VGPU(0x1b38, 0x12ef, "GRID P40-2B4"), + VGPU(0x1b38, 0x133a, "GRID P40-1B4"), + VGPU(0x1b38, 0x137e, "GRID P40-24C"), + VGPU(0x1b38, 0x1381, "GRID P40-4C"), + VGPU(0x1b38, 0x1382, "GRID P40-6C"), + VGPU(0x1b38, 0x1383, "GRID P40-8C"), + VGPU(0x1b38, 0x1384, "GRID P40-12C"), /* Tesla P4 */ - { 2, 0x1007, 0x1bb3, 0, 0x1203, 0, { 0 }, { "GRID P4-1B" } }, - { 2, 0x1007, 0x1bb3, 0, 0x1204, 0, { 0 }, { "GRID P4-1Q" } }, - { 2, 0x1007, 0x1bb3, 0, 0x1205, 0, { 0 }, { "GRID P4-2Q" } }, - { 2, 0x1007, 0x1bb3, 0, 0x1206, 0, { 0 }, { "GRID P4-4Q" } }, - { 2, 0x1007, 0x1bb3, 0, 0x1207, 0, { 0 }, { "GRID P4-8Q" } }, - { 2, 0x1007, 0x1bb3, 0, 0x1208, 0, { 0 }, { "GRID P4-1A" } }, - { 2, 0x1007, 0x1bb3, 0, 0x1209, 0, { 0 }, { "GRID P4-2A" } }, - { 2, 0x1007, 0x1bb3, 0, 0x120a, 0, { 0 }, { "GRID P4-4A" } }, - { 2, 0x1007, 0x1bb3, 0, 0x120b, 0, { 0 }, { "GRID P4-8A" } }, - { 2, 0x1007, 0x1bb3, 0, 0x1288, 0, { 0 }, { "GRID P4-2B" } }, - { 2, 0x1007, 0x1bb3, 0, 0x12f1, 0, { 0 }, { "GRID P4-2B4" } }, - { 2, 0x1007, 0x1bb3, 0, 0x133c, 0, { 0 }, { "GRID P4-1B4" } }, - { 2, 0x1007, 0x1bb3, 0, 0x1380, 0, { 0 }, { "GRID P4-8C" } }, - { 2, 0x1007, 0x1bb3, 0, 0x1385, 0, { 0 }, { "GRID P4-4C" } }, + VGPU(0x1bb3, 0x1203, "GRID P4-1B"), + VGPU(0x1bb3, 0x1204, "GRID P4-1Q"), + VGPU(0x1bb3, 0x1205, "GRID P4-2Q"), + VGPU(0x1bb3, 0x1206, "GRID P4-4Q"), + VGPU(0x1bb3, 0x1207, "GRID P4-8Q"), + VGPU(0x1bb3, 0x1208, "GRID P4-1A"), + VGPU(0x1bb3, 0x1209, "GRID P4-2A"), + VGPU(0x1bb3, 0x120a, "GRID P4-4A"), + VGPU(0x1bb3, 0x120b, "GRID P4-8A"), + VGPU(0x1bb3, 0x1288, "GRID P4-2B"), + VGPU(0x1bb3, 0x12f1, "GRID P4-2B4"), + VGPU(0x1bb3, 0x133c, "GRID P4-1B4"), + VGPU(0x1bb3, 0x1380, "GRID P4-8C"), + VGPU(0x1bb3, 0x1385, "GRID P4-4C"), /* Tesla V100 16GB PCIE */ - { 2, 0x1007, 0x1db4, 0, 0x1254, 0, { 0 }, { "GRID V100-1A "} }, - { 2, 0x1007, 0x1db4, 0, 0x1255, 0, { 0 }, { "GRID V100-2A "} }, - { 2, 0x1007, 0x1db4, 0, 0x1256, 0, { 0 }, { "GRID V100-4A "} }, - { 2, 0x1007, 0x1db4, 0, 0x1257, 0, { 0 }, { "GRID V100-8A "} }, - { 2, 0x1007, 0x1db4, 0, 0x1258, 0, { 0 }, { "GRID V100-16A "} }, - { 2, 0x1007, 0x1db4, 0, 0x124e, 0, { 0 }, { "GRID V100-1B "} }, - { 2, 0x1007, 0x1db4, 0, 0x128f, 0, { 0 }, { "GRID V100-2B "} }, - { 2, 0x1007, 0x1db4, 0, 0x1340, 0, { 0 }, { "GRID V100-1B4 "} }, - { 2, 0x1007, 0x1db4, 0, 0x12f5, 0, { 0 }, { "GRID V100-2B4 "} }, - { 2, 0x1007, 0x1db4, 0, 0x124f, 0, { 0 }, { "GRID V100-1Q "} }, - { 2, 0x1007, 0x1db4, 0, 0x1250, 0, { 0 }, { "GRID V100-2Q "} }, - { 2, 0x1007, 0x1db4, 0, 0x1251, 0, { 0 }, { "GRID V100-4Q "} }, - { 2, 0x1007, 0x1db4, 0, 0x1252, 0, { 0 }, { "GRID V100-8Q "} }, - { 2, 0x1007, 0x1db4, 0, 0x1253, 0, { 0 }, { "GRID V100-16Q "} }, + VGPU(0x1db4, 0x1254, "GRID V100-1A"), + VGPU(0x1db4, 0x1255, "GRID V100-2A"), + VGPU(0x1db4, 0x1256, "GRID V100-4A"), + VGPU(0x1db4, 0x1257, "GRID V100-8A"), + VGPU(0x1db4, 0x1258, "GRID V100-16A"), + VGPU(0x1db4, 0x124e, "GRID V100-1B"), + VGPU(0x1db4, 0x128f, "GRID V100-2B"), + VGPU(0x1db4, 0x1340, "GRID V100-1B4"), + VGPU(0x1db4, 0x12f5, "GRID V100-2B4"), + VGPU(0x1db4, 0x124f, "GRID V100-1Q"), + VGPU(0x1db4, 0x1250, "GRID V100-2Q"), + VGPU(0x1db4, 0x1251, "GRID V100-4Q"), + VGPU(0x1db4, 0x1252, "GRID V100-8Q"), + VGPU(0x1db4, 0x1253, "GRID V100-16Q"), /* Quadro RTX 6000 */ - { 3, 0x1007, 0x1e30, 0, 0x1325, 0, { 0 }, { "GRID RTX6000-1Q" } }, - { 3, 0x1007, 0x1e30, 0, 0x1326, 0, { 0 }, { "GRID RTX6000-2Q" } }, - { 3, 0x1007, 0x1e30, 0, 0x1327, 0, { 0 }, { "GRID RTX6000-3Q" } }, - { 3, 0x1007, 0x1e30, 0, 0x1328, 0, { 0 }, { "GRID RTX6000-4Q" } }, - { 3, 0x1007, 0x1e30, 0, 0x1329, 0, { 0 }, { "GRID RTX6000-6Q" } }, - { 3, 0x1007, 0x1e30, 0, 0x132a, 0, { 0 }, { "GRID RTX6000-8Q" } }, - { 3, 0x1007, 0x1e30, 0, 0x132b, 0, { 0 }, { "GRID RTX6000-12Q" } }, - { 3, 0x1007, 0x1e30, 0, 0x132c, 0, { 0 }, { "GRID RTX6000-24Q" } }, - { 3, 0x1007, 0x1e30, 0, 0x13bf, 0, { 0 }, { "GRID RTX6000-4C" } }, - { 3, 0x1007, 0x1e30, 0, 0x13c0, 0, { 0 }, { "GRID RTX6000-6C" } }, - { 3, 0x1007, 0x1e30, 0, 0x13c1, 0, { 0 }, { "GRID RTX6000-8C" } }, - { 3, 0x1007, 0x1e30, 0, 0x13c2, 0, { 0 }, { "GRID RTX6000-12C" } }, - { 3, 0x1007, 0x1e30, 0, 0x13c3, 0, { 0 }, { "GRID RTX6000-24C" } }, - { 3, 0x1007, 0x1e30, 0, 0x1437, 0, { 0 }, { "GRID RTX6000-1B" } }, - { 3, 0x1007, 0x1e30, 0, 0x1438, 0, { 0 }, { "GRID RTX6000-2B" } }, - { 3, 0x1007, 0x1e30, 0, 0x1439, 0, { 0 }, { "GRID RTX6000-1A" } }, - { 3, 0x1007, 0x1e30, 0, 0x143a, 0, { 0 }, { "GRID RTX6000-2A" } }, - { 3, 0x1007, 0x1e30, 0, 0x143b, 0, { 0 }, { "GRID RTX6000-3A" } }, - { 3, 0x1007, 0x1e30, 0, 0x143c, 0, { 0 }, { "GRID RTX6000-4A" } }, - { 3, 0x1007, 0x1e30, 0, 0x143d, 0, { 0 }, { "GRID RTX6000-6A" } }, - { 3, 0x1007, 0x1e30, 0, 0x143e, 0, { 0 }, { "GRID RTX6000-8A" } }, - { 3, 0x1007, 0x1e30, 0, 0x143f, 0, { 0 }, { "GRID RTX6000-12A" } }, - { 3, 0x1007, 0x1e30, 0, 0x1440, 0, { 0 }, { "GRID RTX6000-24A" } }, + VGPU(0x1e30, 0x1325, "GRID RTX6000-1Q"), + VGPU(0x1e30, 0x1326, "GRID RTX6000-2Q"), + VGPU(0x1e30, 0x1327, "GRID RTX6000-3Q"), + VGPU(0x1e30, 0x1328, "GRID RTX6000-4Q"), + VGPU(0x1e30, 0x1329, "GRID RTX6000-6Q"), + VGPU(0x1e30, 0x132a, "GRID RTX6000-8Q"), + VGPU(0x1e30, 0x132b, "GRID RTX6000-12Q"), + VGPU(0x1e30, 0x132c, "GRID RTX6000-24Q"), + VGPU(0x1e30, 0x13bf, "GRID RTX6000-4C"), + VGPU(0x1e30, 0x13c0, "GRID RTX6000-6C"), + VGPU(0x1e30, 0x13c1, "GRID RTX6000-8C"), + VGPU(0x1e30, 0x13c2, "GRID RTX6000-12C"), + VGPU(0x1e30, 0x13c3, "GRID RTX6000-24C"), + VGPU(0x1e30, 0x1437, "GRID RTX6000-1B"), + VGPU(0x1e30, 0x1438, "GRID RTX6000-2B"), + VGPU(0x1e30, 0x1439, "GRID RTX6000-1A"), + VGPU(0x1e30, 0x143a, "GRID RTX6000-2A"), + VGPU(0x1e30, 0x143b, "GRID RTX6000-3A"), + VGPU(0x1e30, 0x143c, "GRID RTX6000-4A"), + VGPU(0x1e30, 0x143d, "GRID RTX6000-6A"), + VGPU(0x1e30, 0x143e, "GRID RTX6000-8A"), + VGPU(0x1e30, 0x143f, "GRID RTX6000-12A"), + VGPU(0x1e30, 0x1440, "GRID RTX6000-24A"), /* Tesla T4 */ - { 2, 0x1007, 0x1eb8, 0, 0x1309, 0, { 0 }, { "GRID T4-1B" } }, - { 2, 0x1007, 0x1eb8, 0, 0x130a, 0, { 0 }, { "GRID T4-2B" } }, - { 2, 0x1007, 0x1eb8, 0, 0x130b, 0, { 0 }, { "GRID T4-2B4" } }, - { 2, 0x1007, 0x1eb8, 0, 0x130c, 0, { 0 }, { "GRID T4-1Q" } }, - { 2, 0x1007, 0x1eb8, 0, 0x130d, 0, { 0 }, { "GRID T4-2Q" } }, - { 2, 0x1007, 0x1eb8, 0, 0x130e, 0, { 0 }, { "GRID T4-4Q" } }, - { 2, 0x1007, 0x1eb8, 0, 0x130f, 0, { 0 }, { "GRID T4-8Q" } }, - { 2, 0x1007, 0x1eb8, 0, 0x1310, 0, { 0 }, { "GRID T4-16Q" } }, - { 2, 0x1007, 0x1eb8, 0, 0x1311, 0, { 0 }, { "GRID T4-1A" } }, - { 2, 0x1007, 0x1eb8, 0, 0x1312, 0, { 0 }, { "GRID T4-2A" } }, - { 2, 0x1007, 0x1eb8, 0, 0x1313, 0, { 0 }, { "GRID T4-4A" } }, - { 2, 0x1007, 0x1eb8, 0, 0x1314, 0, { 0 }, { "GRID T4-8A" } }, - { 2, 0x1007, 0x1eb8, 0, 0x1315, 0, { 0 }, { "GRID T4-16A" } }, - { 2, 0x1007, 0x1eb8, 0, 0x1345, 0, { 0 }, { "GRID T4-1B4" } }, - { 2, 0x1007, 0x1eb8, 0, 0x1375, 0, { 0 }, { "GRID T4-16C" } }, - { 2, 0x1007, 0x1eb8, 0, 0x139a, 0, { 0 }, { "GRID T4-4C" } }, - { 2, 0x1007, 0x1eb8, 0, 0x139b, 0, { 0 }, { "GRID T4-8C" } }, + VGPU(0x1eb8, 0x1309, "GRID T4-1B"), + VGPU(0x1eb8, 0x130a, "GRID T4-2B"), + VGPU(0x1eb8, 0x130b, "GRID T4-2B4"), + VGPU(0x1eb8, 0x130c, "GRID T4-1Q"), + VGPU(0x1eb8, 0x130d, "GRID T4-2Q"), + VGPU(0x1eb8, 0x130e, "GRID T4-4Q"), + VGPU(0x1eb8, 0x130f, "GRID T4-8Q"), + VGPU(0x1eb8, 0x1310, "GRID T4-16Q"), + VGPU(0x1eb8, 0x1311, "GRID T4-1A"), + VGPU(0x1eb8, 0x1312, "GRID T4-2A"), + VGPU(0x1eb8, 0x1313, "GRID T4-4A"), + VGPU(0x1eb8, 0x1314, "GRID T4-8A"), + VGPU(0x1eb8, 0x1315, "GRID T4-16A"), + VGPU(0x1eb8, 0x1345, "GRID T4-1B4"), + VGPU(0x1eb8, 0x1375, "GRID T4-16C"), + VGPU(0x1eb8, 0x139a, "GRID T4-4C"), + VGPU(0x1eb8, 0x139b, "GRID T4-8C"), /* RTX A40 */ - { 2, 0x1007, 0x2235, 0, 0x14d5, 0, { 0 }, { "NVIDIA A40-1B" } }, - { 2, 0x1007, 0x2235, 0, 0x14d6, 0, { 0 }, { "NVIDIA A40-2B" } }, - { 2, 0x1007, 0x2235, 0, 0x14d7, 0, { 0 }, { "NVIDIA A40-1Q" } }, - { 2, 0x1007, 0x2235, 0, 0x14d8, 0, { 0 }, { "NVIDIA A40-2Q" } }, - { 2, 0x1007, 0x2235, 0, 0x14d9, 0, { 0 }, { "NVIDIA A40-3Q" } }, - { 2, 0x1007, 0x2235, 0, 0x14da, 0, { 0 }, { "NVIDIA A40-4Q" } }, - { 2, 0x1007, 0x2235, 0, 0x14db, 0, { 0 }, { "NVIDIA A40-6Q" } }, - { 2, 0x1007, 0x2235, 0, 0x14dc, 0, { 0 }, { "NVIDIA A40-8Q" } }, - { 2, 0x1007, 0x2235, 0, 0x14dd, 0, { 0 }, { "NVIDIA A40-12Q" } }, - { 2, 0x1007, 0x2235, 0, 0x14de, 0, { 0 }, { "NVIDIA A40-16Q" } }, - { 2, 0x1007, 0x2235, 0, 0x14df, 0, { 0 }, { "NVIDIA A40-24Q" } }, - { 2, 0x1007, 0x2235, 0, 0x14e0, 0, { 0 }, { "NVIDIA A40-48Q" } }, - { 2, 0x1007, 0x2235, 0, 0x14e1, 0, { 0 }, { "NVIDIA A40-1A" } }, - { 2, 0x1007, 0x2235, 0, 0x14e2, 0, { 0 }, { "NVIDIA A40-2A" } }, - { 2, 0x1007, 0x2235, 0, 0x14e3, 0, { 0 }, { "NVIDIA A40-3A" } }, - { 2, 0x1007, 0x2235, 0, 0x14e4, 0, { 0 }, { "NVIDIA A40-4A" } }, - { 2, 0x1007, 0x2235, 0, 0x14e5, 0, { 0 }, { "NVIDIA A40-6A" } }, - { 2, 0x1007, 0x2235, 0, 0x14e6, 0, { 0 }, { "NVIDIA A40-8A" } }, - { 2, 0x1007, 0x2235, 0, 0x14e7, 0, { 0 }, { "NVIDIA A40-12A" } }, - { 2, 0x1007, 0x2235, 0, 0x14e8, 0, { 0 }, { "NVIDIA A40-16A" } }, - { 2, 0x1007, 0x2235, 0, 0x14e9, 0, { 0 }, { "NVIDIA A40-24A" } }, - { 2, 0x1007, 0x2235, 0, 0x14ea, 0, { 0 }, { "NVIDIA A40-48A" } }, - { 2, 0x1007, 0x2235, 0, 0x14f3, 0, { 0 }, { "NVIDIA A40-4C" } }, - { 2, 0x1007, 0x2235, 0, 0x14f4, 0, { 0 }, { "NVIDIA A40-6C" } }, - { 2, 0x1007, 0x2235, 0, 0x14f5, 0, { 0 }, { "NVIDIA A40-8C" } }, - { 2, 0x1007, 0x2235, 0, 0x14f6, 0, { 0 }, { "NVIDIA A40-12C" } }, - { 2, 0x1007, 0x2235, 0, 0x14f7, 0, { 0 }, { "NVIDIA A40-16C" } }, - { 2, 0x1007, 0x2235, 0, 0x14f8, 0, { 0 }, { "NVIDIA A40-24C" } }, - { 2, 0x1007, 0x2235, 0, 0x14f9, 0, { 0 }, { "NVIDIA A40-48C" } }, + VGPU(0x2235, 0x14d5, "NVIDIA A40-1B"), + VGPU(0x2235, 0x14d6, "NVIDIA A40-2B"), + VGPU(0x2235, 0x14d7, "NVIDIA A40-1Q"), + VGPU(0x2235, 0x14d8, "NVIDIA A40-2Q"), + VGPU(0x2235, 0x14d9, "NVIDIA A40-3Q"), + VGPU(0x2235, 0x14da, "NVIDIA A40-4Q"), + VGPU(0x2235, 0x14db, "NVIDIA A40-6Q"), + VGPU(0x2235, 0x14dc, "NVIDIA A40-8Q"), + VGPU(0x2235, 0x14dd, "NVIDIA A40-12Q"), + VGPU(0x2235, 0x14de, "NVIDIA A40-16Q"), + VGPU(0x2235, 0x14df, "NVIDIA A40-24Q"), + VGPU(0x2235, 0x14e0, "NVIDIA A40-48Q"), + VGPU(0x2235, 0x14e1, "NVIDIA A40-1A"), + VGPU(0x2235, 0x14e2, "NVIDIA A40-2A"), + VGPU(0x2235, 0x14e3, "NVIDIA A40-3A"), + VGPU(0x2235, 0x14e4, "NVIDIA A40-4A"), + VGPU(0x2235, 0x14e5, "NVIDIA A40-6A"), + VGPU(0x2235, 0x14e6, "NVIDIA A40-8A"), + VGPU(0x2235, 0x14e7, "NVIDIA A40-12A"), + VGPU(0x2235, 0x14e8, "NVIDIA A40-16A"), + VGPU(0x2235, 0x14e9, "NVIDIA A40-24A"), + VGPU(0x2235, 0x14ea, "NVIDIA A40-48A"), + VGPU(0x2235, 0x14f3, "NVIDIA A40-4C"), + VGPU(0x2235, 0x14f4, "NVIDIA A40-6C"), + VGPU(0x2235, 0x14f5, "NVIDIA A40-8C"), + VGPU(0x2235, 0x14f6, "NVIDIA A40-12C"), + VGPU(0x2235, 0x14f7, "NVIDIA A40-16C"), + VGPU(0x2235, 0x14f8, "NVIDIA A40-24C"), + VGPU(0x2235, 0x14f9, "NVIDIA A40-48C"), { 0 } /* Sentinel */ }; +#undef VGPU + static const uint8_t vgpu_unlock_magic_start[0x10] = { 0xf3, 0xf5, 0x9e, 0x3d, 0x13, 0x91, 0x75, 0x18, 0x6a, 0x7b, 0x55, 0xed, 0xce, 0x5d, 0x84, 0x67