Re: [PATCH] arm64: dts: renesas: beacon: Fix memory corruption from TF-A

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Adam,

On Sat, Oct 9, 2021 at 1:13 PM Adam Ford <aford173@xxxxxxxxx> wrote:
> On Tue, Oct 5, 2021 at 9:30 AM Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote:
> > On Fri, Sep 24, 2021 at 7:19 PM Adam Ford <aford173@xxxxxxxxx> wrote:
> > > Trusted Firmware allocates a chunk of memory for a lossy compressor
> > > which makes the memory unavailable to Linux and any attempts to read/write
> > > from Linux result in memory corruption or a crash.  Fix this by reserving
> > > the section of memory marked as unavailable by TF-A.
> > >
> > > Fixes: a1d8a344f1ca ("arm64: dts: renesas: Introduce r8a774a1-beacon-rzg2m-kit")
> > > Signed-off-by: Adam Ford <aford173@xxxxxxxxx>
> >
> > Thanks for your patch!
> >
> > > --- a/arch/arm64/boot/dts/renesas/beacon-renesom-som.dtsi
> > > +++ b/arch/arm64/boot/dts/renesas/beacon-renesom-som.dtsi
> > > @@ -13,6 +13,17 @@ memory@48000000 {
> > >                 reg = <0x0 0x48000000 0x0 0x78000000>;
> > >         };
> > >
> > > +       reserved-memory {
> > > +               #address-cells = <2>;
> > > +               #size-cells = <2>;
> > > +               ranges;
> > > +
> > > +               lossy_decompress: lossy-decompress@54000000 {
> > > +                       reg = <0 0x54000000 0 0x03000000>; /* Reserved by TF-A */
> > > +                       no-map;
> > > +               };
> > > +       };
> > > +
> > >         osc_32k: osc_32k {
> > >                 compatible = "fixed-clock";
> > >                 #clock-cells = <0>;
> >
> > I believe these days it's the responsibility of TF-A to create these nodes
> > in the DTB, and pass that to U-Boot.
> >
> > What bootloader are you running?
>
> U-Boot 2021.04

Hmm, that's fairly recent. Marek?

> > Does "fdt addr $fdtcontroladdr ; fdt print" show the area as reserved?
>
> I see the memory nodes, but I don't see any reserved memory being
> carved out of it.
>
> > Does TF-A print something about reserving the memory?
>
> Yes:
>
> NOTICE:  BL2: DRAM Split is 2ch
> NOTICE:  BL2: QoS is default setting(rev.0.19)
> NOTICE:  BL2: DRAM refresh interval 1.95 usec
> NOTICE:  BL2: Periodic Write DQ Training
> NOTICE:  BL2: DRAM don't have ECC configuration
> NOTICE:  BL2: CH0: 400000000 - 47fffffff, 2 GiB
> NOTICE:  BL2: CH2: 600000000 - 67fffffff, 2 GiB
> NOTICE:  BL2: Lossy Decomp areas
> NOTICE:       Entry 0: DCMPAREACRAx:0x80000540 DCMPAREACRBx:0x570
> NOTICE:       Entry 1: DCMPAREACRAx:0x40000000 DCMPAREACRBx:0x0
> NOTICE:       Entry 2: DCMPAREACRAx:0x20000000 DCMPAREACRBx:0x0
> NOTICE:  BL2: FDT at 0xe631e588

OK.

> If I set the fdt address to 0xe631e588, I can see the memory nodes:
>
> => fdt addr 0xe631e588
> => fdt  print
> / {
>     compatible = "renesas,beacon", "renesas,r8a774a1";
>     #size-cells = <0x00000002>;
>     #address-cells = <0x00000002>;
>     reserved-memory {
>         lossy-decompression@54000000 {
>         renesas,formats = <0x00000000>;
>         no-map;
>         reg = <0x00000000 0x54000000 0x00000000 0x03000000>;
>         compatible = "renesas,lossy-decompression", "shared-dma-pool";
>     };

Good, so ATF passed the reserved region to U-Boot.

> };
> memory@48000000 {
>     reg = <0x00000000 0x48000000 0x00000000 0x78000000>;
>     device_type = "memory";
> };
> memory@600000000 {
>     reg = <0x00000006 0x00000000 0x00000000 0x80000000>;
>     device_type = "memory";
> };
> };
> =>
>
> I'll look into seeing how to append the memory nodes at 0xe631e588
> onto the device tree we're loading and passing to the kernel

Now U-Boot still has to pass this to the kernel...

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



[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux