hv: use 64bit FACS table address only beyond ACPI2.0

Since ACPI 2.0 a new field has been added to the table, X_FirmwareControl of type GAS,
which is 64bit. So use it conditionally.

Tracked-On: #3198
Signed-off-by: Tw <wei.tan@intel.com>
Reviewed-by: Binbin Wu <binbin.wu@intel.com>
This commit is contained in:
Tw 2019-05-29 10:17:40 +08:00 committed by ACRN System Integration
parent 811d1fe93d
commit 34f122192c
1 changed files with 6 additions and 3 deletions

View File

@ -109,13 +109,16 @@ static void *get_facs_table(const uint8_t *facp_addr)
{
uint8_t *facs_addr, *facs_x_addr;
uint32_t signature, length;
struct acpi_table_header *table = (struct acpi_table_header *)facp_addr;
facs_addr = (uint8_t *)(uint64_t)get_acpi_dt_dword(facp_addr, OFFSET_FACS_ADDR);
facs_x_addr = (uint8_t *)get_acpi_dt_qword(facp_addr, OFFSET_FACS_X_ADDR);
if (table->revision >= 2U) {
facs_x_addr = (uint8_t *)get_acpi_dt_qword(facp_addr, OFFSET_FACS_X_ADDR);
if (facs_x_addr != NULL) {
facs_addr = facs_x_addr;
if (facs_x_addr != NULL) {
facs_addr = facs_x_addr;
}
}
if (facs_addr != NULL) {