File disable-reentrancy-guard-on-ppc.patch of Package qemu.30221
From: Olaf Hering <olaf@aepfle.de>
Date: Wed, 6 Sep 2023 12:34:56 +0000
Subject: disable reentrancy guard on ppc
References: bsc#1190011 (CVE-2021-3750)
40p and g3beige will hang forever with these messages:
qemu-system-ppc: warning: Blocked re-entrant IO on MemoryRegion: pci-conf-idx at addr: 0x0
qemu-system-ppc64: warning: Blocked re-entrant IO on MemoryRegion: lpc-hc at addr: 0x34
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
hw/pci-host/prep.c | 2 ++
hw/ppc/pnv_lpc.c | 2 ++
2 files changed, 4 insertions(+)
diff --git a/hw/pci-host/prep.c b/hw/pci-host/prep.c
index ceff1a8e0fe4d8c8aa8023c3bd0c..9376b0082c7c55df6ae1a8b52473 100644
--- a/hw/pci-host/prep.c
+++ b/hw/pci-host/prep.c
@@ -261,10 +261,12 @@ static void raven_pcihost_realizefn(DeviceState *d, Error **errp)
memory_region_init_io(&h->conf_mem, OBJECT(h), &pci_host_conf_le_ops, s,
"pci-conf-idx", 4);
+ h->conf_mem.disable_reentrancy_guard = true;
memory_region_add_subregion(&s->pci_io, 0xcf8, &h->conf_mem);
memory_region_init_io(&h->data_mem, OBJECT(h), &pci_host_data_le_ops, s,
"pci-conf-data", 4);
+ h->data_mem.disable_reentrancy_guard = true;
memory_region_add_subregion(&s->pci_io, 0xcfc, &h->data_mem);
memory_region_init_io(&h->mmcfg, OBJECT(s), &raven_pci_io_ops, s,
diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c
index 9466d4a1be3b85457a644d0d777e..810b2c61eb9cfe079ec88b2d02c4 100644
--- a/hw/ppc/pnv_lpc.c
+++ b/hw/ppc/pnv_lpc.c
@@ -726,10 +726,12 @@ static void pnv_lpc_realize(DeviceState *dev, Error **errp)
/* Create MMIO regions for LPC HC and OPB registers */
memory_region_init_io(&lpc->opb_master_regs, OBJECT(dev), &opb_master_ops,
lpc, "lpc-opb-master", LPC_OPB_REGS_OPB_SIZE);
+ lpc->opb_master_regs.disable_reentrancy_guard = true;
memory_region_add_subregion(&lpc->opb_mr, LPC_OPB_REGS_OPB_ADDR,
&lpc->opb_master_regs);
memory_region_init_io(&lpc->lpc_hc_regs, OBJECT(dev), &lpc_hc_ops, lpc,
"lpc-hc", LPC_HC_REGS_OPB_SIZE);
+ lpc->lpc_hc_regs.disable_reentrancy_guard = true;
memory_region_add_subregion(&lpc->opb_mr, LPC_HC_REGS_OPB_ADDR,
&lpc->lpc_hc_regs);
}