aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3672-drm-amd-pp-Remove-cgs_query_system_info.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3672-drm-amd-pp-Remove-cgs_query_system_info.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3672-drm-amd-pp-Remove-cgs_query_system_info.patch729
1 files changed, 729 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3672-drm-amd-pp-Remove-cgs_query_system_info.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3672-drm-amd-pp-Remove-cgs_query_system_info.patch
new file mode 100644
index 00000000..76e670fe
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3672-drm-amd-pp-Remove-cgs_query_system_info.patch
@@ -0,0 +1,729 @@
+From 146a80fd6713dd4370c5dc9b150d3d36ca9241b5 Mon Sep 17 00:00:00 2001
+From: Rex Zhu <Rex.Zhu@amd.com>
+Date: Tue, 27 Feb 2018 19:15:08 +0800
+Subject: [PATCH 3672/4131] drm/amd/pp: Remove cgs_query_system_info
+
+Get gpu info through adev directly in powerplay
+
+Change-Id: I08ef4cb950cbd4c4c1b8cf3606a643ccd244b896
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 59 ----------------------
+ drivers/gpu/drm/amd/include/cgs_common.h | 34 -------------
+ drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c | 22 ++++----
+ drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c | 54 ++++++--------------
+ .../amd/powerplay/hwmgr/smu7_clockpowergating.c | 17 ++-----
+ drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c | 57 ++++++---------------
+ .../gpu/drm/amd/powerplay/hwmgr/smu7_powertune.c | 9 +---
+ drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c | 18 ++-----
+ .../gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c | 28 +++-------
+ .../amd/powerplay/hwmgr/vega10_processpptables.c | 13 ++---
+ drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c | 14 ++---
+ .../gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c | 7 +--
+ .../gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c | 13 ++---
+ .../gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c | 13 ++---
+ 14 files changed, 72 insertions(+), 286 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+index 795be958..f37482c 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+@@ -835,64 +835,6 @@ static int amdgpu_cgs_is_virtualization_enabled(void *cgs_device)
+ return amdgpu_sriov_vf(adev);
+ }
+
+-static int amdgpu_cgs_query_system_info(struct cgs_device *cgs_device,
+- struct cgs_system_info *sys_info)
+-{
+- CGS_FUNC_ADEV;
+-
+- if (NULL == sys_info)
+- return -ENODEV;
+-
+- if (sizeof(struct cgs_system_info) != sys_info->size)
+- return -ENODEV;
+-
+- switch (sys_info->info_id) {
+- case CGS_SYSTEM_INFO_ADAPTER_BDF_ID:
+- sys_info->value = adev->pdev->devfn | (adev->pdev->bus->number << 8);
+- break;
+- case CGS_SYSTEM_INFO_PCIE_GEN_INFO:
+- sys_info->value = adev->pm.pcie_gen_mask;
+- break;
+- case CGS_SYSTEM_INFO_PCIE_MLW:
+- sys_info->value = adev->pm.pcie_mlw_mask;
+- break;
+- case CGS_SYSTEM_INFO_PCIE_DEV:
+- sys_info->value = adev->pdev->device;
+- break;
+- case CGS_SYSTEM_INFO_PCIE_REV:
+- sys_info->value = adev->pdev->revision;
+- break;
+- case CGS_SYSTEM_INFO_CG_FLAGS:
+- sys_info->value = adev->cg_flags;
+- break;
+- case CGS_SYSTEM_INFO_PG_FLAGS:
+- sys_info->value = adev->pg_flags;
+- break;
+- case CGS_SYSTEM_INFO_GFX_CU_INFO:
+- sys_info->value = adev->gfx.cu_info.number;
+- break;
+- case CGS_SYSTEM_INFO_GFX_SE_INFO:
+- sys_info->value = adev->gfx.config.max_shader_engines;
+- break;
+- case CGS_SYSTEM_INFO_PCIE_SUB_SYS_ID:
+- sys_info->value = adev->pdev->subsystem_device;
+- break;
+- case CGS_SYSTEM_INFO_PCIE_SUB_SYS_VENDOR_ID:
+- sys_info->value = adev->pdev->subsystem_vendor;
+- break;
+- case CGS_SYSTEM_INFO_PCIE_BUS_DEVFN:
+- sys_info->value = adev->pdev->devfn;
+- break;
+- case CGS_SYSTEM_INFO_VRAM_WIDTH:
+- sys_info->value = adev->gmc.vram_width;
+- break;
+- default:
+- return -ENODEV;
+- }
+-
+- return 0;
+-}
+-
+ static int amdgpu_cgs_get_active_displays_info(struct cgs_device *cgs_device,
+ struct cgs_display_info *info)
+ {
+@@ -996,7 +938,6 @@ static const struct cgs_ops amdgpu_cgs_ops = {
+ .set_clockgating_state = amdgpu_cgs_set_clockgating_state,
+ .get_active_displays_info = amdgpu_cgs_get_active_displays_info,
+ .notify_dpm_enabled = amdgpu_cgs_notify_dpm_enabled,
+- .query_system_info = amdgpu_cgs_query_system_info,
+ .is_virtualization_enabled = amdgpu_cgs_is_virtualization_enabled,
+ .enter_safe_mode = amdgpu_cgs_enter_safe_mode,
+ .lock_grbm_idx = amdgpu_cgs_lock_grbm_idx,
+diff --git a/drivers/gpu/drm/amd/include/cgs_common.h b/drivers/gpu/drm/amd/include/cgs_common.h
+index 851168b..113ba6f 100644
+--- a/drivers/gpu/drm/amd/include/cgs_common.h
++++ b/drivers/gpu/drm/amd/include/cgs_common.h
+@@ -88,33 +88,6 @@ enum cgs_ucode_id {
+ CGS_UCODE_ID_MAXIMUM,
+ };
+
+-enum cgs_system_info_id {
+- CGS_SYSTEM_INFO_ADAPTER_BDF_ID = 1,
+- CGS_SYSTEM_INFO_PCIE_GEN_INFO,
+- CGS_SYSTEM_INFO_PCIE_MLW,
+- CGS_SYSTEM_INFO_PCIE_DEV,
+- CGS_SYSTEM_INFO_PCIE_REV,
+- CGS_SYSTEM_INFO_CG_FLAGS,
+- CGS_SYSTEM_INFO_PG_FLAGS,
+- CGS_SYSTEM_INFO_GFX_CU_INFO,
+- CGS_SYSTEM_INFO_GFX_SE_INFO,
+- CGS_SYSTEM_INFO_PCIE_SUB_SYS_ID,
+- CGS_SYSTEM_INFO_PCIE_SUB_SYS_VENDOR_ID,
+- CGS_SYSTEM_INFO_PCIE_BUS_DEVFN,
+- CGS_SYSTEM_INFO_VRAM_WIDTH,
+- CGS_SYSTEM_INFO_ID_MAXIMUM,
+-};
+-
+-struct cgs_system_info {
+- uint64_t size;
+- enum cgs_system_info_id info_id;
+- union {
+- void *ptr;
+- uint64_t value;
+- };
+- uint64_t padding[13];
+-};
+-
+ /*
+ * enum cgs_resource_type - GPU resource type
+ */
+@@ -375,9 +348,6 @@ typedef int(*cgs_get_active_displays_info)(
+
+ typedef int (*cgs_notify_dpm_enabled)(struct cgs_device *cgs_device, bool enabled);
+
+-typedef int (*cgs_query_system_info)(struct cgs_device *cgs_device,
+- struct cgs_system_info *sys_info);
+-
+ typedef int (*cgs_is_virtualization_enabled_t)(void *cgs_device);
+
+ typedef int (*cgs_enter_safe_mode)(struct cgs_device *cgs_device, bool en);
+@@ -416,8 +386,6 @@ struct cgs_ops {
+ cgs_get_active_displays_info get_active_displays_info;
+ /* notify dpm enabled */
+ cgs_notify_dpm_enabled notify_dpm_enabled;
+- /* get system info */
+- cgs_query_system_info query_system_info;
+ cgs_is_virtualization_enabled_t is_virtualization_enabled;
+ cgs_enter_safe_mode enter_safe_mode;
+ cgs_lock_grbm_idx lock_grbm_idx;
+@@ -483,8 +451,6 @@ struct cgs_device
+ #define cgs_get_active_displays_info(dev, info) \
+ CGS_CALL(get_active_displays_info, dev, info)
+
+-#define cgs_query_system_info(dev, sys_info) \
+- CGS_CALL(query_system_info, dev, sys_info)
+ #define cgs_get_pci_resource(cgs_device, resource_type, size, offset, \
+ resource_base) \
+ CGS_CALL(get_pci_resource, cgs_device, resource_type, size, offset, \
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c
+index 2aa84c7..8c1f884 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c
+@@ -173,8 +173,7 @@ static uint32_t cz_get_max_sclk_level(struct pp_hwmgr *hwmgr)
+ static int cz_initialize_dpm_defaults(struct pp_hwmgr *hwmgr)
+ {
+ struct cz_hwmgr *cz_hwmgr = (struct cz_hwmgr *)(hwmgr->backend);
+- struct cgs_system_info sys_info = {0};
+- int result;
++ struct amdgpu_device *adev = hwmgr->adev;
+
+ cz_hwmgr->gfx_ramp_step = 256*25/100;
+ cz_hwmgr->gfx_ramp_delay = 1; /* by default, we delay 1us */
+@@ -234,17 +233,14 @@ static int cz_initialize_dpm_defaults(struct pp_hwmgr *hwmgr)
+ PHM_PlatformCaps_UVDPowerGating);
+ phm_cap_unset(hwmgr->platform_descriptor.platformCaps,
+ PHM_PlatformCaps_VCEPowerGating);
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_PG_FLAGS;
+- result = cgs_query_system_info(hwmgr->device, &sys_info);
+- if (!result) {
+- if (sys_info.value & AMD_PG_SUPPORT_UVD)
+- phm_cap_set(hwmgr->platform_descriptor.platformCaps,
+- PHM_PlatformCaps_UVDPowerGating);
+- if (sys_info.value & AMD_PG_SUPPORT_VCE)
+- phm_cap_set(hwmgr->platform_descriptor.platformCaps,
+- PHM_PlatformCaps_VCEPowerGating);
+- }
++
++ if (adev->pg_flags & AMD_PG_SUPPORT_UVD)
++ phm_cap_set(hwmgr->platform_descriptor.platformCaps,
++ PHM_PlatformCaps_UVDPowerGating);
++ if (adev->pg_flags & AMD_PG_SUPPORT_VCE)
++ phm_cap_set(hwmgr->platform_descriptor.platformCaps,
++ PHM_PlatformCaps_VCEPowerGating);
++
+
+ return 0;
+ }
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
+index 2889788..2c7bb05 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
+@@ -64,30 +64,16 @@ uint16_t convert_to_vddc(uint8_t vid)
+ return (uint16_t) ((6200 - (vid * 25)) / VOLTAGE_SCALE);
+ }
+
+-static int phm_get_pci_bus_devfn(struct pp_hwmgr *hwmgr,
+- struct cgs_system_info *sys_info)
+-{
+- sys_info->size = sizeof(struct cgs_system_info);
+- sys_info->info_id = CGS_SYSTEM_INFO_PCIE_BUS_DEVFN;
+-
+- return cgs_query_system_info(hwmgr->device, sys_info);
+-}
+-
+ static int phm_thermal_l2h_irq(void *private_data,
+ unsigned src_id, const uint32_t *iv_entry)
+ {
+ struct pp_hwmgr *hwmgr = (struct pp_hwmgr *)private_data;
+- struct cgs_system_info sys_info = {0};
+- int result;
+-
+- result = phm_get_pci_bus_devfn(hwmgr, &sys_info);
+- if (result)
+- return -EINVAL;
++ struct amdgpu_device *adev = hwmgr->adev;
+
+- pr_warn("GPU over temperature range detected on PCIe %lld:%lld.%lld!\n",
+- PCI_BUS_NUM(sys_info.value),
+- PCI_SLOT(sys_info.value),
+- PCI_FUNC(sys_info.value));
++ pr_warn("GPU over temperature range detected on PCIe %d:%d.%d!\n",
++ PCI_BUS_NUM(adev->pdev->devfn),
++ PCI_SLOT(adev->pdev->devfn),
++ PCI_FUNC(adev->pdev->devfn));
+ return 0;
+ }
+
+@@ -95,17 +81,12 @@ static int phm_thermal_h2l_irq(void *private_data,
+ unsigned src_id, const uint32_t *iv_entry)
+ {
+ struct pp_hwmgr *hwmgr = (struct pp_hwmgr *)private_data;
+- struct cgs_system_info sys_info = {0};
+- int result;
+-
+- result = phm_get_pci_bus_devfn(hwmgr, &sys_info);
+- if (result)
+- return -EINVAL;
++ struct amdgpu_device *adev = hwmgr->adev;
+
+- pr_warn("GPU under temperature range detected on PCIe %lld:%lld.%lld!\n",
+- PCI_BUS_NUM(sys_info.value),
+- PCI_SLOT(sys_info.value),
+- PCI_FUNC(sys_info.value));
++ pr_warn("GPU under temperature range detected on PCIe %d:%d.%d!\n",
++ PCI_BUS_NUM(adev->pdev->devfn),
++ PCI_SLOT(adev->pdev->devfn),
++ PCI_FUNC(adev->pdev->devfn));
+ return 0;
+ }
+
+@@ -113,17 +94,12 @@ static int phm_ctf_irq(void *private_data,
+ unsigned src_id, const uint32_t *iv_entry)
+ {
+ struct pp_hwmgr *hwmgr = (struct pp_hwmgr *)private_data;
+- struct cgs_system_info sys_info = {0};
+- int result;
+-
+- result = phm_get_pci_bus_devfn(hwmgr, &sys_info);
+- if (result)
+- return -EINVAL;
++ struct amdgpu_device *adev = hwmgr->adev;
+
+- pr_warn("GPU Critical Temperature Fault detected on PCIe %lld:%lld.%lld!\n",
+- PCI_BUS_NUM(sys_info.value),
+- PCI_SLOT(sys_info.value),
+- PCI_FUNC(sys_info.value));
++ pr_warn("GPU Critical Temperature Fault detected on PCIe %d:%d.%d!\n",
++ PCI_BUS_NUM(adev->pdev->devfn),
++ PCI_SLOT(adev->pdev->devfn),
++ PCI_FUNC(adev->pdev->devfn));
+ return 0;
+ }
+
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_clockpowergating.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_clockpowergating.c
+index 72366b4..859a107 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_clockpowergating.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_clockpowergating.c
+@@ -473,23 +473,12 @@ int smu7_update_clock_gatings(struct pp_hwmgr *hwmgr,
+ */
+ int smu7_enable_per_cu_power_gating(struct pp_hwmgr *hwmgr, bool enable)
+ {
+- struct cgs_system_info sys_info = {0};
+- uint32_t active_cus;
+- int result;
+-
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_GFX_CU_INFO;
+-
+- result = cgs_query_system_info(hwmgr->device, &sys_info);
+-
+- if (result)
+- return -EINVAL;
+-
+- active_cus = sys_info.value;
++ struct amdgpu_device *adev = hwmgr->adev;
+
+ if (enable)
+ return smum_send_msg_to_smc_with_parameter(hwmgr,
+- PPSMC_MSG_GFX_CU_PG_ENABLE, active_cus);
++ PPSMC_MSG_GFX_CU_PG_ENABLE,
++ adev->gfx.cu_info.number);
+ else
+ return smum_send_msg_to_smc(hwmgr,
+ PPSMC_MSG_GFX_CU_PG_DISABLE);
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
+index e8f04b0..84ceb92 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
+@@ -1468,8 +1468,7 @@ static void smu7_init_dpm_defaults(struct pp_hwmgr *hwmgr)
+ struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
+ struct phm_ppt_v1_information *table_info =
+ (struct phm_ppt_v1_information *)(hwmgr->pptable);
+- struct cgs_system_info sys_info = {0};
+- int result;
++ struct amdgpu_device *adev = hwmgr->adev;
+
+ data->dll_default_on = false;
+ data->mclk_dpm0_activity_target = 0xa;
+@@ -1590,17 +1589,13 @@ static void smu7_init_dpm_defaults(struct pp_hwmgr *hwmgr)
+ data->pcie_lane_power_saving.max = 0;
+ data->pcie_lane_power_saving.min = 16;
+
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_PG_FLAGS;
+- result = cgs_query_system_info(hwmgr->device, &sys_info);
+- if (!result) {
+- if (sys_info.value & AMD_PG_SUPPORT_UVD)
+- phm_cap_set(hwmgr->platform_descriptor.platformCaps,
+- PHM_PlatformCaps_UVDPowerGating);
+- if (sys_info.value & AMD_PG_SUPPORT_VCE)
+- phm_cap_set(hwmgr->platform_descriptor.platformCaps,
+- PHM_PlatformCaps_VCEPowerGating);
+- }
++
++ if (adev->pg_flags & AMD_PG_SUPPORT_UVD)
++ phm_cap_set(hwmgr->platform_descriptor.platformCaps,
++ PHM_PlatformCaps_UVDPowerGating);
++ if (adev->pg_flags & AMD_PG_SUPPORT_VCE)
++ phm_cap_set(hwmgr->platform_descriptor.platformCaps,
++ PHM_PlatformCaps_VCEPowerGating);
+ }
+
+ /**
+@@ -2035,7 +2030,7 @@ static int smu7_patch_voltage_workaround(struct pp_hwmgr *hwmgr)
+ struct phm_ppt_v1_voltage_lookup_table *lookup_table;
+ uint32_t i;
+ uint32_t hw_revision, sub_vendor_id, sub_sys_id;
+- struct cgs_system_info sys_info = {0};
++ struct amdgpu_device *adev = hwmgr->adev;
+
+ if (table_info != NULL) {
+ dep_mclk_table = table_info->vdd_dep_on_mclk;
+@@ -2043,19 +2038,9 @@ static int smu7_patch_voltage_workaround(struct pp_hwmgr *hwmgr)
+ } else
+ return 0;
+
+- sys_info.size = sizeof(struct cgs_system_info);
+-
+- sys_info.info_id = CGS_SYSTEM_INFO_PCIE_REV;
+- cgs_query_system_info(hwmgr->device, &sys_info);
+- hw_revision = (uint32_t)sys_info.value;
+-
+- sys_info.info_id = CGS_SYSTEM_INFO_PCIE_SUB_SYS_ID;
+- cgs_query_system_info(hwmgr->device, &sys_info);
+- sub_sys_id = (uint32_t)sys_info.value;
+-
+- sys_info.info_id = CGS_SYSTEM_INFO_PCIE_SUB_SYS_VENDOR_ID;
+- cgs_query_system_info(hwmgr->device, &sys_info);
+- sub_vendor_id = (uint32_t)sys_info.value;
++ hw_revision = adev->pdev->revision;
++ sub_sys_id = adev->pdev->subsystem_device;
++ sub_vendor_id = adev->pdev->subsystem_vendor;
+
+ if (hwmgr->chip_id == CHIP_POLARIS10 && hw_revision == 0xC7 &&
+ ((sub_sys_id == 0xb37 && sub_vendor_id == 0x1002) ||
+@@ -2498,7 +2483,7 @@ static int smu7_hwmgr_backend_init(struct pp_hwmgr *hwmgr)
+ result = phm_initializa_dynamic_state_adjustment_rule_settings(hwmgr);
+
+ if (0 == result) {
+- struct cgs_system_info sys_info = {0};
++ struct amdgpu_device *adev = hwmgr->adev;
+
+ data->is_tlu_enabled = false;
+
+@@ -2507,22 +2492,10 @@ static int smu7_hwmgr_backend_init(struct pp_hwmgr *hwmgr)
+ hwmgr->platform_descriptor.hardwarePerformanceLevels = 2;
+ hwmgr->platform_descriptor.minimumClocksReductionPercentage = 50;
+
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_PCIE_GEN_INFO;
+- result = cgs_query_system_info(hwmgr->device, &sys_info);
+- if (result)
+- data->pcie_gen_cap = AMDGPU_DEFAULT_PCIE_GEN_MASK;
+- else
+- data->pcie_gen_cap = (uint32_t)sys_info.value;
++ data->pcie_gen_cap = adev->pm.pcie_gen_mask;
+ if (data->pcie_gen_cap & CAIL_PCIE_LINK_SPEED_SUPPORT_GEN3)
+ data->pcie_spc_cap = 20;
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_PCIE_MLW;
+- result = cgs_query_system_info(hwmgr->device, &sys_info);
+- if (result)
+- data->pcie_lane_cap = AMDGPU_DEFAULT_PCIE_MLW_MASK;
+- else
+- data->pcie_lane_cap = (uint32_t)sys_info.value;
++ data->pcie_lane_cap = adev->pm.pcie_mlw_mask;
+
+ hwmgr->platform_descriptor.vbiosInterruptId = 0x20000400; /* IRQ_SOURCE1_SW_INT */
+ /* The true clock step depends on the frequency, typically 4.5 or 9 MHz. Here we use 5. */
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_powertune.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_powertune.c
+index 8080c65..53f9763 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_powertune.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_powertune.c
+@@ -774,14 +774,9 @@ int smu7_enable_didt_config(struct pp_hwmgr *hwmgr)
+ int result;
+ uint32_t num_se = 0;
+ uint32_t count, value, value2;
+- struct cgs_system_info sys_info = {0};
++ struct amdgpu_device *adev = hwmgr->adev;
+
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_GFX_SE_INFO;
+- result = cgs_query_system_info(hwmgr->device, &sys_info);
+-
+- if (result == 0)
+- num_se = sys_info.value;
++ num_se = adev->gfx.config.max_shader_engines;
+
+ if (PP_CAP(PHM_PlatformCaps_SQRamping) ||
+ PP_CAP(PHM_PlatformCaps_DBRamping) ||
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
+index d89145c..4b9397b 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
+@@ -190,8 +190,7 @@ static int vega10_set_features_platform_caps(struct pp_hwmgr *hwmgr)
+ (struct vega10_hwmgr *)(hwmgr->backend);
+ struct phm_ppt_v2_information *table_info =
+ (struct phm_ppt_v2_information *)hwmgr->pptable;
+- struct cgs_system_info sys_info = {0};
+- int result;
++ struct amdgpu_device *adev = hwmgr->adev;
+
+ phm_cap_set(hwmgr->platform_descriptor.platformCaps,
+ PHM_PlatformCaps_SclkDeepSleep);
+@@ -206,15 +205,11 @@ static int vega10_set_features_platform_caps(struct pp_hwmgr *hwmgr)
+ phm_cap_set(hwmgr->platform_descriptor.platformCaps,
+ PHM_PlatformCaps_EnableSMU7ThermalManagement);
+
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_PG_FLAGS;
+- result = cgs_query_system_info(hwmgr->device, &sys_info);
+-
+- if (!result && (sys_info.value & AMD_PG_SUPPORT_UVD))
++ if (adev->pg_flags & AMD_PG_SUPPORT_UVD)
+ phm_cap_set(hwmgr->platform_descriptor.platformCaps,
+ PHM_PlatformCaps_UVDPowerGating);
+
+- if (!result && (sys_info.value & AMD_PG_SUPPORT_VCE))
++ if (adev->pg_flags & AMD_PG_SUPPORT_VCE)
+ phm_cap_set(hwmgr->platform_descriptor.platformCaps,
+ PHM_PlatformCaps_VCEPowerGating);
+
+@@ -750,7 +745,7 @@ static int vega10_hwmgr_backend_init(struct pp_hwmgr *hwmgr)
+ struct vega10_hwmgr *data;
+ uint32_t config_telemetry = 0;
+ struct pp_atomfwctrl_voltage_table vol_table;
+- struct cgs_system_info sys_info = {0};
++ struct amdgpu_device *adev = hwmgr->adev;
+ uint32_t reg;
+
+ data = kzalloc(sizeof(struct vega10_hwmgr), GFP_KERNEL);
+@@ -843,10 +838,7 @@ static int vega10_hwmgr_backend_init(struct pp_hwmgr *hwmgr)
+ hwmgr->platform_descriptor.clockStep.engineClock = 500;
+ hwmgr->platform_descriptor.clockStep.memoryClock = 500;
+
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_GFX_CU_INFO;
+- result = cgs_query_system_info(hwmgr->device, &sys_info);
+- data->total_active_cus = sys_info.value;
++ data->total_active_cus = adev->gfx.cu_info.number;
+ /* Setup default Overdrive Fan control settings */
+ data->odn_fan_table.target_fan_speed =
+ hwmgr->thermal_controller.advanceFanControlParameters.usMaxFanRPM;
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c
+index f5ed171..b1f74c7 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_powertune.c
+@@ -933,13 +933,10 @@ static int vega10_enable_cac_driving_se_didt_config(struct pp_hwmgr *hwmgr)
+ {
+ int result;
+ uint32_t num_se = 0, count, data;
+- struct cgs_system_info sys_info = {0};
++ struct amdgpu_device *adev = hwmgr->adev;
+ uint32_t reg;
+
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_GFX_SE_INFO;
+- if (cgs_query_system_info(hwmgr->device, &sys_info) == 0)
+- num_se = sys_info.value;
++ num_se = adev->gfx.config.max_shader_engines;
+
+ cgs_enter_safe_mode(hwmgr->device, true);
+
+@@ -987,13 +984,10 @@ static int vega10_enable_psm_gc_didt_config(struct pp_hwmgr *hwmgr)
+ {
+ int result;
+ uint32_t num_se = 0, count, data;
+- struct cgs_system_info sys_info = {0};
++ struct amdgpu_device *adev = hwmgr->adev;
+ uint32_t reg;
+
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_GFX_SE_INFO;
+- if (cgs_query_system_info(hwmgr->device, &sys_info) == 0)
+- num_se = sys_info.value;
++ num_se = adev->gfx.config.max_shader_engines;
+
+ cgs_enter_safe_mode(hwmgr->device, true);
+
+@@ -1052,13 +1046,10 @@ static int vega10_enable_se_edc_config(struct pp_hwmgr *hwmgr)
+ {
+ int result;
+ uint32_t num_se = 0, count, data;
+- struct cgs_system_info sys_info = {0};
++ struct amdgpu_device *adev = hwmgr->adev;
+ uint32_t reg;
+
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_GFX_SE_INFO;
+- if (cgs_query_system_info(hwmgr->device, &sys_info) == 0)
+- num_se = sys_info.value;
++ num_se = adev->gfx.config.max_shader_engines;
+
+ cgs_enter_safe_mode(hwmgr->device, true);
+
+@@ -1103,13 +1094,10 @@ static int vega10_enable_psm_gc_edc_config(struct pp_hwmgr *hwmgr)
+ int result;
+ uint32_t num_se = 0;
+ uint32_t count, data;
+- struct cgs_system_info sys_info = {0};
++ struct amdgpu_device *adev = hwmgr->adev;
+ uint32_t reg;
+
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_GFX_SE_INFO;
+- if (cgs_query_system_info(hwmgr->device, &sys_info) == 0)
+- num_se = sys_info.value;
++ num_se = adev->gfx.config.max_shader_engines;
+
+ cgs_enter_safe_mode(hwmgr->device, true);
+
+diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_processpptables.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_processpptables.c
+index 6d44cf0..c61d074 100644
+--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_processpptables.c
++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_processpptables.c
+@@ -688,9 +688,9 @@ static int get_dcefclk_voltage_dependency_table(
+ uint8_t num_entries;
+ struct phm_ppt_v1_clock_voltage_dependency_table
+ *clk_table;
+- struct cgs_system_info sys_info = {0};
+ uint32_t dev_id;
+ uint32_t rev_id;
++ struct amdgpu_device *adev = hwmgr->adev;
+
+ PP_ASSERT_WITH_CODE((clk_dep_table->ucNumEntries != 0),
+ "Invalid PowerPlay Table!", return -1);
+@@ -701,15 +701,8 @@ static int get_dcefclk_voltage_dependency_table(
+ * This DPM level was added to support 3DPM monitors @ 4K120Hz
+ *
+ */
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_PCIE_DEV;
+- cgs_query_system_info(hwmgr->device, &sys_info);
+- dev_id = (uint32_t)sys_info.value;
+-
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_PCIE_REV;
+- cgs_query_system_info(hwmgr->device, &sys_info);
+- rev_id = (uint32_t)sys_info.value;
++ dev_id = adev->pdev->device;
++ rev_id = adev->pdev->revision;
+
+ if (dev_id == 0x6863 && rev_id == 0 &&
+ clk_dep_table->entries[clk_dep_table->ucNumEntries - 1].ulClk < 90000)
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c
+index 6cdaed06d..76f700f 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c
+@@ -236,13 +236,10 @@ static int ci_send_msg_to_smc_with_parameter(struct pp_hwmgr *hwmgr,
+ static void ci_initialize_power_tune_defaults(struct pp_hwmgr *hwmgr)
+ {
+ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+- struct cgs_system_info sys_info = {0};
++ struct amdgpu_device *adev = hwmgr->adev;
+ uint32_t dev_id;
+
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_PCIE_DEV;
+- cgs_query_system_info(hwmgr->device, &sys_info);
+- dev_id = (uint32_t)sys_info.value;
++ dev_id = adev->pdev->device;
+
+ switch (dev_id) {
+ case 0x67BA:
+@@ -1309,7 +1306,7 @@ static int ci_populate_all_memory_levels(struct pp_hwmgr *hwmgr)
+ struct ci_smumgr *smu_data = (struct ci_smumgr *)(hwmgr->smu_backend);
+ struct smu7_dpm_table *dpm_table = &data->dpm_table;
+ int result;
+- struct cgs_system_info sys_info = {0};
++ struct amdgpu_device *adev = hwmgr->adev;
+ uint32_t dev_id;
+
+ uint32_t level_array_address = smu_data->dpm_table_start + offsetof(SMU7_Discrete_DpmTable, MemoryLevel);
+@@ -1330,10 +1327,7 @@ static int ci_populate_all_memory_levels(struct pp_hwmgr *hwmgr)
+
+ smu_data->smc_state_table.MemoryLevel[0].EnabledForActivity = 1;
+
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_PCIE_DEV;
+- cgs_query_system_info(hwmgr->device, &sys_info);
+- dev_id = (uint32_t)sys_info.value;
++ dev_id = adev->pdev->device;
+
+ if ((dpm_table->mclk_table.count >= 2)
+ && ((dev_id == 0x67B0) || (dev_id == 0x67B1))) {
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c
+index 11aeb15..6255edf 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c
+@@ -281,13 +281,10 @@ static int iceland_smu_init(struct pp_hwmgr *hwmgr)
+ static void iceland_initialize_power_tune_defaults(struct pp_hwmgr *hwmgr)
+ {
+ struct iceland_smumgr *smu_data = (struct iceland_smumgr *)(hwmgr->smu_backend);
+- struct cgs_system_info sys_info = {0};
++ struct amdgpu_device *adev = hwmgr->adev;
+ uint32_t dev_id;
+
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_PCIE_DEV;
+- cgs_query_system_info(hwmgr->device, &sys_info);
+- dev_id = (uint32_t)sys_info.value;
++ dev_id = adev->pdev->device;
+
+ switch (dev_id) {
+ case DEVICE_ID_VI_ICELAND_M_6900:
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c
+index 9e98c1d..a268b98 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c
+@@ -1623,19 +1623,12 @@ static int tonga_populate_clock_stretcher_data_table(struct pp_hwmgr *hwmgr)
+ struct phm_ppt_v1_clock_voltage_dependency_table *sclk_table =
+ table_info->vdd_dep_on_sclk;
+ uint32_t hw_revision, dev_id;
+- struct cgs_system_info sys_info = {0};
++ struct amdgpu_device *adev = hwmgr->adev;
+
+ stretch_amount = (uint8_t)table_info->cac_dtp_table->usClockStretchAmount;
+
+- sys_info.size = sizeof(struct cgs_system_info);
+-
+- sys_info.info_id = CGS_SYSTEM_INFO_PCIE_REV;
+- cgs_query_system_info(hwmgr->device, &sys_info);
+- hw_revision = (uint32_t)sys_info.value;
+-
+- sys_info.info_id = CGS_SYSTEM_INFO_PCIE_DEV;
+- cgs_query_system_info(hwmgr->device, &sys_info);
+- dev_id = (uint32_t)sys_info.value;
++ hw_revision = adev->pdev->revision;
++ dev_id = adev->pdev->device;
+
+ /* Read SMU_Eefuse to read and calculate RO and determine
+ * if the part is SS or FF. if RO >= 1660MHz, part is FF.
+diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c
+index 99ad0a2..68db582 100644
+--- a/drivers/gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c
++++ b/drivers/gpu/drm/amd/powerplay/smumgr/vega10_smumgr.c
+@@ -349,7 +349,7 @@ int vega10_set_tools_address(struct pp_hwmgr *hwmgr)
+ static int vega10_verify_smc_interface(struct pp_hwmgr *hwmgr)
+ {
+ uint32_t smc_driver_if_version;
+- struct cgs_system_info sys_info = {0};
++ struct amdgpu_device *adev = hwmgr->adev;
+ uint32_t dev_id;
+ uint32_t rev_id;
+
+@@ -359,15 +359,8 @@ static int vega10_verify_smc_interface(struct pp_hwmgr *hwmgr)
+ return -EINVAL);
+ vega10_read_arg_from_smc(hwmgr, &smc_driver_if_version);
+
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_PCIE_DEV;
+- cgs_query_system_info(hwmgr->device, &sys_info);
+- dev_id = (uint32_t)sys_info.value;
+-
+- sys_info.size = sizeof(struct cgs_system_info);
+- sys_info.info_id = CGS_SYSTEM_INFO_PCIE_REV;
+- cgs_query_system_info(hwmgr->device, &sys_info);
+- rev_id = (uint32_t)sys_info.value;
++ dev_id = adev->pdev->device;
++ rev_id = adev->pdev->revision;
+
+ if (!((dev_id == 0x687f) &&
+ ((rev_id == 0xc0) ||
+--
+2.7.4
+