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

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

 



On Tue, Oct 5, 2021 at 9:30 AM Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote:
>
> Hi Adam,
>
> 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

> 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

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";
    };
};
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

>
> Thanks!
>
> 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