Skip to content

Commit 7ff730c

Browse files
wangxiaoningnxpalexandrebelloni
authored andcommitted
i3c: master: svc: enable the interrupt in the enable ibi function
If enable interrupt in the svc_i3c_master_bus_init() but do not call enable ibi in the device driver, it will cause a kernel dump in the svc_i3c_master_handle_ibi() when a slave start occurs on the i3c bus, because the data->ibi_pool is not initialized. So only enable the interrupt in svc_i3c_master_enable_ibi() function. Signed-off-by: Clark Wang <[email protected]> Reviewed-by: Miquel Raynal <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent c5d4587 commit 7ff730c

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

drivers/i3c/master/svc-i3c-master.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -569,8 +569,6 @@ static int svc_i3c_master_bus_init(struct i3c_master_controller *m)
569569
if (ret)
570570
goto rpm_out;
571571

572-
svc_i3c_master_enable_interrupts(master, SVC_I3C_MINT_SLVSTART);
573-
574572
rpm_out:
575573
pm_runtime_mark_last_busy(master->dev);
576574
pm_runtime_put_autosuspend(master->dev);
@@ -1400,6 +1398,8 @@ static int svc_i3c_master_enable_ibi(struct i3c_dev_desc *dev)
14001398
return ret;
14011399
}
14021400

1401+
svc_i3c_master_enable_interrupts(master, SVC_I3C_MINT_SLVSTART);
1402+
14031403
return i3c_master_enec_locked(m, dev->info.dyn_addr, I3C_CCC_EVENT_SIR);
14041404
}
14051405

@@ -1409,6 +1409,8 @@ static int svc_i3c_master_disable_ibi(struct i3c_dev_desc *dev)
14091409
struct svc_i3c_master *master = to_svc_i3c_master(m);
14101410
int ret;
14111411

1412+
svc_i3c_master_disable_interrupts(master);
1413+
14121414
ret = i3c_master_disec_locked(m, dev->info.dyn_addr, I3C_CCC_EVENT_SIR);
14131415

14141416
pm_runtime_mark_last_busy(master->dev);

0 commit comments

Comments
 (0)