Re: "BUG: Invalid wait context" in ls_extirq_set_type

From: Mark Brown
Date: Wed Aug 25 2021 - 11:54:57 EST


On Wed, Aug 25, 2021 at 04:54:38PM +0300, Vladimir Oltean wrote:

> - Use a hwspinlock. Never used one, don't know what it's about?!

hwspinlocks are for locking around things that are shared with other
processors not running Linux where the other processors might also take
the lock, they're very specialist.

> Either way, there seems to be no option to use a raw spinlock. "Disable
> locking" sounds like the best bet, but regmap offers regmap_bulk_read()
> and regmap_bulk_write() and those would be broken without locking taken
> at the syscon driver level, I think?

If you disable locks at the regmap level something needs to ensure that
there's no concurrency issues which for a MFD if any of the registers
are shared sounds off.

> I did google for fixes for this kind of issues that were sent in the
> past, but in my limited search I did not find any other driver which
> uses regmap while under a raw spinlock.

No problem with adding raw spinlocks to regmap, I think it's just nobody
needed them before. I've not looked at the problem in sufficient detail
to figure out if that's actually the best solution here but from an initial
pass through it looks reasonableit looks reasonable

Attachment: signature.asc
Description: PGP signature