Re: [RFC] - Mapping ACPI tables as CACHED
From: Len Brown <lenb@kernel.org>
Date: 2010-08-26 17:48:18
Also in:
lkml
On Tue, 17 Aug 2010, Jack Steiner wrote:
On EFI-enabled systems (like UV), the ACPI tables are already mapped as WB memory. This is done in the EFI function efi_enter_virtual_mode(). The E820_ACPI & E820_NVS regions will be mapped as WB memory if the BIOS sets the WB attribute in the EFI memmap entry for the chunk of memory. The ACPI code in acpi_os_map_memory() is not currently aware of the EFI mapping & currently maps the memory as UC. This seems like a bug. In order to prevent attribute aliasing, I think the ACPI mapping needs to be consistent with the EFI mapping. Otherwise, we will have the OS referencing the memory as UC at the same time BIOS is referencing it as WB.
When would the firmware touch those tables after booting the OS? We once found a Toshiba laptop where the BIOS scribbles on the DSDT at run-time. We presumed from this that Windows must snapshot the tables at boot and run from a copy. We decided not to copy the tables, but to use them in-place. So we added a check for run-time corruption of the tables and we've seen it fire only on that one Toshiba box (which now boots with "acpi=copy_dsdt"). thanks, Len Brown, Intel Open Source Technology Center