Re: [PATCH 3/3] regcache: flat: Add valid bit to this cache type

From: Mark Brown
Date: Tue Jan 09 2018 - 11:25:02 EST


On Mon, Jan 08, 2018 at 10:46:58AM -0600, Andrew F. Davis wrote:
> On 01/08/2018 10:36 AM, Mark Brown wrote:

> > Users are supposed to ensure that the cache is fully initialized either
> > by supplying defaults or writing to all the registers. Adding reads is
> > problematic since we'd suddenly start reading from hardware which might
> > not like it.

> This does not appear documented anywhere, and is counter to the basic
> definition of how a cache should work.

That's a bit strong; we just used the supplied defaults from bss after
all! Feel free to contribute documentation.

> If the hardware does not like reads then the registers should be marked
> as not readable in their regmap config, if they don't do this then they
> need fixed, not the cache scheme.

If you have the time and enthusiasm to do the audit that ensures that
this happens then go for it; we can't just go and cause regressions for
users who have devices that are currently working fine even if it's only
by chance.

> For my device, I cannot know beforehand what is in some registers as
> they change from device to device, and if I do a read to find out it
> will *always* return 0 as this cache type is broken. Other types work as
> expected, fetching the real initial value. My only alternative is to
> turn off cache, read, turn on cache, write, then continue as before..

That's one of the expected mechanisms for drivers to use.

> > Sounds like a good thing to do an audit and contribute fixes for...

> My guess is most assumed what I did and they only got lucky as all their
> device registers were default 0 anyway. In which case the results before
> and after this patch will be the same.

If your guess right that'll be easy.

Attachment: signature.asc
Description: PGP signature