Messages in this thread | | | Subject | Re: [PATCH] clk: Fix clk gate kunit test on big-endian CPUs | From | Stephen Boyd <> | Date | Fri, 27 Oct 2023 19:13:16 -0700 |
| |
Quoting Stephen Boyd (2023-10-27 15:58:21) > The clk gate kunit test checks that the implementation of the basic clk > gate reads and writes the proper bits in an MMIO register. The > implementation of the basic clk gate type uses writel() and readl() > which operate on little-endian registers. This test fails on big-endian > CPUs because the clk gate implementation writes to 'fake_reg' with > writel(), which converts the value to be written to little-endian before > storing the value in the fake register. When the test checks the bits in > the fake register on a big-endian machine it falsely assumes the format > of the register is also big-endian, when it is really always > little-endian. Suffice to say things don't work very well. > > Mark 'fake_reg' as __le32 and push through endian accessor fixes > wherever the value is inspected to make this test endian agnostic. > There's a CLK_GATE_BIG_ENDIAN flag for big-endian MMIO devices, which > this test isn't using. A follow-up patch will test with and without that > flag. > > Reported-by: Boqun Feng <boqun.feng@gmail.com> > Closes: https://lore.kernel.org/r/ZTLH5o0GlFBYsAHq@boqun-archlinux > Tested-by: Boqun Feng <boqun.feng@gmail.com> > Signed-off-by: Stephen Boyd <sboyd@kernel.org> > ---
Applied to clk-next
| |