On Thu, Jun 25, 2015 at 05:47:41PM +0200, Lars-Peter Clausen wrote:
On 06/25/2015 05:33 PM, Mark Brown wrote:
It depends on what you use as the key for the nested locking stuff. If you assign a key per regmap (casting the pointer to an integer, using an IDR or something). I don't know if that creates problems for the locking code, I'd not expect so but then I'd not have expected the problem in the first place.
The maximum number of subclasses is 8 per lockclass, so a IDR that increments which each created regmap instance wouldn't really work.
Oh, fail. Yeah, subclasses just won't work at all here and we need full classes.
And while on the other hand we probably wont have a hierarchy deeper than 8 nested regmap instances it is not trivial to figure out which instance is at which level.
Yes, indeed.
As far as I can tell we're likely to end up needing a key per regmap or something similar.
Since the number of lockdep classes itself is also limited we should avoid creating extra lockdep classes when we can. I think the approach which having the option of specifying a lockdep class in the regmap config will be ok. The only case it can't handle if we nest instances with the same config, but I don't really see valid use scases for that at the moment.
Oh, ffs. This just keeps getting better. I hadn't been aware of that limitation. We still have the problem that this needs to be something users can understand rather than something that's just "define something here in one of your drivers if you're running into problems with spurious warnings" here. That's always been the biggest problem here (once we got past the "what is this supposed to do in the first place?" issues).