From: Ricardo Koller <ricarkol@google.com>
To: Nikos Nikoleris <nikos.nikoleris@arm.com>
Cc: kvm@vger.kernel.org, drjones@redhat.com, pbonzini@redhat.com,
jade.alglave@arm.com, alexandru.elisei@arm.com
Subject: Re: [kvm-unit-tests PATCH v2 04/23] lib: Extend the definition of the ACPI table FADT
Date: Fri, 17 Jun 2022 18:00:10 -0700 [thread overview]
Message-ID: <Yq0jmuqus141FMqF@google.com> (raw)
In-Reply-To: <20220506205605.359830-5-nikos.nikoleris@arm.com>
On Fri, May 06, 2022 at 09:55:46PM +0100, Nikos Nikoleris wrote:
> This change add more fields in the APCI table FADT to allow for the
> discovery of the PSCI conduit in arm64 systems. The definition for
> FADT is similar to the one in include/acpi/actbl.h in Linux.
>
> Signed-off-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
> ---
> lib/acpi.h | 35 ++++++++++++++++++++++++++++++-----
> lib/acpi.c | 2 +-
> x86/s3.c | 2 +-
> x86/vmexit.c | 2 +-
> 4 files changed, 33 insertions(+), 8 deletions(-)
>
> diff --git a/lib/acpi.h b/lib/acpi.h
> index d80b983..9f27eb1 100644
> --- a/lib/acpi.h
> +++ b/lib/acpi.h
> @@ -62,7 +62,15 @@ struct acpi_table_xsdt {
> u64 table_offset_entry[1];
> } __attribute__ ((packed));
>
> -struct fadt_descriptor_rev1
> +struct acpi_generic_address {
> + u8 space_id; /* Address space where struct or register exists */
> + u8 bit_width; /* Size in bits of given register */
> + u8 bit_offset; /* Bit offset within the register */
> + u8 access_width; /* Minimum Access size (ACPI 3.0) */
> + u64 address; /* 64-bit address of struct or register */
> +} __attribute__ ((packed));
> +
> +struct acpi_table_fadt
> {
> ACPI_TABLE_HEADER_DEF /* ACPI common table header */
> u32 firmware_ctrl; /* Physical address of FACS */
> @@ -100,10 +108,27 @@ struct fadt_descriptor_rev1
> u8 day_alrm; /* Index to day-of-month alarm in RTC CMOS RAM */
> u8 mon_alrm; /* Index to month-of-year alarm in RTC CMOS RAM */
> u8 century; /* Index to century in RTC CMOS RAM */
> - u8 reserved4; /* Reserved */
> - u8 reserved4a; /* Reserved */
> - u8 reserved4b; /* Reserved */
> -};
> + u16 boot_flags; /* IA-PC Boot Architecture Flags (see below for individual flags) */
> + u8 reserved; /* Reserved, must be zero */
> + u32 flags; /* Miscellaneous flag bits (see below for individual flags) */
> + struct acpi_generic_address reset_register; /* 64-bit address of the Reset register */
> + u8 reset_value; /* Value to write to the reset_register port to reset the system */
> + u16 arm_boot_flags; /* ARM-Specific Boot Flags (see below for individual flags) (ACPI 5.1) */
> + u8 minor_revision; /* FADT Minor Revision (ACPI 5.1) */
> + u64 Xfacs; /* 64-bit physical address of FACS */
> + u64 Xdsdt; /* 64-bit physical address of DSDT */
> + struct acpi_generic_address xpm1a_event_block; /* 64-bit Extended Power Mgt 1a Event Reg Blk address */
> + struct acpi_generic_address xpm1b_event_block; /* 64-bit Extended Power Mgt 1b Event Reg Blk address */
> + struct acpi_generic_address xpm1a_control_block; /* 64-bit Extended Power Mgt 1a Control Reg Blk address */
> + struct acpi_generic_address xpm1b_control_block; /* 64-bit Extended Power Mgt 1b Control Reg Blk address */
> + struct acpi_generic_address xpm2_control_block; /* 64-bit Extended Power Mgt 2 Control Reg Blk address */
> + struct acpi_generic_address xpm_timer_block; /* 64-bit Extended Power Mgt Timer Ctrl Reg Blk address */
> + struct acpi_generic_address xgpe0_block; /* 64-bit Extended General Purpose Event 0 Reg Blk address */
> + struct acpi_generic_address xgpe1_block; /* 64-bit Extended General Purpose Event 1 Reg Blk address */
> + struct acpi_generic_address sleep_control; /* 64-bit Sleep Control register (ACPI 5.0) */
> + struct acpi_generic_address sleep_status; /* 64-bit Sleep Status register (ACPI 5.0) */
> + u64 hypervisor_id; /* Hypervisor Vendor ID (ACPI 6.0) */
> +} __attribute__ ((packed));
>
> struct facs_descriptor_rev1
> {
> diff --git a/lib/acpi.c b/lib/acpi.c
> index 9b8700c..e8440ae 100644
> --- a/lib/acpi.c
> +++ b/lib/acpi.c
> @@ -46,7 +46,7 @@ void* find_acpi_table_addr(u32 sig)
>
> /* FACS is special... */
> if (sig == FACS_SIGNATURE) {
> - struct fadt_descriptor_rev1 *fadt;
> + struct acpi_table_fadt *fadt;
>
> fadt = find_acpi_table_addr(FACP_SIGNATURE);
> if (!fadt)
> diff --git a/x86/s3.c b/x86/s3.c
> index 89d69fc..16e79f8 100644
> --- a/x86/s3.c
> +++ b/x86/s3.c
> @@ -30,7 +30,7 @@ extern char resume_start, resume_end;
>
> int main(int argc, char **argv)
> {
> - struct fadt_descriptor_rev1 *fadt = find_acpi_table_addr(FACP_SIGNATURE);
> + struct acpi_table_fadt *fadt = find_acpi_table_addr(FACP_SIGNATURE);
> struct facs_descriptor_rev1 *facs = find_acpi_table_addr(FACS_SIGNATURE);
> char *addr, *resume_vec = (void*)0x1000;
>
> diff --git a/x86/vmexit.c b/x86/vmexit.c
> index 2bac049..fcc0760 100644
> --- a/x86/vmexit.c
> +++ b/x86/vmexit.c
> @@ -206,7 +206,7 @@ int pm_tmr_blk;
> static void inl_pmtimer(void)
> {
> if (!pm_tmr_blk) {
> - struct fadt_descriptor_rev1 *fadt;
> + struct acpi_table_fadt *fadt;
>
> fadt = find_acpi_table_addr(FACP_SIGNATURE);
> pm_tmr_blk = fadt->pm_tmr_blk;
> --
> 2.25.1
>
Reviewed-by: Ricardo Koller <ricarkol@google.com>
next prev parent reply other threads:[~2022-06-18 1:00 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-06 20:55 [kvm-unit-tests PATCH v2 00/23] EFI and ACPI support for arm64 Nikos Nikoleris
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 01/23] lib: Move acpi header and implementation to lib Nikos Nikoleris
2022-05-19 13:21 ` Andrew Jones
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 02/23] lib: Ensure all struct definition for ACPI tables are packed Nikos Nikoleris
2022-05-19 13:17 ` Andrew Jones
2022-05-19 15:52 ` Nikos Nikoleris
2022-05-19 17:14 ` Andrew Jones
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 03/23] lib: Add support for the XSDT ACPI table Nikos Nikoleris
2022-05-19 13:30 ` Andrew Jones
2022-06-18 0:38 ` Ricardo Koller
2022-06-20 8:53 ` Alexandru Elisei
2022-06-20 11:06 ` Nikos Nikoleris
2022-06-21 12:25 ` Alexandru Elisei
2022-06-21 11:26 ` Nikos Nikoleris
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 04/23] lib: Extend the definition of the ACPI table FADT Nikos Nikoleris
2022-05-19 13:42 ` Andrew Jones
2022-06-18 1:00 ` Ricardo Koller [this message]
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 05/23] arm/arm64: Add support for setting up the PSCI conduit through ACPI Nikos Nikoleris
2022-05-19 13:54 ` Andrew Jones
2022-06-21 16:06 ` Ricardo Koller
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 06/23] arm/arm64: Add support for discovering the UART " Nikos Nikoleris
2022-05-19 13:59 ` Andrew Jones
2022-06-21 16:07 ` Ricardo Koller
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 07/23] arm/arm64: Add support for timer initialization " Nikos Nikoleris
2022-05-19 14:10 ` Andrew Jones
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 08/23] arm/arm64: Add support for cpu " Nikos Nikoleris
2022-05-19 14:23 ` Andrew Jones
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 09/23] lib/printf: Support for precision modifier in printing strings Nikos Nikoleris
2022-05-19 14:52 ` Andrew Jones
2022-05-19 16:02 ` Andrew Jones
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 10/23] lib/printf: Add support for printing wide strings Nikos Nikoleris
2022-06-21 16:11 ` Ricardo Koller
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 11/23] lib/efi: Add support for getting the cmdline Nikos Nikoleris
2022-06-21 16:33 ` Ricardo Koller
2022-06-27 16:12 ` Nikos Nikoleris
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 12/23] arm/arm64: mmu_disable: Clean and invalidate before disabling Nikos Nikoleris
2022-05-13 13:15 ` Alexandru Elisei
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 13/23] arm/arm64: Rename etext to _etext Nikos Nikoleris
2022-06-21 16:42 ` Ricardo Koller
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 14/23] lib: Avoid ms_abi for calls related to EFI on arm64 Nikos Nikoleris
2022-05-20 14:02 ` Andrew Jones
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 15/23] arm64: Add a new type of memory type flag MR_F_RESERVED Nikos Nikoleris
2022-06-21 16:44 ` Ricardo Koller
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 16/23] arm/arm64: Add a setup sequence for systems that boot through EFI Nikos Nikoleris
2022-05-13 13:31 ` Alexandru Elisei
2022-06-27 16:36 ` Nikos Nikoleris
2022-05-06 20:55 ` [kvm-unit-tests PATCH v2 17/23] arm64: Copy code from GNU-EFI Nikos Nikoleris
2022-06-21 17:59 ` Ricardo Koller
2022-05-06 20:56 ` [kvm-unit-tests PATCH v2 18/23] arm64: Change gnu-efi imported file to use defined types Nikos Nikoleris
2022-05-06 20:56 ` [kvm-unit-tests PATCH v2 19/23] arm64: Use code from the gnu-efi when booting with EFI Nikos Nikoleris
2022-06-21 22:32 ` Ricardo Koller
2022-06-27 17:10 ` Nikos Nikoleris
2022-06-30 5:13 ` Ricardo Koller
2022-05-06 20:56 ` [kvm-unit-tests PATCH v2 20/23] lib: Avoid external dependency in libelf Nikos Nikoleris
2022-06-21 22:39 ` Ricardo Koller
2022-05-06 20:56 ` [kvm-unit-tests PATCH v2 21/23] x86: Move x86_64-specific EFI CFLAGS to x86_64 Makefile Nikos Nikoleris
2022-06-21 22:45 ` Ricardo Koller
2022-06-22 13:47 ` Nikos Nikoleris
2022-05-06 20:56 ` [kvm-unit-tests PATCH v2 22/23] arm64: Add support for efi in Makefile Nikos Nikoleris
2022-06-21 22:51 ` Ricardo Koller
2022-06-22 13:52 ` Nikos Nikoleris
2022-06-21 22:52 ` Ricardo Koller
2022-05-06 20:56 ` [kvm-unit-tests PATCH v2 23/23] arm64: Add an efi/run script Nikos Nikoleris
2022-06-21 23:09 ` Ricardo Koller
2022-06-22 14:13 ` Nikos Nikoleris
2022-06-30 5:22 ` Ricardo Koller
2022-05-13 14:09 ` [kvm-unit-tests PATCH v2 00/23] EFI and ACPI support for arm64 Alexandru Elisei
2022-05-18 9:00 ` Nikos Nikoleris
2022-05-20 9:58 ` Alexandru Elisei
2022-05-17 17:56 ` Ricardo Koller
2022-05-18 12:44 ` Nikos Nikoleris
2022-05-18 16:10 ` Ricardo Koller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Yq0jmuqus141FMqF@google.com \
--to=ricarkol@google.com \
--cc=alexandru.elisei@arm.com \
--cc=drjones@redhat.com \
--cc=jade.alglave@arm.com \
--cc=kvm@vger.kernel.org \
--cc=nikos.nikoleris@arm.com \
--cc=pbonzini@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.