Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ACPI: resource: acpi_dev_irq_override(): Check DMI match last

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>

authored by

Hans de Goede and committed by
Rafael J. Wysocki
cd4a7b2e 7ed4e4a6

+3 -3
+3 -3
drivers/acpi/resource.c
··· 689 689 for (i = 0; i < ARRAY_SIZE(override_table); i++) { 690 690 const struct irq_override_cmp *entry = &override_table[i]; 691 691 692 - if (dmi_check_system(entry->system) && 693 - entry->irq == gsi && 692 + if (entry->irq == gsi && 694 693 entry->triggering == triggering && 695 694 entry->polarity == polarity && 696 - entry->shareable == shareable) 695 + entry->shareable == shareable && 696 + dmi_check_system(entry->system)) 697 697 return entry->override; 698 698 } 699 699