1 | Last minute pullreq with one patch, fixing the GICv3 ICH_MISR_EL2.LRENP | 1 | Massively slimmed down v2: MemTag broke bsd-user, and the npcm7xx |
---|---|---|---|
2 | calculation. I went back-and-forth on whether to put this in, but: | 2 | ethernet device failed 'make check' on big-endian hosts. |
3 | * it's an effective regression from 6.1 (the bug itself has been | ||
4 | present since before then, but it was previously masked by the | ||
5 | other bug which we fixed in 9cee1efe92) | ||
6 | * I just realized it could cause a screaming maintenance interrupt | ||
7 | even for hypervisors like KVM that don't set LRENPIE | ||
8 | |||
9 | On the other hand this is very late and we haven't seen it be a | ||
10 | problem with any guest except Qualcomm's hypervisor. So if you want | ||
11 | to decide it's better not going in that's OK too. | ||
12 | |||
13 | Tested on the gitlab CI and with a local test of nested KVM. | ||
14 | 3 | ||
15 | -- PMM | 4 | -- PMM |
16 | 5 | ||
17 | The following changes since commit 7635eff97104242d618400e4b6746d0a5c97af82: | 6 | The following changes since commit 83339e21d05c824ebc9131d644f25c23d0e41ecf: |
18 | 7 | ||
19 | Merge tag 'block-pull-request' of https://gitlab.com/stefanha/qemu into staging (2021-12-06 11:18:06 -0800) | 8 | Merge remote-tracking branch 'remotes/stefanha-gitlab/tags/block-pull-request' into staging (2021-02-10 15:42:20 +0000) |
20 | 9 | ||
21 | are available in the Git repository at: | 10 | are available in the Git repository at: |
22 | 11 | ||
23 | https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20211207 | 12 | https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20210211-1 |
24 | 13 | ||
25 | for you to fetch changes up to 2958e5150dfa297dd5a51fe57a29156b8744f07f: | 14 | for you to fetch changes up to d3c1183ffeb71ca3a783eae3d7e1c51e71e8a621: |
26 | 15 | ||
27 | gicv3: fix ICH_MISR's LRENP computation (2021-12-07 15:30:08 +0000) | 16 | target/arm: Correctly initialize MDCR_EL2.HPMN (2021-02-11 19:48:09 +0000) |
28 | 17 | ||
29 | ---------------------------------------------------------------- | 18 | ---------------------------------------------------------------- |
30 | target-arm queue: | 19 | target-arm queue: |
31 | * Fix calculation of ICH_MISR_EL2.LRENP to avoid incorrect generation | 20 | * Correctly initialize MDCR_EL2.HPMN |
32 | of maintenance interrupts | 21 | * versal: Use nr_apu_cpus in favor of hard coding 2 |
22 | * accel/tcg: Add URL of clang bug to comment about our workaround | ||
23 | * Add support for FEAT_DIT, Data Independent Timing | ||
24 | * Remove GPIO from unimplemented NPCM7XX | ||
25 | * Fix SCR RES1 handling | ||
26 | * Don't migrate CPUARMState.features | ||
33 | 27 | ||
34 | ---------------------------------------------------------------- | 28 | ---------------------------------------------------------------- |
35 | Damien Hedde (1): | 29 | Aaron Lindsay (1): |
36 | gicv3: fix ICH_MISR's LRENP computation | 30 | target/arm: Don't migrate CPUARMState.features |
37 | 31 | ||
38 | hw/intc/arm_gicv3_cpuif.c | 3 ++- | 32 | Daniel Müller (1): |
39 | 1 file changed, 2 insertions(+), 1 deletion(-) | 33 | target/arm: Correctly initialize MDCR_EL2.HPMN |
40 | 34 | ||
35 | Edgar E. Iglesias (1): | ||
36 | hw/arm: versal: Use nr_apu_cpus in favor of hard coding 2 | ||
37 | |||
38 | Hao Wu (1): | ||
39 | hw/arm: Remove GPIO from unimplemented NPCM7XX | ||
40 | |||
41 | Mike Nawrocki (1): | ||
42 | target/arm: Fix SCR RES1 handling | ||
43 | |||
44 | Peter Maydell (2): | ||
45 | arm: Update infocenter.arm.com URLs | ||
46 | accel/tcg: Add URL of clang bug to comment about our workaround | ||
47 | |||
48 | Rebecca Cran (4): | ||
49 | target/arm: Add support for FEAT_DIT, Data Independent Timing | ||
50 | target/arm: Support AA32 DIT by moving PSTATE_SS from cpsr into env->pstate | ||
51 | target/arm: Set ID_AA64PFR0.DIT and ID_PFR0.DIT to 1 for "max" AA64 CPU | ||
52 | target/arm: Set ID_PFR0.DIT to 1 for "max" 32-bit CPU | ||
53 | |||
54 | include/hw/dma/pl080.h | 7 ++-- | ||
55 | include/hw/misc/arm_integrator_debug.h | 2 +- | ||
56 | include/hw/ssi/pl022.h | 5 ++- | ||
57 | target/arm/cpu.h | 17 ++++++++ | ||
58 | target/arm/internals.h | 6 +++ | ||
59 | accel/tcg/cpu-exec.c | 25 +++++++++--- | ||
60 | hw/arm/aspeed_ast2600.c | 2 +- | ||
61 | hw/arm/musca.c | 4 +- | ||
62 | hw/arm/npcm7xx.c | 8 ---- | ||
63 | hw/arm/xlnx-versal.c | 4 +- | ||
64 | hw/misc/arm_integrator_debug.c | 2 +- | ||
65 | hw/timer/arm_timer.c | 7 ++-- | ||
66 | target/arm/cpu.c | 4 ++ | ||
67 | target/arm/cpu64.c | 5 +++ | ||
68 | target/arm/helper-a64.c | 27 +++++++++++-- | ||
69 | target/arm/helper.c | 71 +++++++++++++++++++++++++++------- | ||
70 | target/arm/machine.c | 2 +- | ||
71 | target/arm/op_helper.c | 9 +---- | ||
72 | target/arm/translate-a64.c | 12 ++++++ | ||
73 | 19 files changed, 164 insertions(+), 55 deletions(-) | ||
74 | diff view generated by jsdifflib |
Deleted patch | |||
---|---|---|---|
1 | From: Damien Hedde <damien.hedde@greensocs.com> | ||
2 | 1 | ||
3 | According to the "Arm Generic Interrupt Controller Architecture | ||
4 | Specification GIC architecture version 3 and 4" (version G: page 345 | ||
5 | for aarch64 or 509 for aarch32): | ||
6 | LRENP bit of ICH_MISR is set when ICH_HCR.LRENPIE==1 and | ||
7 | ICH_HCR.EOIcount is non-zero. | ||
8 | |||
9 | When only LRENPIE was set (and EOI count was zero), the LRENP bit was | ||
10 | wrongly set and MISR value was wrong. | ||
11 | |||
12 | As an additional consequence, if an hypervisor set ICH_HCR.LRENPIE, | ||
13 | the maintenance interrupt was constantly fired. It happens since patch | ||
14 | 9cee1efe92 ("hw/intc: Set GIC maintenance interrupt level to only 0 or 1") | ||
15 | which fixed another bug about maintenance interrupt (most significant | ||
16 | bits of misr, including this one, were ignored in the interrupt trigger). | ||
17 | |||
18 | Fixes: 83f036fe3d ("hw/intc/arm_gicv3: Add accessors for ICH_ system registers") | ||
19 | Signed-off-by: Damien Hedde <damien.hedde@greensocs.com> | ||
20 | Reviewed-by: Peter Maydell <peter.maydell@linaro.org> | ||
21 | Message-id: 20211207094427.3473-1-damien.hedde@greensocs.com | ||
22 | Signed-off-by: Peter Maydell <peter.maydell@linaro.org> | ||
23 | --- | ||
24 | hw/intc/arm_gicv3_cpuif.c | 3 ++- | ||
25 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
26 | |||
27 | diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c | ||
28 | index XXXXXXX..XXXXXXX 100644 | ||
29 | --- a/hw/intc/arm_gicv3_cpuif.c | ||
30 | +++ b/hw/intc/arm_gicv3_cpuif.c | ||
31 | @@ -XXX,XX +XXX,XX @@ static uint32_t maintenance_interrupt_state(GICv3CPUState *cs) | ||
32 | /* Scan list registers and fill in the U, NP and EOI bits */ | ||
33 | eoi_maintenance_interrupt_state(cs, &value); | ||
34 | |||
35 | - if (cs->ich_hcr_el2 & (ICH_HCR_EL2_LRENPIE | ICH_HCR_EL2_EOICOUNT_MASK)) { | ||
36 | + if ((cs->ich_hcr_el2 & ICH_HCR_EL2_LRENPIE) && | ||
37 | + (cs->ich_hcr_el2 & ICH_HCR_EL2_EOICOUNT_MASK)) { | ||
38 | value |= ICH_MISR_EL2_LRENP; | ||
39 | } | ||
40 | |||
41 | -- | ||
42 | 2.25.1 | ||
43 | |||
44 | diff view generated by jsdifflib |