1
Last minute pullreq with one patch, fixing the GICv3 ICH_MISR_EL2.LRENP
1
v2: drop pvpanic-pci patches.
2
calculation. I went back-and-forth on whether to put this in, but:
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
2
9
On the other hand this is very late and we haven't seen it be a
3
The following changes since commit f1fcb6851aba6dd9838886dc179717a11e344a1c:
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
4
13
Tested on the gitlab CI and with a local test of nested KVM.
5
Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2021-01-19' into staging (2021-01-19 11:57:07 +0000)
14
15
-- PMM
16
17
The following changes since commit 7635eff97104242d618400e4b6746d0a5c97af82:
18
19
Merge tag 'block-pull-request' of https://gitlab.com/stefanha/qemu into staging (2021-12-06 11:18:06 -0800)
20
6
21
are available in the Git repository at:
7
are available in the Git repository at:
22
8
23
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20211207
9
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20210119-1
24
10
25
for you to fetch changes up to 2958e5150dfa297dd5a51fe57a29156b8744f07f:
11
for you to fetch changes up to b93f4fbdc48283a39089469c44a5529d79dc40a8:
26
12
27
gicv3: fix ICH_MISR's LRENP computation (2021-12-07 15:30:08 +0000)
13
docs: Build and install all the docs in a single manual (2021-01-19 15:45:14 +0000)
28
14
29
----------------------------------------------------------------
15
----------------------------------------------------------------
30
target-arm queue:
16
target-arm queue:
31
* Fix calculation of ICH_MISR_EL2.LRENP to avoid incorrect generation
17
* Implement IMPDEF pauth algorithm
32
of maintenance interrupts
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
33
23
34
----------------------------------------------------------------
24
----------------------------------------------------------------
35
Damien Hedde (1):
25
Gan Qixin (1):
36
gicv3: fix ICH_MISR's LRENP computation
26
npcm7xx_adc-test: Fix memleak in adc_qom_set
37
27
38
hw/intc/arm_gicv3_cpuif.c | 3 ++-
28
Peter Maydell (1):
39
1 file changed, 2 insertions(+), 1 deletion(-)
29
docs: Build and install all the docs in a single manual
40
30
31
Philippe Mathieu-Daudé (1):
32
target/arm/m_helper: Silence GCC 10 maybe-uninitialized error
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
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