@@ -700,152 +700,9 @@ static void mmhub_v1_8_reset_ras_error_count(struct amdgpu_device *adev)
700
700
mmhub_v1_8_inst_reset_ras_error_count (adev , i );
701
701
}
702
702
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
-
844
703
static const struct amdgpu_ras_block_hw_ops mmhub_v1_8_ras_hw_ops = {
845
704
.query_ras_error_count = mmhub_v1_8_query_ras_error_count ,
846
705
.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 ,
849
706
};
850
707
851
708
struct amdgpu_mmhub_ras mmhub_v1_8_ras = {
0 commit comments