Re: [PATCH v6 21/36] hw/arm/virt-acpi-build: Let non hotplug ports support static acpi-index

2025-07-11 Thread Eric Auger



On 7/11/25 2:03 PM, Igor Mammedov wrote:
> On Tue,  8 Jul 2025 16:23:03 +0200
> Eric Auger  wrote:
>
>> hw/arm/virt-acpi-build: Let non hotplug ports support static acpi-index
>>
>> Add the requested ACPI bits requested to support static acpi-index
>> for non hotplug ports.
>>
>> Signed-off-by: Eric Auger 
>> Reviewed-by: Jonathan Cameron 
>> ---
>>  hw/arm/virt-acpi-build.c | 12 
>>  hw/arm/Kconfig   |  2 ++
>>  2 files changed, 14 insertions(+)
>>
>> diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
>> index a2f31be9ec..1f936516b3 100644
>> --- a/hw/arm/virt-acpi-build.c
>> +++ b/hw/arm/virt-acpi-build.c
>> @@ -34,6 +34,7 @@
>>  #include "hw/core/cpu.h"
>>  #include "hw/acpi/acpi-defs.h"
>>  #include "hw/acpi/acpi.h"
>> +#include "hw/acpi/pcihp.h"
>>  #include "hw/nvram/fw_cfg_acpi.h"
>>  #include "hw/acpi/bios-linker-loader.h"
>>  #include "hw/acpi/aml-build.h"
>> @@ -883,6 +884,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, 
>> VirtMachineState *vms)
>>  const int *irqmap = vms->irqmap;
>>  AcpiTable table = { .sig = "DSDT", .rev = 2, .oem_id = vms->oem_id,
>>  .oem_table_id = vms->oem_table_id };
>> +Aml *pci0_scope;
>>  
>>  acpi_table_begin(&table, table_data);
>>  dsdt = init_aml_allocator();
>> @@ -936,6 +938,16 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, 
>> VirtMachineState *vms)
>>  
>>  aml_append(dsdt, scope);
>>  
>> +pci0_scope = aml_scope("\\_SB.PCI0");
>> +
>> +aml_append(pci0_scope, build_pci_bridge_edsm());
>> +build_append_pci_bus_devices(pci0_scope, vms->bus);
>> +if (object_property_find(OBJECT(vms->bus), ACPI_PCIHP_PROP_BSEL)) {
>> +build_append_pcihp_slots(pci0_scope, vms->bus);
>> +}
> this part seems to be hotplug specific, is it really necessary in this patch?
Well I put this because it does not depend on
ACPI_PM_PROP_ACPI_PCIHP_BRIDGE GED property as opposed to the other
pieces added in [PATCH v6 23/36] hw/arm/virt-acpi-build: Modify the DSDT
ACPI table to enable ACPI PCI hotplug and rather depends on the bus

ACPI_PCIHP_PROP_BSEL property.

The initial comment was to move that code generation outside of the
ACPI_PM_PROP_ACPI_PCIHP_BRIDGE GED check. Thanks Eric
>
>> +
>> +aml_append(dsdt, pci0_scope);
>> +
>>  /* copy AML table into ACPI tables blob */
>>  g_array_append_vals(table_data, dsdt->buf->data, dsdt->buf->len);
>>  
>> diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
>> index 6ea86534d5..50153331ed 100644
>> --- a/hw/arm/Kconfig
>> +++ b/hw/arm/Kconfig
>> @@ -34,6 +34,8 @@ config ARM_VIRT
>>  select ACPI_HW_REDUCED
>>  select ACPI_APEI
>>  select ACPI_VIOT
>> +select ACPI_PCIHP
>> +select ACPI_PCI_BRIDGE
>>  select VIRTIO_MEM_SUPPORTED
>>  select ACPI_CXL
>>  select ACPI_HMAT




Re: [PATCH v6 21/36] hw/arm/virt-acpi-build: Let non hotplug ports support static acpi-index

2025-07-11 Thread Igor Mammedov
On Tue,  8 Jul 2025 16:23:03 +0200
Eric Auger  wrote:

> hw/arm/virt-acpi-build: Let non hotplug ports support static acpi-index
> 
> Add the requested ACPI bits requested to support static acpi-index
> for non hotplug ports.
> 
> Signed-off-by: Eric Auger 
> Reviewed-by: Jonathan Cameron 
> ---
>  hw/arm/virt-acpi-build.c | 12 
>  hw/arm/Kconfig   |  2 ++
>  2 files changed, 14 insertions(+)
> 
> diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
> index a2f31be9ec..1f936516b3 100644
> --- a/hw/arm/virt-acpi-build.c
> +++ b/hw/arm/virt-acpi-build.c
> @@ -34,6 +34,7 @@
>  #include "hw/core/cpu.h"
>  #include "hw/acpi/acpi-defs.h"
>  #include "hw/acpi/acpi.h"
> +#include "hw/acpi/pcihp.h"
>  #include "hw/nvram/fw_cfg_acpi.h"
>  #include "hw/acpi/bios-linker-loader.h"
>  #include "hw/acpi/aml-build.h"
> @@ -883,6 +884,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, 
> VirtMachineState *vms)
>  const int *irqmap = vms->irqmap;
>  AcpiTable table = { .sig = "DSDT", .rev = 2, .oem_id = vms->oem_id,
>  .oem_table_id = vms->oem_table_id };
> +Aml *pci0_scope;
>  
>  acpi_table_begin(&table, table_data);
>  dsdt = init_aml_allocator();
> @@ -936,6 +938,16 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, 
> VirtMachineState *vms)
>  
>  aml_append(dsdt, scope);
>  
> +pci0_scope = aml_scope("\\_SB.PCI0");
> +
> +aml_append(pci0_scope, build_pci_bridge_edsm());
> +build_append_pci_bus_devices(pci0_scope, vms->bus);

> +if (object_property_find(OBJECT(vms->bus), ACPI_PCIHP_PROP_BSEL)) {
> +build_append_pcihp_slots(pci0_scope, vms->bus);
> +}
this part seems to be hotplug specific, is it really necessary in this patch?

> +
> +aml_append(dsdt, pci0_scope);
> +
>  /* copy AML table into ACPI tables blob */
>  g_array_append_vals(table_data, dsdt->buf->data, dsdt->buf->len);
>  
> diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
> index 6ea86534d5..50153331ed 100644
> --- a/hw/arm/Kconfig
> +++ b/hw/arm/Kconfig
> @@ -34,6 +34,8 @@ config ARM_VIRT
>  select ACPI_HW_REDUCED
>  select ACPI_APEI
>  select ACPI_VIOT
> +select ACPI_PCIHP
> +select ACPI_PCI_BRIDGE
>  select VIRTIO_MEM_SUPPORTED
>  select ACPI_CXL
>  select ACPI_HMAT