Skip to contentSkip to conversation

arm64: Fix PSCI part of booting.txt

PATCH Superseded Geoff Levand 2 participants 4 messages Apr 17, 2014 Documentation

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 arm64: Fix PSCI part of booting.txt

Correct the PSCI booting text to match the requirements of the PSCI spec.

---
Hi Will,

Based on the PSCI doc (DEN 0022B.b), to use CPU_ON the cpu can only be powered down with CPU_OFF, and it seems from the doc that the code that calls CPU_OFF could be anywhere in memory, since once the CPU_OFF call is made the cpu is powered off and never executes any more instructions from memory. CPU_ON is given an entry_point_address parameter, which would be specific to the code calling CPU_ON.

Did I misunderstand something, or should we change this text as below?

-Geoff

 Documentation/arm64/booting.txt | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)
Documentation/arm64/booting.txt +6 -7
index beb754e..8f9074f 100644
@@ -167,13 +167,12 @@ following manner:
   value, so CPUs must convert the read value to their native endianness
   before jumping to it.
 
-- CPUs with a "psci" enable method should remain outside of
-  the kernel (i.e. outside of the regions of memory described to the
-  kernel in the memory node, or in a reserved area of memory described
-  to the kernel by a /memreserve/ region in the device tree).  The
-  kernel will issue CPU_ON calls as described in ARM document number ARM
-  DEN 0022A ("Power State Coordination Interface System Software on ARM
-  processors") to bring CPUs into the kernel.
+- CPUs with a "psci" enable method should use the PSCI CPU control
+  functions described in ARM document number ARM DEN 0022A or newer
+  ("Power State Coordination Interface System Software on ARM
+  processors").  The boot loader must power off these CPU's using the
+  PSCI CPU_OFF function.  The kernel will issue CPU_ON calls to bring
+  CPUs into the kernel.
 
   The device tree should contain a 'psci' node, as described in
   Documentation/devicetree/bindings/arm/psci.txt.
Signature · 1 line
1.9.1
#1 lore raw

PATCH 1/1 arm64: Fix PSCI part of booting.txt

Hi Geoff,

Quoted 16 lines · Geoff Levand

Correct the PSCI booting text to match the requirements of the PSCI spec.

---
Hi Will,

Based on the PSCI doc (DEN 0022B.b), to use CPU_ON the cpu can only be powered down with CPU_OFF, and it seems from the doc that the code that calls CPU_OFF could be anywhere in memory, since once the CPU_OFF call is made the cpu is powered off and never executes any more instructions from memory. CPU_ON is given an entry_point_address parameter, which would be specific to the code calling CPU_ON.

Quoted 2 lines

Did I misunderstand something, or should we change this text as below?

The current wording is my fault and is an artifact of working on the bootwrapper, where CPUs which are off from the perspective of the PSCI state machine are actually spinning within the PSCI implementation.

This admittedly is an implementation detail that does not matter to the kernel, and in a real implementation I would certainly not expect the CPUs to be spinning in a non-secure pen.

Quoted 15 lines
(quoted diff) +0 -1
-Geoff
 
 Documentation/arm64/booting.txt | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)
Documentation/arm64/booting.txt +0 -1
index beb754e..8f9074f 100644
@@ -167,13 +167,12 @@ following manner:
   value, so CPUs must convert the read value to their native endianness
   before jumping to it.
 
-- CPUs with a "psci" enable method should remain outside of

Documentation/arm64/booting.txt following manner: · line 173

Quoted 10 lines
Documentation/arm64/booting.txt +4 -6
-  the kernel (i.e. outside of the regions of memory described to the
-  kernel in the memory node, or in a reserved area of memory described
-  to the kernel by a /memreserve/ region in the device tree).  The
-  kernel will issue CPU_ON calls as described in ARM document number ARM
-  DEN 0022A ("Power State Coordination Interface System Software on ARM
-  processors") to bring CPUs into the kernel.
+- CPUs with a "psci" enable method should use the PSCI CPU control
+  functions described in ARM document number ARM DEN 0022A or newer
+  ("Power State Coordination Interface System Software on ARM
+  processors").  The boot loader must power off these CPU's using the

Nit: s/CPU's/CPUs/

Documentation/arm64/booting.txt following manner: · line 175

Quoted 2 lines
Documentation/arm64/booting.txt +2 -0
+  PSCI CPU_OFF function.  The kernel will issue CPU_ON calls to bring
+  CPUs into the kernel.

As the bootloader might never bring those secondaries online, it would be better to state that those secondaries are in OFF state from the perspective of the PSCI state machine.

Otherwise, this looks fine to me.

Cheers,
Mark.

#2 lore raw

PATCH v2 1/1 arm64: Fix PSCI part of booting.txt

In reply to Geoff Levand

Correct the PSCI booting text to reflect the requirements of the PSCI spec.

---
v2: Change to mention online CPUs only.

 Documentation/arm64/booting.txt | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)
(quoted diff) +0 -0

b/Documentation/arm64/booting.txt
index beb754e..e5b9c81 100644

Documentation/arm64/booting.txt +0 -5
@@ -167,13 +167,12 @@ following manner:
   value, so CPUs must convert the read value to their native endianness
   before jumping to it.
 
-- CPUs with a "psci" enable method should remain outside of
-  the kernel (i.e. outside of the regions of memory described to the
-  kernel in the memory node, or in a reserved area of memory described
-  to the kernel by a /memreserve/ region in the device tree).  The
-  kernel will issue CPU_ON calls as described in ARM document number

ARM
- DEN 0022A ("Power State Coordination Interface System Software on ARM
- processors") to bring CPUs into the kernel.

+- CPUs with a "psci" enable method should use the PSCI CPU control
+  functions described in ARM document number ARM DEN 0022A or newer
+  ("Power State Coordination Interface System Software on ARM
+  processors").  The boot loader must power off any of these CPUs that
+  have been brought online using the PSCI CPU_OFF function.  The kernel
+  will issue CPU_ON calls to bring CPUs into the kernel.

The device tree should contain a 'psci' node, as described in Documentation/devicetree/bindings/arm/psci.txt.

Signature · 1 line
1.9.1
#3 lore raw

PATCH v2 1/1 arm64: Fix PSCI part of booting.txt

Quoted 25 lines · Geoff Levand

Correct the PSCI booting text to reflect the requirements of the PSCI spec.

---
v2: Change to mention online CPUs only.

 Documentation/arm64/booting.txt | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)
Documentation/arm64/booting.txt +0 -5
index beb754e..e5b9c81 100644
@@ -167,13 +167,12 @@ following manner:
   value, so CPUs must convert the read value to their native endianness
   before jumping to it.
 
-- CPUs with a "psci" enable method should remain outside of
-  the kernel (i.e. outside of the regions of memory described to the
-  kernel in the memory node, or in a reserved area of memory described
-  to the kernel by a /memreserve/ region in the device tree).  The
-  kernel will issue CPU_ON calls as described in ARM document number

ARM

Documentation/arm64/booting.txt

Quoted 8 lines
Documentation/arm64/booting.txt +6 -2
-  DEN 0022A ("Power State Coordination Interface System Software on ARM
-  processors") to bring CPUs into the kernel.
+- CPUs with a "psci" enable method should use the PSCI CPU control
+  functions described in ARM document number ARM DEN 0022A or newer
+  ("Power State Coordination Interface System Software on ARM
+  processors").  The boot loader must power off any of these CPUs that
+  have been brought online using the PSCI CPU_OFF function.  The kernel
+  will issue CPU_ON calls to bring CPUs into the kernel.

Can we not just say that the bootloader must ensure these CPUs are in the OFF state? That covers those onlined then offlined by the bootloader and any others (which we don't currently define the state of).

Mark.