- vdpa: Fix bug where vdpa appliance migration does not resume after rollback - block: Parse filenames only when explicitly requested (CVE-2024-4467) - block: introduce bdrv_open_file_child() helper - iotests/270: Don't store data-file with json: prefix in image (CVE-2024-4467) - iotests/244: Don't store data-file with protocol in image (CVE-2024-4467) - qcow2: Don't open data_file with BDRV_O_NO_IO (CVE-2024-4467) - qcow2: Do not reopen data_file in invalidate_cache - hw/intc/arm_gic: Fix deactivation of SPI lines chery-pick from 7175a562f157d39725ab396e39c1e8e410d206b3 - vhost-user: Skip unnecessary duplicated VHOST_USER_SET_LOG_BASE requests - target/ppc: Split off common embedded TLB init cheery-pick from 581eea5d656b73c6532109f4ced4c73fd4e5fd47` - vdpa: fix vdpa device migrate rollback wrong when suspend device failed 1. - hw/virtio/virtio-pci:Support shadow device for virtio-net/blk/scsi devices Signed-off-by: Jiabo Feng <fengjiabo1@huawei.com> (cherry picked from commit ad45062d44e901468eeb8c4ac0729587daaa1e1f)
63 lines
2.4 KiB
Diff
63 lines
2.4 KiB
Diff
From 1a52d742851a68772aeb1d6d18bb57e58d78b2d2 Mon Sep 17 00:00:00 2001
|
|
From: guping <guping_yewu@cmss.chinamobile.com>
|
|
Date: Tue, 25 Jun 2024 11:33:54 +0000
|
|
Subject: [PATCH] hw/intc/arm_gic: Fix deactivation of SPI lines chery-pick
|
|
from 7175a562f157d39725ab396e39c1e8e410d206b3
|
|
|
|
Julien reported that he has seen strange behaviour when running
|
|
Xen on QEMU using GICv2. When Xen migrates a guest's vCPU from
|
|
one pCPU to another while the vCPU is handling an interrupt, the
|
|
guest is unable to properly deactivate interrupts.
|
|
|
|
Looking at it a little closer, our GICv2 model treats
|
|
deactivation of SPI lines as if they were PPI's, i.e banked per
|
|
CPU core. The state for active interrupts should only be banked
|
|
for PPI lines, not for SPI lines.
|
|
|
|
Make deactivation of SPI lines unbanked, similar to how we
|
|
handle writes to GICD_ICACTIVER.
|
|
|
|
Reported-by: default avatarJulien Grall <julien@xen.org>
|
|
Signed-off-by: default avatarEdgar E. Iglesias <edgar.iglesias@amd.com>
|
|
Message-id: 20240605143044.2029444-2-edgar.iglesias@gmail.com
|
|
Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
|
|
Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
|
|
|
|
Signed-off-by: guping <guping_yewu@cmss.chinamobile.com>
|
|
---
|
|
hw/intc/gic_internal.h | 8 ++++++--
|
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/hw/intc/gic_internal.h b/hw/intc/gic_internal.h
|
|
index 8d29b40ca1..8ddbf554c6 100644
|
|
--- a/hw/intc/gic_internal.h
|
|
+++ b/hw/intc/gic_internal.h
|
|
@@ -280,6 +280,8 @@ static inline void gic_set_active(GICState *s, int irq, int cpu)
|
|
|
|
static inline void gic_clear_active(GICState *s, int irq, int cpu)
|
|
{
|
|
+ unsigned int cm;
|
|
+
|
|
if (gic_is_vcpu(cpu)) {
|
|
uint32_t *entry = gic_get_lr_entry(s, irq, cpu);
|
|
GICH_LR_CLEAR_ACTIVE(*entry);
|
|
@@ -301,11 +303,13 @@ static inline void gic_clear_active(GICState *s, int irq, int cpu)
|
|
* the GIC is secure.
|
|
*/
|
|
if (!s->security_extn || GIC_DIST_TEST_GROUP(phys_irq, 1 << rcpu)) {
|
|
- GIC_DIST_CLEAR_ACTIVE(phys_irq, 1 << rcpu);
|
|
+ cm = phys_irq < GIC_INTERNAL ? 1 << rcpu : ALL_CPU_MASK;
|
|
+ GIC_DIST_CLEAR_ACTIVE(phys_irq, cm);
|
|
}
|
|
}
|
|
} else {
|
|
- GIC_DIST_CLEAR_ACTIVE(irq, 1 << cpu);
|
|
+ cm = irq < GIC_INTERNAL ? 1 << cpu : ALL_CPU_MASK;
|
|
+ GIC_DIST_CLEAR_ACTIVE(irq, cm);
|
|
}
|
|
}
|
|
|
|
--
|
|
2.41.0.windows.1
|
|
|