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 :|


Reply via email to