From 51e99965b3d59ad545bab0f7e9293e41f5741e27 Mon Sep 17 00:00:00 2001 From: "Pryor, Adam" Date: Fri, 16 May 2025 16:41:31 -0500 Subject: [PATCH] [SWDEV-527092] - Fix ringhang event removal (#372) Signed-off-by: adapryor --- include/amd_smi/amdsmi.h | 16 +++--- py-interface/amdsmi_interface.py | 15 ++--- py-interface/amdsmi_wrapper.py | 96 +++++++++++++++++--------------- tests/amd_smi_test/test_utils.cc | 15 ++--- 4 files changed, 75 insertions(+), 67 deletions(-) diff --git a/include/amd_smi/amdsmi.h b/include/amd_smi/amdsmi.h index a88fa6187f..1a54954c1b 100644 --- a/include/amd_smi/amdsmi.h +++ b/include/amd_smi/amdsmi.h @@ -1239,13 +1239,15 @@ typedef enum { AMDSMI_EVT_NOTIF_THERMAL_THROTTLE = 2, AMDSMI_EVT_NOTIF_GPU_PRE_RESET = 3, AMDSMI_EVT_NOTIF_GPU_POST_RESET = 4, - AMDSMI_EVT_NOTIF_EVENT_MIGRATE_START = 5, - AMDSMI_EVT_NOTIF_EVENT_MIGRATE_END = 6, - AMDSMI_EVT_NOTIF_EVENT_PAGE_FAULT_START = 7, - AMDSMI_EVT_NOTIF_EVENT_PAGE_FAULT_END = 8, - AMDSMI_EVT_NOTIF_EVENT_QUEUE_EVICTION = 9, - AMDSMI_EVT_NOTIF_EVENT_QUEUE_RESTORE = 10, - AMDSMI_EVT_NOTIF_EVENT_UNMAP_FROM_GPU = 11, + AMDSMI_EVT_NOTIF_RING_HANG = 5, // Ringhang now maps to AMDSMI_EVT_NOTIF_MIGRATE_START. + // Will be depreciated in 7.0 + AMDSMI_EVT_NOTIF_MIGRATE_START = AMDSMI_EVT_NOTIF_RING_HANG, + AMDSMI_EVT_NOTIF_MIGRATE_END = 6, + AMDSMI_EVT_NOTIF_PAGE_FAULT_START = 7, + AMDSMI_EVT_NOTIF_PAGE_FAULT_END = 8, + AMDSMI_EVT_NOTIF_QUEUE_EVICTION = 9, + AMDSMI_EVT_NOTIF_QUEUE_RESTORE = 10, + AMDSMI_EVT_NOTIF_UNMAP_FROM_GPU = 11, AMDSMI_EVT_NOTIF_PROCESS_START = 12, AMDSMI_EVT_NOTIF_PROCESS_END = 13, diff --git a/py-interface/amdsmi_interface.py b/py-interface/amdsmi_interface.py index fd12f155d7..147c5371f0 100644 --- a/py-interface/amdsmi_interface.py +++ b/py-interface/amdsmi_interface.py @@ -273,13 +273,14 @@ class AmdSmiEvtNotificationType(IntEnum): THERMAL_THROTTLE = amdsmi_wrapper.AMDSMI_EVT_NOTIF_THERMAL_THROTTLE GPU_PRE_RESET = amdsmi_wrapper.AMDSMI_EVT_NOTIF_GPU_PRE_RESET GPU_POST_RESET = amdsmi_wrapper.AMDSMI_EVT_NOTIF_GPU_POST_RESET - MIGRATE_START = amdsmi_wrapper.AMDSMI_EVT_NOTIF_EVENT_MIGRATE_START - MIGRATE_END = amdsmi_wrapper.AMDSMI_EVT_NOTIF_EVENT_MIGRATE_END - PAGE_FAULT_START = amdsmi_wrapper.AMDSMI_EVT_NOTIF_EVENT_PAGE_FAULT_END - PAGE_FAULT_END = amdsmi_wrapper.AMDSMI_EVT_NOTIF_EVENT_PAGE_FAULT_END - QUEUE_EVICTION = amdsmi_wrapper.AMDSMI_EVT_NOTIF_EVENT_QUEUE_EVICTION - QUEUE_RESTORE = amdsmi_wrapper.AMDSMI_EVT_NOTIF_EVENT_QUEUE_RESTORE - UNMAP_FROM_GPU = amdsmi_wrapper.AMDSMI_EVT_NOTIF_EVENT_UNMAP_FROM_GPU + RING_HANG = amdsmi_wrapper.AMDSMI_EVT_NOTIF_RING_HANG + MIGRATE_START = amdsmi_wrapper.AMDSMI_EVT_NOTIF_MIGRATE_START + MIGRATE_END = amdsmi_wrapper.AMDSMI_EVT_NOTIF_MIGRATE_END + PAGE_FAULT_START = amdsmi_wrapper.AMDSMI_EVT_NOTIF_PAGE_FAULT_END + PAGE_FAULT_END = amdsmi_wrapper.AMDSMI_EVT_NOTIF_PAGE_FAULT_END + QUEUE_EVICTION = amdsmi_wrapper.AMDSMI_EVT_NOTIF_QUEUE_EVICTION + QUEUE_RESTORE = amdsmi_wrapper.AMDSMI_EVT_NOTIF_QUEUE_RESTORE + UNMAP_FROM_GPU = amdsmi_wrapper.AMDSMI_EVT_NOTIF_UNMAP_FROM_GPU PROCESS_START = amdsmi_wrapper.AMDSMI_EVT_NOTIF_PROCESS_START PROCESS_END = amdsmi_wrapper.AMDSMI_EVT_NOTIF_PROCESS_END diff --git a/py-interface/amdsmi_wrapper.py b/py-interface/amdsmi_wrapper.py index 8cdfbf0281..1051191c18 100644 --- a/py-interface/amdsmi_wrapper.py +++ b/py-interface/amdsmi_wrapper.py @@ -858,21 +858,6 @@ amdsmi_card_form_factor_t = ctypes.c_uint32 # enum class struct_amdsmi_pcie_info_t(Structure): pass -class struct_pcie_static_(Structure): - pass - -struct_pcie_static_._pack_ = 1 # source:False -struct_pcie_static_._fields_ = [ - ('max_pcie_width', ctypes.c_uint16), - ('PADDING_0', ctypes.c_ubyte * 2), - ('max_pcie_speed', ctypes.c_uint32), - ('pcie_interface_version', ctypes.c_uint32), - ('slot_type', amdsmi_card_form_factor_t), - ('max_pcie_interface_version', ctypes.c_uint32), - ('PADDING_1', ctypes.c_ubyte * 4), - ('reserved', ctypes.c_uint64 * 9), -] - class struct_pcie_metric_(Structure): pass @@ -893,6 +878,21 @@ struct_pcie_metric_._fields_ = [ ('reserved', ctypes.c_uint64 * 12), ] +class struct_pcie_static_(Structure): + pass + +struct_pcie_static_._pack_ = 1 # source:False +struct_pcie_static_._fields_ = [ + ('max_pcie_width', ctypes.c_uint16), + ('PADDING_0', ctypes.c_ubyte * 2), + ('max_pcie_speed', ctypes.c_uint32), + ('pcie_interface_version', ctypes.c_uint32), + ('slot_type', amdsmi_card_form_factor_t), + ('max_pcie_interface_version', ctypes.c_uint32), + ('PADDING_1', ctypes.c_ubyte * 4), + ('reserved', ctypes.c_uint64 * 9), +] + struct_amdsmi_pcie_info_t._pack_ = 1 # source:False struct_amdsmi_pcie_info_t._fields_ = [ ('pcie_static', struct_pcie_static_), @@ -1256,16 +1256,6 @@ amdsmi_process_handle_t = ctypes.c_uint32 class struct_amdsmi_proc_info_t(Structure): pass -class struct_engine_usage_(Structure): - pass - -struct_engine_usage_._pack_ = 1 # source:False -struct_engine_usage_._fields_ = [ - ('gfx', ctypes.c_uint64), - ('enc', ctypes.c_uint64), - ('reserved', ctypes.c_uint32 * 12), -] - class struct_memory_usage_(Structure): pass @@ -1277,6 +1267,16 @@ struct_memory_usage_._fields_ = [ ('reserved', ctypes.c_uint32 * 10), ] +class struct_engine_usage_(Structure): + pass + +struct_engine_usage_._pack_ = 1 # source:False +struct_engine_usage_._fields_ = [ + ('gfx', ctypes.c_uint64), + ('enc', ctypes.c_uint64), + ('reserved', ctypes.c_uint32 * 12), +] + struct_amdsmi_proc_info_t._pack_ = 1 # source:False struct_amdsmi_proc_info_t._fields_ = [ ('name', ctypes.c_char * 256), @@ -1418,16 +1418,17 @@ amdsmi_evt_notification_type_t__enumvalues = { 2: 'AMDSMI_EVT_NOTIF_THERMAL_THROTTLE', 3: 'AMDSMI_EVT_NOTIF_GPU_PRE_RESET', 4: 'AMDSMI_EVT_NOTIF_GPU_POST_RESET', - 5: 'AMDSMI_EVT_NOTIF_EVENT_MIGRATE_START', - 6: 'AMDSMI_EVT_NOTIF_EVENT_MIGRATE_END', - 7: 'AMDSMI_EVT_NOTIF_EVENT_PAGE_FAULT_START', - 8: 'AMDSMI_EVT_NOTIF_EVENT_PAGE_FAULT_END', - 9: 'AMDSMI_EVT_NOTIF_EVENT_QUEUE_EVICTION', - 10: 'AMDSMI_EVT_NOTIF_EVENT_QUEUE_RESTORE', - 11: 'AMDSMI_EVT_NOTIF_EVENT_UNMAP_FROM_GPU', + 5: 'AMDSMI_EVT_NOTIF_RING_HANG', + 5: 'AMDSMI_EVT_NOTIF_MIGRATE_START', + 6: 'AMDSMI_EVT_NOTIF_MIGRATE_END', + 7: 'AMDSMI_EVT_NOTIF_PAGE_FAULT_START', + 8: 'AMDSMI_EVT_NOTIF_PAGE_FAULT_END', + 9: 'AMDSMI_EVT_NOTIF_QUEUE_EVICTION', + 10: 'AMDSMI_EVT_NOTIF_QUEUE_RESTORE', + 11: 'AMDSMI_EVT_NOTIF_UNMAP_FROM_GPU', 12: 'AMDSMI_EVT_NOTIF_PROCESS_START', 13: 'AMDSMI_EVT_NOTIF_PROCESS_END', - 1: 'AMDSMI_EVT_NOTIF_LAST', + 13: 'AMDSMI_EVT_NOTIF_LAST', } AMDSMI_EVT_NOTIF_NONE = 0 AMDSMI_EVT_NOTIF_VMFAULT = 1 @@ -1435,13 +1436,14 @@ AMDSMI_EVT_NOTIF_FIRST = 1 AMDSMI_EVT_NOTIF_THERMAL_THROTTLE = 2 AMDSMI_EVT_NOTIF_GPU_PRE_RESET = 3 AMDSMI_EVT_NOTIF_GPU_POST_RESET = 4 -AMDSMI_EVT_NOTIF_EVENT_MIGRATE_START = 5 -AMDSMI_EVT_NOTIF_EVENT_MIGRATE_END = 6 -AMDSMI_EVT_NOTIF_EVENT_PAGE_FAULT_START = 7 -AMDSMI_EVT_NOTIF_EVENT_PAGE_FAULT_END = 8 -AMDSMI_EVT_NOTIF_EVENT_QUEUE_EVICTION = 9 -AMDSMI_EVT_NOTIF_EVENT_QUEUE_RESTORE = 10 -AMDSMI_EVT_NOTIF_EVENT_UNMAP_FROM_GPU = 11 +AMDSMI_EVT_NOTIF_RING_HANG = 5 +AMDSMI_EVT_NOTIF_MIGRATE_START = 5 +AMDSMI_EVT_NOTIF_MIGRATE_END = 6 +AMDSMI_EVT_NOTIF_PAGE_FAULT_START = 7 +AMDSMI_EVT_NOTIF_PAGE_FAULT_END = 8 +AMDSMI_EVT_NOTIF_QUEUE_EVICTION = 9 +AMDSMI_EVT_NOTIF_QUEUE_RESTORE = 10 +AMDSMI_EVT_NOTIF_UNMAP_FROM_GPU = 11 AMDSMI_EVT_NOTIF_PROCESS_START = 12 AMDSMI_EVT_NOTIF_PROCESS_END = 13 AMDSMI_EVT_NOTIF_LAST = 13 @@ -3002,12 +3004,14 @@ __all__ = \ 'AMDSMI_EVNT_XGMI_LAST', 'AMDSMI_EVT_NOTIF_FIRST', 'AMDSMI_EVT_NOTIF_GPU_POST_RESET', 'AMDSMI_EVT_NOTIF_GPU_PRE_RESET', 'AMDSMI_EVT_NOTIF_LAST', - 'AMDSMI_EVT_NOTIF_NONE', 'AMDSMI_EVT_NOTIF_EVENT_MIGRATE_START', - 'AMDSMI_EVT_NOTIF_EVENT_MIGRATE_END', 'AMDSMI_EVT_NOTIF_EVENT_PAGE_FAULT_START', - 'AMDSMI_EVT_NOTIF_EVENT_PAGE_FAULT_END', 'AMDSMI_EVT_NOTIF_EVENT_QUEUE_EVICTION', - 'AMDSMI_EVT_NOTIF_EVENT_QUEUE_RESTORE', 'AMDSMI_EVT_NOTIF_EVENT_UNMAP_FROM_GPU', - 'AMDSMI_EVT_NOTIF_PROCESS_START', 'AMDSMI_EVT_NOTIF_PROCESS_END' - 'AMDSMI_EVT_NOTIF_THERMAL_THROTTLE', 'AMDSMI_EVT_NOTIF_VMFAULT', + 'AMDSMI_EVT_NOTIF_MIGRATE_END', 'AMDSMI_EVT_NOTIF_MIGRATE_START', + 'AMDSMI_EVT_NOTIF_NONE', 'AMDSMI_EVT_NOTIF_PAGE_FAULT_END', + 'AMDSMI_EVT_NOTIF_PAGE_FAULT_START', + 'AMDSMI_EVT_NOTIF_PROCESS_END', 'AMDSMI_EVT_NOTIF_PROCESS_START', + 'AMDSMI_EVT_NOTIF_QUEUE_EVICTION', + 'AMDSMI_EVT_NOTIF_QUEUE_RESTORE', 'AMDSMI_EVT_NOTIF_RING_HANG', + 'AMDSMI_EVT_NOTIF_THERMAL_THROTTLE', + 'AMDSMI_EVT_NOTIF_UNMAP_FROM_GPU', 'AMDSMI_EVT_NOTIF_VMFAULT', 'AMDSMI_FINE_DECODER_ACTIVITY', 'AMDSMI_FINE_GRAIN_GFX_ACTIVITY', 'AMDSMI_FINE_GRAIN_MEM_ACTIVITY', 'AMDSMI_FREQ_IND_INVALID', 'AMDSMI_FREQ_IND_MAX', 'AMDSMI_FREQ_IND_MIN', 'AMDSMI_FW_ID_ASD', diff --git a/tests/amd_smi_test/test_utils.cc b/tests/amd_smi_test/test_utils.cc index 73bb52e41f..e661fb2a63 100644 --- a/tests/amd_smi_test/test_utils.cc +++ b/tests/amd_smi_test/test_utils.cc @@ -61,13 +61,14 @@ static const std::map {AMDSMI_EVT_NOTIF_THERMAL_THROTTLE, "AMDSMI_EVT_NOTIF_THERMAL_THROTTLE"}, {AMDSMI_EVT_NOTIF_GPU_PRE_RESET, "AMDSMI_EVT_NOTIF_GPU_PRE_RESET"}, {AMDSMI_EVT_NOTIF_GPU_POST_RESET, "AMDSMI_EVT_NOTIF_GPU_POST_RESET"}, - {AMDSMI_EVT_NOTIF_EVENT_MIGRATE_START, "AMDSMI_EVT_NOTIF_EVENT_MIGRATE_START"}, - {AMDSMI_EVT_NOTIF_EVENT_MIGRATE_END, "AMDSMI_EVT_NOTIF_EVENT_MIGRATE_END"}, - {AMDSMI_EVT_NOTIF_EVENT_PAGE_FAULT_START, "AMDSMI_EVT_NOTIF_EVENT_PAGE_FAULT_START"}, - {AMDSMI_EVT_NOTIF_EVENT_PAGE_FAULT_END, "AMDSMI_EVT_NOTIF_EVENT_PAGE_FAULT_END"}, - {AMDSMI_EVT_NOTIF_EVENT_QUEUE_EVICTION, "AMDSMI_EVT_NOTIF_EVENT_QUEUE_EVICTION"}, - {AMDSMI_EVT_NOTIF_EVENT_QUEUE_RESTORE, "AMDSMI_EVT_NOTIF_EVENT_QUEUE_RESTORE"}, - {AMDSMI_EVT_NOTIF_EVENT_UNMAP_FROM_GPU, "AMDSMI_EVT_NOTIF_EVENT_UNMAP_FROM_GPU"}, + {AMDSMI_EVT_NOTIF_RING_HANG, "AMDSMI_EVT_NOTIF_RING_HANG"}, + {AMDSMI_EVT_NOTIF_MIGRATE_START, "AMDSMI_EVT_NOTIF_MIGRATE_START"}, + {AMDSMI_EVT_NOTIF_MIGRATE_END, "AMDSMI_EVT_NOTIF_MIGRATE_END"}, + {AMDSMI_EVT_NOTIF_PAGE_FAULT_START, "AMDSMI_EVT_NOTIF_PAGE_FAULT_START"}, + {AMDSMI_EVT_NOTIF_PAGE_FAULT_END, "AMDSMI_EVT_NOTIF_PAGE_FAULT_END"}, + {AMDSMI_EVT_NOTIF_QUEUE_EVICTION, "AMDSMI_EVT_NOTIF_QUEUE_EVICTION"}, + {AMDSMI_EVT_NOTIF_QUEUE_RESTORE, "AMDSMI_EVT_NOTIF_QUEUE_RESTORE"}, + {AMDSMI_EVT_NOTIF_UNMAP_FROM_GPU, "AMDSMI_EVT_NOTIF_UNMAP_FROM_GPU"}, {AMDSMI_EVT_NOTIF_PROCESS_START, "AMDSMI_EVT_NOTIF_PROCESS_START"}, {AMDSMI_EVT_NOTIF_PROCESS_END, "AMDSMI_EVT_NOTIF_PROCESS_END"}, };