]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ACPI: resource: acpi_dev_irq_override(): Check DMI match last
authorHans de Goede <hdegoede@redhat.com>
Sat, 28 Dec 2024 16:52:53 +0000 (17:52 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 7 Jan 2025 18:26:48 +0000 (19:26 +0100)
acpi_dev_irq_override() gets called approx. 30 times during boot (15 legacy
IRQs * 2 override_table entries). Of these 30 calls at max 1 will match
the non DMI checks done by acpi_dev_irq_override(). The dmi_check_system()
check is by far the most expensive check done by acpi_dev_irq_override(),
make this call the last check done by acpi_dev_irq_override() so that it
will be called at max 1 time instead of 30 times.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Link: https://patch.msgid.link/20241228165253.42584-1-hdegoede@redhat.com
[ rjw: Subject edit ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/resource.c

index d27a3bf96f80d81a1c998d3ca96989ad7e0b60a7..90aaec923889cf0d9dbb2fe98b3fe65eebd7bd00 100644 (file)
@@ -689,11 +689,11 @@ static bool acpi_dev_irq_override(u32 gsi, u8 triggering, u8 polarity,
        for (i = 0; i < ARRAY_SIZE(override_table); i++) {
                const struct irq_override_cmp *entry = &override_table[i];
 
-               if (dmi_check_system(entry->system) &&
-                   entry->irq == gsi &&
+               if (entry->irq == gsi &&
                    entry->triggering == triggering &&
                    entry->polarity == polarity &&
-                   entry->shareable == shareable)
+                   entry->shareable == shareable &&
+                   dmi_check_system(entry->system))
                        return entry->override;
        }