* [PATCH v2] hw/acpi: limit warning on acpi table size to pc machines older than version 2.3
@ 2023-03-29 4:57 Ani Sinha
2023-04-06 6:22 ` Ani Sinha
2023-04-06 8:07 ` Igor Mammedov
0 siblings, 2 replies; 4+ messages in thread
From: Ani Sinha @ 2023-03-29 4:57 UTC (permalink / raw)
To: Michael S. Tsirkin, Igor Mammedov, Ani Sinha, Marcel Apfelbaum,
Paolo Bonzini, Richard Henderson, Eduardo Habkost
Cc: qemu-devel
i440fx machine versions 2.3 and newer supports dynamic ram
resizing. See commit a1666142db6233 ("acpi-build: make ROMs RAM blocks resizeable") .
Currently supported all q35 machine types (versions 2.4 and newer) supports
resizable RAM/ROM blocks.Therefore the warning generated when the ACPI table
size exceeds a pre-defined value does not apply to those machine versions.
Add a check limiting the warning message to only those machines that does not
support expandable ram blocks (that is, i440fx machines with version 2.2
and older).
Signed-off-by: Ani Sinha <anisinha@redhat.com>
---
hw/i386/acpi-build.c | 6 ++++--
hw/i386/pc.c | 1 +
hw/i386/pc_piix.c | 1 +
include/hw/i386/pc.h | 3 +++
4 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index b19fb4259e..91be76e61f 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -2616,7 +2616,8 @@ void acpi_build(AcpiBuildTables *tables, MachineState *machine)
int legacy_table_size =
ROUND_UP(tables_blob->len - aml_len + legacy_aml_len,
ACPI_BUILD_ALIGN_SIZE);
- if (tables_blob->len > legacy_table_size) {
+ if ((tables_blob->len > legacy_table_size) &&
+ !pcmc->resizable_acpi_blob) {
/* Should happen only with PCI bridges and -M pc-i440fx-2.0. */
warn_report("ACPI table size %u exceeds %d bytes,"
" migration may not work",
@@ -2627,7 +2628,8 @@ void acpi_build(AcpiBuildTables *tables, MachineState *machine)
g_array_set_size(tables_blob, legacy_table_size);
} else {
/* Make sure we have a buffer in case we need to resize the tables. */
- if (tables_blob->len > ACPI_BUILD_TABLE_SIZE / 2) {
+ if ((tables_blob->len > ACPI_BUILD_TABLE_SIZE / 2) &&
+ !pcmc->resizable_acpi_blob) {
/* As of QEMU 2.1, this fires with 160 VCPUs and 255 memory slots. */
warn_report("ACPI table size %u exceeds %d bytes,"
" migration may not work",
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 7bebea57e3..2b66985013 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1936,6 +1936,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
pcmc->acpi_data_size = 0x20000 + 0x8000;
pcmc->pvh_enabled = true;
pcmc->kvmclock_create_always = true;
+ pcmc->resizable_acpi_blob = true;
assert(!mc->get_hotplug_handler);
mc->get_hotplug_handler = pc_get_hotplug_handler;
mc->hotplug_allowed = pc_hotplug_allowed;
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 2f16011bab..8f7b3ae11b 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -745,6 +745,7 @@ static void pc_i440fx_2_2_machine_options(MachineClass *m)
compat_props_add(m->compat_props, hw_compat_2_2, hw_compat_2_2_len);
compat_props_add(m->compat_props, pc_compat_2_2, pc_compat_2_2_len);
pcmc->rsdp_in_ram = false;
+ pcmc->resizable_acpi_blob = false;
}
DEFINE_I440FX_MACHINE(v2_2, "pc-i440fx-2.2", pc_compat_2_2_fn,
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 8206d5405a..6008eb045a 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -127,6 +127,9 @@ struct PCMachineClass {
/* create kvmclock device even when KVM PV features are not exposed */
bool kvmclock_create_always;
+
+ /* resizable acpi blob compat */
+ bool resizable_acpi_blob;
};
#define TYPE_PC_MACHINE "generic-pc-machine"
--
2.39.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2] hw/acpi: limit warning on acpi table size to pc machines older than version 2.3
2023-03-29 4:57 [PATCH v2] hw/acpi: limit warning on acpi table size to pc machines older than version 2.3 Ani Sinha
@ 2023-04-06 6:22 ` Ani Sinha
2023-04-06 8:07 ` Igor Mammedov
1 sibling, 0 replies; 4+ messages in thread
From: Ani Sinha @ 2023-04-06 6:22 UTC (permalink / raw)
To: Michael S. Tsirkin, Igor Mammedov, Marcel Apfelbaum,
Paolo Bonzini, Richard Henderson, Eduardo Habkost
Cc: qemu-devel
Ping ...
On Wed, 29 Mar 2023, Ani Sinha wrote:
> i440fx machine versions 2.3 and newer supports dynamic ram
> resizing. See commit a1666142db6233 ("acpi-build: make ROMs RAM blocks resizeable") .
> Currently supported all q35 machine types (versions 2.4 and newer) supports
> resizable RAM/ROM blocks.Therefore the warning generated when the ACPI table
> size exceeds a pre-defined value does not apply to those machine versions.
> Add a check limiting the warning message to only those machines that does not
> support expandable ram blocks (that is, i440fx machines with version 2.2
> and older).
>
> Signed-off-by: Ani Sinha <anisinha@redhat.com>
> ---
> hw/i386/acpi-build.c | 6 ++++--
> hw/i386/pc.c | 1 +
> hw/i386/pc_piix.c | 1 +
> include/hw/i386/pc.h | 3 +++
> 4 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
> index b19fb4259e..91be76e61f 100644
> --- a/hw/i386/acpi-build.c
> +++ b/hw/i386/acpi-build.c
> @@ -2616,7 +2616,8 @@ void acpi_build(AcpiBuildTables *tables, MachineState *machine)
> int legacy_table_size =
> ROUND_UP(tables_blob->len - aml_len + legacy_aml_len,
> ACPI_BUILD_ALIGN_SIZE);
> - if (tables_blob->len > legacy_table_size) {
> + if ((tables_blob->len > legacy_table_size) &&
> + !pcmc->resizable_acpi_blob) {
> /* Should happen only with PCI bridges and -M pc-i440fx-2.0. */
> warn_report("ACPI table size %u exceeds %d bytes,"
> " migration may not work",
> @@ -2627,7 +2628,8 @@ void acpi_build(AcpiBuildTables *tables, MachineState *machine)
> g_array_set_size(tables_blob, legacy_table_size);
> } else {
> /* Make sure we have a buffer in case we need to resize the tables. */
> - if (tables_blob->len > ACPI_BUILD_TABLE_SIZE / 2) {
> + if ((tables_blob->len > ACPI_BUILD_TABLE_SIZE / 2) &&
> + !pcmc->resizable_acpi_blob) {
> /* As of QEMU 2.1, this fires with 160 VCPUs and 255 memory slots. */
> warn_report("ACPI table size %u exceeds %d bytes,"
> " migration may not work",
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 7bebea57e3..2b66985013 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -1936,6 +1936,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
> pcmc->acpi_data_size = 0x20000 + 0x8000;
> pcmc->pvh_enabled = true;
> pcmc->kvmclock_create_always = true;
> + pcmc->resizable_acpi_blob = true;
> assert(!mc->get_hotplug_handler);
> mc->get_hotplug_handler = pc_get_hotplug_handler;
> mc->hotplug_allowed = pc_hotplug_allowed;
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 2f16011bab..8f7b3ae11b 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -745,6 +745,7 @@ static void pc_i440fx_2_2_machine_options(MachineClass *m)
> compat_props_add(m->compat_props, hw_compat_2_2, hw_compat_2_2_len);
> compat_props_add(m->compat_props, pc_compat_2_2, pc_compat_2_2_len);
> pcmc->rsdp_in_ram = false;
> + pcmc->resizable_acpi_blob = false;
> }
>
> DEFINE_I440FX_MACHINE(v2_2, "pc-i440fx-2.2", pc_compat_2_2_fn,
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 8206d5405a..6008eb045a 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -127,6 +127,9 @@ struct PCMachineClass {
>
> /* create kvmclock device even when KVM PV features are not exposed */
> bool kvmclock_create_always;
> +
> + /* resizable acpi blob compat */
> + bool resizable_acpi_blob;
> };
>
> #define TYPE_PC_MACHINE "generic-pc-machine"
> --
> 2.39.2
>
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2] hw/acpi: limit warning on acpi table size to pc machines older than version 2.3
2023-03-29 4:57 [PATCH v2] hw/acpi: limit warning on acpi table size to pc machines older than version 2.3 Ani Sinha
2023-04-06 6:22 ` Ani Sinha
@ 2023-04-06 8:07 ` Igor Mammedov
2023-04-20 7:48 ` Ani Sinha
1 sibling, 1 reply; 4+ messages in thread
From: Igor Mammedov @ 2023-04-06 8:07 UTC (permalink / raw)
To: Ani Sinha
Cc: Michael S. Tsirkin, Marcel Apfelbaum, Paolo Bonzini,
Richard Henderson, Eduardo Habkost, qemu-devel
On Wed, 29 Mar 2023 10:27:26 +0530
Ani Sinha <anisinha@redhat.com> wrote:
> i440fx machine versions 2.3 and newer supports dynamic ram
> resizing. See commit a1666142db6233 ("acpi-build: make ROMs RAM blocks resizeable") .
> Currently supported all q35 machine types (versions 2.4 and newer) supports
> resizable RAM/ROM blocks.Therefore the warning generated when the ACPI table
> size exceeds a pre-defined value does not apply to those machine versions.
> Add a check limiting the warning message to only those machines that does not
> support expandable ram blocks (that is, i440fx machines with version 2.2
> and older).
>
> Signed-off-by: Ani Sinha <anisinha@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> ---
> hw/i386/acpi-build.c | 6 ++++--
> hw/i386/pc.c | 1 +
> hw/i386/pc_piix.c | 1 +
> include/hw/i386/pc.h | 3 +++
> 4 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
> index b19fb4259e..91be76e61f 100644
> --- a/hw/i386/acpi-build.c
> +++ b/hw/i386/acpi-build.c
> @@ -2616,7 +2616,8 @@ void acpi_build(AcpiBuildTables *tables, MachineState *machine)
> int legacy_table_size =
> ROUND_UP(tables_blob->len - aml_len + legacy_aml_len,
> ACPI_BUILD_ALIGN_SIZE);
> - if (tables_blob->len > legacy_table_size) {
> + if ((tables_blob->len > legacy_table_size) &&
> + !pcmc->resizable_acpi_blob) {
> /* Should happen only with PCI bridges and -M pc-i440fx-2.0. */
> warn_report("ACPI table size %u exceeds %d bytes,"
> " migration may not work",
> @@ -2627,7 +2628,8 @@ void acpi_build(AcpiBuildTables *tables, MachineState *machine)
> g_array_set_size(tables_blob, legacy_table_size);
> } else {
> /* Make sure we have a buffer in case we need to resize the tables. */
> - if (tables_blob->len > ACPI_BUILD_TABLE_SIZE / 2) {
> + if ((tables_blob->len > ACPI_BUILD_TABLE_SIZE / 2) &&
> + !pcmc->resizable_acpi_blob) {
> /* As of QEMU 2.1, this fires with 160 VCPUs and 255 memory slots. */
> warn_report("ACPI table size %u exceeds %d bytes,"
> " migration may not work",
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 7bebea57e3..2b66985013 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -1936,6 +1936,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
> pcmc->acpi_data_size = 0x20000 + 0x8000;
> pcmc->pvh_enabled = true;
> pcmc->kvmclock_create_always = true;
> + pcmc->resizable_acpi_blob = true;
> assert(!mc->get_hotplug_handler);
> mc->get_hotplug_handler = pc_get_hotplug_handler;
> mc->hotplug_allowed = pc_hotplug_allowed;
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 2f16011bab..8f7b3ae11b 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -745,6 +745,7 @@ static void pc_i440fx_2_2_machine_options(MachineClass *m)
> compat_props_add(m->compat_props, hw_compat_2_2, hw_compat_2_2_len);
> compat_props_add(m->compat_props, pc_compat_2_2, pc_compat_2_2_len);
> pcmc->rsdp_in_ram = false;
> + pcmc->resizable_acpi_blob = false;
> }
>
> DEFINE_I440FX_MACHINE(v2_2, "pc-i440fx-2.2", pc_compat_2_2_fn,
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 8206d5405a..6008eb045a 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -127,6 +127,9 @@ struct PCMachineClass {
>
> /* create kvmclock device even when KVM PV features are not exposed */
> bool kvmclock_create_always;
> +
> + /* resizable acpi blob compat */
> + bool resizable_acpi_blob;
> };
>
> #define TYPE_PC_MACHINE "generic-pc-machine"
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2] hw/acpi: limit warning on acpi table size to pc machines older than version 2.3
2023-04-06 8:07 ` Igor Mammedov
@ 2023-04-20 7:48 ` Ani Sinha
0 siblings, 0 replies; 4+ messages in thread
From: Ani Sinha @ 2023-04-20 7:48 UTC (permalink / raw)
To: Igor Mammedov
Cc: Michael S. Tsirkin, Marcel Apfelbaum, Paolo Bonzini,
Richard Henderson, Eduardo Habkost, qemu-devel
> On 06-Apr-2023, at 1:37 PM, Igor Mammedov <imammedo@redhat.com> wrote:
>
> On Wed, 29 Mar 2023 10:27:26 +0530
> Ani Sinha <anisinha@redhat.com> wrote:
>
>> i440fx machine versions 2.3 and newer supports dynamic ram
>> resizing. See commit a1666142db6233 ("acpi-build: make ROMs RAM blocks resizeable") .
>> Currently supported all q35 machine types (versions 2.4 and newer) supports
>> resizable RAM/ROM blocks.Therefore the warning generated when the ACPI table
>> size exceeds a pre-defined value does not apply to those machine versions.
>> Add a check limiting the warning message to only those machines that does not
>> support expandable ram blocks (that is, i440fx machines with version 2.2
>> and older).
>>
>> Signed-off-by: Ani Sinha <anisinha@redhat.com>
>
> Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Michael, reminder to queue this for the next PR.
>
>> ---
>> hw/i386/acpi-build.c | 6 ++++--
>> hw/i386/pc.c | 1 +
>> hw/i386/pc_piix.c | 1 +
>> include/hw/i386/pc.h | 3 +++
>> 4 files changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
>> index b19fb4259e..91be76e61f 100644
>> --- a/hw/i386/acpi-build.c
>> +++ b/hw/i386/acpi-build.c
>> @@ -2616,7 +2616,8 @@ void acpi_build(AcpiBuildTables *tables, MachineState *machine)
>> int legacy_table_size =
>> ROUND_UP(tables_blob->len - aml_len + legacy_aml_len,
>> ACPI_BUILD_ALIGN_SIZE);
>> - if (tables_blob->len > legacy_table_size) {
>> + if ((tables_blob->len > legacy_table_size) &&
>> + !pcmc->resizable_acpi_blob) {
>> /* Should happen only with PCI bridges and -M pc-i440fx-2.0. */
>> warn_report("ACPI table size %u exceeds %d bytes,"
>> " migration may not work",
>> @@ -2627,7 +2628,8 @@ void acpi_build(AcpiBuildTables *tables, MachineState *machine)
>> g_array_set_size(tables_blob, legacy_table_size);
>> } else {
>> /* Make sure we have a buffer in case we need to resize the tables. */
>> - if (tables_blob->len > ACPI_BUILD_TABLE_SIZE / 2) {
>> + if ((tables_blob->len > ACPI_BUILD_TABLE_SIZE / 2) &&
>> + !pcmc->resizable_acpi_blob) {
>> /* As of QEMU 2.1, this fires with 160 VCPUs and 255 memory slots. */
>> warn_report("ACPI table size %u exceeds %d bytes,"
>> " migration may not work",
>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>> index 7bebea57e3..2b66985013 100644
>> --- a/hw/i386/pc.c
>> +++ b/hw/i386/pc.c
>> @@ -1936,6 +1936,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
>> pcmc->acpi_data_size = 0x20000 + 0x8000;
>> pcmc->pvh_enabled = true;
>> pcmc->kvmclock_create_always = true;
>> + pcmc->resizable_acpi_blob = true;
>> assert(!mc->get_hotplug_handler);
>> mc->get_hotplug_handler = pc_get_hotplug_handler;
>> mc->hotplug_allowed = pc_hotplug_allowed;
>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
>> index 2f16011bab..8f7b3ae11b 100644
>> --- a/hw/i386/pc_piix.c
>> +++ b/hw/i386/pc_piix.c
>> @@ -745,6 +745,7 @@ static void pc_i440fx_2_2_machine_options(MachineClass *m)
>> compat_props_add(m->compat_props, hw_compat_2_2, hw_compat_2_2_len);
>> compat_props_add(m->compat_props, pc_compat_2_2, pc_compat_2_2_len);
>> pcmc->rsdp_in_ram = false;
>> + pcmc->resizable_acpi_blob = false;
>> }
>>
>> DEFINE_I440FX_MACHINE(v2_2, "pc-i440fx-2.2", pc_compat_2_2_fn,
>> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
>> index 8206d5405a..6008eb045a 100644
>> --- a/include/hw/i386/pc.h
>> +++ b/include/hw/i386/pc.h
>> @@ -127,6 +127,9 @@ struct PCMachineClass {
>>
>> /* create kvmclock device even when KVM PV features are not exposed */
>> bool kvmclock_create_always;
>> +
>> + /* resizable acpi blob compat */
>> + bool resizable_acpi_blob;
>> };
>>
>> #define TYPE_PC_MACHINE "generic-pc-machine"
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-04-20 7:49 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-29 4:57 [PATCH v2] hw/acpi: limit warning on acpi table size to pc machines older than version 2.3 Ani Sinha
2023-04-06 6:22 ` Ani Sinha
2023-04-06 8:07 ` Igor Mammedov
2023-04-20 7:48 ` Ani Sinha
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).