Message ID | 20211026151100.1691925-2-ehabkost@redhat.com |
---|---|
State | New |
Headers | show |
Series | pc: Support configuration of SMBIOS entry point type | expand |
On Tue, Oct 26, 2021 at 11:10:58AM -0400, Eduardo Habkost wrote: > Rename the enums to match the naming style used by QAPI, and to > use "32" and "64" instead of "20" and "31". This will allow us > to more easily move the enum to the QAPI schema later. > > About the naming choice: "SMBIOS 2.1 entry point"/"SMBIO 3.0 typo in commit log > entry point" and "32-bit entry point"/"64-bit entry point" are > synonymous in the SMBIOS specification. However, the phrases > "32-bit entry point" and "64-bit entry point" are used more often. > > The new names also avoid confusion between the entry point format > and the actual SMBIOS version reported in the entry point > structure. For example: currently the 32-bit entry point > actually report SMBIOS 2.8 support, not 2.1. > > Based on portions of a patch submitted by Daniel P. Berrangé. I think you need the original S.O.B here too then. > > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> > --- > First version of this code was submitted at: > https://lore.kernel.org/qemu-devel/20200908165438.1008942-5-berrange@redhat.com > > Changes from v2: > * Use "32" and "64" instead of "2_0" and "3_1" > > Changes from v1: > * Patch was split in two > * Hunks included this patch are not changed from v1 > --- > include/hw/firmware/smbios.h | 4 ++-- > hw/arm/virt.c | 2 +- > hw/i386/pc_piix.c | 2 +- > hw/i386/pc_q35.c | 2 +- > hw/smbios/smbios.c | 8 ++++---- > 5 files changed, 9 insertions(+), 9 deletions(-) > > diff --git a/include/hw/firmware/smbios.h b/include/hw/firmware/smbios.h > index 5a0dd0c8cff..d916baed6a9 100644 > --- a/include/hw/firmware/smbios.h > +++ b/include/hw/firmware/smbios.h > @@ -27,8 +27,8 @@ struct smbios_phys_mem_area { > * SMBIOS spec defined tables > */ > typedef enum SmbiosEntryPointType { > - SMBIOS_ENTRY_POINT_21, > - SMBIOS_ENTRY_POINT_30, > + SMBIOS_ENTRY_POINT_TYPE_32, > + SMBIOS_ENTRY_POINT_TYPE_64, > } SmbiosEntryPointType; > > /* SMBIOS Entry Point > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index ca433adb5b1..2bd73d501da 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -1589,7 +1589,7 @@ static void virt_build_smbios(VirtMachineState *vms) > > smbios_set_defaults("QEMU", product, > vmc->smbios_old_sys_ver ? "1.0" : mc->name, false, > - true, SMBIOS_ENTRY_POINT_30); > + true, SMBIOS_ENTRY_POINT_TYPE_64); > > smbios_get_tables(MACHINE(vms), NULL, 0, > &smbios_tables, &smbios_tables_len, > diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c > index 6ad0d763c57..17c050694f5 100644 > --- a/hw/i386/pc_piix.c > +++ b/hw/i386/pc_piix.c > @@ -177,7 +177,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_21); > + SMBIOS_ENTRY_POINT_TYPE_32); > } > > /* allocate ram and load rom/bios */ > diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c > index fcc6e4eb2b8..48419ebfd5f 100644 > --- a/hw/i386/pc_q35.c > +++ b/hw/i386/pc_q35.c > @@ -199,7 +199,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_21); > + SMBIOS_ENTRY_POINT_TYPE_32); > } > > /* allocate ram and load rom/bios */ > diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c > index 7397e567373..6013df1698e 100644 > --- a/hw/smbios/smbios.c > +++ b/hw/smbios/smbios.c > @@ -62,7 +62,7 @@ uint8_t *smbios_tables; > size_t smbios_tables_len; > unsigned smbios_table_max; > unsigned smbios_table_cnt; > -static SmbiosEntryPointType smbios_ep_type = SMBIOS_ENTRY_POINT_21; > +static SmbiosEntryPointType smbios_ep_type = SMBIOS_ENTRY_POINT_TYPE_32; > > static SmbiosEntryPoint ep; > > @@ -432,7 +432,7 @@ static void smbios_validate_table(MachineState *ms) > exit(1); > } > > - if (smbios_ep_type == SMBIOS_ENTRY_POINT_21 && > + if (smbios_ep_type == SMBIOS_ENTRY_POINT_TYPE_32 && > smbios_tables_len > SMBIOS_21_MAX_TABLES_LEN) { > error_report("SMBIOS 2.1 table length %zu exceeds %d", > smbios_tables_len, SMBIOS_21_MAX_TABLES_LEN); > @@ -927,7 +927,7 @@ void smbios_set_defaults(const char *manufacturer, const char *product, > static void smbios_entry_point_setup(void) > { > switch (smbios_ep_type) { > - case SMBIOS_ENTRY_POINT_21: > + case SMBIOS_ENTRY_POINT_TYPE_32: > memcpy(ep.ep21.anchor_string, "_SM_", 4); > memcpy(ep.ep21.intermediate_anchor_string, "_DMI_", 5); > ep.ep21.length = sizeof(struct smbios_21_entry_point); > @@ -950,7 +950,7 @@ static void smbios_entry_point_setup(void) > ep.ep21.structure_table_address = cpu_to_le32(0); > > break; > - case SMBIOS_ENTRY_POINT_30: > + case SMBIOS_ENTRY_POINT_TYPE_64: > memcpy(ep.ep30.anchor_string, "_SM3_", 5); > ep.ep30.length = sizeof(struct smbios_30_entry_point); > ep.ep30.entry_point_revision = 1; > -- > 2.32.0
On Wed, Oct 27, 2021 at 03:43:43AM -0400, Michael S. Tsirkin wrote: > On Tue, Oct 26, 2021 at 11:10:58AM -0400, Eduardo Habkost wrote: > > Rename the enums to match the naming style used by QAPI, and to > > use "32" and "64" instead of "20" and "31". This will allow us > > to more easily move the enum to the QAPI schema later. > > > > About the naming choice: "SMBIOS 2.1 entry point"/"SMBIO 3.0 > > typo in commit log I'll fix it, thanks! > > > entry point" and "32-bit entry point"/"64-bit entry point" are > > synonymous in the SMBIOS specification. However, the phrases > > "32-bit entry point" and "64-bit entry point" are used more often. > > > > The new names also avoid confusion between the entry point format > > and the actual SMBIOS version reported in the entry point > > structure. For example: currently the 32-bit entry point > > actually report SMBIOS 2.8 support, not 2.1. > > > > Based on portions of a patch submitted by Daniel P. Berrangé. > > I think you need the original S.O.B here too then. I'm not sure it is appropriate here, as zero lines of code from the original patch remain here. > > > > > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> > > --- > > First version of this code was submitted at: > > https://lore.kernel.org/qemu-devel/20200908165438.1008942-5-berrange@redhat.com > > > > Changes from v2: > > * Use "32" and "64" instead of "2_0" and "3_1" > > > > Changes from v1: > > * Patch was split in two > > * Hunks included this patch are not changed from v1
diff --git a/include/hw/firmware/smbios.h b/include/hw/firmware/smbios.h index 5a0dd0c8cff..d916baed6a9 100644 --- a/include/hw/firmware/smbios.h +++ b/include/hw/firmware/smbios.h @@ -27,8 +27,8 @@ struct smbios_phys_mem_area { * SMBIOS spec defined tables */ typedef enum SmbiosEntryPointType { - SMBIOS_ENTRY_POINT_21, - SMBIOS_ENTRY_POINT_30, + SMBIOS_ENTRY_POINT_TYPE_32, + SMBIOS_ENTRY_POINT_TYPE_64, } SmbiosEntryPointType; /* SMBIOS Entry Point diff --git a/hw/arm/virt.c b/hw/arm/virt.c index ca433adb5b1..2bd73d501da 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1589,7 +1589,7 @@ static void virt_build_smbios(VirtMachineState *vms) smbios_set_defaults("QEMU", product, vmc->smbios_old_sys_ver ? "1.0" : mc->name, false, - true, SMBIOS_ENTRY_POINT_30); + true, SMBIOS_ENTRY_POINT_TYPE_64); smbios_get_tables(MACHINE(vms), NULL, 0, &smbios_tables, &smbios_tables_len, diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 6ad0d763c57..17c050694f5 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -177,7 +177,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_21); + SMBIOS_ENTRY_POINT_TYPE_32); } /* allocate ram and load rom/bios */ diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index fcc6e4eb2b8..48419ebfd5f 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -199,7 +199,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_21); + SMBIOS_ENTRY_POINT_TYPE_32); } /* allocate ram and load rom/bios */ diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index 7397e567373..6013df1698e 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -62,7 +62,7 @@ uint8_t *smbios_tables; size_t smbios_tables_len; unsigned smbios_table_max; unsigned smbios_table_cnt; -static SmbiosEntryPointType smbios_ep_type = SMBIOS_ENTRY_POINT_21; +static SmbiosEntryPointType smbios_ep_type = SMBIOS_ENTRY_POINT_TYPE_32; static SmbiosEntryPoint ep; @@ -432,7 +432,7 @@ static void smbios_validate_table(MachineState *ms) exit(1); } - if (smbios_ep_type == SMBIOS_ENTRY_POINT_21 && + if (smbios_ep_type == SMBIOS_ENTRY_POINT_TYPE_32 && smbios_tables_len > SMBIOS_21_MAX_TABLES_LEN) { error_report("SMBIOS 2.1 table length %zu exceeds %d", smbios_tables_len, SMBIOS_21_MAX_TABLES_LEN); @@ -927,7 +927,7 @@ void smbios_set_defaults(const char *manufacturer, const char *product, static void smbios_entry_point_setup(void) { switch (smbios_ep_type) { - case SMBIOS_ENTRY_POINT_21: + case SMBIOS_ENTRY_POINT_TYPE_32: memcpy(ep.ep21.anchor_string, "_SM_", 4); memcpy(ep.ep21.intermediate_anchor_string, "_DMI_", 5); ep.ep21.length = sizeof(struct smbios_21_entry_point); @@ -950,7 +950,7 @@ static void smbios_entry_point_setup(void) ep.ep21.structure_table_address = cpu_to_le32(0); break; - case SMBIOS_ENTRY_POINT_30: + case SMBIOS_ENTRY_POINT_TYPE_64: memcpy(ep.ep30.anchor_string, "_SM3_", 5); ep.ep30.length = sizeof(struct smbios_30_entry_point); ep.ep30.entry_point_revision = 1;
Rename the enums to match the naming style used by QAPI, and to use "32" and "64" instead of "20" and "31". This will allow us to more easily move the enum to the QAPI schema later. About the naming choice: "SMBIOS 2.1 entry point"/"SMBIO 3.0 entry point" and "32-bit entry point"/"64-bit entry point" are synonymous in the SMBIOS specification. However, the phrases "32-bit entry point" and "64-bit entry point" are used more often. The new names also avoid confusion between the entry point format and the actual SMBIOS version reported in the entry point structure. For example: currently the 32-bit entry point actually report SMBIOS 2.8 support, not 2.1. Based on portions of a patch submitted by Daniel P. Berrangé. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- First version of this code was submitted at: https://lore.kernel.org/qemu-devel/20200908165438.1008942-5-berrange@redhat.com Changes from v2: * Use "32" and "64" instead of "2_0" and "3_1" Changes from v1: * Patch was split in two * Hunks included this patch are not changed from v1 --- include/hw/firmware/smbios.h | 4 ++-- hw/arm/virt.c | 2 +- hw/i386/pc_piix.c | 2 +- hw/i386/pc_q35.c | 2 +- hw/smbios/smbios.c | 8 ++++---- 5 files changed, 9 insertions(+), 9 deletions(-)