From 4ddf99f4a9082d98a71b795d41815d13d64dea71 Mon Sep 17 00:00:00 2001 From: Amber Lin Date: Wed, 1 Mar 2017 16:25:43 -0500 Subject: [PATCH] Unify the device ID list Integrate the supported device ID list distributed in topology, queue, and pmc into one place: topology. Change-Id: If035cf8e4a6fc6caff6c94ec627647cfb11c3d79 [ROCm/ROCR-Runtime commit: 4827b0911944b61660e4e316e19e90b5fc7d20de] --- projects/rocr-runtime/src/libhsakmt.h | 16 +++ projects/rocr-runtime/src/pmc_table.c | 45 +++----- projects/rocr-runtime/src/queues.c | 117 +++---------------- projects/rocr-runtime/src/topology.c | 158 ++++++++++++++------------ 4 files changed, 135 insertions(+), 201 deletions(-) diff --git a/projects/rocr-runtime/src/libhsakmt.h b/projects/rocr-runtime/src/libhsakmt.h index e31aeef42e..437cf14582 100644 --- a/projects/rocr-runtime/src/libhsakmt.h +++ b/projects/rocr-runtime/src/libhsakmt.h @@ -62,6 +62,20 @@ extern bool is_dgpu; #define BITMASK(n) (((n) < sizeof(1ULL) * CHAR_BIT ? (1ULL << (n)) : 0) - 1ULL) #define ARRAY_LEN(array) (sizeof(array) / sizeof(array[0])) +enum asic_family_type { + CHIP_KAVERI = 0, + CHIP_HAWAII, + CHIP_CARRIZO, + CHIP_TONGA, + CHIP_FIJI, + CHIP_POLARIS10, + CHIP_POLARIS11, + CHIP_VEGA10 +}; +#define IS_DGPU(chip) (((chip) >= CHIP_TONGA && (chip) <= CHIP_VEGA10) || \ + (chip) == CHIP_HAWAII) +#define IS_SOC15(chip) ((chip) >= CHIP_VEGA10) + HSAKMT_STATUS validate_nodeid(uint32_t nodeid, uint32_t *gpu_id); HSAKMT_STATUS gpuid_to_nodeid(uint32_t gpu_id, uint32_t* node_id); uint16_t get_device_id_by_node(HSAuint32 node_id); @@ -74,6 +88,8 @@ HSAKMT_STATUS topology_sysfs_get_node_props(uint32_t node_id, HsaNodeProperties uint32_t *gpu_id, struct pci_access* pacc); HSAKMT_STATUS topology_sysfs_get_system_props(HsaSystemProperties *props); bool topology_is_dgpu(uint16_t device_id); +HSAKMT_STATUS topology_get_asic_family(uint16_t device_id, + enum asic_family_type *asic); HSAuint32 PageSizeFromFlags(unsigned int pageSizeFlags); diff --git a/projects/rocr-runtime/src/pmc_table.c b/projects/rocr-runtime/src/pmc_table.c index 5bd16c44cf..de04230bd0 100644 --- a/projects/rocr-runtime/src/pmc_table.c +++ b/projects/rocr-runtime/src/pmc_table.c @@ -314,8 +314,8 @@ get_block_properties(uint32_t node_id, enum perf_block_id block_id, struct perf_counter_block *block) { - HSAKMT_STATUS rc = HSAKMT_STATUS_SUCCESS; uint16_t dev_id = get_device_id_by_node(node_id); + enum asic_family_type asic; if (block_id > PERFCOUNTER_BLOCKID__MAX || block_id < PERFCOUNTER_BLOCKID__FIRST) @@ -326,42 +326,31 @@ get_block_properties(uint32_t node_id, return HSAKMT_STATUS_SUCCESS; } - /* To avoid the long list, we read the 12 most significant digits of DID - * to identify the GPU instead of listing the complete 16 bits. If one - * day 12-bits is not good enough to distinguish the GPU, change the - * code here. - */ - switch(dev_id >> 4) { - case 0x130: - case 0x131: + if (topology_get_asic_family(dev_id, &asic) != HSAKMT_STATUS_SUCCESS) + return HSAKMT_STATUS_INVALID_PARAMETER; + + switch (asic) { + case CHIP_KAVERI: *block = kaveri_blocks[block_id]; break; - - case 0x987: - *block = carrizo_blocks[block_id]; - break; - - case 0x730: - *block = fiji_blocks[block_id]; - break; - - case 0x67A: - case 0x67B: + case CHIP_HAWAII: *block = hawaii_blocks[block_id]; break; - - case 0x67C: - case 0x67D: - case 0x67E: - case 0x67F: + case CHIP_CARRIZO: + *block = carrizo_blocks[block_id]; + break; + case CHIP_FIJI: + *block = fiji_blocks[block_id]; + break; + case CHIP_POLARIS10: + case CHIP_POLARIS11: *block = polaris_blocks[block_id]; break; - default: - rc = HSAKMT_STATUS_INVALID_PARAMETER; + return HSAKMT_STATUS_INVALID_PARAMETER; } - return rc; + return HSAKMT_STATUS_SUCCESS; } diff --git a/projects/rocr-runtime/src/queues.c b/projects/rocr-runtime/src/queues.c index 2aeda1bda6..6840a5df1a 100644 --- a/projects/rocr-runtime/src/queues.c +++ b/projects/rocr-runtime/src/queues.c @@ -41,22 +41,6 @@ #define DOORBELL_SIZE_GFX9 8 #define DOORBELLS_PAGE_SIZE(ds) (1024 * (ds)) -enum asic_family_type { - CHIP_KAVERI = 0, - CHIP_HAWAII, - CHIP_CARRIZO, - CHIP_TONGA, - CHIP_FIJI, - CHIP_POLARIS10, - CHIP_POLARIS11, - CHIP_VEGA10 -}; - -#define IS_VI(chip) ((chip) >= CHIP_CARRIZO && (chip) <= CHIP_POLARIS11) -#define IS_DGPU(chip) (((chip) >= CHIP_TONGA && (chip) <= CHIP_VEGA10) || \ - (chip) == CHIP_HAWAII) -#define IS_SOC15(chip) ((chip) >= CHIP_VEGA10) - #define WG_CONTEXT_DATA_SIZE_PER_CU_VI 344576 #define WAVES_PER_CU_VI 32 @@ -115,89 +99,23 @@ struct device_info vega10_device_info = { .doorbell_size = DOORBELL_SIZE_GFX9, }; +static struct device_info *dev_lookup_table[] = { + [CHIP_KAVERI] = &kaveri_device_info, + [CHIP_HAWAII] = &hawaii_device_info, + [CHIP_CARRIZO] = &carrizo_device_info, + [CHIP_TONGA] = &tonga_device_info, + [CHIP_FIJI] = &fiji_device_info, + [CHIP_POLARIS10] = &polaris10_device_info, + [CHIP_POLARIS11] = &polaris11_device_info, + [CHIP_VEGA10] = &vega10_device_info +}; + struct device_id { uint16_t dev_id; struct device_info *dev_info; }; -/* TODO: unify this with the device list in topology.c */ -struct device_id supported_devices[] = { - { 0x1304, &kaveri_device_info }, /* Kaveri */ - { 0x1305, &kaveri_device_info }, /* Kaveri */ - { 0x1306, &kaveri_device_info }, /* Kaveri */ - { 0x1307, &kaveri_device_info }, /* Kaveri */ - { 0x1309, &kaveri_device_info }, /* Kaveri */ - { 0x130A, &kaveri_device_info }, /* Kaveri */ - { 0x130B, &kaveri_device_info }, /* Kaveri */ - { 0x130C, &kaveri_device_info }, /* Kaveri */ - { 0x130D, &kaveri_device_info }, /* Kaveri */ - { 0x130E, &kaveri_device_info }, /* Kaveri */ - { 0x130F, &kaveri_device_info }, /* Kaveri */ - { 0x1310, &kaveri_device_info }, /* Kaveri */ - { 0x1311, &kaveri_device_info }, /* Kaveri */ - { 0x1312, &kaveri_device_info }, /* Kaveri */ - { 0x1313, &kaveri_device_info }, /* Kaveri */ - { 0x1315, &kaveri_device_info }, /* Kaveri */ - { 0x1316, &kaveri_device_info }, /* Kaveri */ - { 0x1317, &kaveri_device_info }, /* Kaveri */ - { 0x1318, &kaveri_device_info }, /* Kaveri */ - { 0x131B, &kaveri_device_info }, /* Kaveri */ - { 0x131C, &kaveri_device_info }, /* Kaveri */ - { 0x131D, &kaveri_device_info }, /* Kaveri */ - { 0x67A0, &hawaii_device_info }, /* Hawaii */ - { 0x67A1, &hawaii_device_info }, /* Hawaii */ - { 0x67A2, &hawaii_device_info }, /* Hawaii */ - { 0x67A8, &hawaii_device_info }, /* Hawaii */ - { 0x67A9, &hawaii_device_info }, /* Hawaii */ - { 0x67AA, &hawaii_device_info }, /* Hawaii */ - { 0x67B0, &hawaii_device_info }, /* Hawaii */ - { 0x67B1, &hawaii_device_info }, /* Hawaii */ - { 0x67B8, &hawaii_device_info }, /* Hawaii */ - { 0x67B9, &hawaii_device_info }, /* Hawaii */ - { 0x67BA, &hawaii_device_info }, /* Hawaii */ - { 0x67BE, &hawaii_device_info }, /* Hawaii */ - { 0x9870, &carrizo_device_info }, /* Carrizo */ - { 0x9874, &carrizo_device_info }, /* Carrizo */ - { 0x9875, &carrizo_device_info }, /* Carrizo */ - { 0x9876, &carrizo_device_info }, /* Carrizo */ - { 0x9877, &carrizo_device_info }, /* Carrizo */ - { 0x6920, &tonga_device_info }, - { 0x6921, &tonga_device_info }, - { 0x6928, &tonga_device_info }, - { 0x6929, &tonga_device_info }, - { 0x692B, &tonga_device_info }, - { 0x692F, &tonga_device_info }, - { 0x6930, &tonga_device_info }, - { 0x6938, &tonga_device_info }, - { 0x6939, &tonga_device_info }, - { 0x7300, &fiji_device_info }, - { 0x730F, &fiji_device_info }, - { 0x67C0, &polaris10_device_info }, - { 0x67C1, &polaris10_device_info }, - { 0x67C2, &polaris10_device_info }, - { 0x67C4, &polaris10_device_info }, - { 0x67C7, &polaris10_device_info }, - { 0x67C8, &polaris10_device_info }, - { 0x67C9, &polaris10_device_info }, - { 0x67CA, &polaris10_device_info }, - { 0x67CC, &polaris10_device_info }, - { 0x67CF, &polaris10_device_info }, - { 0x67DF, &polaris10_device_info }, - { 0x67E0, &polaris11_device_info }, - { 0x67E1, &polaris11_device_info }, - { 0x67E3, &polaris11_device_info }, - { 0x67E7, &polaris11_device_info }, - { 0x67E8, &polaris11_device_info }, - { 0x67E9, &polaris11_device_info }, - { 0x67EB, &polaris11_device_info }, - { 0x67EF, &polaris11_device_info }, - { 0x67FF, &polaris11_device_info }, - { 0x6860, &vega10_device_info }, - { 0x687F, &vega10_device_info }, - { 0, NULL } -}; - struct queue { uint32_t queue_id; @@ -246,15 +164,12 @@ HSAKMT_STATUS init_process_doorbells(unsigned int NumNodes) static struct device_info *get_device_info_by_dev_id(uint16_t dev_id) { - int i = 0; - while (supported_devices[i].dev_id != 0) { - if (supported_devices[i].dev_id == dev_id) { - return supported_devices[i].dev_info; - } - i++; - } + enum asic_family_type asic; - return NULL; + if (topology_get_asic_family(dev_id, &asic) != HSAKMT_STATUS_SUCCESS) + return NULL; + + return dev_lookup_table[asic]; } static void get_doorbell_map_info(uint16_t dev_id, diff --git a/projects/rocr-runtime/src/topology.c b/projects/rocr-runtime/src/topology.c index 2a4f5a61fa..acdee5d673 100644 --- a/projects/rocr-runtime/src/topology.c +++ b/projects/rocr-runtime/src/topology.c @@ -83,87 +83,88 @@ static struct hsa_gfxip_table { unsigned char stepping; // GFXIP Stepping info unsigned char is_dgpu; // Predicate for dGPU devices const char* amd_name; // CALName of the device + enum asic_family_type asic_family; } gfxip_lookup_table[] = { /* Kaveri Family */ - { 0x1304, 7, 0, 0, 0, "Spectre" }, - { 0x1305, 7, 0, 0, 0, "Spectre" }, - { 0x1306, 7, 0, 0, 0, "Spectre" }, - { 0x1307, 7, 0, 0, 0, "Spectre" }, - { 0x1309, 7, 0, 0, 0, "Spectre" }, - { 0x130A, 7, 0, 0, 0, "Spectre" }, - { 0x130B, 7, 0, 0, 0, "Spectre" }, - { 0x130C, 7, 0, 0, 0, "Spectre" }, - { 0x130D, 7, 0, 0, 0, "Spectre" }, - { 0x130E, 7, 0, 0, 0, "Spectre" }, - { 0x130F, 7, 0, 0, 0, "Spectre" }, - { 0x1310, 7, 0, 0, 0, "Spectre" }, - { 0x1311, 7, 0, 0, 0, "Spectre" }, - { 0x1312, 7, 0, 0, 0, "Spooky" }, - { 0x1313, 7, 0, 0, 0, "Spectre" }, - { 0x1315, 7, 0, 0, 0, "Spectre" }, - { 0x1316, 7, 0, 0, 0, "Spooky" }, - { 0x1317, 7, 0, 0, 0, "Spooky" }, - { 0x1318, 7, 0, 0, 0, "Spectre" }, - { 0x131B, 7, 0, 0, 0, "Spectre" }, - { 0x131C, 7, 0, 0, 0, "Spectre" }, - { 0x131D, 7, 0, 0, 0, "Spectre" }, + { 0x1304, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x1305, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x1306, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x1307, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x1309, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x130A, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x130B, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x130C, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x130D, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x130E, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x130F, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x1310, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x1311, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x1312, 7, 0, 0, 0, "Spooky", CHIP_KAVERI }, + { 0x1313, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x1315, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x1316, 7, 0, 0, 0, "Spooky", CHIP_KAVERI }, + { 0x1317, 7, 0, 0, 0, "Spooky", CHIP_KAVERI }, + { 0x1318, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x131B, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x131C, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, + { 0x131D, 7, 0, 0, 0, "Spectre", CHIP_KAVERI }, /* Hawaii Family */ - { 0x67A0, 7, 0, 1, 1, "Hawaii" }, - { 0x67A1, 7, 0, 1, 1, "Hawaii" }, - { 0x67A2, 7, 0, 1, 1, "Hawaii" }, - { 0x67A8, 7, 0, 1, 1, "Hawaii" }, - { 0x67A9, 7, 0, 1, 1, "Hawaii" }, - { 0x67AA, 7, 0, 1, 1, "Hawaii" }, - { 0x67B0, 7, 0, 1, 1, "Hawaii" }, - { 0x67B1, 7, 0, 1, 1, "Hawaii" }, - { 0x67B8, 7, 0, 1, 1, "Hawaii" }, - { 0x67B9, 7, 0, 1, 1, "Hawaii" }, - { 0x67BA, 7, 0, 1, 1, "Hawaii" }, - { 0x67BE, 7, 0, 1, 1, "Hawaii" }, + { 0x67A0, 7, 0, 1, 1, "Hawaii", CHIP_HAWAII }, + { 0x67A1, 7, 0, 1, 1, "Hawaii", CHIP_HAWAII }, + { 0x67A2, 7, 0, 1, 1, "Hawaii", CHIP_HAWAII }, + { 0x67A8, 7, 0, 1, 1, "Hawaii", CHIP_HAWAII }, + { 0x67A9, 7, 0, 1, 1, "Hawaii", CHIP_HAWAII }, + { 0x67AA, 7, 0, 1, 1, "Hawaii", CHIP_HAWAII }, + { 0x67B0, 7, 0, 1, 1, "Hawaii", CHIP_HAWAII }, + { 0x67B1, 7, 0, 1, 1, "Hawaii", CHIP_HAWAII }, + { 0x67B8, 7, 0, 1, 1, "Hawaii", CHIP_HAWAII }, + { 0x67B9, 7, 0, 1, 1, "Hawaii", CHIP_HAWAII }, + { 0x67BA, 7, 0, 1, 1, "Hawaii", CHIP_HAWAII }, + { 0x67BE, 7, 0, 1, 1, "Hawaii", CHIP_HAWAII }, /* Carrizo Family */ - { 0x9870, 8, 0, 1, 0, "Carrizo" }, - { 0x9874, 8, 0, 1, 0, "Carrizo" }, - { 0x9875, 8, 0, 1, 0, "Carrizo" }, - { 0x9876, 8, 0, 1, 0, "Carrizo" }, - { 0x9877, 8, 0, 1, 0, "Carrizo" }, + { 0x9870, 8, 0, 1, 0, "Carrizo", CHIP_CARRIZO }, + { 0x9874, 8, 0, 1, 0, "Carrizo", CHIP_CARRIZO }, + { 0x9875, 8, 0, 1, 0, "Carrizo", CHIP_CARRIZO }, + { 0x9876, 8, 0, 1, 0, "Carrizo", CHIP_CARRIZO }, + { 0x9877, 8, 0, 1, 0, "Carrizo", CHIP_CARRIZO }, /* Tonga Family */ - { 0x6920, 8, 0, 2, 1, "Tonga" }, - { 0x6921, 8, 0, 2, 1, "Tonga" }, - { 0x6928, 8, 0, 2, 1, "Tonga" }, - { 0x6929, 8, 0, 2, 1, "Tonga" }, - { 0x692B, 8, 0, 2, 1, "Tonga" }, - { 0x692F, 8, 0, 2, 1, "Tonga" }, - { 0x6930, 8, 0, 2, 1, "Tonga" }, - { 0x6938, 8, 0, 2, 1, "Tonga" }, - { 0x6939, 8, 0, 2, 1, "Tonga" }, + { 0x6920, 8, 0, 2, 1, "Tonga", CHIP_TONGA }, + { 0x6921, 8, 0, 2, 1, "Tonga", CHIP_TONGA }, + { 0x6928, 8, 0, 2, 1, "Tonga", CHIP_TONGA }, + { 0x6929, 8, 0, 2, 1, "Tonga", CHIP_TONGA }, + { 0x692B, 8, 0, 2, 1, "Tonga", CHIP_TONGA }, + { 0x692F, 8, 0, 2, 1, "Tonga", CHIP_TONGA }, + { 0x6930, 8, 0, 2, 1, "Tonga", CHIP_TONGA }, + { 0x6938, 8, 0, 2, 1, "Tonga", CHIP_TONGA }, + { 0x6939, 8, 0, 2, 1, "Tonga", CHIP_TONGA }, /* Fiji */ - { 0x7300, 8, 0, 3, 1, "Fiji" }, - { 0x730F, 8, 0, 3, 1, "Fiji" }, + { 0x7300, 8, 0, 3, 1, "Fiji", CHIP_FIJI }, + { 0x730F, 8, 0, 3, 1, "Fiji", CHIP_FIJI }, /* Polaris10 */ - { 0x67C0, 8, 0, 3, 1, "Polaris10" }, - { 0x67C1, 8, 0, 3, 1, "Polaris10" }, - { 0x67C2, 8, 0, 3, 1, "Polaris10" }, - { 0x67C4, 8, 0, 3, 1, "Polaris10" }, - { 0x67C7, 8, 0, 3, 1, "Polaris10" }, - { 0x67C8, 8, 0, 3, 1, "Polaris10" }, - { 0x67C9, 8, 0, 3, 1, "Polaris10" }, - { 0x67CA, 8, 0, 3, 1, "Polaris10" }, - { 0x67CC, 8, 0, 3, 1, "Polaris10" }, - { 0x67CF, 8, 0, 3, 1, "Polaris10" }, - { 0x67DF, 8, 0, 3, 1, "Polaris10" }, + { 0x67C0, 8, 0, 3, 1, "Polaris10", CHIP_POLARIS10 }, + { 0x67C1, 8, 0, 3, 1, "Polaris10", CHIP_POLARIS10 }, + { 0x67C2, 8, 0, 3, 1, "Polaris10", CHIP_POLARIS10 }, + { 0x67C4, 8, 0, 3, 1, "Polaris10", CHIP_POLARIS10 }, + { 0x67C7, 8, 0, 3, 1, "Polaris10", CHIP_POLARIS10 }, + { 0x67C8, 8, 0, 3, 1, "Polaris10", CHIP_POLARIS10 }, + { 0x67C9, 8, 0, 3, 1, "Polaris10", CHIP_POLARIS10 }, + { 0x67CA, 8, 0, 3, 1, "Polaris10", CHIP_POLARIS10 }, + { 0x67CC, 8, 0, 3, 1, "Polaris10", CHIP_POLARIS10 }, + { 0x67CF, 8, 0, 3, 1, "Polaris10", CHIP_POLARIS10 }, + { 0x67DF, 8, 0, 3, 1, "Polaris10", CHIP_POLARIS10 }, /* Polaris11 */ - { 0x67E0, 8, 0, 3, 1, "Polaris11" }, - { 0x67E1, 8, 0, 3, 1, "Polaris11" }, - { 0x67E3, 8, 0, 3, 1, "Polaris11" }, - { 0x67E7, 8, 0, 3, 1, "Polaris11" }, - { 0x67E8, 8, 0, 3, 1, "Polaris11" }, - { 0x67E9, 8, 0, 3, 1, "Polaris11" }, - { 0x67EB, 8, 0, 3, 1, "Polaris11" }, - { 0x67EF, 8, 0, 3, 1, "Polaris11" }, - { 0x67FF, 8, 0, 3, 1, "Polaris11" }, + { 0x67E0, 8, 0, 3, 1, "Polaris11", CHIP_POLARIS11 }, + { 0x67E1, 8, 0, 3, 1, "Polaris11", CHIP_POLARIS11 }, + { 0x67E3, 8, 0, 3, 1, "Polaris11", CHIP_POLARIS11 }, + { 0x67E7, 8, 0, 3, 1, "Polaris11", CHIP_POLARIS11 }, + { 0x67E8, 8, 0, 3, 1, "Polaris11", CHIP_POLARIS11 }, + { 0x67E9, 8, 0, 3, 1, "Polaris11", CHIP_POLARIS11 }, + { 0x67EB, 8, 0, 3, 1, "Polaris11", CHIP_POLARIS11 }, + { 0x67EF, 8, 0, 3, 1, "Polaris11", CHIP_POLARIS11 }, + { 0x67FF, 8, 0, 3, 1, "Polaris11", CHIP_POLARIS11 }, /* Vega10 */ - { 0x6860, 9, 0, 0, 1, "Vega10" }, - { 0x687F, 9, 0, 0, 1, "Vega10" } + { 0x6860, 9, 0, 0, 1, "Vega10", CHIP_VEGA10 }, + { 0x687F, 9, 0, 0, 1, "Vega10", CHIP_VEGA10 } }; enum cache_type { @@ -549,6 +550,19 @@ static const struct hsa_gfxip_table* find_hsa_gfxip_device(uint16_t device_id) return NULL; } +HSAKMT_STATUS topology_get_asic_family(uint16_t device_id, + enum asic_family_type *asic) +{ + const struct hsa_gfxip_table *hsa_gfxip = + find_hsa_gfxip_device(device_id); + + if (!hsa_gfxip) + return HSAKMT_STATUS_INVALID_PARAMETER; + + *asic = hsa_gfxip->asic_family; + return HSAKMT_STATUS_SUCCESS; +} + bool topology_is_dgpu(uint16_t device_id) { const struct hsa_gfxip_table* hsa_gfxip =