]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
x86/PCI: Simplify Dell DMI B1 quirk
authorJean Delvare <jdelvare@suse.de>
Fri, 2 Jun 2017 14:13:11 +0000 (16:13 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 15 Jun 2017 21:35:54 +0000 (16:35 -0500)
No need for such convoluted code, when all we need is to call one function
in one specific case.

Tested-by: Narendra K <Narendra.K@dell.com> # DellEMC PowerEdge 1950, R730XD
Signed-off-by: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
arch/x86/pci/common.c

index 190e718694b1720df737afdd9688ded962be6014..1f9f2ee7c421dba5120db968fbed8b7f913237ba 100644 (file)
@@ -24,7 +24,6 @@ unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 |
 
 unsigned int pci_early_dump_regs;
 static int pci_bf_sort;
-static int smbios_type_b1_flag;
 int pci_routeirq;
 int noioapicquirk;
 #ifdef CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS
@@ -197,34 +196,18 @@ static int __init set_bf_sort(const struct dmi_system_id *d)
 static void __init read_dmi_type_b1(const struct dmi_header *dm,
                                    void *private_data)
 {
-       u8 *d = (u8 *)dm + 4;
+       u8 *data = (u8 *)dm + 4;
 
        if (dm->type != 0xB1)
                return;
-       switch (((*(u32 *)d) >> 9) & 0x03) {
-       case 0x00:
-               printk(KERN_INFO "dmi type 0xB1 record - unknown flag\n");
-               break;
-       case 0x01: /* set pci=bfsort */
-               smbios_type_b1_flag = 1;
-               break;
-       case 0x02: /* do not set pci=bfsort */
-               smbios_type_b1_flag = 2;
-               break;
-       default:
-               break;
-       }
+       if ((((*(u32 *)data) >> 9) & 0x03) == 0x01)
+               set_bf_sort((const struct dmi_system_id *)private_data);
 }
 
 static int __init find_sort_method(const struct dmi_system_id *d)
 {
-       dmi_walk(read_dmi_type_b1, NULL);
-
-       if (smbios_type_b1_flag == 1) {
-               set_bf_sort(d);
-               return 0;
-       }
-       return -1;
+       dmi_walk(read_dmi_type_b1, (void *)d);
+       return 0;
 }
 
 /*