[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 11/78] arm/arm-powerctl: set NSACR.{CP11, CP10} bits in arm_set_c
From: |
Michael Roth |
Subject: |
[PATCH 11/78] arm/arm-powerctl: set NSACR.{CP11, CP10} bits in arm_set_cpu_on() |
Date: |
Tue, 16 Jun 2020 09:14:40 -0500 |
From: Niek Linnenbank <nieklinnenbank@gmail.com>
This change ensures that the FPU can be accessed in Non-Secure mode
when the CPU core is reset using the arm_set_cpu_on() function call.
The NSACR.{CP11,CP10} bits define the exception level required to
access the FPU in Non-Secure mode. Without these bits set, the CPU
will give an undefined exception trap on the first FPU access for the
secondary cores under Linux.
This is necessary because in this power-control codepath QEMU
is effectively emulating a bit of EL3 firmware, and has to set
the CPU up as the EL3 firmware would.
Fixes: fc1120a7f5
Cc: qemu-stable@nongnu.org
Signed-off-by: Niek Linnenbank <nieklinnenbank@gmail.com>
[PMM: added clarifying para to commit message]
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
(cherry picked from commit 0c7f8c43daf6556078e51de98aa13f069e505985)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
target/arm/arm-powerctl.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/target/arm/arm-powerctl.c b/target/arm/arm-powerctl.c
index f77a950db6..b064513d44 100644
--- a/target/arm/arm-powerctl.c
+++ b/target/arm/arm-powerctl.c
@@ -104,6 +104,9 @@ static void arm_set_cpu_on_async_work(CPUState
*target_cpu_state,
/* Processor is not in secure mode */
target_cpu->env.cp15.scr_el3 |= SCR_NS;
+ /* Set NSACR.{CP11,CP10} so NS can access the FPU */
+ target_cpu->env.cp15.nsacr |= 3 << 10;
+
/*
* If QEMU is providing the equivalent of EL3 firmware, then we need
* to make sure a CPU targeting EL2 comes out of reset with a
--
2.17.1
- [PATCH 00/78] Patch Round-up for stable 4.2.1, freeze on 2020-06-22, Michael Roth, 2020/06/16
- [PATCH 09/78] numa: properly check if numa is supported, Michael Roth, 2020/06/16
- [PATCH 10/78] backup-top: Begin drain earlier, Michael Roth, 2020/06/16
- [PATCH 11/78] arm/arm-powerctl: set NSACR.{CP11, CP10} bits in arm_set_cpu_on(),
Michael Roth <=
- [PATCH 12/78] arm/arm-powerctl: rebuild hflags after setting CP15 bits in arm_set_cpu_on(), Michael Roth, 2020/06/16
- [PATCH 13/78] hw/i386/pc: fix regression in parsing vga cmdline parameter, Michael Roth, 2020/06/16
- [PATCH 14/78] tests/ide-test: Create a single unit-test covering more PRDT cases, Michael Roth, 2020/06/16
- [PATCH 15/78] ide: Fix incorrect handling of some PRDTs in ide_dma_cb(), Michael Roth, 2020/06/16
- [PATCH 16/78] target/arm: Set ISSIs16Bit in make_issinfo, Michael Roth, 2020/06/16
- [PATCH 17/78] virtio: update queue size on guest write, Michael Roth, 2020/06/16
- [PATCH 18/78] virtio-mmio: update queue size on guest write, Michael Roth, 2020/06/16
- [PATCH 19/78] virtio: add ability to delete vq through a pointer, Michael Roth, 2020/06/16
- [PATCH 20/78] virtio: make virtio_delete_queue idempotent, Michael Roth, 2020/06/16
- [PATCH 01/78] block/nbd: extract the common cleanup code, Michael Roth, 2020/06/16