1
v2: dropped a couple of cadence_gem changes to ID regs that
1
Just one patch for rc2, a revert.
2
caused new clang sanitizer warnings.
3
2
4
-- PMM
3
-- PMM
5
4
6
The following changes since commit dddb37495b844270088e68e3bf30b764d48d863f:
5
The following changes since commit 49aaac3548bc5a4632a14de939d5312b28dc1ba2:
7
6
8
Merge remote-tracking branch 'remotes/awilliam/tags/vfio-updates-20181015.0' into staging (2018-10-15 18:44:04 +0100)
7
Merge tag 'linux-user-for-6.2-pull-request' of git://github.com/vivier/qemu into staging (2021-11-22 10:33:13 +0100)
9
8
10
are available in the Git repository at:
9
are available in the Git repository at:
11
10
12
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20181016-1
11
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20211122
13
12
14
for you to fetch changes up to 2ef297af07196c29446556537861f8e7dfeeae7b:
13
for you to fetch changes up to 4825eaae4fdd56fba0febdfbdd7bf9684ae3ee0d:
15
14
16
coccinelle: new inplace-byteswaps.cocci to remove inplace-byteswapping calls (2018-10-16 17:14:55 +0100)
15
Revert "arm: tcg: Adhere to SMCCC 1.3 section 5.2" (2021-11-22 13:41:48 +0000)
17
16
18
----------------------------------------------------------------
17
----------------------------------------------------------------
19
target-arm queue:
18
target-arm queue:
20
* hw/arm/virt: add DT property /secure-chosen/stdout-path indicating secure UART
19
* revert SMCCC/PSCI change, as it regresses some usecases for some boards
21
* target/arm: Fix aarch64_sve_change_el wrt EL0
22
* target/arm: Define fields of ISAR registers
23
* target/arm: Align cortex-r5 id_isar0
24
* target/arm: Fix cortex-a7 id_isar0
25
* net/cadence_gem: Fix various bugs, add support for new
26
features that will be used by the Xilinx Versal board
27
* target-arm: powerctl: Enable HVC when starting CPUs to EL2
28
* target/arm: Add the Cortex-A72
29
* target/arm: Mark PMINTENCLR and PMINTENCLR_EL1 accesses as possibly doing IO
30
* target/arm: Mask PMOVSR writes based on supported counters
31
* target/arm: Initialize ARMMMUFaultInfo in v7m_stack_read/write
32
* coccinelle: new inplace-byteswaps.cocci to remove inplace-byteswapping calls
33
20
34
----------------------------------------------------------------
21
----------------------------------------------------------------
35
Aaron Lindsay (2):
22
Peter Maydell (1):
36
target/arm: Mark PMINTENCLR and PMINTENCLR_EL1 accesses as possibly doing IO
23
Revert "arm: tcg: Adhere to SMCCC 1.3 section 5.2"
37
target/arm: Mask PMOVSR writes based on supported counters
38
24
39
Edgar E. Iglesias (8):
25
target/arm/psci.c | 35 +++++++++++++++++++++++++++++------
40
net: cadence_gem: Disable TSU feature bit
26
1 file changed, 29 insertions(+), 6 deletions(-)
41
net: cadence_gem: Use uint32_t for 32bit descriptor words
42
net: cadence_gem: Add macro with max number of descriptor words
43
net: cadence_gem: Add support for extended descriptors
44
net: cadence_gem: Add support for selecting the DMA MemoryRegion
45
net: cadence_gem: Implement support for 64bit descriptor addresses
46
target-arm: powerctl: Enable HVC when starting CPUs to EL2
47
target/arm: Add the Cortex-A72
48
27
49
Jerome Forissier (1):
50
hw/arm/virt: add DT property /secure-chosen/stdout-path indicating secure UART
51
52
Peter Maydell (2):
53
target/arm: Initialize ARMMMUFaultInfo in v7m_stack_read/write
54
coccinelle: new inplace-byteswaps.cocci to remove inplace-byteswapping calls
55
56
Richard Henderson (4):
57
target/arm: Fix aarch64_sve_change_el wrt EL0
58
target/arm: Define fields of ISAR registers
59
target/arm: Align cortex-r5 id_isar0
60
target/arm: Fix cortex-a7 id_isar0
61
62
include/hw/net/cadence_gem.h | 7 +-
63
target/arm/cpu.h | 95 ++++++++++++++-
64
hw/arm/virt.c | 4 +
65
hw/net/cadence_gem.c | 185 ++++++++++++++++++++---------
66
target/arm/arm-powerctl.c | 10 ++
67
target/arm/cpu.c | 7 +-
68
target/arm/cpu64.c | 66 +++++++++-
69
target/arm/helper.c | 27 +++--
70
target/arm/op_helper.c | 6 +-
71
scripts/coccinelle/inplace-byteswaps.cocci | 65 ++++++++++
72
10 files changed, 402 insertions(+), 70 deletions(-)
73
create mode 100644 scripts/coccinelle/inplace-byteswaps.cocci
74
diff view generated by jsdifflib
New patch
1
This reverts commit 9fcd15b9193e819b6cc2fd0a45e3506148812bb4.
1
2
3
This change turns out to cause regressions, for instance on the
4
imx6ul boards as described here:
5
https://lore.kernel.org/qemu-devel/c8b89685-7490-328b-51a3-48711c140a84@tribudubois.net/
6
7
The primary cause of that regression is that the guest code running
8
at EL3 expects SMCs (not related to PSCI) to do what they would if
9
our PSCI emulation was not present at all, but after this change
10
they instead set a value in R0/X0 and continue.
11
12
We could fix that by a refactoring that allowed us to only turn on
13
the PSCI emulation if we weren't booting the guest at EL3, but there
14
is a more tangled problem with the highbank board, which:
15
(1) wants to enable PSCI emulation
16
(2) has a bit of guest code that it wants to run at EL3 and
17
to perform SMC calls that trap to the monitor vector table:
18
this is the boot stub code that is written to memory by
19
arm_write_secure_board_setup_dummy_smc() and which the
20
highbank board enables by setting bootinfo->secure_board_setup
21
22
We can't satisfy both of those and also have the PSCI emulation
23
handle all SMC instruction executions regardless of function
24
identifier value.
25
26
This is too tricky to try to sort out before 6.2 is released;
27
revert this commit so we can take the time to get it right in
28
the 7.0 release.
29
30
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
31
Message-id: 20211119163419.557623-1-peter.maydell@linaro.org
32
---
33
target/arm/psci.c | 35 +++++++++++++++++++++++++++++------
34
1 file changed, 29 insertions(+), 6 deletions(-)
35
36
diff --git a/target/arm/psci.c b/target/arm/psci.c
37
index XXXXXXX..XXXXXXX 100644
38
--- a/target/arm/psci.c
39
+++ b/target/arm/psci.c
40
@@ -XXX,XX +XXX,XX @@
41
42
bool arm_is_psci_call(ARMCPU *cpu, int excp_type)
43
{
44
- /*
45
- * Return true if the exception type matches the configured PSCI conduit.
46
- * This is called before the SMC/HVC instruction is executed, to decide
47
- * whether we should treat it as a PSCI call or with the architecturally
48
+ /* Return true if the r0/x0 value indicates a PSCI call and
49
+ * the exception type matches the configured PSCI conduit. This is
50
+ * called before the SMC/HVC instruction is executed, to decide whether
51
+ * we should treat it as a PSCI call or with the architecturally
52
* defined behaviour for an SMC or HVC (which might be UNDEF or trap
53
* to EL2 or to EL3).
54
*/
55
+ CPUARMState *env = &cpu->env;
56
+ uint64_t param = is_a64(env) ? env->xregs[0] : env->regs[0];
57
58
switch (excp_type) {
59
case EXCP_HVC:
60
@@ -XXX,XX +XXX,XX @@ bool arm_is_psci_call(ARMCPU *cpu, int excp_type)
61
return false;
62
}
63
64
- return true;
65
+ switch (param) {
66
+ case QEMU_PSCI_0_2_FN_PSCI_VERSION:
67
+ case QEMU_PSCI_0_2_FN_MIGRATE_INFO_TYPE:
68
+ case QEMU_PSCI_0_2_FN_AFFINITY_INFO:
69
+ case QEMU_PSCI_0_2_FN64_AFFINITY_INFO:
70
+ case QEMU_PSCI_0_2_FN_SYSTEM_RESET:
71
+ case QEMU_PSCI_0_2_FN_SYSTEM_OFF:
72
+ case QEMU_PSCI_0_1_FN_CPU_ON:
73
+ case QEMU_PSCI_0_2_FN_CPU_ON:
74
+ case QEMU_PSCI_0_2_FN64_CPU_ON:
75
+ case QEMU_PSCI_0_1_FN_CPU_OFF:
76
+ case QEMU_PSCI_0_2_FN_CPU_OFF:
77
+ case QEMU_PSCI_0_1_FN_CPU_SUSPEND:
78
+ case QEMU_PSCI_0_2_FN_CPU_SUSPEND:
79
+ case QEMU_PSCI_0_2_FN64_CPU_SUSPEND:
80
+ case QEMU_PSCI_0_1_FN_MIGRATE:
81
+ case QEMU_PSCI_0_2_FN_MIGRATE:
82
+ return true;
83
+ default:
84
+ return false;
85
+ }
86
}
87
88
void arm_handle_psci_call(ARMCPU *cpu)
89
@@ -XXX,XX +XXX,XX @@ void arm_handle_psci_call(ARMCPU *cpu)
90
break;
91
case QEMU_PSCI_0_1_FN_MIGRATE:
92
case QEMU_PSCI_0_2_FN_MIGRATE:
93
- default:
94
ret = QEMU_PSCI_RET_NOT_SUPPORTED;
95
break;
96
+ default:
97
+ g_assert_not_reached();
98
}
99
100
err:
101
--
102
2.25.1
103
104
diff view generated by jsdifflib