qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: Eric Auger <eric.auger@redhat.com>
Cc: eric.auger.pro@gmail.com, qemu-devel@nongnu.org,
	qemu-arm@nongnu.org, peter.maydell@linaro.org,
	gustavo.romero@linaro.org, anisinha@redhat.com, mst@redhat.com,
	shannon.zhaosl@gmail.com, pbonzini@redhat.com,
	Jonathan.Cameron@huawei.com, philmd@linaro.org,
	alex.bennee@linaro.org
Subject: Re: [PATCH v2 02/25] hw/arm/virt: Introduce machine state acpi pcihp flags and props
Date: Tue, 27 May 2025 13:58:13 +0200	[thread overview]
Message-ID: <20250527135813.2d6cde91@imammedo.users.ipa.redhat.com> (raw)
In-Reply-To: <20250527074224.1197793-3-eric.auger@redhat.com>

On Tue, 27 May 2025 09:40:04 +0200
Eric Auger <eric.auger@redhat.com> wrote:

> acpi_pcihp VirtMachineClass state flag will allow
> to opt in for acpi pci hotplug. This is guarded by a

> class no_acpi_pcihp flag to manage compats (<= 10.0
> machine types will not support ACPI PCI hotplug).

there is no reason to put an effort in force disabling it
on old machines, as long as code works when explicitly
enabled property on CLI.

See comment below on how to deal with it 

> 
> Machine state acpi_pcihp flag must be set before the creation
> of the GED device which will use it.
> 
> Currently the ACPI PCI HP is turned off by default. This will
> change later on for 10.1 machine type.

one thing to note, is that turning it on by default might
cause change of NIC naming in guest as this brings in
new "_Sxx" slot naming. /so configs tied to nic  go down the drain/

Naming, we have, also happens to be broken wrt spec
(it should be unique system wide, there was a gitlab issue for that,
there is no easy fix that though)

So I'd leave it disabled by default and let users to turn
it on explicitly when needed. 

