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

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'acpi-4.18-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull ACPI fix from Rafael Wysocki:
"Fix a recent ACPICA regression causing the AML parser to get confused
and fail in some situations involving incorrect AML in an ACPI table
(Erik Schmauss)"

* tag 'acpi-4.18-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
ACPICA: AML Parser: ignore dispatcher error status during table load

+26
+26
drivers/acpi/acpica/psloop.c
··· 497 497 status = 498 498 acpi_ps_create_op(walk_state, aml_op_start, &op); 499 499 if (ACPI_FAILURE(status)) { 500 + /* 501 + * ACPI_PARSE_MODULE_LEVEL means that we are loading a table by 502 + * executing it as a control method. However, if we encounter 503 + * an error while loading the table, we need to keep trying to 504 + * load the table rather than aborting the table load. Set the 505 + * status to AE_OK to proceed with the table load. 506 + */ 507 + if ((walk_state-> 508 + parse_flags & ACPI_PARSE_MODULE_LEVEL) 509 + && status == AE_ALREADY_EXISTS) { 510 + status = AE_OK; 511 + } 500 512 if (status == AE_CTRL_PARSE_CONTINUE) { 501 513 continue; 502 514 } ··· 705 693 status = 706 694 acpi_ps_next_parse_state(walk_state, op, status); 707 695 if (status == AE_CTRL_PENDING) { 696 + status = AE_OK; 697 + } else 698 + if ((walk_state-> 699 + parse_flags & ACPI_PARSE_MODULE_LEVEL) 700 + && ACPI_FAILURE(status)) { 701 + /* 702 + * ACPI_PARSE_MODULE_LEVEL means that we are loading a table by 703 + * executing it as a control method. However, if we encounter 704 + * an error while loading the table, we need to keep trying to 705 + * load the table rather than aborting the table load. Set the 706 + * status to AE_OK to proceed with the table load. If we get a 707 + * failure at this point, it means that the dispatcher got an 708 + * error while processing Op (most likely an AML operand error. 709 + */ 708 710 status = AE_OK; 709 711 } 710 712 }