Hello Neil Armstrong,
The patch b7778c46683c: "media: platform: meson: Add Amlogic Meson
G12A AO CEC Controller driver" from Apr 12, 2019, leads to the
following static checker warning:
drivers/media/platform/meson/ao-cec-g12a.c:377 meson_ao_cec_g12a_read()
error: scheduling with locks held: 'spin_lock:cec_reg_lock'
drivers/media/platform/meson/ao-cec-g12a.c
363 static int meson_ao_cec_g12a_read(void *context, unsigned int addr,
364 unsigned int *data)
365 {
366 struct meson_ao_cec_g12a_device *ao_cec = context;
367 u32 reg = FIELD_PREP(CECB_RW_ADDR, addr);
368 unsigned long flags;
369 int ret = 0;
370
371 spin_lock_irqsave(&ao_cec->cec_reg_lock, flags);
^^^^^^^^^^^^^^^^^
Atomic context.
372
373 ret = regmap_write(ao_cec->regmap, CECB_RW_REG, reg);
374 if (ret)
375 goto read_out;
376
377 ret = regmap_read_poll_timeout(ao_cec->regmap, CECB_RW_REG, reg,
378 !(reg & CECB_RW_BUS_BUSY),
379 5, 1000);
^
It sleeps for 5 usecs.
380 if (ret)
381 goto read_out;
382
383 ret = regmap_read(ao_cec->regmap, CECB_RW_REG, ®);
384
385 *data = FIELD_GET(CECB_RW_RD_DATA, reg);
386
387 read_out:
388 spin_unlock_irqrestore(&ao_cec->cec_reg_lock, flags);
389
390 return ret;
391 }
regards,
dan carpenter