diff mbox series

[v4,1/3] hw/i386/pc: Refactor logic to set SMBIOS set defaults

Message ID 20230605213906.644883-2-suravee.suthikulpanit@amd.com
State New
Headers show
Series hw/i386/pc: Update max_cpus and default to SMBIOS | expand

Commit Message

Suravee Suthikulpanit June 5, 2023, 9:39 p.m. UTC
In preparation for subsequent code to upgrade default SMBIOS
entry point type. There is no functional change.

Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
---
 hw/i386/pc.c      | 12 ++++++++++++
 hw/i386/pc_piix.c |  9 ---------
 hw/i386/pc_q35.c  |  8 --------
 3 files changed, 12 insertions(+), 17 deletions(-)

Comments

Igor Mammedov June 6, 2023, 7:45 a.m. UTC | #1
On Mon, 5 Jun 2023 16:39:04 -0500
Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> wrote:

> In preparation for subsequent code to upgrade default SMBIOS
> entry point type. There is no functional change.
> 
> Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
> ---
>  hw/i386/pc.c      | 12 ++++++++++++
>  hw/i386/pc_piix.c |  9 ---------
>  hw/i386/pc_q35.c  |  8 --------
>  3 files changed, 12 insertions(+), 17 deletions(-)
> 
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index bb62c994fa..8fc34f5454 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -781,6 +781,18 @@ void pc_machine_done(Notifier *notifier, void *data)
>  
>      acpi_setup();
>      if (x86ms->fw_cfg) {
> +        PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
> +
> +        if (pcmc->smbios_defaults) {
> +            MachineClass *mc = MACHINE_GET_CLASS(pcms);
> +
> +            /* These values are guest ABI, do not change */
> +            smbios_set_defaults("QEMU", mc->desc,
> +                                mc->name, pcmc->smbios_legacy_mode,
> +                                pcmc->smbios_uuid_encoded,
> +                                pcms->smbios_entry_point_type);
> +        }
> 

well, pc_machine_done() is the hack for the last minute changes to
board that can't done earlier otherwise (during machine_initfn time).
So I'd prefer not adding anything there unless we have to.

>          fw_cfg_build_smbios(MACHINE(pcms), x86ms->fw_cfg);
>          fw_cfg_build_feature_control(MACHINE(pcms), x86ms->fw_cfg);
>          /* update FW_CFG_NB_CPUS to account for -device added CPUs */
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index d5b0dcd1fe..da6ba4eeb4 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -198,15 +198,6 @@ static void pc_init1(MachineState *machine,
>  
>      pc_guest_info_init(pcms);
>  
> -    if (pcmc->smbios_defaults) {
> -        MachineClass *mc = MACHINE_GET_CLASS(machine);
> -        /* These values are guest ABI, do not change */
> -        smbios_set_defaults("QEMU", mc->desc,
> -                            mc->name, pcmc->smbios_legacy_mode,
> -                            pcmc->smbios_uuid_encoded,
> -                            pcms->smbios_entry_point_type);
> -    }
> -
>      /* allocate ram and load rom/bios */
>      if (!xen_enabled()) {
>          pc_memory_init(pcms, system_memory, rom_memory, hole64_size);
> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> index 6155427e48..a58cd1d3ea 100644
> --- a/hw/i386/pc_q35.c
> +++ b/hw/i386/pc_q35.c
> @@ -198,14 +198,6 @@ static void pc_q35_init(MachineState *machine)
>  
>      pc_guest_info_init(pcms);
>  
> -    if (pcmc->smbios_defaults) {
> -        /* These values are guest ABI, do not change */
> -        smbios_set_defaults("QEMU", mc->desc,
> -                            mc->name, pcmc->smbios_legacy_mode,
> -                            pcmc->smbios_uuid_encoded,
> -                            pcms->smbios_entry_point_type);
> -    }
> -
>      /* create pci host bus */
>      q35_host = Q35_HOST_DEVICE(qdev_new(TYPE_Q35_HOST_DEVICE));
>
Suravee Suthikulpanit June 7, 2023, 1:23 a.m. UTC | #2
Igore,

On 6/6/2023 2:45 PM, Igor Mammedov wrote:
> On Mon, 5 Jun 2023 16:39:04 -0500
> Suravee Suthikulpanit<suravee.suthikulpanit@amd.com>  wrote:
> 
>> In preparation for subsequent code to upgrade default SMBIOS
>> entry point type. There is no functional change.
>>
>> Signed-off-by: Suravee Suthikulpanit<suravee.suthikulpanit@amd.com>
>> ---
>>   hw/i386/pc.c      | 12 ++++++++++++
>>   hw/i386/pc_piix.c |  9 ---------
>>   hw/i386/pc_q35.c  |  8 --------
>>   3 files changed, 12 insertions(+), 17 deletions(-)
>>
>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>> index bb62c994fa..8fc34f5454 100644
>> --- a/hw/i386/pc.c
>> +++ b/hw/i386/pc.c
>> @@ -781,6 +781,18 @@ void pc_machine_done(Notifier *notifier, void *data)
>>   
>>       acpi_setup();
>>       if (x86ms->fw_cfg) {
>> +        PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
>> +
>> +        if (pcmc->smbios_defaults) {
>> +            MachineClass *mc = MACHINE_GET_CLASS(pcms);
>> +
>> +            /* These values are guest ABI, do not change */
>> +            smbios_set_defaults("QEMU", mc->desc,
>> +                                mc->name, pcmc->smbios_legacy_mode,
>> +                                pcmc->smbios_uuid_encoded,
>> +                                pcms->smbios_entry_point_type);
>> +        }
>>
> well, pc_machine_done() is the hack for the last minute changes to
> board that can't done earlier otherwise (during machine_initfn time).
> So I'd prefer not adding anything there unless we have to.

Originally, I put it here because pc_machine_set_smbios_ep() is called 
between the pc_machine_init_fn() and pc_machine_done().


In this case, I'll move this code to the end of pc_machine_init_fn(). 
Then, I can call smbios_set_defaults() from pc_machine_set_smbios_ep() 
to override the previously set defaults.

Thanks,
Suravee
diff mbox series

Patch

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index bb62c994fa..8fc34f5454 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -781,6 +781,18 @@  void pc_machine_done(Notifier *notifier, void *data)
 
     acpi_setup();
     if (x86ms->fw_cfg) {
+        PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
+
+        if (pcmc->smbios_defaults) {
+            MachineClass *mc = MACHINE_GET_CLASS(pcms);
+
+            /* These values are guest ABI, do not change */
+            smbios_set_defaults("QEMU", mc->desc,
+                                mc->name, pcmc->smbios_legacy_mode,
+                                pcmc->smbios_uuid_encoded,
+                                pcms->smbios_entry_point_type);
+        }
+
         fw_cfg_build_smbios(MACHINE(pcms), x86ms->fw_cfg);
         fw_cfg_build_feature_control(MACHINE(pcms), x86ms->fw_cfg);
         /* update FW_CFG_NB_CPUS to account for -device added CPUs */
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index d5b0dcd1fe..da6ba4eeb4 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -198,15 +198,6 @@  static void pc_init1(MachineState *machine,
 
     pc_guest_info_init(pcms);
 
-    if (pcmc->smbios_defaults) {
-        MachineClass *mc = MACHINE_GET_CLASS(machine);
-        /* These values are guest ABI, do not change */
-        smbios_set_defaults("QEMU", mc->desc,
-                            mc->name, pcmc->smbios_legacy_mode,
-                            pcmc->smbios_uuid_encoded,
-                            pcms->smbios_entry_point_type);
-    }
-
     /* allocate ram and load rom/bios */
     if (!xen_enabled()) {
         pc_memory_init(pcms, system_memory, rom_memory, hole64_size);
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 6155427e48..a58cd1d3ea 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -198,14 +198,6 @@  static void pc_q35_init(MachineState *machine)
 
     pc_guest_info_init(pcms);
 
-    if (pcmc->smbios_defaults) {
-        /* These values are guest ABI, do not change */
-        smbios_set_defaults("QEMU", mc->desc,
-                            mc->name, pcmc->smbios_legacy_mode,
-                            pcmc->smbios_uuid_encoded,
-                            pcms->smbios_entry_point_type);
-    }
-
     /* create pci host bus */
     q35_host = Q35_HOST_DEVICE(qdev_new(TYPE_Q35_HOST_DEVICE));