> 
> We also introduce properties to allow disabling it.
> 
> Signed-off-by: Eric Auger <eric.auger@redhat.com>
> Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org>
> ---
>  include/hw/arm/virt.h |  2 ++
>  hw/arm/virt.c         | 27 +++++++++++++++++++++++++++
>  2 files changed, 29 insertions(+)
> 
> diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
> index 9a1b0f53d2..10ea581f06 100644
> --- a/include/hw/arm/virt.h
> +++ b/include/hw/arm/virt.h
> @@ -129,6 +129,7 @@ struct VirtMachineClass {
>      bool no_tcg_lpa2;
>      bool no_ns_el2_virt_timer_irq;
>      bool no_nested_smmu;
> +    bool no_acpi_pcihp;
>  };
>  
>  struct VirtMachineState {
> @@ -150,6 +151,7 @@ struct VirtMachineState {
>      bool mte;
>      bool dtb_randomness;
>      bool second_ns_uart_present;
> +    bool acpi_pcihp;
>      OnOffAuto acpi;
>      VirtGICType gic_version;
>      VirtIOMMUType iommu;
> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> index 9a6cd085a3..a0deeaf2b3 100644
> --- a/hw/arm/virt.c
> +++ b/hw/arm/virt.c
> @@ -2397,8 +2397,10 @@ static void machvirt_init(MachineState *machine)
>      create_pcie(vms);
>  
>      if (has_ged && aarch64 && firmware_loaded && virt_is_acpi_enabled(vms)) {
> +        vms->acpi_pcihp &= !vmc->no_acpi_pcihp;

I don't particularly like no_foo naming as it makes code harder to read
and combined with 'duplicated' field in machine state it make even things worse.
(if I recall right Philippe was cleaning mess similar flags usage
have introduced with ITS)

instead of adding machine property (both class and state),
I'd suggest adding the only property to GPE device (akin to what we have in x86 world)
And then one can meddle with defaults using hw_compat_xxx


>          vms->acpi_dev = create_acpi_ged(vms);
>      } else {
> +        vms->acpi_pcihp = false;
>          create_gpio_devices(vms, VIRT_GPIO, sysmem);
>      }
>  
> @@ -2593,6 +2595,20 @@ static void virt_set_its(Object *obj, bool value, Error **errp)
>      vms->its = value;
>  }
>  
> +static bool virt_get_acpi_pcihp(Object *obj, Error **errp)
> +{
> +    VirtMachineState *vms = VIRT_MACHINE(obj);
> +
> +    return vms->acpi_pcihp;
> +}
> +
> +static void virt_set_acpi_pcihp(Object *obj, bool value, Error **errp)
> +{
> +    VirtMachineState *vms = VIRT_MACHINE(obj);
> +
> +    vms->acpi_pcihp = value;
> +}
> +
>  static bool virt_get_dtb_randomness(Object *obj, Error **errp)
>  {
>      VirtMachineState *vms = VIRT_MACHINE(obj);
> @@ -3310,6 +3326,10 @@ static void virt_machine_class_init(ObjectClass *oc, const void *data)
>                                            "in ACPI table header."
>                                            "The string may be up to 8 bytes in size");
>  
> +    object_class_property_add_bool(oc, "acpi-pcihp",
> +                                   virt_get_acpi_pcihp, virt_set_acpi_pcihp);
> +    object_class_property_set_description(oc, "acpi-pcihp",
> +                                          "Force ACPI PCI hotplug");
>  }
>  
>  static void virt_instance_init(Object *obj)
> @@ -3344,6 +3364,9 @@ static void virt_instance_init(Object *obj)
>          vms->tcg_its = true;
>      }
>  
> +    /* default disallows ACPI PCI hotplug */
> +    vms->acpi_pcihp = false;
> +
>      /* Default disallows iommu instantiation */
>      vms->iommu = VIRT_IOMMU_NONE;
>  
> @@ -3394,8 +3417,12 @@ DEFINE_VIRT_MACHINE_AS_LATEST(10, 1)
>  
>  static void virt_machine_10_0_options(MachineClass *mc)
>  {
> +    VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc));
> +
>      virt_machine_10_1_options(mc);
>      compat_props_add(mc->compat_props, hw_compat_10_0, hw_compat_10_0_len);
> +    /* 10.0 and earlier do not support ACPI PCI hotplug */
> +    vmc->no_acpi_pcihp = true;
>  }
>  DEFINE_VIRT_MACHINE(10, 0)
>  



  reply	other threads:[~2025-05-27 11:59 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-27  7:40 [PATCH v2 00/25] ACPI PCI Hotplug support on ARM Eric Auger
2025-05-27  7:40 ` [PATCH v2 01/25] hw/i386/acpi-build: Make aml_pci_device_dsm() static Eric Auger
2025-05-27 12:23   ` Igor Mammedov
2025-05-30  8:40   ` Jonathan Cameron via
2025-05-27  7:40 ` [PATCH v2 02/25] hw/arm/virt: Introduce machine state acpi pcihp flags and props Eric Auger
2025-05-27 11:58   ` Igor Mammedov [this message]
2025-05-27 13:54     ` Eric Auger
2025-05-28 10:33       ` Igor Mammedov
2025-06-11  6:53         ` Eric Auger
2025-06-11  8:45           ` Igor Mammedov
2025-06-11  8:50             ` Eric Auger
2025-06-12 12:55               ` Igor Mammedov
2025-06-13  3:01                 ` Gustavo Romero
2025-06-13  5:05                   ` Eric Auger
2025-06-13 13:39                     ` Gustavo Romero
2025-06-14  8:04                       ` Eric Auger
2025-06-11  6:47     ` Eric Auger
2025-06-11  8:49       ` Igor Mammedov
2025-06-11  8:56         ` Eric Auger
2025-06-12 13:00           ` Igor Mammedov
2025-06-12 13:54             ` Eric Auger
2025-05-30  8:58   ` Jonathan Cameron via
2025-05-27  7:40 ` [PATCH v2 03/25] hw/acpi: Rename and move build_x86_acpi_pci_hotplug to pcihp Eric Auger
2025-05-27 12:08   ` Igor Mammedov
2025-05-30  9:06   ` Jonathan Cameron via
2025-05-27  7:40 ` [PATCH v2 04/25] hw/pci-host/gpex-acpi: Add native_pci_hotplug arg to acpi_dsdt_add_pci_osc Eric Auger
2025-05-27 12:27   ` Igor Mammedov
2025-05-30  9:27   ` Jonathan Cameron via
2025-05-30  9:28     ` Jonathan Cameron via
2025-06-11 12:05     ` Eric Auger
2025-05-27  7:40 ` [PATCH v2 05/25] hw/pci-host/gpex-acpi: Split host bridge OSC and DSM generation Eric Auger
2025-05-27 12:31   ` Igor Mammedov
2025-05-30 10:02   ` Jonathan Cameron via
2025-05-30 12:05     ` Igor Mammedov
2025-05-30 15:00       ` Jonathan Cameron via
2025-06-02 10:18         ` Igor Mammedov
2025-06-11 12:18     ` Eric Auger
2025-06-11 12:22     ` Eric Auger
2025-05-27  7:40 ` [PATCH v2 06/25] hw/pci-host/gpex-acpi: Propagate hotplug type info from virt machine downto gpex Eric Auger
2025-05-27 12:33   ` Igor Mammedov
2025-06-11  9:00     ` Eric Auger
2025-06-12 13:25       ` Igor Mammedov
2025-05-30 10:14   ` Jonathan Cameron via
2025-05-30 12:11     ` Igor Mammedov
2025-06-11  9:13     ` Eric Auger
2025-05-27  7:40 ` [PATCH v2 07/25] hw/i386/acpi-build: Turn build_q35_osc_method into a generic method Eric Auger
2025-05-27 12:35   ` Igor Mammedov
2025-05-27  7:40 ` [PATCH v2 08/25] tests/qtest/bios-tables-test: Prepare for changes in the DSDT table Eric Auger
2025-05-27 12:38   ` Igor Mammedov
2025-05-27 13:03     ` Igor Mammedov
2025-06-02  5:45       ` Gustavo Romero
2025-06-11  9:45         ` Eric Auger
2025-05-27  7:40 ` [PATCH v2 09/25] hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_method Eric Auger
2025-05-27 13:04   ` Igor Mammedov
2025-05-30 10:05   ` Jonathan Cameron via
2025-06-11 12:25     ` Eric Auger
2025-05-27  7:40 ` [PATCH v2 10/25] tests/qtest/bios-tables-test: Update DSDT blobs after GPEX _OSC change Eric Auger
2025-05-27 13:05   ` Igor Mammedov
2025-05-27  7:40 ` [PATCH v2 11/25] hw/i386/acpi-build: Introduce build_append_pcihp_resources() helper Eric Auger
2025-05-27 13:09   ` Igor Mammedov
2025-05-30 10:17   ` Jonathan Cameron via
2025-06-05 17:06     ` Eric Auger
2025-05-27  7:40 ` [PATCH v2 12/25] hw/acpi/pcihp: Add an AmlRegionSpace arg to build_acpi_pci_hotplug Eric Auger
2025-05-27 13:12   ` Igor Mammedov
2025-05-30 10:18   ` Jonathan Cameron via
2025-05-27  7:40 ` [PATCH v2 13/25] hw/i386/acpi-build: Move build_append_notification_callback to pcihp Eric Auger
2025-05-27 13:37   ` Igor Mammedov
2025-05-30 10:19   ` Jonathan Cameron via
2025-05-27  7:40 ` [PATCH v2 14/25] hw/i386/acpi-build: Move build_append_pci_bus_devices/pcihp_slots " Eric Auger
2025-05-27 13:43   ` Igor Mammedov
2025-05-30 10:24   ` Jonathan Cameron via
2025-06-05 16:03     ` Eric Auger
2025-05-27  7:40 ` [PATCH v2 15/25] hw/i386/acpi-build: Introduce and use acpi_get_pci_host Eric Auger
2025-05-27 13:58   ` Igor Mammedov
2025-05-27  7:40 ` [PATCH v2 16/25] hw/i386/acpi-build: Move aml_pci_edsm to a generic place Eric Auger
2025-05-27 14:00   ` Igor Mammedov
2025-05-27 14:07     ` Igor Mammedov
2025-05-27  7:40 ` [PATCH v2 17/25] hw/arm/virt-acpi-build: Modify the DSDT ACPI table to enable ACPI PCI hotplug Eric Auger
2025-05-27 14:12   ` Igor Mammedov
2025-05-27  7:40 ` [PATCH v2 18/25] hw/acpi/ged: Prepare the device to react to PCI hotplug events Eric Auger
2025-05-27  7:40 ` [PATCH v2 19/25] hw/acpi/ged: Call pcihp plug callbacks in hotplug handler implementation Eric Auger
2025-05-27 14:21   ` Igor Mammedov
2025-05-27  7:40 ` [PATCH v2 20/25] hw/acpi/ged: Support migration of AcpiPciHpState Eric Auger
2025-05-27 15:14   ` Igor Mammedov
2025-05-27  7:40 ` [PATCH v2 21/25] hw/core/sysbus: Introduce sysbus_mmio_map_name() helper Eric Auger
2025-05-27  7:40 ` [PATCH v2 22/25] hw/arm/virt: Let virt support pci hotplug/unplug GED event Eric Auger
2025-05-27 15:21   ` Philippe Mathieu-Daudé
2025-05-27 15:56   ` Igor Mammedov
2025-05-27 16:44     ` Gustavo Romero
2025-05-27 19:16       ` Gustavo Romero
2025-05-28 10:15       ` Igor Mammedov
2025-05-27  7:40 ` [PATCH v2 23/25] hw/arm/virt: Plug pcihp hotplug/hotunplug callbacks Eric Auger
2025-05-27  7:40 ` [PATCH v2 24/25] tests/qtest/bios-tables-test: Keep ACPI PCI hotplug off Eric Auger
2025-05-28  9:38   ` Igor Mammedov
2025-05-28  9:48     ` Eric Auger
2025-05-28 10:49       ` Igor Mammedov
2025-06-02  6:16       ` Gustavo Romero
2025-05-28 12:41     ` Gustavo Romero
2025-05-28 13:02       ` Igor Mammedov
2025-05-28 15:04         ` Gustavo Romero
2025-05-30 11:51           ` Igor Mammedov
2025-06-02  5:35             ` Gustavo Romero
2025-06-02  6:06             ` Gustavo Romero
2025-06-10 14:29               ` Gustavo Romero
2025-06-11  8:54                 ` Igor Mammedov
2025-06-11 13:14                   ` Gustavo Romero
2025-06-12 12:50                     ` Igor Mammedov
2025-05-27  7:40 ` [PATCH v2 25/25] hw/arm/virt: Use ACPI PCI hotplug by default Eric Auger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250527135813.2d6cde91@imammedo.users.ipa.redhat.com \
    --to=imammedo@redhat.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=alex.bennee@linaro.org \
    --cc=anisinha@redhat.com \
    --cc=eric.auger.pro@gmail.com \
    --cc=eric.auger@redhat.com \
    --cc=gustavo.romero@linaro.org \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=shannon.zhaosl@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).