The rule demands that all array elements be initialized (or dedicated
initializers be used). Introduce a small set of macros to allow doing so
without unduly affecting use sites (in particular in terms of how many
elements .matches[] actually has; right now there's no use of
DMI_MATCH4(), so we could even consider reducing the array size to 3).
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Of course a question is how many of these DMI table entries are in fact
no longer applicable (e.g. because of naming 32-bit-only systems).
Subsequently the table in dmi_scan.c itself may want cleaning up as
well, yet I guess the question of stale entries is even more relevant
there.
---
v2: Make things also build with older gcc.
--- a/xen/arch/x86/genapic/bigsmp.c
+++ b/xen/arch/x86/genapic/bigsmp.c
@@ -19,11 +19,14 @@ static int __init cf_check force_bigsmp(
static const struct dmi_system_id __initconstrel bigsmp_dmi_table[] = {
- { force_bigsmp, "UNISYS ES7000-ONE", {
- DMI_MATCH(DMI_PRODUCT_NAME, "ES7000-ONE")
- }},
+ {
+ .ident = "UNISYS ES7000-ONE",
+ .callback = force_bigsmp,
+ DMI_MATCH1(
+ DMI_MATCH(DMI_PRODUCT_NAME, "ES7000-ONE")),
+ },
- { }
+ { }
};
--- a/xen/arch/x86/hvm/quirks.c
+++ b/xen/arch/x86/hvm/quirks.c
@@ -36,42 +36,37 @@ static int __init cf_check check_port80(
{
.callback = dmi_hvm_deny_port80,
.ident = "Compaq Presario V6000",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_BOARD_VENDOR, "Quanta"),
- DMI_MATCH(DMI_BOARD_NAME, "30B7")
- }
+ DMI_MATCH(DMI_BOARD_NAME, "30B7")),
},
{
.callback = dmi_hvm_deny_port80,
.ident = "HP Pavilion dv9000z",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_BOARD_VENDOR, "Quanta"),
- DMI_MATCH(DMI_BOARD_NAME, "30B9")
- }
+ DMI_MATCH(DMI_BOARD_NAME, "30B9")),
},
{
.callback = dmi_hvm_deny_port80,
.ident = "HP Pavilion dv6000",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_BOARD_VENDOR, "Quanta"),
- DMI_MATCH(DMI_BOARD_NAME, "30B8")
- }
+ DMI_MATCH(DMI_BOARD_NAME, "30B8")),
},
{
.callback = dmi_hvm_deny_port80,
.ident = "HP Pavilion tx1000",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_BOARD_VENDOR, "Quanta"),
- DMI_MATCH(DMI_BOARD_NAME, "30BF")
- }
+ DMI_MATCH(DMI_BOARD_NAME, "30BF")),
},
{
.callback = dmi_hvm_deny_port80,
.ident = "Presario F700",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_BOARD_VENDOR, "Quanta"),
- DMI_MATCH(DMI_BOARD_NAME, "30D3")
- }
+ DMI_MATCH(DMI_BOARD_NAME, "30D3")),
},
{ }
};
--- a/xen/arch/x86/ioport_emulate.c
+++ b/xen/arch/x86/ioport_emulate.c
@@ -43,59 +43,51 @@ static const struct dmi_system_id __init
*/
{
.ident = "HP ProLiant DL3xx",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
- DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL3"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL3")),
},
{
.ident = "HP ProLiant DL5xx",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
- DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL5"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL5")),
},
{
.ident = "HP ProLiant DL7xx",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
- DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL7"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL7")),
},
{
.ident = "HP ProLiant ML3xx",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
- DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant ML3"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant ML3")),
},
{
.ident = "HP ProLiant ML5xx",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
- DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant ML5"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant ML5")),
},
{
.ident = "HP ProLiant BL2xx",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
- DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant BL2"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant BL2")),
},
{
.ident = "HP ProLiant BL4xx",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
- DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant BL4"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant BL4")),
},
{
.ident = "HP ProLiant BL6xx",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
- DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant BL6"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant BL6")),
},
{ }
};
--- a/xen/arch/x86/shutdown.c
+++ b/xen/arch/x86/shutdown.c
@@ -187,348 +187,310 @@ static const struct dmi_system_id __init
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Dell E520",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Dell DM061"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Dell DM061")),
},
{ /* Handle problems with rebooting on Dell 1300's */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Dell PowerEdge 1300",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
- DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 1300/"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 1300/")),
},
{ /* Handle problems with rebooting on Dell 300's */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Dell PowerEdge 300",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
- DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 300/"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 300/")),
},
{ /* Handle problems with rebooting on Dell Optiplex 745's SFF */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Dell OptiPlex 745",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745")),
},
{ /* Handle problems with rebooting on Dell Optiplex 745's DFF */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Dell OptiPlex 745",
- .matches = {
+ DMI_MATCH3(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"),
- DMI_MATCH(DMI_BOARD_NAME, "0MM599"),
- },
+ DMI_MATCH(DMI_BOARD_NAME, "0MM599")),
},
{ /* Handle problems with rebooting on Dell Optiplex 745 with 0KW626 */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Dell OptiPlex 745",
- .matches = {
+ DMI_MATCH3(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"),
- DMI_MATCH(DMI_BOARD_NAME, "0KW626"),
- },
+ DMI_MATCH(DMI_BOARD_NAME, "0KW626")),
},
{ /* Handle problems with rebooting on Dell Optiplex 330 with 0KP561 */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Dell OptiPlex 330",
- .matches = {
+ DMI_MATCH3(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 330"),
- DMI_MATCH(DMI_BOARD_NAME, "0KP561"),
- },
+ DMI_MATCH(DMI_BOARD_NAME, "0KP561")),
},
{ /* Handle problems with rebooting on Dell Optiplex 360 with 0T656F */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Dell OptiPlex 360",
- .matches = {
+ DMI_MATCH3(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 360"),
- DMI_MATCH(DMI_BOARD_NAME, "0T656F"),
- },
+ DMI_MATCH(DMI_BOARD_NAME, "0T656F")),
},
{ /* Handle problems with rebooting on Dell OptiPlex 760 with 0G919G */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Dell OptiPlex 760",
- .matches = {
+ DMI_MATCH3(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 760"),
- DMI_MATCH(DMI_BOARD_NAME, "0G919G"),
- },
+ DMI_MATCH(DMI_BOARD_NAME, "0G919G")),
},
{ /* Handle problems with rebooting on Dell 2400's */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Dell PowerEdge 2400",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
- DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 2400"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 2400")),
},
{ /* Handle problems with rebooting on Dell T5400's */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Dell Precision T5400",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation T5400"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation T5400")),
},
{ /* Handle problems with rebooting on Dell T7400's */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Dell Precision T7400",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation T7400"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation T7400")),
},
{ /* Handle problems with rebooting on HP laptops */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "HP Compaq Laptop",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
- DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq")),
},
{ /* Handle problems with rebooting on Dell XPS710 */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Dell XPS710",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Dell XPS710"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Dell XPS710")),
},
{ /* Handle problems with rebooting on Dell DXP061 */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Dell DXP061",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Dell DXP061"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Dell DXP061")),
},
{ /* Handle problems with rebooting on Sony VGN-Z540N */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Sony VGN-Z540N",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
- DMI_MATCH(DMI_PRODUCT_NAME, "VGN-Z540N"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "VGN-Z540N")),
},
{ /* Handle problems with rebooting on ASUS P4S800 */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "ASUS P4S800",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
- DMI_MATCH(DMI_BOARD_NAME, "P4S800"),
- },
+ DMI_MATCH(DMI_BOARD_NAME, "P4S800")),
},
{ /* Handle reboot issue on Acer Aspire one */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_KBD,
.ident = "Acer Aspire One A110",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
- DMI_MATCH(DMI_PRODUCT_NAME, "AOA110"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "AOA110")),
},
{ /* Handle problems with rebooting on Apple MacBook5 */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Apple MacBook5",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBook5"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "MacBook5")),
},
{ /* Handle problems with rebooting on Apple MacBookPro5 */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Apple MacBookPro5",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5")),
},
{ /* Handle problems with rebooting on Apple Macmini3,1 */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Apple Macmini3,1",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Macmini3,1"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Macmini3,1")),
},
{ /* Handle problems with rebooting on the iMac9,1. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Apple iMac9,1",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "iMac9,1"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "iMac9,1")),
},
{ /* Handle problems with rebooting on the Latitude E6320. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Dell Latitude E6320",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6320"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6320")),
},
{ /* Handle problems with rebooting on the Latitude E5420. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Dell Latitude E5420",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E5420"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E5420")),
},
{ /* Handle problems with rebooting on the Latitude E6220. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Dell Latitude E6220",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6220"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6220")),
},
{ /* Handle problems with rebooting on the Latitude E6420. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Dell Latitude E6420",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6420"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6420")),
},
{ /* Handle problems with rebooting on the OptiPlex 990. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Dell OptiPlex 990",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990")),
},
{ /* Handle problems with rebooting on the Precision M6600. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Dell OptiPlex 990",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Precision M6600"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Precision M6600")),
},
{ /* Handle problems with rebooting on the Latitude E6520. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Dell Latitude E6520",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6520"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6520")),
},
{ /* Handle problems with rebooting on the OptiPlex 790. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Dell OptiPlex 790",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 790"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 790")),
},
{ /* Handle problems with rebooting on the OptiPlex 990. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Dell OptiPlex 990",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990")),
},
{ /* Handle problems with rebooting on the OptiPlex 390. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Dell OptiPlex 390",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 390"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 390")),
},
{ /* Handle problems with rebooting on Dell OptiPlex 9020. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_ACPI,
.ident = "Dell OptiPlex 9020",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 9020"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 9020")),
},
{ /* Handle problems with rebooting on the Latitude E6320. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Dell Latitude E6320",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6320"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6320")),
},
{ /* Handle problems with rebooting on the Latitude E6420. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Dell Latitude E6420",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6420"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6420")),
},
{ /* Handle problems with rebooting on the Latitude E6520. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_CF9,
.ident = "Dell Latitude E6520",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6520"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6520")),
},
{ /* Handle problems with rebooting on Dell PowerEdge R540. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_ACPI,
.ident = "Dell PowerEdge R540",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge R540"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge R540")),
},
{ /* Handle problems with rebooting on Dell PowerEdge R740. */
.callback = override_reboot,
.driver_data = (void *)(long)BOOT_ACPI,
.ident = "Dell PowerEdge R740",
- .matches = {
+ DMI_MATCH2(
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
- DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge R740"),
- },
+ DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge R740")),
},
{ }
};
--- a/xen/arch/x86/x86_64/mmconf-fam10h.c
+++ b/xen/arch/x86/x86_64/mmconf-fam10h.c
@@ -188,9 +188,8 @@ void fam10h_check_enable_mmcfg(void)
static const struct dmi_system_id __initconstrel mmconf_dmi_table[] = {
{
.ident = "Sun Microsystems Machine",
- .matches = {
- DMI_MATCH(DMI_SYS_VENDOR, "Sun Microsystems"),
- },
+ DMI_MATCH1(
+ DMI_MATCH(DMI_SYS_VENDOR, "Sun Microsystems")),
},
{}
};
--- a/xen/include/xen/dmi.h
+++ b/xen/include/xen/dmi.h
@@ -32,6 +32,11 @@ struct dmi_system_id {
#define DMI_MATCH(a,b) { a, b }
+#define DMI_MATCH4(m1, m2, m3, m4) .matches = { m1, m2, m3, m4 }
+#define DMI_MATCH3(m1, m2, m3) .matches = { [0] = m1, [1] = m2, [2] = m3 }
+#define DMI_MATCH2(m1, m2) .matches = { [0] = m1, [1] = m2 }
+#define DMI_MATCH1(m1) .matches = { [0] = m1 }
+
extern int dmi_check_system(const struct dmi_system_id *list);
extern void dmi_scan_machine(void);
extern const char *dmi_get_table(paddr_t *base, u32 *len);
On 05/12/2023 1:35 pm, Jan Beulich wrote: > The rule demands that all array elements be initialized (or dedicated > initializers be used). Introduce a small set of macros to allow doing so > without unduly affecting use sites (in particular in terms of how many > elements .matches[] actually has; right now there's no use of > DMI_MATCH4(), so we could even consider reducing the array size to 3). > > Signed-off-by: Jan Beulich <jbeulich@suse.com> > --- > Of course a question is how many of these DMI table entries are in fact > no longer applicable (e.g. because of naming 32-bit-only systems). > Subsequently the table in dmi_scan.c itself may want cleaning up as > well, yet I guess the question of stale entries is even more relevant > there. > --- > v2: Make things also build with older gcc. This is broken with Ubuntu https://gitlab.com/xen-project/xen/-/jobs/5691138448 and you don't appear to have been online today. Unless you have a clever idea for a very prompt fix, it's going to need reverting to cause GitlabCI to be usable for everyone else. ~Andrew
On 06.12.2023 21:45, Andrew Cooper wrote: > On 05/12/2023 1:35 pm, Jan Beulich wrote: >> The rule demands that all array elements be initialized (or dedicated >> initializers be used). Introduce a small set of macros to allow doing so >> without unduly affecting use sites (in particular in terms of how many >> elements .matches[] actually has; right now there's no use of >> DMI_MATCH4(), so we could even consider reducing the array size to 3). >> >> Signed-off-by: Jan Beulich <jbeulich@suse.com> >> --- >> Of course a question is how many of these DMI table entries are in fact >> no longer applicable (e.g. because of naming 32-bit-only systems). >> Subsequently the table in dmi_scan.c itself may want cleaning up as >> well, yet I guess the question of stale entries is even more relevant >> there. >> --- >> v2: Make things also build with older gcc. > > > This is broken with Ubuntu > https://gitlab.com/xen-project/xen/-/jobs/5691138448 and you don't > appear to have been online today. And rightly so. I accidentally committed the v1 patch instead of the v2 one. > Unless you have a clever idea for a very prompt fix, it's going to need > reverting to cause GitlabCI to be usable for everyone else. I'll revert and put in the right change. I was online till about 15 minutes before you messaging me on Matrix. Jan
On Tue, 5 Dec 2023, Jan Beulich wrote: > The rule demands that all array elements be initialized (or dedicated > initializers be used). Introduce a small set of macros to allow doing so > without unduly affecting use sites (in particular in terms of how many > elements .matches[] actually has; right now there's no use of > DMI_MATCH4(), so we could even consider reducing the array size to 3). > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Hi Jan, On 2023-12-05 14:35, Jan Beulich wrote: > The rule demands that all array elements be initialized (or dedicated > initializers be used). Introduce a small set of macros to allow doing > so > without unduly affecting use sites (in particular in terms of how many > elements .matches[] actually has; right now there's no use of > DMI_MATCH4(), so we could even consider reducing the array size to 3). > > Signed-off-by: Jan Beulich <jbeulich@suse.com> > --- > Of course a question is how many of these DMI table entries are in fact > no longer applicable (e.g. because of naming 32-bit-only systems). > Subsequently the table in dmi_scan.c itself may want cleaning up as > well, yet I guess the question of stale entries is even more relevant > there. > --- > v2: Make things also build with older gcc. > Analyzed with ECLAIR for Rule 9.3: resolves all the violations related to DMI_MATCH. -- Nicola Vetrini, BSc Software Engineer, BUGSENG srl (https://bugseng.com)
© 2016 - 2024 Red Hat, Inc.