From: Igor Mammedov <imammedo@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>,
qemu-devel@nongnu.org, pbonzini@redhat.com,
richard.henderson@linaro.org, eduardo@habkost.net,
marcel.apfelbaum@gmail.com, berrange@redhat.com,
jusual@redhat.com, dfaggioli@suse.com, joao.m.martins@oracle.com,
jon.grimm@amd.com, santosh.Shukla@amd.com
Subject: Re: [PATCH v6 1/2] hw/i386/pc: Default to use SMBIOS 3.0 for newer machine models
Date: Fri, 23 Jun 2023 16:40:28 +0200 [thread overview]
Message-ID: <20230623164028.0ae36699@imammedo.users.ipa.redhat.com> (raw)
In-Reply-To: <20230623060453-mutt-send-email-mst@kernel.org>
On Fri, 23 Jun 2023 06:05:28 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Wed, Jun 07, 2023 at 03:57:16PM -0500, Suravee Suthikulpanit wrote:
> > Currently, pc-q35 and pc-i44fx machine models are default to use SMBIOS 2.8
> > (32-bit entry point). Since SMBIOS 3.0 (64-bit entry point) is now fully
> > supported since QEMU 7.0, default to use SMBIOS 3.0 for newer machine
> > models. This is necessary to avoid the following message when launching
> > a VM with large number of vcpus.
> >
> > "SMBIOS 2.1 table length 66822 exceeds 65535"
> >
> > Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
>
> For some reason this causes a diff in ACPI:
>
> $ diff -u /tmp/asl-WQRZ61.dsl /tmp/asl-S25X61.dsl
> --- /tmp/asl-WQRZ61.dsl 2023-06-23 05:37:54.067525946 -0400
> +++ /tmp/asl-S25X61.dsl 2023-06-23 05:37:54.073525987 -0400
> @@ -5,13 +5,13 @@
> *
> * Disassembling to symbolic ASL+ operators
> *
> - * Disassembly of /tmp/aml-IROZ61, Fri Jun 23 05:37:54 2023
> + * Disassembly of tests/data/acpi/q35/SSDT.dimmpxm, Fri Jun 23 05:37:54 2023
> *
> * Original Table Header:
> * Signature "SSDT"
> * Length 0x00000717 (1815)
> * Revision 0x01
> - * Checksum 0xBC
> + * Checksum 0xAC
> * OEM ID "BOCHS "
> * OEM Table ID "NVDIMM"
> * OEM Revision 0x00000001 (1)
> @@ -389,6 +389,6 @@
> }
> }
>
> - Name (MEMA, 0x07FFE000)
> + Name (MEMA, 0x07FFF000)
> }
>
>
> Igor, any idea why?
It should be due to smbios tables size difference, which causes ACPI blob
allocated differently => different patched pointer.
one can verify by adding '-machine smbios-entry-point-type=64'
to test_acpi_tcg_dimm_pxm()
>
>
> > ---
> > hw/i386/pc.c | 4 +++-
> > hw/i386/pc_piix.c | 5 +++++
> > hw/i386/pc_q35.c | 5 +++++
> > include/hw/i386/pc.h | 1 +
> > 4 files changed, 14 insertions(+), 1 deletion(-)
> >
> > diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> > index bb62c994fa..33ffb03a32 100644
> > --- a/hw/i386/pc.c
> > +++ b/hw/i386/pc.c
> > @@ -1853,6 +1853,7 @@ static void pc_machine_set_max_fw_size(Object *obj, Visitor *v,
> > static void pc_machine_initfn(Object *obj)
> > {
> > PCMachineState *pcms = PC_MACHINE(obj);
> > + PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
> >
> > #ifdef CONFIG_VMPORT
> > pcms->vmport = ON_OFF_AUTO_AUTO;
> > @@ -1860,7 +1861,7 @@ static void pc_machine_initfn(Object *obj)
> > pcms->vmport = ON_OFF_AUTO_OFF;
> > #endif /* CONFIG_VMPORT */
> > pcms->max_ram_below_4g = 0; /* use default */
> > - pcms->smbios_entry_point_type = SMBIOS_ENTRY_POINT_TYPE_32;
> > + pcms->smbios_entry_point_type = pcmc->default_smbios_ep_type;
> >
> > /* acpi build is enabled by default if machine supports it */
> > pcms->acpi_build_enabled = PC_MACHINE_GET_CLASS(pcms)->has_acpi_build;
> > @@ -1980,6 +1981,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
> > mc->nvdimm_supported = true;
> > mc->smp_props.dies_supported = true;
> > mc->default_ram_id = "pc.ram";
> > + pcmc->default_smbios_ep_type = SMBIOS_ENTRY_POINT_TYPE_64;
> >
> > object_class_property_add(oc, PC_MACHINE_MAX_RAM_BELOW_4G, "size",
> > pc_machine_get_max_ram_below_4g, pc_machine_set_max_ram_below_4g,
> > diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> > index d5b0dcd1fe..49462b0e29 100644
> > --- a/hw/i386/pc_piix.c
> > +++ b/hw/i386/pc_piix.c
> > @@ -476,11 +476,16 @@ DEFINE_I440FX_MACHINE(v8_1, "pc-i440fx-8.1", NULL,
> >
> > static void pc_i440fx_8_0_machine_options(MachineClass *m)
> > {
> > + PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
> > +
> > pc_i440fx_8_1_machine_options(m);
> > m->alias = NULL;
> > m->is_default = false;
> > compat_props_add(m->compat_props, hw_compat_8_0, hw_compat_8_0_len);
> > compat_props_add(m->compat_props, pc_compat_8_0, pc_compat_8_0_len);
> > +
> > + /* For pc-i44fx-8.0 and older, use SMBIOS 2.8 by default */
> > + pcmc->default_smbios_ep_type = SMBIOS_ENTRY_POINT_TYPE_32;
> > }
> >
> > DEFINE_I440FX_MACHINE(v8_0, "pc-i440fx-8.0", NULL,
> > diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> > index 6155427e48..6b9fd4d537 100644
> > --- a/hw/i386/pc_q35.c
> > +++ b/hw/i386/pc_q35.c
> > @@ -387,10 +387,15 @@ DEFINE_Q35_MACHINE(v8_1, "pc-q35-8.1", NULL,
> >
> > static void pc_q35_8_0_machine_options(MachineClass *m)
> > {
> > + PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
> > +
> > pc_q35_8_1_machine_options(m);
> > m->alias = NULL;
> > compat_props_add(m->compat_props, hw_compat_8_0, hw_compat_8_0_len);
> > compat_props_add(m->compat_props, pc_compat_8_0, pc_compat_8_0_len);
> > +
> > + /* For pc-q35-8.0 and older, use SMBIOS 2.8 by default */
> > + pcmc->default_smbios_ep_type = SMBIOS_ENTRY_POINT_TYPE_32;
> > }
> >
> > DEFINE_Q35_MACHINE(v8_0, "pc-q35-8.0", NULL,
> > diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> > index c661e9cc80..6eec0fc51d 100644
> > --- a/include/hw/i386/pc.h
> > +++ b/include/hw/i386/pc.h
> > @@ -110,6 +110,7 @@ struct PCMachineClass {
> > bool smbios_defaults;
> > bool smbios_legacy_mode;
> > bool smbios_uuid_encoded;
> > + SmbiosEntryPointType default_smbios_ep_type;
> >
> > /* RAM / address space compat: */
> > bool gigabyte_align;
> > --
> > 2.34.1
>
next prev parent reply other threads:[~2023-06-23 14:41 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-07 20:57 [PATCH v6 0/2] hw/i386/pc: Update max_cpus and default to SMBIOS Suravee Suthikulpanit
2023-06-07 20:57 ` [PATCH v6 1/2] hw/i386/pc: Default to use SMBIOS 3.0 for newer machine models Suravee Suthikulpanit
2023-06-08 7:52 ` Daniel P. Berrangé
2023-06-08 8:40 ` Igor Mammedov
2023-06-09 16:42 ` Suthikulpanit, Suravee
2023-06-23 10:05 ` Michael S. Tsirkin
2023-06-23 14:40 ` Igor Mammedov [this message]
2023-06-07 20:57 ` [PATCH v6 2/2] pc: q35: Bump max_cpus to 1024 Suravee Suthikulpanit
2023-06-08 7:52 ` Daniel P. Berrangé
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=20230623164028.0ae36699@imammedo.users.ipa.redhat.com \
--to=imammedo@redhat.com \
--cc=berrange@redhat.com \
--cc=dfaggioli@suse.com \
--cc=eduardo@habkost.net \
--cc=joao.m.martins@oracle.com \
--cc=jon.grimm@amd.com \
--cc=jusual@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=santosh.Shukla@amd.com \
--cc=suravee.suthikulpanit@amd.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.