1 | Just one patch for rc2, a revert. | 1 | v2: drop pvpanic-pci patches. |
---|---|---|---|
2 | 2 | ||
3 | -- PMM | 3 | The following changes since commit f1fcb6851aba6dd9838886dc179717a11e344a1c: |
4 | 4 | ||
5 | The following changes since commit 49aaac3548bc5a4632a14de939d5312b28dc1ba2: | 5 | Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2021-01-19' into staging (2021-01-19 11:57:07 +0000) |
6 | |||
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) | ||
8 | 6 | ||
9 | are available in the Git repository at: | 7 | are available in the Git repository at: |
10 | 8 | ||
11 | https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20211122 | 9 | https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20210119-1 |
12 | 10 | ||
13 | for you to fetch changes up to 4825eaae4fdd56fba0febdfbdd7bf9684ae3ee0d: | 11 | for you to fetch changes up to b93f4fbdc48283a39089469c44a5529d79dc40a8: |
14 | 12 | ||
15 | Revert "arm: tcg: Adhere to SMCCC 1.3 section 5.2" (2021-11-22 13:41:48 +0000) | 13 | docs: Build and install all the docs in a single manual (2021-01-19 15:45:14 +0000) |
16 | 14 | ||
17 | ---------------------------------------------------------------- | 15 | ---------------------------------------------------------------- |
18 | target-arm queue: | 16 | target-arm queue: |
19 | * revert SMCCC/PSCI change, as it regresses some usecases for some boards | 17 | * Implement IMPDEF pauth algorithm |
18 | * Support ARMv8.4-SEL2 | ||
19 | * Fix bug where we were truncating predicate vector lengths in SVE insns | ||
20 | * npcm7xx_adc-test: Fix memleak in adc_qom_set | ||
21 | * target/arm/m_helper: Silence GCC 10 maybe-uninitialized error | ||
22 | * docs: Build and install all the docs in a single manual | ||
20 | 23 | ||
21 | ---------------------------------------------------------------- | 24 | ---------------------------------------------------------------- |
25 | Gan Qixin (1): | ||
26 | npcm7xx_adc-test: Fix memleak in adc_qom_set | ||
27 | |||
22 | Peter Maydell (1): | 28 | Peter Maydell (1): |
23 | Revert "arm: tcg: Adhere to SMCCC 1.3 section 5.2" | 29 | docs: Build and install all the docs in a single manual |
24 | 30 | ||
25 | target/arm/psci.c | 35 +++++++++++++++++++++++++++++------ | 31 | Philippe Mathieu-Daudé (1): |
26 | 1 file changed, 29 insertions(+), 6 deletions(-) | 32 | target/arm/m_helper: Silence GCC 10 maybe-uninitialized error |
27 | 33 | ||
34 | Richard Henderson (7): | ||
35 | target/arm: Implement an IMPDEF pauth algorithm | ||
36 | target/arm: Add cpu properties to control pauth | ||
37 | target/arm: Use object_property_add_bool for "sve" property | ||
38 | target/arm: Introduce PREDDESC field definitions | ||
39 | target/arm: Update PFIRST, PNEXT for pred_desc | ||
40 | target/arm: Update ZIP, UZP, TRN for pred_desc | ||
41 | target/arm: Update REV, PUNPK for pred_desc | ||
42 | |||
43 | Rémi Denis-Courmont (19): | ||
44 | target/arm: remove redundant tests | ||
45 | target/arm: add arm_is_el2_enabled() helper | ||
46 | target/arm: use arm_is_el2_enabled() where applicable | ||
47 | target/arm: use arm_hcr_el2_eff() where applicable | ||
48 | target/arm: factor MDCR_EL2 common handling | ||
49 | target/arm: Define isar_feature function to test for presence of SEL2 | ||
50 | target/arm: add 64-bit S-EL2 to EL exception table | ||
51 | target/arm: add MMU stage 1 for Secure EL2 | ||
52 | target/arm: add ARMv8.4-SEL2 system registers | ||
53 | target/arm: handle VMID change in secure state | ||
54 | target/arm: do S1_ptw_translate() before address space lookup | ||
55 | target/arm: translate NS bit in page-walks | ||
56 | target/arm: generalize 2-stage page-walk condition | ||
57 | target/arm: secure stage 2 translation regime | ||
58 | target/arm: set HPFAR_EL2.NS on secure stage 2 faults | ||
59 | target/arm: revector to run-time pick target EL | ||
60 | target/arm: Implement SCR_EL2.EEL2 | ||
61 | target/arm: enable Secure EL2 in max CPU | ||
62 | target/arm: refactor vae1_tlbmask() | ||
63 | |||
64 | docs/conf.py | 46 ++++- | ||
65 | docs/devel/conf.py | 15 -- | ||
66 | docs/index.html.in | 17 -- | ||
67 | docs/interop/conf.py | 28 --- | ||
68 | docs/meson.build | 64 +++--- | ||
69 | docs/specs/conf.py | 16 -- | ||
70 | docs/system/arm/cpu-features.rst | 21 ++ | ||
71 | docs/system/conf.py | 28 --- | ||
72 | docs/tools/conf.py | 37 ---- | ||
73 | docs/user/conf.py | 15 -- | ||
74 | include/qemu/xxhash.h | 98 +++++++++ | ||
75 | target/arm/cpu-param.h | 2 +- | ||
76 | target/arm/cpu.h | 107 ++++++++-- | ||
77 | target/arm/internals.h | 45 +++++ | ||
78 | target/arm/cpu.c | 23 ++- | ||
79 | target/arm/cpu64.c | 65 ++++-- | ||
80 | target/arm/helper-a64.c | 8 +- | ||
81 | target/arm/helper.c | 414 ++++++++++++++++++++++++++------------- | ||
82 | target/arm/m_helper.c | 2 +- | ||
83 | target/arm/monitor.c | 1 + | ||
84 | target/arm/op_helper.c | 4 +- | ||
85 | target/arm/pauth_helper.c | 27 ++- | ||
86 | target/arm/sve_helper.c | 33 ++-- | ||
87 | target/arm/tlb_helper.c | 3 + | ||
88 | target/arm/translate-a64.c | 4 + | ||
89 | target/arm/translate-sve.c | 31 ++- | ||
90 | target/arm/translate.c | 36 +++- | ||
91 | tests/qtest/arm-cpu-features.c | 13 ++ | ||
92 | tests/qtest/npcm7xx_adc-test.c | 1 + | ||
93 | .gitlab-ci.yml | 4 +- | ||
94 | 30 files changed, 770 insertions(+), 438 deletions(-) | ||
95 | delete mode 100644 docs/devel/conf.py | ||
96 | delete mode 100644 docs/index.html.in | ||
97 | delete mode 100644 docs/interop/conf.py | ||
98 | delete mode 100644 docs/specs/conf.py | ||
99 | delete mode 100644 docs/system/conf.py | ||
100 | delete mode 100644 docs/tools/conf.py | ||
101 | delete mode 100644 docs/user/conf.py | ||
102 | diff view generated by jsdifflib |
Deleted patch | |||
---|---|---|---|
1 | This reverts commit 9fcd15b9193e819b6cc2fd0a45e3506148812bb4. | ||
2 | 1 | ||
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 |