Re: [PATCH v2 1/2] maple_tree: Disable mas_wr_append() when other readers are possible

From: Geert Uytterhoeven
Date: Wed Sep 06 2023 - 15:06:54 EST


Hi Liam,

On Wed, Sep 6, 2023 at 5:24 PM Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> wrote:
> * Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> [230829 12:42]:
> > On Fri, 18 Aug 2023, Liam R. Howlett wrote:
> > > The current implementation of append may cause duplicate data and/or
> > > incorrect ranges to be returned to a reader during an update. Although
> > > this has not been reported or seen, disable the append write operation
> > > while the tree is in rcu mode out of an abundance of caution.
>
> ...
> > >
> > > Fixes: 54a611b60590 ("Maple Tree: add new data structure")
> > > Cc: stable@xxxxxxxxxxxxxxx
> > > Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx>
> >
> > Thanks for your patch, which is now commit cfeb6ae8bcb96ccf
> > ("maple_tree: disable mas_wr_append() when other readers are
> > possible") in v6.5, and is being backported to stable.
> >
> > On Renesas RZ/A1 and RZ/A2 (single-core Cortex-A9), this causes the
> > following warning:
> >
> > clocksource: timer@e803b000: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 28958491609 ns
> > sched_clock: 32 bits at 66MHz, resolution 15ns, wraps every 32537631224ns
> > /soc/timer@e803b000: used for clocksource
> > /soc/timer@e803c000: used for clock events
> > +------------[ cut here ]------------
> > +WARNING: CPU: 0 PID: 0 at init/main.c:992 start_kernel+0x2f0/0x480
> > +Interrupts were enabled early
>
> Note that the maple tree is involved in tracking the interrupts, see
> kernel/irq/irqdesc.c irq_insert_desc(), etc.
>
> > +CPU: 0 PID: 0 Comm: swapper Not tainted 6.5.0-rza2mevb-10197-g99b80d6b92b5 #237
>
> I cannot find commit id 99b80d6b92b5.

That's my local tree, based on renesas-drivers-2023-08-29-v6.5.

>
> > +Hardware name: Generic R7S9210 (Flattened Device Tree)
> > + unwind_backtrace from show_stack+0x10/0x14
> > + show_stack from dump_stack_lvl+0x24/0x3c
> > + dump_stack_lvl from __warn+0x74/0xb8
> > + __warn from warn_slowpath_fmt+0x78/0xb0
> > + warn_slowpath_fmt from start_kernel+0x2f0/0x480
> > + start_kernel from 0x0
> > +---[ end trace 0000000000000000 ]---
> > Console: colour dummy device 80x30
> > printk: console [tty0] enabled
> > Calibrating delay loop (skipped) preset value.. 1056.00 BogoMIPS (lpj=5280000)
> >
> > Reverting this commit fixes the issue.
>
> I have set up testing with qemu for powerpc 32b, and reverting this
> patch does not fix it for me. Did you revert the patch or bisect to the
> issue?

I did bisect the issue (on RZ/A) to cfeb6ae8bcb96ccf.
Reverting that commit on top of my local tree fixed the issue.

> It also happens on 0e0e9bd5f7b9 (I ran git checkout cfeb6ae8bcb96ccf^ to
> get the commit immediately before cfeb6ae8bcb96ccf).

That is not the case on Renesas RZ/A (which is arm32).

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds