diff options
Diffstat (limited to 'drivers/acpi/tables.c')
-rw-r--r-- | drivers/acpi/tables.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c index 21782290df41..05550ba44d32 100644 --- a/drivers/acpi/tables.c +++ b/drivers/acpi/tables.c | |||
@@ -44,6 +44,12 @@ static struct acpi_table_desc initial_tables[ACPI_MAX_TABLES] __initdata; | |||
44 | 44 | ||
45 | static int acpi_apic_instance __initdata; | 45 | static int acpi_apic_instance __initdata; |
46 | 46 | ||
47 | /* | ||
48 | * Disable table checksum verification for the early stage due to the size | ||
49 | * limitation of the current x86 early mapping implementation. | ||
50 | */ | ||
51 | static bool acpi_verify_table_checksum __initdata = false; | ||
52 | |||
47 | void acpi_table_print_madt_entry(struct acpi_subtable_header *header) | 53 | void acpi_table_print_madt_entry(struct acpi_subtable_header *header) |
48 | { | 54 | { |
49 | if (!header) | 55 | if (!header) |
@@ -333,6 +339,14 @@ int __init acpi_table_init(void) | |||
333 | { | 339 | { |
334 | acpi_status status; | 340 | acpi_status status; |
335 | 341 | ||
342 | if (acpi_verify_table_checksum) { | ||
343 | pr_info("Early table checksum verification enabled\n"); | ||
344 | acpi_gbl_verify_table_checksum = TRUE; | ||
345 | } else { | ||
346 | pr_info("Early table checksum verification disabled\n"); | ||
347 | acpi_gbl_verify_table_checksum = FALSE; | ||
348 | } | ||
349 | |||
336 | status = acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0); | 350 | status = acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0); |
337 | if (ACPI_FAILURE(status)) | 351 | if (ACPI_FAILURE(status)) |
338 | return -EINVAL; | 352 | return -EINVAL; |
@@ -354,3 +368,12 @@ static int __init acpi_parse_apic_instance(char *str) | |||
354 | } | 368 | } |
355 | 369 | ||
356 | early_param("acpi_apic_instance", acpi_parse_apic_instance); | 370 | early_param("acpi_apic_instance", acpi_parse_apic_instance); |
371 | |||
372 | static int __init acpi_force_table_verification_setup(char *s) | ||
373 | { | ||
374 | acpi_verify_table_checksum = true; | ||
375 | |||
376 | return 0; | ||
377 | } | ||
378 | |||
379 | early_param("acpi_force_table_verification", acpi_force_table_verification_setup); | ||