This patch did not get merged so far, so in case it is resurrected I wanted to warn that even though we're going to be removing machine types that use it, we might want to keep the property.
In this issue https://gitlab.com/qemu-project/qemu/-/issues/1947#note_2994552211 being able to disable the pci_hole64_fix is indicated as a possible fix for a Windows XP BSOD. Perhaps there is a better way to avoid the root cause of the BSOD, but if not this knob would be useful to retain. On Fri, May 02, 2025 at 12:35:18AM +0200, Philippe Mathieu-Daudé wrote: > The Q35PCIHost::pci_hole64_fix boolean was only set in > the pc_compat_2_10[] array, via the 'x-pci-hole64-fix=off' > property. We removed all machines using that array, lets > remove that property and all the code around it. > > Signed-off-by: Philippe Mathieu-Daudé <[email protected]> > --- > include/hw/pci-host/q35.h | 1 - > hw/pci-host/q35.c | 6 ++---- > 2 files changed, 2 insertions(+), 5 deletions(-) > > diff --git a/include/hw/pci-host/q35.h b/include/hw/pci-host/q35.h > index ddafc3f2e3d..75810528205 100644 > --- a/include/hw/pci-host/q35.h > +++ b/include/hw/pci-host/q35.h > @@ -63,7 +63,6 @@ struct Q35PCIHost { > PCIExpressHost parent_obj; > /*< public >*/ > > - bool pci_hole64_fix; > MCHPCIState mch; > }; > > diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c > index 1951ae440cc..f6e29cc4fc8 100644 > --- a/hw/pci-host/q35.c > +++ b/hw/pci-host/q35.c > @@ -116,13 +116,12 @@ static void q35_host_get_pci_hole_end(Object *obj, > Visitor *v, > static uint64_t q35_host_get_pci_hole64_start_value(Object *obj) > { > PCIHostState *h = PCI_HOST_BRIDGE(obj); > - Q35PCIHost *s = Q35_HOST_DEVICE(obj); > Range w64; > uint64_t value; > > pci_bus_get_w64_range(h->bus, &w64); > value = range_is_empty(&w64) ? 0 : range_lob(&w64); > - if (!value && s->pci_hole64_fix) { > + if (!value) { > value = pc_pci_hole64_start(); > } > return value; > @@ -156,7 +155,7 @@ static void q35_host_get_pci_hole64_end(Object *obj, > Visitor *v, > pci_bus_get_w64_range(h->bus, &w64); > value = range_is_empty(&w64) ? 0 : range_upb(&w64) + 1; > hole64_end = ROUND_UP(hole64_start + s->mch.pci_hole64_size, 1ULL << 30); > - if (s->pci_hole64_fix && value < hole64_end) { > + if (value < hole64_end) { > value = hole64_end; > } > visit_type_uint64(v, name, &value, errp); > @@ -181,7 +180,6 @@ static const Property q35_host_props[] = { > mch.above_4g_mem_size, 0), > DEFINE_PROP_BOOL(PCI_HOST_PROP_SMM_RANGES, Q35PCIHost, > mch.has_smm_ranges, true), > - DEFINE_PROP_BOOL("x-pci-hole64-fix", Q35PCIHost, pci_hole64_fix, true), > }; > > static void q35_host_class_init(ObjectClass *klass, const void *data) > -- > 2.47.1 > > With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
