[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 05/16] hw/arm: allwinner: Don't enable PSCI conduit when booting
From: |
Peter Maydell |
Subject: |
[PATCH 05/16] hw/arm: allwinner: Don't enable PSCI conduit when booting guest in EL3 |
Date: |
Thu, 27 Jan 2022 15:46:28 +0000 |
Change the allwinner-h3 based board to use the new boot.c
functionality to allow us to enable psci-conduit only if the guest is
being booted in EL1 or EL2, so that if the user runs guest EL3
firmware code our PSCI emulation doesn't get in its way.
To do this we stop setting the psci-conduit property on the CPU
objects in the SoC code, and instead set the psci_conduit field in
the arm_boot_info struct to tell the common boot loader code that
we'd like PSCI if the guest is starting at an EL that it makes sense
with.
This affects the orangepi-pc board.
This commit leaves the secondary CPUs in the powered-down state if
the guest is booting at EL3, which is the same behaviour as before
this commit. The secondaries can no longer be started by that EL3
code making a PSCI call but can still be started via the CPU
Configuration Module registers (which we model in
hw/misc/allwinner-cpucfg.c).
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
If anybody knows for definite that the secondaries should be
powered-down at startup for guest firmware, we can delete the TODO.
The allwinner-cpucfg.c code makes the reset value for the
REG_CPU*_RST_CTRL registers "CPUX_RESET_RELEASED", which might
suggest otherwise, but that could easily just be a QEMU error.
---
hw/arm/allwinner-h3.c | 9 ++++-----
hw/arm/orangepi.c | 1 +
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/hw/arm/allwinner-h3.c b/hw/arm/allwinner-h3.c
index f9b7ed18711..f54aff6d2d2 100644
--- a/hw/arm/allwinner-h3.c
+++ b/hw/arm/allwinner-h3.c
@@ -235,11 +235,10 @@ static void allwinner_h3_realize(DeviceState *dev, Error
**errp)
/* CPUs */
for (i = 0; i < AW_H3_NUM_CPUS; i++) {
- /* Provide Power State Coordination Interface */
- qdev_prop_set_int32(DEVICE(&s->cpus[i]), "psci-conduit",
- QEMU_PSCI_CONDUIT_SMC);
-
- /* Disable secondary CPUs */
+ /*
+ * Disable secondary CPUs. TODO: check whether this is what
+ * guest EL3 firmware would really expect.
+ */
qdev_prop_set_bit(DEVICE(&s->cpus[i]), "start-powered-off",
i > 0);
diff --git a/hw/arm/orangepi.c b/hw/arm/orangepi.c
index e7963822367..68fe9182414 100644
--- a/hw/arm/orangepi.c
+++ b/hw/arm/orangepi.c
@@ -105,6 +105,7 @@ static void orangepi_init(MachineState *machine)
}
orangepi_binfo.loader_start = h3->memmap[AW_H3_DEV_SDRAM];
orangepi_binfo.ram_size = machine->ram_size;
+ orangepi_binfo.psci_conduit = QEMU_PSCI_CONDUIT_SMC;
arm_load_kernel(ARM_CPU(first_cpu), machine, &orangepi_binfo);
}
--
2.25.1
- [PATCH 00/16] arm: Fix handling of unrecognized functions in PSCI emulation, Peter Maydell, 2022/01/27
- [PATCH 01/16] target/arm: make psci-conduit settable after realize, Peter Maydell, 2022/01/27
- [PATCH 02/16] cpu.c: Make start-powered-off settable after realize, Peter Maydell, 2022/01/27
- [PATCH 03/16] hw/arm/boot: Support setting psci-conduit based on guest EL, Peter Maydell, 2022/01/27
- [PATCH 04/16] hw/arm: imx: Don't enable PSCI conduit when booting guest in EL3, Peter Maydell, 2022/01/27
- [PATCH 05/16] hw/arm: allwinner: Don't enable PSCI conduit when booting guest in EL3,
Peter Maydell <=
- [PATCH 06/16] hw/arm/xlnx-zcu102: Don't enable PSCI conduit when booting guest in EL3, Peter Maydell, 2022/01/27
- [PATCH 07/16] hw/arm/versal: Let boot.c handle PSCI enablement, Peter Maydell, 2022/01/27
- [PATCH 08/16] hw/arm/virt: Let boot.c handle PSCI enablement, Peter Maydell, 2022/01/27
- [PATCH 09/16] hw/arm: highbank: For EL3 guests, don't enable PSCI, start all cores, Peter Maydell, 2022/01/27