[bug report] i3c: master: svc: Add Silvaco I3C master driver
Dan Carpenter
dan.carpenter at oracle.com
Mon Jul 26 00:33:19 PDT 2021
Hello Miquel Raynal,
The patch dd3c52846d59: "i3c: master: svc: Add Silvaco I3C master
driver" from Jan 21, 2021, leads to the following static checker
warning:
drivers/i3c/master/svc-i3c-master.c:690 svc_i3c_master_do_daa_locked()
warn: sleeping in atomic context
drivers/i3c/master/svc-i3c-master.c
670 static int svc_i3c_master_do_daa_locked(struct svc_i3c_master *master,
671 u8 *addrs, unsigned int *count)
672 {
673 u64 prov_id[SVC_I3C_MAX_DEVS] = {}, nacking_prov_id = 0;
674 unsigned int dev_nb = 0, last_addr = 0;
675 u32 reg;
676 int ret, i;
677
678 while (true) {
679 /* Enter/proceed with DAA */
680 writel(SVC_I3C_MCTRL_REQUEST_PROC_DAA |
681 SVC_I3C_MCTRL_TYPE_I3C |
682 SVC_I3C_MCTRL_IBIRESP_NACK |
683 SVC_I3C_MCTRL_DIR(SVC_I3C_MCTRL_DIR_WRITE),
684 master->regs + SVC_I3C_MCTRL);
685
686 /*
687 * Either one slave will send its ID, or the assignment process
688 * is done.
689 */
--> 690 ret = readl_poll_timeout(master->regs + SVC_I3C_MSTATUS, reg,
691 SVC_I3C_MSTATUS_RXPEND(reg) |
692 SVC_I3C_MSTATUS_MCTRLDONE(reg),
693 1, 1000);
^
This is called with a lock held and the code is doing a 1 us sleep.
694 if (ret)
695 return ret;
696
regards,
dan carpenter
More information about the linux-i3c
mailing list