On Mon, Mar 30, 2020 at 10:58 AM Jan Engelhardt <jengelh@xxxxxxx> wrote: > > When the firmware ROM supplies a FACS table with garbage, and the > firmware code does not clear the global_lock field before booting to a > loader/OS, the garbage bytes in that field (like 0xffffffff) can > indicate that the lock is taken when it is not, thereby preventing > obtaining said lock even though it is otherwise perfectly usable if > the field were not prepopulated with garbage. > > Reset the lock to a known good state upon ACPI initialization. > > References: https://bugzilla.kernel.org/show_bug.cgi?id=206553 > Signed-off-by: Jan Engelhardt <jengelh@xxxxxxx> Bob, Erik, please let me know if you want me to apply this directly or you prefer to route it through the upstream. > --- > > drivers/acpi/acpica/tbutils.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/acpi/acpica/tbutils.c b/drivers/acpi/acpica/tbutils.c > index c5f0b8ec70cc..26bdbc585d7e 100644 > --- a/drivers/acpi/acpica/tbutils.c > +++ b/drivers/acpi/acpica/tbutils.c > @@ -56,6 +56,9 @@ acpi_status acpi_tb_initialize_facs(void) > &facs)); > acpi_gbl_FACS = facs; > } > + /* Clear potential garbage from the initial FACS table. */ > + if (facs != NULL) > + facs->global_lock &= ~0x3; > > /* If there is no FACS, just continue. There was already an error msg */ > > -- > 2.26.0 >