/*
 * Copyright (C) 2025-2026 Intel Corporation
 *
 * SPDX-License-Identifier: MIT
 *
 */

#include "level_zero/sysman/source/driver/sysman_driver_handle_imp.h"
#include "level_zero/zes_api.h"
#include "level_zero/zes_intel_gpu_sysman.h"

namespace L0 {
namespace Sysman {
const std::vector<std::pair<std::string, uint32_t>> SysmanDriverHandleImp::extensionsSupported = {
    // Standard Sysman extensions
    {ZES_DEVICE_ECC_DEFAULT_PROPERTIES_EXT_NAME, ZES_DEVICE_ECC_DEFAULT_PROPERTIES_EXT_VERSION_CURRENT},
    {ZES_POWER_LIMITS_EXT_NAME, ZES_POWER_LIMITS_EXT_VERSION_CURRENT},
    {ZES_ENGINE_ACTIVITY_EXT_NAME, ZES_ENGINE_ACTIVITY_EXT_VERSION_CURRENT},
    {ZES_RAS_GET_STATE_EXP_NAME, ZES_RAS_STATE_EXP_VERSION_CURRENT},
    {ZES_MEM_PAGE_OFFLINE_STATE_EXP_NAME, ZES_MEM_PAGE_OFFLINE_STATE_EXP_VERSION_CURRENT},
    {ZES_MEMORY_BANDWIDTH_COUNTER_BITS_EXP_PROPERTIES_NAME, ZES_MEM_BANDWIDTH_COUNTER_BITS_EXP_VERSION_CURRENT},
    {ZES_SYSMAN_DEVICE_MAPPING_EXP_NAME, ZES_SYSMAN_DEVICE_MAPPING_EXP_VERSION_CURRENT},
    {ZES_VIRTUAL_FUNCTION_MANAGEMENT_EXP_NAME, ZES_VF_MANAGEMENT_EXP_VERSION_CURRENT},

    // Experimental Sysman extensions
    {ZES_INTEL_DRIVER_NAME_EXP_PROPERTY_NAME, ZES_INTEL_DRIVER_NAME_EXP_PROPERTIES_VERSION_CURRENT},
    {ZES_INTEL_FREQ_THROTTLE_REASON_EXP_NAME, ZES_INTEL_FREQ_THROTTLE_REASON_EXP_VERSION_CURRENT},
    {ZES_INTEL_MEMORY_PAGE_OFFLINE_EXP_NAME, ZES_INTEL_MEMORY_PAGE_OFFLINE_EXP_VERSION_CURRENT},
    {ZES_INTEL_MEMORY_PAGE_OFFLINE_PROPERTY_EXP_NAME, ZES_INTEL_MEM_PAGE_OFFLINE_PROPERTIES_EXP_VERSION_CURRENT},
    {ZES_INTEL_PCI_LINK_SPEED_DOWNGRADE_EXP_PROPERTY_NAME, ZES_INTEL_PCI_LINK_SPEED_DOWNGRADE_EXP_PROPERTIES_VERSION_CURRENT},
    {ZES_INTEL_PCI_LINK_SPEED_DOWNGRADE_EXP_STATE_NAME, ZES_INTEL_PCI_LINK_SPEED_DOWNGRADE_EXP_STATE_VERSION_CURRENT},
    {ZES_INTEL_PCI_LINK_SPEED_UPDATE_EXP_NAME, ZES_INTEL_PCI_LINK_SPEED_UPDATE_EXP_VERSION_CURRENT},
    {ZES_INTEL_POWER_LIMITS_EXP_NAME, ZES_INTEL_POWER_LIMITS_EXP_VERSION_CURRENT},
    {ZES_INTEL_POWER_USAGE_EXP_NAME, ZES_INTEL_POWER_USAGE_EXP_VERSION_CURRENT},
    {ZES_INTEL_RAS_ERROR_THRESHOLD_MANAGEMENT_EXTENSION_NAME, ZES_INTEL_RAS_CONFIG_EXP_VERSION_CURRENT},
    {ZES_INTEL_RAS_GET_CONFIG_EXP_NAME, ZES_INTEL_RAS_GET_CONFIG_EXP_VERSION_CURRENT},
    {ZES_INTEL_RAS_GET_SUPPORTED_CATEGORIES_EXP_NAME, ZES_INTEL_RAS_GET_SUPPORTED_CATEGORIES_EXP_VERSION_CURRENT},
    {ZES_INTEL_RAS_GET_STATE_EXP2_NAME, ZES_INTEL_RAS_GET_STATE_EXP2_VERSION_CURRENT},
    {ZES_INTEL_RAS_SET_CONFIG_EXP_NAME, ZES_INTEL_RAS_SET_CONFIG_EXP_VERSION_CURRENT}};
} // namespace Sysman
} // namespace L0
