@@ -700,152 +700,9 @@ static void mmhub_v1_8_reset_ras_error_count(struct amdgpu_device *adev)
700700 mmhub_v1_8_inst_reset_ras_error_count (adev , i );
701701}
702702
703- static const u32 mmhub_v1_8_mmea_err_status_reg [] __maybe_unused = {
704- regMMEA0_ERR_STATUS ,
705- regMMEA1_ERR_STATUS ,
706- regMMEA2_ERR_STATUS ,
707- regMMEA3_ERR_STATUS ,
708- regMMEA4_ERR_STATUS ,
709- };
710-
711- static void mmhub_v1_8_inst_query_ras_err_status (struct amdgpu_device * adev ,
712- uint32_t mmhub_inst )
713- {
714- uint32_t reg_value ;
715- uint32_t mmea_err_status_addr_dist ;
716- uint32_t i ;
717-
718- /* query mmea ras err status */
719- mmea_err_status_addr_dist = regMMEA1_ERR_STATUS - regMMEA0_ERR_STATUS ;
720- for (i = 0 ; i < ARRAY_SIZE (mmhub_v1_8_mmea_err_status_reg ); i ++ ) {
721- reg_value = RREG32_SOC15_OFFSET (MMHUB , mmhub_inst ,
722- regMMEA0_ERR_STATUS ,
723- i * mmea_err_status_addr_dist );
724- if (REG_GET_FIELD (reg_value , MMEA0_ERR_STATUS , SDP_RDRSP_STATUS ) ||
725- REG_GET_FIELD (reg_value , MMEA0_ERR_STATUS , SDP_WRRSP_STATUS ) ||
726- REG_GET_FIELD (reg_value , MMEA0_ERR_STATUS , SDP_RDRSP_DATAPARITY_ERROR )) {
727- dev_warn (adev -> dev ,
728- "Detected MMEA%d err in MMHUB%d, status: 0x%x\n" ,
729- i , mmhub_inst , reg_value );
730- }
731- }
732-
733- /* query mm_cane ras err status */
734- reg_value = RREG32_SOC15 (MMHUB , mmhub_inst , regMM_CANE_ERR_STATUS );
735- if (REG_GET_FIELD (reg_value , MM_CANE_ERR_STATUS , SDPM_RDRSP_STATUS ) ||
736- REG_GET_FIELD (reg_value , MM_CANE_ERR_STATUS , SDPM_WRRSP_STATUS ) ||
737- REG_GET_FIELD (reg_value , MM_CANE_ERR_STATUS , SDPM_RDRSP_DATAPARITY_ERROR )) {
738- dev_warn (adev -> dev ,
739- "Detected MM CANE err in MMHUB%d, status: 0x%x\n" ,
740- mmhub_inst , reg_value );
741- }
742- }
743-
744- static void mmhub_v1_8_query_ras_error_status (struct amdgpu_device * adev )
745- {
746- uint32_t inst_mask ;
747- uint32_t i ;
748-
749- if (!amdgpu_ras_is_supported (adev , AMDGPU_RAS_BLOCK__MMHUB )) {
750- dev_warn (adev -> dev , "MMHUB RAS is not supported\n" );
751- return ;
752- }
753-
754- inst_mask = adev -> aid_mask ;
755- for_each_inst (i , inst_mask )
756- mmhub_v1_8_inst_query_ras_err_status (adev , i );
757- }
758-
759- static void mmhub_v1_8_inst_reset_ras_err_status (struct amdgpu_device * adev ,
760- uint32_t mmhub_inst )
761- {
762- uint32_t mmea_cgtt_clk_cntl_addr_dist ;
763- uint32_t mmea_err_status_addr_dist ;
764- uint32_t reg_value ;
765- uint32_t i ;
766-
767- /* reset mmea ras err status */
768- mmea_cgtt_clk_cntl_addr_dist = regMMEA1_CGTT_CLK_CTRL - regMMEA0_CGTT_CLK_CTRL ;
769- mmea_err_status_addr_dist = regMMEA1_ERR_STATUS - regMMEA0_ERR_STATUS ;
770- for (i = 0 ; i < ARRAY_SIZE (mmhub_v1_8_mmea_err_status_reg ); i ++ ) {
771- /* force clk branch on for response path
772- * set MMEA0_CGTT_CLK_CTRL.SOFT_OVERRIDE_RETURN = 1
773- */
774- reg_value = RREG32_SOC15_OFFSET (MMHUB , mmhub_inst ,
775- regMMEA0_CGTT_CLK_CTRL ,
776- i * mmea_cgtt_clk_cntl_addr_dist );
777- reg_value = REG_SET_FIELD (reg_value , MMEA0_CGTT_CLK_CTRL ,
778- SOFT_OVERRIDE_RETURN , 1 );
779- WREG32_SOC15_OFFSET (MMHUB , mmhub_inst ,
780- regMMEA0_CGTT_CLK_CTRL ,
781- i * mmea_cgtt_clk_cntl_addr_dist ,
782- reg_value );
783-
784- /* set MMEA0_ERR_STATUS.CLEAR_ERROR_STATUS = 1 */
785- reg_value = RREG32_SOC15_OFFSET (MMHUB , mmhub_inst ,
786- regMMEA0_ERR_STATUS ,
787- i * mmea_err_status_addr_dist );
788- reg_value = REG_SET_FIELD (reg_value , MMEA0_ERR_STATUS ,
789- CLEAR_ERROR_STATUS , 1 );
790- WREG32_SOC15_OFFSET (MMHUB , mmhub_inst ,
791- regMMEA0_ERR_STATUS ,
792- i * mmea_err_status_addr_dist ,
793- reg_value );
794-
795- /* set MMEA0_CGTT_CLK_CTRL.SOFT_OVERRIDE_RETURN = 0 */
796- reg_value = RREG32_SOC15_OFFSET (MMHUB , mmhub_inst ,
797- regMMEA0_CGTT_CLK_CTRL ,
798- i * mmea_cgtt_clk_cntl_addr_dist );
799- reg_value = REG_SET_FIELD (reg_value , MMEA0_CGTT_CLK_CTRL ,
800- SOFT_OVERRIDE_RETURN , 0 );
801- WREG32_SOC15_OFFSET (MMHUB , mmhub_inst ,
802- regMMEA0_CGTT_CLK_CTRL ,
803- i * mmea_cgtt_clk_cntl_addr_dist ,
804- reg_value );
805- }
806-
807- /* reset mm_cane ras err status
808- * force clk branch on for response path
809- * set MM_CANE_ICG_CTRL.SOFT_OVERRIDE_ATRET = 1
810- */
811- reg_value = RREG32_SOC15 (MMHUB , mmhub_inst , regMM_CANE_ICG_CTRL );
812- reg_value = REG_SET_FIELD (reg_value , MM_CANE_ICG_CTRL ,
813- SOFT_OVERRIDE_ATRET , 1 );
814- WREG32_SOC15 (MMHUB , mmhub_inst , regMM_CANE_ICG_CTRL , reg_value );
815-
816- /* set MM_CANE_ERR_STATUS.CLEAR_ERROR_STATUS = 1 */
817- reg_value = RREG32_SOC15 (MMHUB , mmhub_inst , regMM_CANE_ERR_STATUS );
818- reg_value = REG_SET_FIELD (reg_value , MM_CANE_ERR_STATUS ,
819- CLEAR_ERROR_STATUS , 1 );
820- WREG32_SOC15 (MMHUB , mmhub_inst , regMM_CANE_ERR_STATUS , reg_value );
821-
822- /* set MM_CANE_ICG_CTRL.SOFT_OVERRIDE_ATRET = 0 */
823- reg_value = RREG32_SOC15 (MMHUB , mmhub_inst , regMM_CANE_ICG_CTRL );
824- reg_value = REG_SET_FIELD (reg_value , MM_CANE_ICG_CTRL ,
825- SOFT_OVERRIDE_ATRET , 0 );
826- WREG32_SOC15 (MMHUB , mmhub_inst , regMM_CANE_ICG_CTRL , reg_value );
827- }
828-
829- static void mmhub_v1_8_reset_ras_error_status (struct amdgpu_device * adev )
830- {
831- uint32_t inst_mask ;
832- uint32_t i ;
833-
834- if (!amdgpu_ras_is_supported (adev , AMDGPU_RAS_BLOCK__MMHUB )) {
835- dev_warn (adev -> dev , "MMHUB RAS is not supported\n" );
836- return ;
837- }
838-
839- inst_mask = adev -> aid_mask ;
840- for_each_inst (i , inst_mask )
841- mmhub_v1_8_inst_reset_ras_err_status (adev , i );
842- }
843-
844703static const struct amdgpu_ras_block_hw_ops mmhub_v1_8_ras_hw_ops = {
845704 .query_ras_error_count = mmhub_v1_8_query_ras_error_count ,
846705 .reset_ras_error_count = mmhub_v1_8_reset_ras_error_count ,
847- .query_ras_error_status = mmhub_v1_8_query_ras_error_status ,
848- .reset_ras_error_status = mmhub_v1_8_reset_ras_error_status ,
849706};
850707
851708struct amdgpu_mmhub_ras mmhub_v1_8_ras = {
0 commit comments