diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3723-drm-amdgpu-Add-a-kernel-parameter-for-specifying-the.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3723-drm-amdgpu-Add-a-kernel-parameter-for-specifying-the.patch | 283 |
1 files changed, 283 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3723-drm-amdgpu-Add-a-kernel-parameter-for-specifying-the.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3723-drm-amdgpu-Add-a-kernel-parameter-for-specifying-the.patch new file mode 100644 index 00000000..ae36effa --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3723-drm-amdgpu-Add-a-kernel-parameter-for-specifying-the.patch @@ -0,0 +1,283 @@ +From a72d05380ab34f16462a14fbf7a695ea410b5f77 Mon Sep 17 00:00:00 2001 +From: Yong Zhao <Yong.Zhao@amd.com> +Date: Fri, 30 Aug 2019 18:09:10 -0400 +Subject: [PATCH 3723/4256] drm/amdgpu: Add a kernel parameter for specifying + the asic type + +As more and more new asics start to reuse the old device IDs before +launch, there is a need to quickly override the existing asic type +corresponding to the reused device ID through a kernel parameter. With +this, engineers no longer need to rely on local hack patches, +facilitating cooperation across teams. + +Change-Id: Ic948ec8125bf28c9775f2f27673d0b69f2916c71 +Signed-off-by: Yong Zhao <Yong.Zhao@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 8 ++- + drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 11 ++++ + drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 1 - + drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 4 +- + drivers/gpu/drm/amd/amdgpu/psp_v10_0.c | 3 - + .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 - + drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c | 1 - + .../drm/amd/powerplay/hwmgr/processpptables.c | 8 +-- + include/drm/amd_asic_type.h | 55 +++++++++---------- + 10 files changed, 51 insertions(+), 43 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +index 125987f884a9..b2999b81f923 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +@@ -172,6 +172,7 @@ extern int amdgpu_mcbp; + extern int amdgpu_discovery; + extern int amdgpu_mes; + extern int amdgpu_noretry; ++extern int amdgpu_force_asic_type; + + #ifdef CONFIG_DRM_AMDGPU_SI + extern int amdgpu_si_support; +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +index b7276f9e814b..2d65e8eb687d 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +@@ -2489,7 +2489,6 @@ bool amdgpu_device_asic_has_dc_support(enum amd_asic_type asic_type) + case CHIP_VEGA20: + #if defined(CONFIG_DRM_AMD_DC_DCN1_0) + case CHIP_RAVEN: +- case CHIP_PICASSO: + #endif + #if defined(CONFIG_DRM_AMD_DC_DCN2_0) + case CHIP_NAVI10: +@@ -2560,7 +2559,12 @@ int amdgpu_device_init(struct amdgpu_device *adev, + adev->ddev = ddev; + adev->pdev = pdev; + adev->flags = flags; +- adev->asic_type = flags & AMD_ASIC_MASK; ++ ++ if (amdgpu_force_asic_type >= 0 && amdgpu_force_asic_type < CHIP_LAST) ++ adev->asic_type = amdgpu_force_asic_type; ++ else ++ adev->asic_type = flags & AMD_ASIC_MASK; ++ + adev->usec_timeout = AMDGPU_MAX_USEC_TIMEOUT; + if (amdgpu_emu_mode == 1) + adev->usec_timeout *= 2; +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +index 23fce40922e9..2de8db5e864c 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +@@ -147,6 +147,7 @@ int amdgpu_mcbp = 0; + int amdgpu_discovery = -1; + int amdgpu_mes = 0; + int amdgpu_noretry = 1; ++int amdgpu_force_asic_type = -1; + + struct amdgpu_mgpu_info mgpu_info = { + .mutex = __MUTEX_INITIALIZER(mgpu_info.mutex), +@@ -626,6 +627,16 @@ MODULE_PARM_DESC(noretry, + "Disable retry faults (0 = retry enabled, 1 = retry disabled (default))"); + module_param_named(noretry, amdgpu_noretry, int, 0644); + ++/** ++ * DOC: force_asic_type (int) ++ * A non negative value used to specify the asic type for all supported GPUs. ++ */ ++MODULE_PARM_DESC(force_asic_type, ++ "A non negative value used to specify the asic type for all supported GPUs"); ++module_param_named(force_asic_type, amdgpu_force_asic_type, int, 0444); ++ ++ ++ + #ifdef CONFIG_HSA_AMD + /** + * DOC: sched_policy (int) +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +index d92444ac1fc5..52b02ce626e1 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +@@ -50,7 +50,6 @@ static int psp_early_init(void *handle) + psp->autoload_supported = false; + break; + case CHIP_RAVEN: +- case CHIP_PICASSO: + psp_v10_0_set_psp_funcs(psp); + psp->autoload_supported = false; + break; +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +index dd5b5875f874..31b25d27e50e 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +@@ -2660,7 +2660,7 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm, + vm->use_cpu_for_update = !!(adev->vm_manager.vm_update_mode & + AMDGPU_VM_USE_CPU_FOR_COMPUTE); + +- if (adev->asic_type == CHIP_RAVEN || adev->asic_type == CHIP_PICASSO) ++ if (adev->asic_type == CHIP_RAVEN) + vm->pte_support_ats = true; + } else { + vm->use_cpu_for_update = !!(adev->vm_manager.vm_update_mode & +@@ -2785,7 +2785,7 @@ static int amdgpu_vm_check_clean_reserved(struct amdgpu_device *adev, + */ + int amdgpu_vm_make_compute(struct amdgpu_device *adev, struct amdgpu_vm *vm) + { +- bool pte_support_ats = (adev->asic_type == CHIP_RAVEN || adev->asic_type == CHIP_PICASSO); ++ bool pte_support_ats = (adev->asic_type == CHIP_RAVEN); + int r; + + r = amdgpu_bo_reserve(vm->root.base.bo, true); +diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c +index 216af0af255a..e5fff6b30137 100644 +--- a/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c +@@ -57,9 +57,6 @@ static int psp_v10_0_init_microcode(struct psp_context *psp) + else + chip_name = "raven"; + break; +- case CHIP_PICASSO: +- chip_name = "picasso"; +- break; + default: BUG(); + } + +diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +index 65aff741befb..a0ae950d3a60 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -2360,7 +2360,6 @@ static int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev) + break; + #if defined(CONFIG_DRM_AMD_DC_DCN1_0) + case CHIP_RAVEN: +- case CHIP_PICASSO: + #if defined(CONFIG_DRM_AMD_DC_DCN2_0) + case CHIP_NAVI10: + case CHIP_NAVI14: +@@ -2602,7 +2601,6 @@ static int dm_early_init(void *handle) + break; + #if defined(CONFIG_DRM_AMD_DC_DCN1_0) + case CHIP_RAVEN: +- case CHIP_PICASSO: + adev->mode_info.num_crtc = 4; + adev->mode_info.num_hpd = 4; + adev->mode_info.num_dig = 4; +diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c +index 873bf65e34d4..e8d4292bc4f0 100644 +--- a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c ++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c +@@ -173,7 +173,6 @@ int hwmgr_early_init(struct pp_hwmgr *hwmgr) + case AMDGPU_FAMILY_RV: + switch (hwmgr->chip_id) { + case CHIP_RAVEN: +- case CHIP_PICASSO: + hwmgr->od_enabled = false; + hwmgr->smumgr_funcs = &smu10_smu_funcs; + smu10_init_function_pointers(hwmgr); +diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/processpptables.c b/drivers/gpu/drm/amd/powerplay/hwmgr/processpptables.c +index f6fe9ce793ad..77c14671866c 100644 +--- a/drivers/gpu/drm/amd/powerplay/hwmgr/processpptables.c ++++ b/drivers/gpu/drm/amd/powerplay/hwmgr/processpptables.c +@@ -832,7 +832,7 @@ static const ATOM_PPLIB_POWERPLAYTABLE *get_powerplay_table( + uint16_t size; + + if (!table_addr) { +- if (hwmgr->chip_id == CHIP_RAVEN || hwmgr->chip_id == CHIP_PICASSO) { ++ if (hwmgr->chip_id == CHIP_RAVEN) { + table_addr = &soft_dummy_pp_table[0]; + hwmgr->soft_pp_table = &soft_dummy_pp_table[0]; + hwmgr->soft_pp_table_size = sizeof(soft_dummy_pp_table); +@@ -1055,7 +1055,7 @@ static int init_overdrive_limits(struct pp_hwmgr *hwmgr, + hwmgr->platform_descriptor.maxOverdriveVDDC = 0; + hwmgr->platform_descriptor.overdriveVDDCStep = 0; + +- if (hwmgr->chip_id == CHIP_RAVEN || hwmgr->chip_id == CHIP_PICASSO) ++ if (hwmgr->chip_id == CHIP_RAVEN) + return 0; + + /* We assume here that fw_info is unchanged if this call fails.*/ +@@ -1595,7 +1595,7 @@ static int pp_tables_initialize(struct pp_hwmgr *hwmgr) + int result; + const ATOM_PPLIB_POWERPLAYTABLE *powerplay_table; + +- if (hwmgr->chip_id == CHIP_RAVEN || hwmgr->chip_id == CHIP_PICASSO) ++ if (hwmgr->chip_id == CHIP_RAVEN) + return 0; + + hwmgr->need_pp_table_upload = true; +@@ -1644,7 +1644,7 @@ static int pp_tables_initialize(struct pp_hwmgr *hwmgr) + + static int pp_tables_uninitialize(struct pp_hwmgr *hwmgr) + { +- if (hwmgr->chip_id == CHIP_RAVEN || hwmgr->chip_id == CHIP_PICASSO) ++ if (hwmgr->chip_id == CHIP_RAVEN) + return 0; + + kfree(hwmgr->dyn_state.vddc_dependency_on_sclk); +diff --git a/include/drm/amd_asic_type.h b/include/drm/amd_asic_type.h +index a4a80ce18a7a..a26d8bcd1a38 100644 +--- a/include/drm/amd_asic_type.h ++++ b/include/drm/amd_asic_type.h +@@ -27,34 +27,33 @@ + */ + enum amd_asic_type { + CHIP_TAHITI = 0, +- CHIP_PITCAIRN, +- CHIP_VERDE, +- CHIP_OLAND, +- CHIP_HAINAN, +- CHIP_BONAIRE, +- CHIP_KAVERI, +- CHIP_KABINI, +- CHIP_HAWAII, +- CHIP_MULLINS, +- CHIP_TOPAZ, +- CHIP_TONGA, +- CHIP_FIJI, +- CHIP_CARRIZO, +- CHIP_STONEY, +- CHIP_POLARIS10, +- CHIP_POLARIS11, +- CHIP_POLARIS12, +- CHIP_VEGAM, +- CHIP_VEGA10, +- CHIP_VEGA12, +- CHIP_VEGA20, +- CHIP_RAVEN, +- CHIP_ARCTURUS, +- CHIP_RENOIR, +- CHIP_PICASSO, +- CHIP_NAVI10, +- CHIP_NAVI14, +- CHIP_NAVI12, ++ CHIP_PITCAIRN, /* 1 */ ++ CHIP_VERDE, /* 2 */ ++ CHIP_OLAND, /* 3 */ ++ CHIP_HAINAN, /* 4 */ ++ CHIP_BONAIRE, /* 5 */ ++ CHIP_KAVERI, /* 6 */ ++ CHIP_KABINI, /* 7 */ ++ CHIP_HAWAII, /* 8 */ ++ CHIP_MULLINS, /* 9 */ ++ CHIP_TOPAZ, /* 10 */ ++ CHIP_TONGA, /* 11 */ ++ CHIP_FIJI, /* 12 */ ++ CHIP_CARRIZO, /* 13 */ ++ CHIP_STONEY, /* 14 */ ++ CHIP_POLARIS10, /* 15 */ ++ CHIP_POLARIS11, /* 16 */ ++ CHIP_POLARIS12, /* 17 */ ++ CHIP_VEGAM, /* 18 */ ++ CHIP_VEGA10, /* 19 */ ++ CHIP_VEGA12, /* 20 */ ++ CHIP_VEGA20, /* 21 */ ++ CHIP_RAVEN, /* 22 */ ++ CHIP_ARCTURUS, /* 23 */ ++ CHIP_RENOIR, /* 24 */ ++ CHIP_NAVI10, /* 25 */ ++ CHIP_NAVI14, /* 26 */ ++ CHIP_NAVI12, /* 27 */ + CHIP_LAST, + }; + +-- +2.17.1 + |