ACPI subtable parsing needs to be extended to allow two or more handlers to be run in the same ACPI table walk. This is needed to fix CPU enumeration when APIC/X2APIC entries are interleaved. Signed-off-by: Lukasz Anaczkowski <lukasz.anaczkowski@xxxxxxxxx> --- drivers/acpi/tables.c | 13 ++++++++++++- include/linux/acpi.h | 4 ++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c index 2e19189..aa8bcc6 100644 --- a/drivers/acpi/tables.c +++ b/drivers/acpi/tables.c @@ -277,7 +277,7 @@ acpi_parse_entries(char *id, unsigned long table_size, } int __init -acpi_table_parse_entries(char *id, +acpi_table_parse_entries_array(char *id, unsigned long table_size, int entry_id, acpi_tbl_entry_handler handler, @@ -311,6 +311,17 @@ acpi_table_parse_entries(char *id, } int __init +acpi_table_parse_entries(char *id, + unsigned long table_size, + int entry_id, + acpi_tbl_entry_handler handler, + unsigned int max_entries) +{ + return acpi_table_parse_entries_array(id, table_size, entry_id, + handler, max_entries); +} + +int __init acpi_table_parse_madt(enum acpi_madt_type id, acpi_tbl_entry_handler handler, unsigned int max_entries) { diff --git a/include/linux/acpi.h b/include/linux/acpi.h index d2445fa..07fd1d1 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -153,6 +153,10 @@ int __init acpi_table_parse_entries(char *id, unsigned long table_size, int entry_id, acpi_tbl_entry_handler handler, unsigned int max_entries); +int __init acpi_table_parse_entries_array(char *id, unsigned long table_size, + int entry_id, + acpi_tbl_entry_handler handler, + unsigned int max_entries); int acpi_table_parse_madt(enum acpi_madt_type id, acpi_tbl_entry_handler handler, unsigned int max_entries); -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html