From: Roger Pau Monné Date: Tue, 13 Dec 2016 13:20:55 +0000 (+0100) Subject: libacpi: announce that PVHv2 has no CMOS RTC in FADT X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~3165 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e20c3eb8dd62dafab6c1318a13394da4028b3d33;p=xen.git libacpi: announce that PVHv2 has no CMOS RTC in FADT At the moment this flag is unconditionally set for PVHv2 domains. Note that using this boot flag requires that the FADT table revision is at least 5. Reported-by: Jan Beulich Signed-off-by: Roger Pau Monné Reviewed-by: Jan Beulich --- diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c index f2bec517fa..03cfb795d3 100644 --- a/tools/firmware/hvmloader/util.c +++ b/tools/firmware/hvmloader/util.c @@ -951,7 +951,7 @@ void hvmloader_acpi_build_tables(struct acpi_config *config, config->table_flags |= (ACPI_HAS_TCPA | ACPI_HAS_IOAPIC | ACPI_HAS_WAET | ACPI_HAS_PMTIMER | ACPI_HAS_BUTTONS | ACPI_HAS_VGA | - ACPI_HAS_8042); + ACPI_HAS_8042 | ACPI_HAS_CMOS_RTC); config->acpi_revision = 4; config->tis_hdr = (uint16_t *)ACPI_TIS_HDR_ADDRESS; diff --git a/tools/libacpi/acpi2_0.h b/tools/libacpi/acpi2_0.h index 571519732f..2619ba32db 100644 --- a/tools/libacpi/acpi2_0.h +++ b/tools/libacpi/acpi2_0.h @@ -233,6 +233,7 @@ struct acpi_fadt { #define ACPI_FADT_LEGACY_DEVICES (1 << 0) #define ACPI_FADT_8042 (1 << 1) #define ACPI_FADT_NO_VGA (1 << 2) +#define ACPI_FADT_NO_CMOS_RTC (1 << 5) /* * FADT Fixed Feature Flags. diff --git a/tools/libacpi/build.c b/tools/libacpi/build.c index 6bd50b3d05..a02ffbf43c 100644 --- a/tools/libacpi/build.c +++ b/tools/libacpi/build.c @@ -613,6 +613,15 @@ int acpi_build_tables(struct acpi_ctxt *ctxt, struct acpi_config *config) fadt->iapc_boot_arch |= ACPI_FADT_NO_VGA; if ( config->table_flags & ACPI_HAS_8042 ) fadt->iapc_boot_arch |= ACPI_FADT_8042; + if ( !(config->table_flags & ACPI_HAS_CMOS_RTC) ) + { + if ( fadt->header.revision < 5 ) + { + printf("ACPI_FADT_NO_CMOS_RTC requires FADT revision 5\n"); + return -1; + } + fadt->iapc_boot_arch |= ACPI_FADT_NO_CMOS_RTC; + } set_checksum(fadt, offsetof(struct acpi_header, checksum), fadt_size); nr_secondaries = construct_secondary_tables(ctxt, secondary_tables, diff --git a/tools/libacpi/libacpi.h b/tools/libacpi/libacpi.h index dbc6c8bd7a..67bd67fa0a 100644 --- a/tools/libacpi/libacpi.h +++ b/tools/libacpi/libacpi.h @@ -34,6 +34,7 @@ #define ACPI_HAS_BUTTONS (1<<11) #define ACPI_HAS_VGA (1<<12) #define ACPI_HAS_8042 (1<<13) +#define ACPI_HAS_CMOS_RTC (1<<14) struct xen_vmemrange; struct acpi_numa {