[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 2/2] tools/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 (or any later version), so bump the current FADT version from 4 to 5 and add two new fields that will be unused. Reported-by: Jan Beulich <jbeulich@xxxxxxxx> Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> --- Cc: Jan Beulich <jbeulich@xxxxxxxx> Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Cc: Wei Liu <wei.liu2@xxxxxxxxxx> Cc: boris.ostrovsky@xxxxxxxxxx Cc: konrad.wilk@xxxxxxxxxx --- Changes since v3: - Rebase on top of previous patch. --- Ideally this should be somehow fetched from the emulation_flags set of flags, but sadly there's no way for hvmloader (which runs in guest context) to fetch this information. If at some point a rtc option is added to libxl, we should see about passing it through to init_acpi_config in libxl_x86_acpi.c so that we can then appropriately set this flag for PVHv2 guests. --- tools/firmware/hvmloader/util.c | 2 +- tools/libacpi/acpi2_0.h | 1 + tools/libacpi/build.c | 9 +++++++++ tools/libacpi/libacpi.h | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c index f2bec51..03cfb79 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 5715197..2619ba3 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 6bd50b3..a02ffbf 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 dbc6c8b..67bd67f 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 { -- 2.9.3 (Apple Git-75) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |