Hi, > this is a request for feedback about a lockdep-warning-free I2C > restart_handler. I would like to know whether someone had the problem already > and how the best and mainline friendliest solution looks like. > I have an embedded board with the PMIC chip DA9063 that is also used as a > voltage regulator for DVFS. For a clean reboot/reset of the system I have to > set the bit nSHUTDOWN in the PMIC via I2C. The restart_handler call chain > is of type > > static ATOMIC_NOTIFIER_HEAD(restart_handler_list); > > So any code running as a restart_handler cannot (should not) wait, for other > locks. When you use i2c_transfer/regmap you get lockdep warnings like [1]. Yes, this problem has come up occasionally. And it is not only about sleeping. IRQs are disabled, too. My idea was to introduce master_xfer_irqless or similar to struct i2c_algorithm. I even discussed this shortly with Mark Brown how to interact with regmap; but this was too long ago, so I forgot what we agreed on :( > Any comments? I just skimmed very lightly over the patchset. Yet, seeing an I2C client messing directly with 'struct adapter' breaks so many abstractions, it hits my instant-NACK nerve ;) Thanks, Wolfram
Attachment:
signature.asc
Description: PGP signature