@@ -1406,6 +1406,12 @@ static int sdma_v4_4_2_sw_init(struct amdgpu_ip_block *ip_block)
14061406 & adev -> sdma .srbm_write_irq );
14071407 if (r )
14081408 return r ;
1409+
1410+ r = amdgpu_irq_add_id (adev , sdma_v4_4_2_seq_to_irq_id (i ),
1411+ SDMA0_4_0__SRCID__SDMA_CTXEMPTY ,
1412+ & adev -> sdma .ctxt_empty_irq );
1413+ if (r )
1414+ return r ;
14091415 }
14101416
14111417 for (i = 0 ; i < adev -> sdma .num_instances ; i ++ ) {
@@ -1814,6 +1820,16 @@ static int sdma_v4_4_2_process_srbm_write_irq(struct amdgpu_device *adev,
18141820 return 0 ;
18151821}
18161822
1823+ static int sdma_v4_4_2_process_ctxt_empty_irq (struct amdgpu_device * adev ,
1824+ struct amdgpu_irq_src * source ,
1825+ struct amdgpu_iv_entry * entry )
1826+ {
1827+ /* There is nothing useful to be done here, only kept for debug */
1828+ dev_dbg_ratelimited (adev -> dev , "SDMA context empty interrupt" );
1829+ sdma_v4_4_2_print_iv_entry (adev , entry );
1830+ return 0 ;
1831+ }
1832+
18171833static void sdma_v4_4_2_inst_update_medium_grain_light_sleep (
18181834 struct amdgpu_device * adev , bool enable , uint32_t inst_mask )
18191835{
@@ -2096,6 +2112,10 @@ static const struct amdgpu_irq_src_funcs sdma_v4_4_2_srbm_write_irq_funcs = {
20962112 .process = sdma_v4_4_2_process_srbm_write_irq ,
20972113};
20982114
2115+ static const struct amdgpu_irq_src_funcs sdma_v4_4_2_ctxt_empty_irq_funcs = {
2116+ .process = sdma_v4_4_2_process_ctxt_empty_irq ,
2117+ };
2118+
20992119static void sdma_v4_4_2_set_irq_funcs (struct amdgpu_device * adev )
21002120{
21012121 adev -> sdma .trap_irq .num_types = adev -> sdma .num_instances ;
@@ -2104,6 +2124,7 @@ static void sdma_v4_4_2_set_irq_funcs(struct amdgpu_device *adev)
21042124 adev -> sdma .doorbell_invalid_irq .num_types = adev -> sdma .num_instances ;
21052125 adev -> sdma .pool_timeout_irq .num_types = adev -> sdma .num_instances ;
21062126 adev -> sdma .srbm_write_irq .num_types = adev -> sdma .num_instances ;
2127+ adev -> sdma .ctxt_empty_irq .num_types = adev -> sdma .num_instances ;
21072128
21082129 adev -> sdma .trap_irq .funcs = & sdma_v4_4_2_trap_irq_funcs ;
21092130 adev -> sdma .illegal_inst_irq .funcs = & sdma_v4_4_2_illegal_inst_irq_funcs ;
@@ -2112,6 +2133,7 @@ static void sdma_v4_4_2_set_irq_funcs(struct amdgpu_device *adev)
21122133 adev -> sdma .doorbell_invalid_irq .funcs = & sdma_v4_4_2_doorbell_invalid_irq_funcs ;
21132134 adev -> sdma .pool_timeout_irq .funcs = & sdma_v4_4_2_pool_timeout_irq_funcs ;
21142135 adev -> sdma .srbm_write_irq .funcs = & sdma_v4_4_2_srbm_write_irq_funcs ;
2136+ adev -> sdma .ctxt_empty_irq .funcs = & sdma_v4_4_2_ctxt_empty_irq_funcs ;
21152137}
21162138
21172139/**
0 commit comments