diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4178-drm-amd-display-fix-incorrect-page-table-address-for.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4178-drm-amd-display-fix-incorrect-page-table-address-for.patch | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4178-drm-amd-display-fix-incorrect-page-table-address-for.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4178-drm-amd-display-fix-incorrect-page-table-address-for.patch new file mode 100644 index 00000000..df23f56e --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4178-drm-amd-display-fix-incorrect-page-table-address-for.patch @@ -0,0 +1,59 @@ +From 91e966568edf9bd745a26c96b77708cf3092a02a Mon Sep 17 00:00:00 2001 +From: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> +Date: Wed, 2 Oct 2019 15:31:03 -0400 +Subject: [PATCH 4178/4736] drm/amd/display: fix incorrect page table address + for renoir + +Incorrect page table address and programming sys aperture for +stutter gather, so fix it. + +Signed-off-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> +Reviewed-by: Roman Li <Roman.Li@amd.com> +--- + .../drm/amd/display/dc/dcn21/dcn21_hubbub.c | 23 ++++++++++++++----- + 1 file changed, 17 insertions(+), 6 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_hubbub.c b/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_hubbub.c +index bd247e5e753e..fdfbdeb32459 100644 +--- a/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_hubbub.c ++++ b/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_hubbub.c +@@ -111,19 +111,30 @@ int hubbub21_init_dchub(struct hubbub *hubbub, + struct dcn_hubbub_phys_addr_config *pa_config) + { + struct dcn20_hubbub *hubbub1 = TO_DCN20_HUBBUB(hubbub); ++ struct dcn_vmid_page_table_config phys_config; + + REG_SET(DCN_VM_FB_LOCATION_BASE, 0, +- FB_BASE, pa_config->system_aperture.fb_base); ++ FB_BASE, pa_config->system_aperture.fb_base >> 24); + REG_SET(DCN_VM_FB_LOCATION_TOP, 0, +- FB_TOP, pa_config->system_aperture.fb_top); ++ FB_TOP, pa_config->system_aperture.fb_top >> 24); + REG_SET(DCN_VM_FB_OFFSET, 0, +- FB_OFFSET, pa_config->system_aperture.fb_offset); ++ FB_OFFSET, pa_config->system_aperture.fb_offset >> 24); + REG_SET(DCN_VM_AGP_BOT, 0, +- AGP_BOT, pa_config->system_aperture.agp_bot); ++ AGP_BOT, pa_config->system_aperture.agp_bot >> 24); + REG_SET(DCN_VM_AGP_TOP, 0, +- AGP_TOP, pa_config->system_aperture.agp_top); ++ AGP_TOP, pa_config->system_aperture.agp_top >> 24); + REG_SET(DCN_VM_AGP_BASE, 0, +- AGP_BASE, pa_config->system_aperture.agp_base); ++ AGP_BASE, pa_config->system_aperture.agp_base >> 24); ++ ++ if (pa_config->gart_config.page_table_start_addr != pa_config->gart_config.page_table_end_addr) { ++ phys_config.page_table_start_addr = pa_config->gart_config.page_table_start_addr >> 12; ++ phys_config.page_table_end_addr = pa_config->gart_config.page_table_end_addr >> 12; ++ phys_config.page_table_base_addr = pa_config->gart_config.page_table_base_addr | 1; //Note: hack ++ phys_config.depth = 0; ++ phys_config.block_size = 0; ++ // Init VMID 0 based on PA config ++ dcn20_vmid_setup(&hubbub1->vmid[0], &phys_config); ++ } + + dcn21_dchvm_init(hubbub); + +-- +2.17.1 + |