|
81 | 81 | #define EPSILON 1 |
82 | 82 |
|
83 | 83 | #define smnPCIE_ESM_CTRL 0x193D0 |
84 | | -#define smnPCIE_LC_LINK_WIDTH_CNTL 0x1ab40288 |
| 84 | +#define smnPCIE_LC_LINK_WIDTH_CNTL 0x1a340288 |
85 | 85 | #define PCIE_LC_LINK_WIDTH_CNTL__LC_LINK_WIDTH_RD_MASK 0x00000070L |
86 | 86 | #define PCIE_LC_LINK_WIDTH_CNTL__LC_LINK_WIDTH_RD__SHIFT 0x4 |
| 87 | +#define MAX_LINK_WIDTH 6 |
87 | 88 |
|
88 | 89 | static const struct cmn2asic_msg_mapping smu_v13_0_6_message_map[SMU_MSG_MAX_COUNT] = { |
89 | 90 | MSG_MAP(TestMessage, PPSMC_MSG_TestMessage, 0), |
@@ -708,16 +709,19 @@ static int smu_v13_0_6_get_smu_metrics_data(struct smu_context *smu, |
708 | 709 | *value = SMUQ10_TO_UINT(metrics->SocketPower) << 8; |
709 | 710 | break; |
710 | 711 | case METRICS_TEMPERATURE_HOTSPOT: |
711 | | - *value = SMUQ10_TO_UINT(metrics->MaxSocketTemperature); |
| 712 | + *value = SMUQ10_TO_UINT(metrics->MaxSocketTemperature) * |
| 713 | + SMU_TEMPERATURE_UNITS_PER_CENTIGRADES; |
712 | 714 | break; |
713 | 715 | case METRICS_TEMPERATURE_MEM: |
714 | | - *value = SMUQ10_TO_UINT(metrics->MaxHbmTemperature); |
| 716 | + *value = SMUQ10_TO_UINT(metrics->MaxHbmTemperature) * |
| 717 | + SMU_TEMPERATURE_UNITS_PER_CENTIGRADES; |
715 | 718 | break; |
716 | 719 | /* This is the max of all VRs and not just SOC VR. |
717 | 720 | * No need to define another data type for the same. |
718 | 721 | */ |
719 | 722 | case METRICS_TEMPERATURE_VRSOC: |
720 | | - *value = SMUQ10_TO_UINT(metrics->MaxVrTemperature); |
| 723 | + *value = SMUQ10_TO_UINT(metrics->MaxVrTemperature) * |
| 724 | + SMU_TEMPERATURE_UNITS_PER_CENTIGRADES; |
721 | 725 | break; |
722 | 726 | default: |
723 | 727 | *value = UINT_MAX; |
@@ -1966,6 +1970,7 @@ static ssize_t smu_v13_0_6_get_gpu_metrics(struct smu_context *smu, void **table |
1966 | 1970 | struct amdgpu_device *adev = smu->adev; |
1967 | 1971 | int ret = 0, inst0, xcc0; |
1968 | 1972 | MetricsTable_t *metrics; |
| 1973 | + u16 link_width_level; |
1969 | 1974 |
|
1970 | 1975 | inst0 = adev->sdma.instance[0].aid_id; |
1971 | 1976 | xcc0 = GET_INST(GC, 0); |
@@ -2016,8 +2021,12 @@ static ssize_t smu_v13_0_6_get_gpu_metrics(struct smu_context *smu, void **table |
2016 | 2021 | gpu_metrics->throttle_status = 0; |
2017 | 2022 |
|
2018 | 2023 | if (!(adev->flags & AMD_IS_APU)) { |
| 2024 | + link_width_level = smu_v13_0_6_get_current_pcie_link_width_level(smu); |
| 2025 | + if (link_width_level > MAX_LINK_WIDTH) |
| 2026 | + link_width_level = 0; |
| 2027 | + |
2019 | 2028 | gpu_metrics->pcie_link_width = |
2020 | | - smu_v13_0_6_get_current_pcie_link_width_level(smu); |
| 2029 | + DECODE_LANE_WIDTH(link_width_level); |
2021 | 2030 | gpu_metrics->pcie_link_speed = |
2022 | 2031 | smu_v13_0_6_get_current_pcie_link_speed(smu); |
2023 | 2032 | } |
|
0 commit comments