diff options
author | Bob Moore <robert.moore@intel.com> | 2013-02-22 11:46:32 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2013-02-22 11:46:32 +0100 |
commit | 8ba912f3e41d66311922c03941c3b587e0257472 (patch) | |
tree | 1c447eaeedf690f19f221faff9406cc8d3581b83 /xen/drivers | |
parent | f89ba1a35412c78f26ff91753f69714714cf283f (diff) | |
download | xen-8ba912f3e41d66311922c03941c3b587e0257472.tar.gz xen-8ba912f3e41d66311922c03941c3b587e0257472.tar.bz2 xen-8ba912f3e41d66311922c03941c3b587e0257472.zip |
ACPI 5.0: Implement hardware-reduced option
If HW-reduced flag is set in the FADT, do not attempt to access
or initialize any ACPI hardware, including SCI and global lock.
No FACS will be present.
Signed-off-by: Bob Moore <robert.moore@intel.com>
Also adjust acpi_fadt_parse_sleep_info().
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/drivers')
-rw-r--r-- | xen/drivers/acpi/tables/tbfadt.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/xen/drivers/acpi/tables/tbfadt.c b/xen/drivers/acpi/tables/tbfadt.c index e3644f4927..2ab4588f0b 100644 --- a/xen/drivers/acpi/tables/tbfadt.c +++ b/xen/drivers/acpi/tables/tbfadt.c @@ -197,8 +197,13 @@ void __init acpi_tb_parse_fadt(acpi_native_uint table_index, u8 flags) acpi_tb_install_table((acpi_physical_address) acpi_gbl_FADT.Xdsdt, flags, ACPI_SIG_DSDT, ACPI_TABLE_INDEX_DSDT); - acpi_tb_install_table((acpi_physical_address) acpi_gbl_FADT.Xfacs, - flags, ACPI_SIG_FACS, ACPI_TABLE_INDEX_FACS); + /* If Hardware Reduced flag is set, there is no FACS */ + + if (!acpi_gbl_reduced_hardware) { + acpi_tb_install_table((acpi_physical_address) acpi_gbl_FADT. + Xfacs, flags, ACPI_SIG_FACS, + ACPI_TABLE_INDEX_FACS); + } } /******************************************************************************* @@ -242,6 +247,13 @@ void __init acpi_tb_create_local_fadt(struct acpi_table_header *table, u32 lengt ACPI_MEMCPY(&acpi_gbl_FADT, table, ACPI_MIN(length, sizeof(struct acpi_table_fadt))); + /* Take a copy of the Hardware Reduced flag */ + + acpi_gbl_reduced_hardware = FALSE; + if (acpi_gbl_FADT.flags & ACPI_FADT_HW_REDUCED) { + acpi_gbl_reduced_hardware = TRUE; + } + /* * 1) Convert the local copy of the FADT to the common internal format * 2) Validate some of the important values within the FADT @@ -401,6 +413,12 @@ static void __init acpi_tb_validate_fadt(void) u8 length; acpi_native_uint i; + /* If Hardware Reduced flag is set, we are all done */ + + if (acpi_gbl_reduced_hardware) { + return; + } + /* Examine all of the 64-bit extended address fields (X fields) */ for (i = 0; i < ACPI_FADT_INFO_ENTRIES; i++) { |