diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3657-drm-amdgpu-nbio-add-functions-to-query-ras-specific-.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3657-drm-amdgpu-nbio-add-functions-to-query-ras-specific-.patch | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3657-drm-amdgpu-nbio-add-functions-to-query-ras-specific-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3657-drm-amdgpu-nbio-add-functions-to-query-ras-specific-.patch new file mode 100644 index 00000000..897ecf20 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3657-drm-amdgpu-nbio-add-functions-to-query-ras-specific-.patch @@ -0,0 +1,82 @@ +From cc0ce0007f8ee6749ec5e6ed63532fbfa65c1305 Mon Sep 17 00:00:00 2001 +From: Hawking Zhang <Hawking.Zhang@amd.com> +Date: Thu, 30 May 2019 11:57:20 +0800 +Subject: [PATCH 3657/4256] drm/amdgpu/nbio: add functions to query ras + specific interrupt status + +ras_controller_interrupt and err_event_interrupt are ras specific interrupts. +add functions to check their status and ack them if they are generated. both +funcitons should only be invoked in ISR when BIF ring is disabled or even not +initialized. + +Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.h | 2 ++ + drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c | 32 ++++++++++++++++++++++++ + 2 files changed, 34 insertions(+) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.h +index 0563476b1242..28417e485c58 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.h +@@ -77,6 +77,8 @@ struct amdgpu_nbio_funcs { + void (*init_registers)(struct amdgpu_device *adev); + void (*detect_hw_virt)(struct amdgpu_device *adev); + void (*remap_hdp_registers)(struct amdgpu_device *adev); ++ void (*handle_ras_controller_intr_no_bifring)(struct amdgpu_device *adev); ++ void (*handle_ras_err_event_athub_intr_no_bifring)(struct amdgpu_device *adev); + }; + + struct amdgpu_nbio { +diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c b/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c +index c416ab8ab1c3..6ecdd5e3ca3f 100644 +--- a/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c ++++ b/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c +@@ -315,6 +315,36 @@ static void nbio_v7_4_init_registers(struct amdgpu_device *adev) + WREG32_PCIE(smnPCIE_CI_CNTL, data); + } + ++static void nbio_v7_4_handle_ras_controller_intr_no_bifring(struct amdgpu_device *adev) ++{ ++ uint32_t bif_doorbell_intr_cntl; ++ ++ bif_doorbell_intr_cntl = RREG32_SOC15(NBIO, 0, mmBIF_DOORBELL_INT_CNTL); ++ if (REG_GET_FIELD(bif_doorbell_intr_cntl, ++ BIF_DOORBELL_INT_CNTL, RAS_CNTLR_INTERRUPT_STATUS)) { ++ /* driver has to clear the interrupt status when bif ring is disabled */ ++ bif_doorbell_intr_cntl = REG_SET_FIELD(bif_doorbell_intr_cntl, ++ BIF_DOORBELL_INT_CNTL, ++ RAS_CNTLR_INTERRUPT_CLEAR, 1); ++ WREG32_SOC15(NBIO, 0, mmBIF_DOORBELL_INT_CNTL, bif_doorbell_intr_cntl); ++ } ++} ++ ++static void nbio_v7_4_handle_ras_err_event_athub_intr_no_bifring(struct amdgpu_device *adev) ++{ ++ uint32_t bif_doorbell_intr_cntl; ++ ++ bif_doorbell_intr_cntl = RREG32_SOC15(NBIO, 0, mmBIF_DOORBELL_INT_CNTL); ++ if (REG_GET_FIELD(bif_doorbell_intr_cntl, ++ BIF_DOORBELL_INT_CNTL, RAS_ATHUB_ERR_EVENT_INTERRUPT_STATUS)) { ++ /* driver has to clear the interrupt status when bif ring is disabled */ ++ bif_doorbell_intr_cntl = REG_SET_FIELD(bif_doorbell_intr_cntl, ++ BIF_DOORBELL_INT_CNTL, ++ RAS_ATHUB_ERR_EVENT_INTERRUPT_CLEAR, 1); ++ WREG32_SOC15(NBIO, 0, mmBIF_DOORBELL_INT_CNTL, bif_doorbell_intr_cntl); ++ } ++} ++ + const struct amdgpu_nbio_funcs nbio_v7_4_funcs = { + .get_hdp_flush_req_offset = nbio_v7_4_get_hdp_flush_req_offset, + .get_hdp_flush_done_offset = nbio_v7_4_get_hdp_flush_done_offset, +@@ -336,4 +366,6 @@ const struct amdgpu_nbio_funcs nbio_v7_4_funcs = { + .init_registers = nbio_v7_4_init_registers, + .detect_hw_virt = nbio_v7_4_detect_hw_virt, + .remap_hdp_registers = nbio_v7_4_remap_hdp_registers, ++ .handle_ras_controller_intr_no_bifring = nbio_v7_4_handle_ras_controller_intr_no_bifring, ++ .handle_ras_err_event_athub_intr_no_bifring = nbio_v7_4_handle_ras_err_event_athub_intr_no_bifring, + }; +-- +2.17.1 + |