* [PULL 0/5] target-arm queue
@ 2021-11-29 10:39 Peter Maydell
2021-11-29 10:39 ` [PULL 1/5] hw/arm/virt: Extend nested and mte checks to hvf Peter Maydell
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Peter Maydell @ 2021-11-29 10:39 UTC (permalink / raw)
To: qemu-devel
Hi; this is a collection of mostly GIC related patches for rc3.
The "Update cached state after LPI state changes" fix is important
and fixes what would otherwise be a regression since we enable the
ITS by default in the virt board now. The others are not regressions
but I think are OK for rc3 as they're fairly self contained (and two
of them are fixes to new-in-6.2 functionality).
thanks
-- PMM
The following changes since commit dd4b0de45965538f19bb40c7ddaaba384a8c613a:
Fix version for v6.2.0-rc2 release (2021-11-26 11:58:54 +0100)
are available in the Git repository at:
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20211129
for you to fetch changes up to 90feffad2aafe856ed2af75313b2c1669ba671e9:
hw/intc/arm_gicv3: fix handling of LPIs in list registers (2021-11-29 10:10:21 +0000)
----------------------------------------------------------------
target-arm queue:
* virt: Diagnose attempts to enable MTE or virt when using HVF accelerator
* GICv3 ITS: Allow clearing of ITS CTLR Enabled bit
* GICv3: Update cached state after LPI state changes
* GICv3: Fix handling of LPIs in list registers
----------------------------------------------------------------
Alexander Graf (1):
hw/arm/virt: Extend nested and mte checks to hvf
Peter Maydell (3):
hw/intc/arm_gicv3: Update cached state after LPI state changes
hw/intc/arm_gicv3: Add new gicv3_intid_is_special() function
hw/intc/arm_gicv3: fix handling of LPIs in list registers
Shashi Mallela (1):
hw/intc: cannot clear GICv3 ITS CTLR[Enabled] bit
hw/intc/gicv3_internal.h | 30 ++++++++++++++++++++++++++++++
hw/arm/virt.c | 15 +++++++++------
hw/intc/arm_gicv3.c | 6 ++++--
hw/intc/arm_gicv3_cpuif.c | 9 ++++-----
hw/intc/arm_gicv3_its.c | 7 ++++---
hw/intc/arm_gicv3_redist.c | 14 ++++++++++----
6 files changed, 61 insertions(+), 20 deletions(-)
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PULL 1/5] hw/arm/virt: Extend nested and mte checks to hvf
2021-11-29 10:39 [PULL 0/5] target-arm queue Peter Maydell
@ 2021-11-29 10:39 ` Peter Maydell
2021-11-29 10:39 ` [PULL 2/5] hw/intc: cannot clear GICv3 ITS CTLR[Enabled] bit Peter Maydell
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Peter Maydell @ 2021-11-29 10:39 UTC (permalink / raw)
To: qemu-devel
From: Alexander Graf <agraf@csgraf.de>
The virt machine has properties to enable MTE and Nested Virtualization
support. However, its check to ensure the backing accel implementation
supports it today only looks for KVM and bails out if it finds it.
Extend the checks to HVF as well as it does not support either today.
This will cause QEMU to print a useful error message rather than
silently ignoring the attempt by the user to enable either MTE or
the Virtualization extensions.
Reported-by: saar amar <saaramar5@gmail.com>
Signed-off-by: Alexander Graf <agraf@csgraf.de>
Message-id: 20211123122859.22452-1-agraf@csgraf.de
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
hw/arm/virt.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 369552ad45a..30da05dfe04 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -49,6 +49,7 @@
#include "sysemu/runstate.h"
#include "sysemu/tpm.h"
#include "sysemu/kvm.h"
+#include "sysemu/hvf.h"
#include "hw/loader.h"
#include "qapi/error.h"
#include "qemu/bitops.h"
@@ -1969,15 +1970,17 @@ static void machvirt_init(MachineState *machine)
exit(1);
}
- if (vms->virt && kvm_enabled()) {
- error_report("mach-virt: KVM does not support providing "
- "Virtualization extensions to the guest CPU");
+ if (vms->virt && (kvm_enabled() || hvf_enabled())) {
+ error_report("mach-virt: %s does not support providing "
+ "Virtualization extensions to the guest CPU",
+ kvm_enabled() ? "KVM" : "HVF");
exit(1);
}
- if (vms->mte && kvm_enabled()) {
- error_report("mach-virt: KVM does not support providing "
- "MTE to the guest CPU");
+ if (vms->mte && (kvm_enabled() || hvf_enabled())) {
+ error_report("mach-virt: %s does not support providing "
+ "MTE to the guest CPU",
+ kvm_enabled() ? "KVM" : "HVF");
exit(1);
}
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PULL 2/5] hw/intc: cannot clear GICv3 ITS CTLR[Enabled] bit
2021-11-29 10:39 [PULL 0/5] target-arm queue Peter Maydell
2021-11-29 10:39 ` [PULL 1/5] hw/arm/virt: Extend nested and mte checks to hvf Peter Maydell
@ 2021-11-29 10:39 ` Peter Maydell
2021-11-29 10:39 ` [PULL 3/5] hw/intc/arm_gicv3: Update cached state after LPI state changes Peter Maydell
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Peter Maydell @ 2021-11-29 10:39 UTC (permalink / raw)
To: qemu-devel
From: Shashi Mallela <shashi.mallela@linaro.org>
When Enabled bit is cleared in GITS_CTLR,ITS feature continues
to be enabled.This patch fixes the issue.
Signed-off-by: Shashi Mallela <shashi.mallela@linaro.org>
Tested-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20211124182246.67691-1-shashi.mallela@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
hw/intc/arm_gicv3_its.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/hw/intc/arm_gicv3_its.c b/hw/intc/arm_gicv3_its.c
index 84bcbb5f56a..c929a9cb5c3 100644
--- a/hw/intc/arm_gicv3_its.c
+++ b/hw/intc/arm_gicv3_its.c
@@ -896,13 +896,14 @@ static bool its_writel(GICv3ITSState *s, hwaddr offset,
switch (offset) {
case GITS_CTLR:
- s->ctlr |= (value & ~(s->ctlr));
-
- if (s->ctlr & ITS_CTLR_ENABLED) {
+ if (value & R_GITS_CTLR_ENABLED_MASK) {
+ s->ctlr |= ITS_CTLR_ENABLED;
extract_table_params(s);
extract_cmdq_params(s);
s->creadr = 0;
process_cmdq(s);
+ } else {
+ s->ctlr &= ~ITS_CTLR_ENABLED;
}
break;
case GITS_CBASER:
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PULL 3/5] hw/intc/arm_gicv3: Update cached state after LPI state changes
2021-11-29 10:39 [PULL 0/5] target-arm queue Peter Maydell
2021-11-29 10:39 ` [PULL 1/5] hw/arm/virt: Extend nested and mte checks to hvf Peter Maydell
2021-11-29 10:39 ` [PULL 2/5] hw/intc: cannot clear GICv3 ITS CTLR[Enabled] bit Peter Maydell
@ 2021-11-29 10:39 ` Peter Maydell
2021-11-29 10:39 ` [PULL 4/5] hw/intc/arm_gicv3: Add new gicv3_intid_is_special() function Peter Maydell
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Peter Maydell @ 2021-11-29 10:39 UTC (permalink / raw)
To: qemu-devel
The logic of gicv3_redist_update() is as follows:
* it must be called in any code path that changes the state of
(only) redistributor interrupts
* if it finds a redistributor interrupt that is (now) higher
priority than the previous highest-priority pending interrupt,
then this must be the new highest-priority pending interrupt
* if it does *not* find a better redistributor interrupt, then:
- if the previous state was "no interrupts pending" then
the new state is still "no interrupts pending"
- if the previous best interrupt was not a redistributor
interrupt then that remains the best interrupt
- if the previous best interrupt *was* a redistributor interrupt,
then the new best interrupt must be some non-redistributor
interrupt, but we don't know which so must do a full scan
In commit 17fb5e36aabd4b2c125 we effectively added the LPI interrupts
as a kind of "redistributor interrupt" for this purpose, by adding
cs->hpplpi to the set of things that gicv3_redist_update() considers
before it gives up and decides to do a full scan of distributor
interrupts. However we didn't quite get this right:
* the condition check for "was the previous best interrupt a
redistributor interrupt" must be updated to include LPIs
in what it considers to be redistributor interrupts
* every code path which updates the LPI state which
gicv3_redist_update() checks must also call gicv3_redist_update():
this is cs->hpplpi and the GICR_CTLR ENABLE_LPIS bit
This commit fixes this by:
* correcting the test on cs->hppi.irq in gicv3_redist_update()
* making gicv3_redist_update_lpi() always call gicv3_redist_update()
* introducing a new gicv3_redist_update_lpi_only() for the one
callsite (the post-load hook) which must not call
gicv3_redist_update()
* making gicv3_redist_lpi_pending() always call gicv3_redist_update(),
either directly or via gicv3_redist_update_lpi()
* removing a couple of now-unnecessary calls to gicv3_redist_update()
from some callers of those two functions
* calling gicv3_redist_update() when the GICR_CTLR ENABLE_LPIS
bit is cleared
(This means that the not-file-local gicv3_redist_* LPI related
functions now all take care of the updates of internally cached
GICv3 information, in the same way the older functions
gicv3_redist_set_irq() and gicv3_redist_send_sgi() do.)
The visible effect of this bug was that when the guest acknowledged
an LPI by reading ICC_IAR1_EL1, we marked it as not pending in the
LPI data structure but still left it in cs->hppi so we would offer it
to the guest again. In particular for setups using an emulated GICv3
and ITS and using devices which use LPIs (ie PCI devices) a Linux
guest would complain "irq 54: nobody cared" and then hang. (The hang
was intermittent, presumably depending on the timing between
different interrupts arriving and being completed.)
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Tested-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 20211124202005.989935-1-peter.maydell@linaro.org
---
hw/intc/gicv3_internal.h | 17 +++++++++++++++++
hw/intc/arm_gicv3.c | 6 ++++--
hw/intc/arm_gicv3_redist.c | 14 ++++++++++----
3 files changed, 31 insertions(+), 6 deletions(-)
diff --git a/hw/intc/gicv3_internal.h b/hw/intc/gicv3_internal.h
index a0369dace7b..70f34ee4955 100644
--- a/hw/intc/gicv3_internal.h
+++ b/hw/intc/gicv3_internal.h
@@ -463,7 +463,24 @@ void gicv3_dist_set_irq(GICv3State *s, int irq, int level);
void gicv3_redist_set_irq(GICv3CPUState *cs, int irq, int level);
void gicv3_redist_process_lpi(GICv3CPUState *cs, int irq, int level);
void gicv3_redist_lpi_pending(GICv3CPUState *cs, int irq, int level);
+/**
+ * gicv3_redist_update_lpi:
+ * @cs: GICv3CPUState
+ *
+ * Scan the LPI pending table and recalculate the highest priority
+ * pending LPI and also the overall highest priority pending interrupt.
+ */
void gicv3_redist_update_lpi(GICv3CPUState *cs);
+/**
+ * gicv3_redist_update_lpi_only:
+ * @cs: GICv3CPUState
+ *
+ * Scan the LPI pending table and recalculate cs->hpplpi only,
+ * without calling gicv3_redist_update() to recalculate the overall
+ * highest priority pending interrupt. This should be called after
+ * an incoming migration has loaded new state.
+ */
+void gicv3_redist_update_lpi_only(GICv3CPUState *cs);
void gicv3_redist_send_sgi(GICv3CPUState *cs, int grp, int irq, bool ns);
void gicv3_init_cpuif(GICv3State *s);
diff --git a/hw/intc/arm_gicv3.c b/hw/intc/arm_gicv3.c
index c6282984b1e..9f5f815db9b 100644
--- a/hw/intc/arm_gicv3.c
+++ b/hw/intc/arm_gicv3.c
@@ -186,7 +186,9 @@ static void gicv3_redist_update_noirqset(GICv3CPUState *cs)
* interrupt has reduced in priority and any other interrupt could
* now be the new best one).
*/
- if (!seenbetter && cs->hppi.prio != 0xff && cs->hppi.irq < GIC_INTERNAL) {
+ if (!seenbetter && cs->hppi.prio != 0xff &&
+ (cs->hppi.irq < GIC_INTERNAL ||
+ cs->hppi.irq >= GICV3_LPI_INTID_START)) {
gicv3_full_update_noirqset(cs->gic);
}
}
@@ -354,7 +356,7 @@ static void arm_gicv3_post_load(GICv3State *s)
* pending interrupt, but don't set IRQ or FIQ lines.
*/
for (i = 0; i < s->num_cpu; i++) {
- gicv3_redist_update_lpi(&s->cpu[i]);
+ gicv3_redist_update_lpi_only(&s->cpu[i]);
}
gicv3_full_update_noirqset(s);
/* Repopulate the cache of GICv3CPUState pointers for target CPUs */
diff --git a/hw/intc/arm_gicv3_redist.c b/hw/intc/arm_gicv3_redist.c
index 424e7e28a86..c8ff3eca085 100644
--- a/hw/intc/arm_gicv3_redist.c
+++ b/hw/intc/arm_gicv3_redist.c
@@ -256,9 +256,10 @@ static MemTxResult gicr_writel(GICv3CPUState *cs, hwaddr offset,
cs->gicr_ctlr |= GICR_CTLR_ENABLE_LPIS;
/* Check for any pending interr in pending table */
gicv3_redist_update_lpi(cs);
- gicv3_redist_update(cs);
} else {
cs->gicr_ctlr &= ~GICR_CTLR_ENABLE_LPIS;
+ /* cs->hppi might have been an LPI; recalculate */
+ gicv3_redist_update(cs);
}
}
return MEMTX_OK;
@@ -571,7 +572,7 @@ static void gicv3_redist_check_lpi_priority(GICv3CPUState *cs, int irq)
}
}
-void gicv3_redist_update_lpi(GICv3CPUState *cs)
+void gicv3_redist_update_lpi_only(GICv3CPUState *cs)
{
/*
* This function scans the LPI pending table and for each pending
@@ -614,6 +615,12 @@ void gicv3_redist_update_lpi(GICv3CPUState *cs)
}
}
+void gicv3_redist_update_lpi(GICv3CPUState *cs)
+{
+ gicv3_redist_update_lpi_only(cs);
+ gicv3_redist_update(cs);
+}
+
void gicv3_redist_lpi_pending(GICv3CPUState *cs, int irq, int level)
{
/*
@@ -651,6 +658,7 @@ void gicv3_redist_lpi_pending(GICv3CPUState *cs, int irq, int level)
*/
if (level) {
gicv3_redist_check_lpi_priority(cs, irq);
+ gicv3_redist_update(cs);
} else {
if (irq == cs->hpplpi.irq) {
gicv3_redist_update_lpi(cs);
@@ -673,8 +681,6 @@ void gicv3_redist_process_lpi(GICv3CPUState *cs, int irq, int level)
/* set/clear the pending bit for this irq */
gicv3_redist_lpi_pending(cs, irq, level);
-
- gicv3_redist_update(cs);
}
void gicv3_redist_set_irq(GICv3CPUState *cs, int irq, int level)
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PULL 4/5] hw/intc/arm_gicv3: Add new gicv3_intid_is_special() function
2021-11-29 10:39 [PULL 0/5] target-arm queue Peter Maydell
` (2 preceding siblings ...)
2021-11-29 10:39 ` [PULL 3/5] hw/intc/arm_gicv3: Update cached state after LPI state changes Peter Maydell
@ 2021-11-29 10:39 ` Peter Maydell
2021-11-29 10:39 ` [PULL 5/5] hw/intc/arm_gicv3: fix handling of LPIs in list registers Peter Maydell
2021-11-29 12:53 ` [PULL 0/5] target-arm queue Richard Henderson
5 siblings, 0 replies; 7+ messages in thread
From: Peter Maydell @ 2021-11-29 10:39 UTC (permalink / raw)
To: qemu-devel
The GICv3/v4 pseudocode has a function IsSpecial() which returns true
if passed a "special" interrupt ID number (anything between 1020 and
1023 inclusive). We open-code this condition in a couple of places,
so abstract it out into a new function gicv3_intid_is_special().
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
---
hw/intc/gicv3_internal.h | 13 +++++++++++++
hw/intc/arm_gicv3_cpuif.c | 4 ++--
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/hw/intc/gicv3_internal.h b/hw/intc/gicv3_internal.h
index 70f34ee4955..b9c37453b04 100644
--- a/hw/intc/gicv3_internal.h
+++ b/hw/intc/gicv3_internal.h
@@ -411,6 +411,19 @@ FIELD(MAPC, RDBASE, 16, 32)
/* Functions internal to the emulated GICv3 */
+/**
+ * gicv3_intid_is_special:
+ * @intid: interrupt ID
+ *
+ * Return true if @intid is a special interrupt ID (1020 to
+ * 1023 inclusive). This corresponds to the GIC spec pseudocode
+ * IsSpecial() function.
+ */
+static inline bool gicv3_intid_is_special(int intid)
+{
+ return intid >= INTID_SECURE && intid <= INTID_SPURIOUS;
+}
+
/**
* gicv3_redist_update:
* @cs: GICv3CPUState for this redistributor
diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c
index 3fe5de8ad7d..7fbc36ff41b 100644
--- a/hw/intc/arm_gicv3_cpuif.c
+++ b/hw/intc/arm_gicv3_cpuif.c
@@ -997,7 +997,7 @@ static uint64_t icc_iar0_read(CPUARMState *env, const ARMCPRegInfo *ri)
intid = icc_hppir0_value(cs, env);
}
- if (!(intid >= INTID_SECURE && intid <= INTID_SPURIOUS)) {
+ if (!gicv3_intid_is_special(intid)) {
icc_activate_irq(cs, intid);
}
@@ -1020,7 +1020,7 @@ static uint64_t icc_iar1_read(CPUARMState *env, const ARMCPRegInfo *ri)
intid = icc_hppir1_value(cs, env);
}
- if (!(intid >= INTID_SECURE && intid <= INTID_SPURIOUS)) {
+ if (!gicv3_intid_is_special(intid)) {
icc_activate_irq(cs, intid);
}
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PULL 5/5] hw/intc/arm_gicv3: fix handling of LPIs in list registers
2021-11-29 10:39 [PULL 0/5] target-arm queue Peter Maydell
` (3 preceding siblings ...)
2021-11-29 10:39 ` [PULL 4/5] hw/intc/arm_gicv3: Add new gicv3_intid_is_special() function Peter Maydell
@ 2021-11-29 10:39 ` Peter Maydell
2021-11-29 12:53 ` [PULL 0/5] target-arm queue Richard Henderson
5 siblings, 0 replies; 7+ messages in thread
From: Peter Maydell @ 2021-11-29 10:39 UTC (permalink / raw)
To: qemu-devel
It is valid for an OS to put virtual interrupt ID values into the
list registers ICH_LR<n> which are greater than 1023. This
corresponds to (for example) KVM using the in-kernel emulated ITS to
give a (nested) guest an ITS. LPIs are delivered by the L1 kernel to
the L2 guest via the list registers in the same way as non-LPI
interrupts.
QEMU's code for handling writes to ICV_IARn (which happen when the L2
guest acknowledges an interrupt) and to ICV_EOIRn (which happen at
the end of the interrupt) did not consider LPIs, so it would
incorrectly treat interrupt IDs above 1023 as invalid. Fix this by
using the correct condition, which is gicv3_intid_is_special().
Note that the condition in icv_dir_write() is correct -- LPIs
are not valid there and so we want to ignore both "special" ID
values and LPIs.
(In the pseudocode this logic is in:
- VirtualReadIAR0(), VirtualReadIAR1(), which call IsSpecial()
- VirtualWriteEOIR0(), VirtualWriteEOIR1(), which call
VirtualIdentifierValid(data, TRUE) meaning "LPIs OK"
- VirtualWriteDIR(), which calls VirtualIdentifierValid(data, FALSE)
meaning "LPIs not OK")
This bug doesn't seem to have any visible effect on Linux L2 guests
most of the time, because the two bugs cancel each other out: we
neither mark the interrupt active nor deactivate it. However it does
mean that the L2 vCPU priority while the LPI handler is running will
not be correct, so the interrupt handler could be unexpectedly
interrupted by a different interrupt.
(NB: this has nothing to do with using QEMU's emulated ITS.)
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Marc Zyngier <maz@kernel.org>
---
hw/intc/arm_gicv3_cpuif.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c
index 7fbc36ff41b..7fba9314508 100644
--- a/hw/intc/arm_gicv3_cpuif.c
+++ b/hw/intc/arm_gicv3_cpuif.c
@@ -653,7 +653,7 @@ static uint64_t icv_iar_read(CPUARMState *env, const ARMCPRegInfo *ri)
if (thisgrp == grp && icv_hppi_can_preempt(cs, lr)) {
intid = ich_lr_vintid(lr);
- if (intid < INTID_SECURE) {
+ if (!gicv3_intid_is_special(intid)) {
icv_activate_irq(cs, idx, grp);
} else {
/* Interrupt goes from Pending to Invalid */
@@ -1265,8 +1265,7 @@ static void icv_eoir_write(CPUARMState *env, const ARMCPRegInfo *ri,
trace_gicv3_icv_eoir_write(ri->crm == 8 ? 0 : 1,
gicv3_redist_affid(cs), value);
- if (irq >= GICV3_MAXIRQ) {
- /* Also catches special interrupt numbers and LPIs */
+ if (gicv3_intid_is_special(irq)) {
return;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PULL 0/5] target-arm queue
2021-11-29 10:39 [PULL 0/5] target-arm queue Peter Maydell
` (4 preceding siblings ...)
2021-11-29 10:39 ` [PULL 5/5] hw/intc/arm_gicv3: fix handling of LPIs in list registers Peter Maydell
@ 2021-11-29 12:53 ` Richard Henderson
5 siblings, 0 replies; 7+ messages in thread
From: Richard Henderson @ 2021-11-29 12:53 UTC (permalink / raw)
To: Peter Maydell, qemu-devel
On 11/29/21 11:39 AM, Peter Maydell wrote:
> Hi; this is a collection of mostly GIC related patches for rc3.
> The "Update cached state after LPI state changes" fix is important
> and fixes what would otherwise be a regression since we enable the
> ITS by default in the virt board now. The others are not regressions
> but I think are OK for rc3 as they're fairly self contained (and two
> of them are fixes to new-in-6.2 functionality).
>
> thanks
> -- PMM
>
> The following changes since commit dd4b0de45965538f19bb40c7ddaaba384a8c613a:
>
> Fix version for v6.2.0-rc2 release (2021-11-26 11:58:54 +0100)
>
> are available in the Git repository at:
>
> https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20211129
>
> for you to fetch changes up to 90feffad2aafe856ed2af75313b2c1669ba671e9:
>
> hw/intc/arm_gicv3: fix handling of LPIs in list registers (2021-11-29 10:10:21 +0000)
>
> ----------------------------------------------------------------
> target-arm queue:
> * virt: Diagnose attempts to enable MTE or virt when using HVF accelerator
> * GICv3 ITS: Allow clearing of ITS CTLR Enabled bit
> * GICv3: Update cached state after LPI state changes
> * GICv3: Fix handling of LPIs in list registers
>
> ----------------------------------------------------------------
> Alexander Graf (1):
> hw/arm/virt: Extend nested and mte checks to hvf
>
> Peter Maydell (3):
> hw/intc/arm_gicv3: Update cached state after LPI state changes
> hw/intc/arm_gicv3: Add new gicv3_intid_is_special() function
> hw/intc/arm_gicv3: fix handling of LPIs in list registers
>
> Shashi Mallela (1):
> hw/intc: cannot clear GICv3 ITS CTLR[Enabled] bit
>
> hw/intc/gicv3_internal.h | 30 ++++++++++++++++++++++++++++++
> hw/arm/virt.c | 15 +++++++++------
> hw/intc/arm_gicv3.c | 6 ++++--
> hw/intc/arm_gicv3_cpuif.c | 9 ++++-----
> hw/intc/arm_gicv3_its.c | 7 ++++---
> hw/intc/arm_gicv3_redist.c | 14 ++++++++++----
> 6 files changed, 61 insertions(+), 20 deletions(-)
Applied, thanks.
r~
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-11-29 12:54 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-29 10:39 [PULL 0/5] target-arm queue Peter Maydell
2021-11-29 10:39 ` [PULL 1/5] hw/arm/virt: Extend nested and mte checks to hvf Peter Maydell
2021-11-29 10:39 ` [PULL 2/5] hw/intc: cannot clear GICv3 ITS CTLR[Enabled] bit Peter Maydell
2021-11-29 10:39 ` [PULL 3/5] hw/intc/arm_gicv3: Update cached state after LPI state changes Peter Maydell
2021-11-29 10:39 ` [PULL 4/5] hw/intc/arm_gicv3: Add new gicv3_intid_is_special() function Peter Maydell
2021-11-29 10:39 ` [PULL 5/5] hw/intc/arm_gicv3: fix handling of LPIs in list registers Peter Maydell
2021-11-29 12:53 ` [PULL 0/5] target-arm queue Richard Henderson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).