diff mbox

arm64: dts: marvell: armada-37xx: reserve memory for ATF

Message ID 20180421140342.25082-1-miquel.raynal@bootlin.com (mailing list archive)
State New, archived
Headers show

Commit Message

Miquel Raynal April 21, 2018, 2:03 p.m. UTC
From: Victor Gu <xigu@marvell.com>

The PSCI area should be reserved in Linux for PSCI operations such as
suspend/resume.

Reserve 2MiB of memory which matches the area used by ATF (BL1, BL2,
BL3x, see [1] in ATF source code). This covers all PSCI code and data
area and is 2MiB aligned, which is required by Linux for huge pages
handling.

[1] plat/marvell/a3700/common/include/platform_def.h

Signed-off-by: Victor Gu <xigu@marvell.com>
[miquel.raynal@bootlin.com: reword of commit message]
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
 arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Miquel Raynal April 23, 2018, 8:31 a.m. UTC | #1
Hi Thomas,

On Sat, 21 Apr 2018 16:18:59 +0200, Thomas Petazzoni
<thomas.petazzoni@bootlin.com> wrote:

> Hello,
> 
> On Sat, 21 Apr 2018 16:03:42 +0200, Miquel Raynal wrote:
> > From: Victor Gu <xigu@marvell.com>
> > 
> > The PSCI area should be reserved in Linux for PSCI operations such as
> > suspend/resume.
> > 
> > Reserve 2MiB of memory which matches the area used by ATF (BL1, BL2,
> > BL3x, see [1] in ATF source code). This covers all PSCI code and data
> > area and is 2MiB aligned, which is required by Linux for huge pages
> > handling.
> > 
> > [1] plat/marvell/a3700/common/include/platform_def.h
> > 
> > Signed-off-by: Victor Gu <xigu@marvell.com>
> > [miquel.raynal@bootlin.com: reword of commit message]
> > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>  
> 
> Shouldn't this be done automatically by the bootloader, before passing
> the DTB to the kernel ?

I am working with a 2017.09 mainline U-Boot.

I did not know the bootloader was supposedly in charge of that. But
what if it fails doing it? Fixing the bootloader is one thing, I assume
very few people would update it. Is it worth keeping this in Linux DT?

Thanks,
Miquèl
Thomas Petazzoni April 23, 2018, 12:49 p.m. UTC | #2
Hello,

On Mon, 23 Apr 2018 10:31:27 +0200, Miquel Raynal wrote:

> > Shouldn't this be done automatically by the bootloader, before passing
> > the DTB to the kernel ?  
> 
> I am working with a 2017.09 mainline U-Boot.
> 
> I did not know the bootloader was supposedly in charge of that.

I thought it should be the case, but I indeed see nothing in U-Boot
that does that, except for OMAP2 platforms.

> But what if it fails doing it?

Well if something fails in the boot process, the platform fails to boot.
I find this question a bit weird/silly. It's like "and what if the user
used the wrong DT for the wrong platform ?"

> Fixing the bootloader is one thing, I assume very few people would
> update it. Is it worth keeping this in Linux DT?

The issue I see with having this in the Linux DT is that depending on
the bootloader, the memory area that is used to keep the PSCI firmware
may very well be different. It's really not a property of the HW
itself, but a pure software choice of the bootloader. For example, are
you sure the mainline U-Boot puts the PSCI firmware at the same place
as the vendor U-Boot ?

What are other platforms doing to solve this problem ?

Best regards,

Thomas
Miquel Raynal April 23, 2018, 3:15 p.m. UTC | #3
Hi Thomas,

On Mon, 23 Apr 2018 14:49:40 +0200, Thomas Petazzoni
<thomas.petazzoni@bootlin.com> wrote:

> Hello,
> 
> On Mon, 23 Apr 2018 10:31:27 +0200, Miquel Raynal wrote:
> 
> > > Shouldn't this be done automatically by the bootloader, before passing
> > > the DTB to the kernel ?    
> > 
> > I am working with a 2017.09 mainline U-Boot.
> > 
> > I did not know the bootloader was supposedly in charge of that.  
> 
> I thought it should be the case, but I indeed see nothing in U-Boot
> that does that, except for OMAP2 platforms.
> 
> > But what if it fails doing it?  
> 
> Well if something fails in the boot process, the platform fails to boot.
> I find this question a bit weird/silly. It's like "and what if the user
> used the wrong DT for the wrong platform ?"

Sorry, I meant "what if the bootloader does not do it?", in other
words: currently the bootloader does not do it, let's assume it should,
shall we take into account that it does not and add this code to Linux
too, or shall we say to people "upgrade your bootloader/ATF"? But from
the rest of your answer I assume the latter is the right approach.

> 
> > Fixing the bootloader is one thing, I assume very few people would
> > update it. Is it worth keeping this in Linux DT?  
> 
> The issue I see with having this in the Linux DT is that depending on
> the bootloader, the memory area that is used to keep the PSCI firmware
> may very well be different. It's really not a property of the HW
> itself, but a pure software choice of the bootloader. For example, are
> you sure the mainline U-Boot puts the PSCI firmware at the same place
> as the vendor U-Boot ?
> 
> What are other platforms doing to solve this problem ?

I will also check if it is actually U-Boot or ATF choice. My
understanding is that ATF's handle the PSCI firmware but U-Boot should
propagate a reserved node (for this firmware) in Linux's DTB. Let me
check all of that.

> 
> Best regards,
> 
> Thomas


Thanks,
Miquèl
diff mbox

Patch

diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
index 97207a61bc79..429ce91bfc39 100644
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
@@ -22,6 +22,17 @@ 
 		serial1 = &uart1;
 	};
 
+	reserved-memory {
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges;
+
+		psci-area@4000000 {
+			reg = <0 0x4000000 0 0x200000>;
+			no-map;
+		};
+	};
+
 	cpus {
 		#address-cells = <1>;
 		#size-cells = <0>;