aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3575-drm-amd-display-Add-VM-page-fault-handle-implementat.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3575-drm-amd-display-Add-VM-page-fault-handle-implementat.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3575-drm-amd-display-Add-VM-page-fault-handle-implementat.patch128
1 files changed, 128 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3575-drm-amd-display-Add-VM-page-fault-handle-implementat.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3575-drm-amd-display-Add-VM-page-fault-handle-implementat.patch
new file mode 100644
index 00000000..431dcf22
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3575-drm-amd-display-Add-VM-page-fault-handle-implementat.patch
@@ -0,0 +1,128 @@
+From cfcafa39153dc47ec051920fb9940f1097418c86 Mon Sep 17 00:00:00 2001
+From: Jaehyun Chung <jaehyun.chung@amd.com>
+Date: Mon, 29 Jul 2019 14:48:32 -0400
+Subject: [PATCH 3575/4256] drm/amd/display: Add VM page fault handle
+ implementation
+
+[How] Allocate memory for default page and program memory block addr
+into default page addr register.
+
+Signed-off-by: Jaehyun Chung <jaehyun.chung@amd.com>
+Reviewed-by: Jun Lei <Jun.Lei@amd.com>
+Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/dc.h | 1 +
+ drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubbub.h | 6 +++++-
+ drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubbub.c | 5 +++++
+ drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubbub.h | 9 +++++++--
+ drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c | 1 +
+ drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h | 2 ++
+ 6 files changed, 21 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h
+index 81b986acbae6..f95fb13f14de 100644
+--- a/drivers/gpu/drm/amd/display/dc/dc.h
++++ b/drivers/gpu/drm/amd/display/dc/dc.h
+@@ -426,6 +426,7 @@ struct dc_phy_addr_space_config {
+ } gart_config;
+
+ bool valid;
++ uint64_t page_table_default_page_addr;
+ };
+
+ struct dc_virtual_addr_space_config {
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubbub.h b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubbub.h
+index 70e5d84fc69a..c8ae3023fda2 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubbub.h
++++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubbub.h
+@@ -119,6 +119,8 @@ struct dcn_hubbub_registers {
+ uint32_t DCN_VM_AGP_BOT;
+ uint32_t DCN_VM_AGP_TOP;
+ uint32_t DCN_VM_AGP_BASE;
++ uint32_t DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_MSB;
++ uint32_t DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_LSB;
+ };
+
+ /* set field name */
+@@ -196,7 +198,9 @@ struct dcn_hubbub_registers {
+ type DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_A;\
+ type DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_B;\
+ type DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_C;\
+- type DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_D
++ type DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_D;\
++ type DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_MSB;\
++ type DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_LSB
+
+ #define HUBBUB_STUTTER_REG_FIELD_LIST(type) \
+ type DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_A;\
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubbub.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubbub.c
+index f13e039f8ef4..b83c022e2c6f 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubbub.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubbub.c
+@@ -380,6 +380,11 @@ int hubbub2_init_dchub_sys_ctx(struct hubbub *hubbub,
+ REG_SET(DCN_VM_AGP_BASE, 0,
+ AGP_BASE, pa_config->system_aperture.agp_base >> 24);
+
++ REG_SET(DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_MSB, 0,
++ DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_MSB, (pa_config->page_table_default_page_addr >> 44) & 0xF);
++ REG_SET(DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_LSB, 0,
++ DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_LSB, (pa_config->page_table_default_page_addr >> 12) & 0xFFFFFFFF);
++
+ 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;
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubbub.h b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubbub.h
+index caf7273ca240..0d0caa6de935 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubbub.h
++++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubbub.h
+@@ -45,7 +45,10 @@
+ #define HUBBUB_REG_LIST_DCN20(id)\
+ HUBBUB_REG_LIST_DCN20_COMMON(), \
+ HUBBUB_SR_WATERMARK_REG_LIST(), \
+- HUBBUB_VM_REG_LIST()
++ HUBBUB_VM_REG_LIST(),\
++ SR(DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_MSB),\
++ SR(DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_LSB)
++
+
+ #define HUBBUB_MASK_SH_LIST_DCN20(mask_sh)\
+ HUBBUB_MASK_SH_LIST_DCN_COMMON(mask_sh), \
+@@ -56,7 +59,9 @@
+ HUBBUB_SF(DCN_VM_FB_OFFSET, FB_OFFSET, mask_sh), \
+ HUBBUB_SF(DCN_VM_AGP_BOT, AGP_BOT, mask_sh), \
+ HUBBUB_SF(DCN_VM_AGP_TOP, AGP_TOP, mask_sh), \
+- HUBBUB_SF(DCN_VM_AGP_BASE, AGP_BASE, mask_sh)
++ HUBBUB_SF(DCN_VM_AGP_BASE, AGP_BASE, mask_sh), \
++ HUBBUB_SF(DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_MSB, DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_MSB, mask_sh), \
++ HUBBUB_SF(DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_LSB, DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_LSB, mask_sh)
+
+ struct dcn20_hubbub {
+ struct hubbub base;
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
+index 3bc75176bf2d..18de1aeaa51f 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
+@@ -1504,6 +1504,7 @@ static int dcn20_init_sys_ctx(struct dce_hwseq *hws, struct dc *dc, struct dc_ph
+ config.gart_config.page_table_start_addr = pa_config->gart_config.page_table_start_addr;
+ config.gart_config.page_table_end_addr = pa_config->gart_config.page_table_end_addr;
+ config.gart_config.page_table_base_addr = pa_config->gart_config.page_table_base_addr;
++ config.page_table_default_page_addr = pa_config->page_table_default_page_addr;
+
+ return dc->res_pool->hubbub->funcs->init_dchub_sys_ctx(dc->res_pool->hubbub, &config);
+ }
+diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h b/drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h
+index c1f29b1654d9..a6297219d7fc 100644
+--- a/drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h
++++ b/drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h
+@@ -80,6 +80,8 @@ struct dcn_hubbub_phys_addr_config {
+ uint64_t page_table_end_addr;
+ uint64_t page_table_base_addr;
+ } gart_config;
++
++ uint64_t page_table_default_page_addr;
+ };
+
+ struct dcn_hubbub_virt_addr_config {
+--
+2.17.1
+