Re: [PATCH] Revert "mfd: syscon: Remove repetition of the regmap_get_val_endian()"

From: Linus Torvalds
Date: Sat Oct 08 2022 - 12:45:44 EST


On Sat, Oct 8, 2022 at 8:47 AM Jason A. Donenfeld <Jason@xxxxxxxxx> wrote:
>
> This reverts commit 72a95859728a7866522e6633818bebc1c2519b17. It broke
> reboots on big-endian MIPS and MIPS64 malta QEMU instances, which use
> the syscon driver. Little-endian is not effected, which means likely
> it's important to handle regmap_get_val_endian() in this function after
> all.

Hmm. The revert may indeed be the right thing to do, but we're still
early in the release process, so let's go through the channels.

I do note that commit 72a95859728a points to commit 0dbdb76c0ca8
("regmap: mmio: Parse endianness definitions from DT") as the reason
why it's not necessary any more, but that commit

(a) doesn't seem to set config->val_format_endian (which somebody may
care about). It does set the operation pointers etc, but doesn't set
that field.

(b) it uses regmap_get_val_endian(), which doesn't actually even look
at the OF properties unless config->val_format_endian is
REGMAP_ENDIAN_DEFAULT

so the code that commit 72a95859728a removed was actually quite a bit
different from the code in commit 0dbdb76c0ca8.

Maybe the problem is related to those semantic differences, and is
easy to fix for somebody who knows what the heck that stuff is doing.

And if not, please just send me the revert through the normal channels. Ok?

Linus