From: Igor Mammedov <imammedo@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Daniel P. Berrange" <berrange@redhat.com>,
"Laszlo Ersek" <lersek@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
qemu-devel@nongnu.org, "Michael Roth" <mdroth@linux.vnet.ibm.com>,
qemu-arm@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>
Subject: Re: [PATCH v2 3/3] hw/i386: expose a "smbios-ep" PC machine property
Date: Mon, 4 Jan 2021 23:44:40 +0100 [thread overview]
Message-ID: <20210104234440.2da6c503@redhat.com> (raw)
In-Reply-To: <20201214205029.2991222-4-ehabkost@redhat.com>
On Mon, 14 Dec 2020 15:50:29 -0500
Eduardo Habkost <ehabkost@redhat.com> wrote:
> From: Daniel P. Berrangé <berrange@redhat.com>
>
> The i440fx and Q35 machine types are both hardcoded to use the legacy
> SMBIOS 2.1 entry point. This is a sensible conservative choice because
> SeaBIOS only supports SMBIOS 2.1
>
> EDK2, however, can also support SMBIOS 3.0 and QEMU already uses this on
> the ARM virt machine type.
>
> This adds a property to allow the choice of SMBIOS entry point versions
> For example to opt in to version 3.0
>
> $QEMU -machine q35,smbios-ep=3_0
>
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> ---
> This is patch was previously submitted at:
> https://lore.kernel.org/qemu-devel/20200908165438.1008942-6-berrange@redhat.com
>
> Changes from v1:
> * Include qapi-visit-smbios.h instead of qapi-visit-machine.h
> * Commit message fix: s/smbios_ep/smbios-ep/
> ---
> include/hw/i386/pc.h | 3 +++
> hw/i386/pc.c | 26 ++++++++++++++++++++++++++
> hw/i386/pc_piix.c | 2 +-
> hw/i386/pc_q35.c | 2 +-
> 4 files changed, 31 insertions(+), 2 deletions(-)
>
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 2aa8797c6e..2075093b32 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -11,6 +11,7 @@
> #include "hw/acpi/acpi_dev_interface.h"
> #include "hw/hotplug.h"
> #include "qom/object.h"
> +#include "hw/firmware/smbios.h"
>
> #define HPET_INTCAP "hpet-intcap"
>
> @@ -38,6 +39,7 @@ typedef struct PCMachineState {
> /* Configuration options: */
> uint64_t max_ram_below_4g;
> OnOffAuto vmport;
> + SmbiosEntryPointType smbios_ep;
>
> bool acpi_build_enabled;
> bool smbus_enabled;
> @@ -62,6 +64,7 @@ typedef struct PCMachineState {
> #define PC_MACHINE_SATA "sata"
> #define PC_MACHINE_PIT "pit"
> #define PC_MACHINE_MAX_FW_SIZE "max-fw-size"
> +#define PC_MACHINE_SMBIOS_EP "smbios-ep"
>
> /**
> * PCMachineClass:
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 640fb5b0b7..3cc559e0d9 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -81,6 +81,7 @@
> #include "hw/mem/nvdimm.h"
> #include "qapi/error.h"
> #include "qapi/qapi-visit-common.h"
> +#include "qapi/qapi-visit-smbios.h"
> #include "qapi/visitor.h"
> #include "hw/core/cpu.h"
> #include "hw/usb.h"
> @@ -1532,6 +1533,23 @@ static void pc_machine_set_hpet(Object *obj, bool value, Error **errp)
> pcms->hpet_enabled = value;
> }
>
> +static void pc_machine_get_smbios_ep(Object *obj, Visitor *v, const char *name,
> + void *opaque, Error **errp)
> +{
> + PCMachineState *pcms = PC_MACHINE(obj);
> + SmbiosEntryPointType smbios_ep = pcms->smbios_ep;
> +
> + visit_type_SmbiosEntryPointType(v, name, &smbios_ep, errp);
> +}
> +
> +static void pc_machine_set_smbios_ep(Object *obj, Visitor *v, const char *name,
> + void *opaque, Error **errp)
> +{
> + PCMachineState *pcms = PC_MACHINE(obj);
> +
> + visit_type_SmbiosEntryPointType(v, name, &pcms->smbios_ep, errp);
> +}
> +
> static void pc_machine_get_max_ram_below_4g(Object *obj, Visitor *v,
> const char *name, void *opaque,
> Error **errp)
> @@ -1621,6 +1639,8 @@ 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_ep = SMBIOS_ENTRY_POINT_TYPE_2_1;
> +
> /* acpi build is enabled by default if machine supports it */
> pcms->acpi_build_enabled = PC_MACHINE_GET_CLASS(pcms)->has_acpi_build;
> pcms->smbus_enabled = true;
> @@ -1759,6 +1779,12 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
> NULL, NULL);
> object_class_property_set_description(oc, PC_MACHINE_MAX_FW_SIZE,
> "Maximum combined firmware size");
> +
> + object_class_property_add(oc, PC_MACHINE_SMBIOS_EP, "str",
> + pc_machine_get_smbios_ep, pc_machine_set_smbios_ep,
> + NULL, NULL);
> + object_class_property_set_description(oc, PC_MACHINE_SMBIOS_EP,
> + "SMBIOS Entry Point version [v2_1, v3_0]");
> }
>
> static const TypeInfo pc_machine_info = {
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 08b82df4d1..30ae7f27af 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -179,7 +179,7 @@ static void pc_init1(MachineState *machine,
> smbios_set_defaults("QEMU", "Standard PC (i440FX + PIIX, 1996)",
> mc->name, pcmc->smbios_legacy_mode,
> pcmc->smbios_uuid_encoded,
> - SMBIOS_ENTRY_POINT_TYPE_2_1);
> + pcms->smbios_ep);
> }
>
> /* allocate ram and load rom/bios */
> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> index f71b1e2dcf..9974426806 100644
> --- a/hw/i386/pc_q35.c
> +++ b/hw/i386/pc_q35.c
> @@ -198,7 +198,7 @@ static void pc_q35_init(MachineState *machine)
> smbios_set_defaults("QEMU", "Standard PC (Q35 + ICH9, 2009)",
> mc->name, pcmc->smbios_legacy_mode,
> pcmc->smbios_uuid_encoded,
> - SMBIOS_ENTRY_POINT_TYPE_2_1);
> + pcms->smbios_ep);
> }
>
> /* allocate ram and load rom/bios */
next prev parent reply other threads:[~2021-01-04 22:45 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-14 20:50 [PATCH v2 0/3] pc: Support configuration of SMBIOS entry point type Eduardo Habkost
2020-12-14 20:50 ` [PATCH v2 1/3] smbios: Rename SMBIOS_ENTRY_POINT_* enums Eduardo Habkost
2020-12-29 13:20 ` Igor Mammedov
2020-12-14 20:50 ` [PATCH v2 2/3] hw/smbios: Use qapi for SmbiosEntryPointType Eduardo Habkost
2020-12-29 13:21 ` Igor Mammedov
2020-12-29 13:21 ` Igor Mammedov
2020-12-14 20:50 ` [PATCH v2 3/3] hw/i386: expose a "smbios-ep" PC machine property Eduardo Habkost
2021-01-04 22:44 ` Igor Mammedov [this message]
2021-01-05 11:02 ` Michael S. Tsirkin
2021-01-05 11:02 ` Michael S. Tsirkin
2020-12-29 13:20 ` [PATCH v2 0/3] pc: Support configuration of SMBIOS entry point type Igor Mammedov
2021-01-04 22:10 ` Eduardo Habkost
2020-12-29 15:10 ` Philippe Mathieu-Daudé
2020-12-29 15:10 ` Philippe Mathieu-Daudé
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=20210104234440.2da6c503@redhat.com \
--to=imammedo@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=ehabkost@redhat.com \
--cc=lersek@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@redhat.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/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.