From: Parth Dixit <parth.dixit@linaro.org>
To: xen-devel@lists.xen.org
Cc: keir@xen.org, ian.campbell@citrix.com, andrew.cooper3@citrix.com,
tim@xen.org, julien.grall@citrix.com,
stefano.stabellini@citrix.com, jbeulich@suse.com,
parth.dixit@linaro.org, christoffer.dall@linaro.org
Subject: [PATCH v2 00/41] Add ACPI support for arm64 on Xen
Date: Mon, 18 May 2015 01:33:27 +0530 [thread overview]
Message-ID: <1431893048-5214-1-git-send-email-parth.dixit@linaro.org> (raw)
This patch series adds ACPI support for arm64.
Xen reads static tables described by ACPI standard (5.1) from uefi
and configures timer, gic and uart. ACPI tables are modified to
enable PSCI, HVC and xen specific information (grant table and
event channel interrupts) and mapped into dom0 address space.
A skeleton device tree is created to pass efi table which contains
memory layout (which cannot be passed using ACPI) and rsdp pointer to DOM0.
DOM0 parses dynamic ACPI tables and configure other peripherals.
Patches 1-21 add ACPI support for xen/uefi interface
Patches 22-41 add ACPI support for xen/Dom0 interface
Last patch "xen: arm64: Add ACPI support" enables the support for ACPI
so that individual patches do not affect working xen code base.
Patches are tested on FVP base model and same binary is working for ACPI as well as
device tree.(32 bit is not tested).
ACPI is now configurable via commandline option "acpi".
To boot from ACPI this parameter should be set to "force".
Instructions for reproducing the setup and working code base can be found
in the following repositories
wiki : https://wiki.linaro.org/LEG/Engineering/Xen_boot_on_FVP_ACPI_UEFI
linux : https://git.linaro.org/people/parth.dixit/xen-upstreaming/leg-kernel.git
xen : https://git.linaro.org/people/parth.dixit/xen-upstreaming/xen.git
uefi : https://git.linaro.org/people/parth.dixit/xen-acpi-support/linaro-edk2.git
Few workarounds have been made to get it working, these are as follows
1. In Xen interrupts are routed at the boot time with edge/trigger level set to 0
because this information is not available at the time of booting.
2. EFI runtime services are disaled in linux but proper solution has to come from linux side.
-------------------------------------------------------
Chanhelog v2
- ACPI configuration is now divided into two patches
- disabling numa is a seperate patch
- build pmstat is a seperate patch
- new patch for emulation io ports for arm in acpi
- refactoring of memory mapping code to arch specific mapping
- added new file boot.c and lib.c for acpi
- merged FADT parsing and modifcation into single patch
- divided smp functions into common and dt specific parts
- added smp support to ACPI
- divided gtdt functions to common and dt specific parts
- cleared el2 fields before passing to dom0
- refactored acpi parse entries
- refactored gic into common and dt specific parts
- added new framework for initializing acpi devices
- modified GICH and ICV values which are not relevant to Dom0
- renamed dt-uart.c to arm-uart.c
- refctored pl011 init
- added initrd support to dt stub
- new function to add efi node
- added new efi structures to common efi file
- marked ACPI memory in dom0 as reserved
- added new functions for estimating efi size
- added new function to dynamically map mmio's
- changed function names from map_acpi to prepare_acpi
- added new function for calculating crc32 by Igor Pavlov
- memory and rsdp is passed via efi table
- added new acpi parameter which needs to be set to enable acpi
- enabled efi
-------------------------------------------
Naresh Bhat (3):
arm/acpi: Build numa for x86 only
arm/acpi : Print GIC information when MADT is parsed
xen: arm64: Add ACPI support
Parth Dixit (38):
arm/acpi: Build pmstat for x86 only
arm/acpi : emulate io ports for arm
arm/acpi : add arm specific acpi header file
acpi : add helper function for mapping memory
arm/acpi : Add basic ACPI initialization
arm/acpi : Introduce ARM Boot Architecture Flags in FADT
arm/acpi : Parse FADT table and get PSCI flags
arm/acpi : Add Generic Interrupt and Distributor struct
arm/acpi : add GTDT support updated by ACPI 5.1
arm : move dt specific code in smp to seperate functions
arm/acpi : parse MADT to map logical cpu to MPIDR and get
cpu_possible_map
arm : acpi add helper function for setting interrupt type
arm : acpi parse GTDT to initialize timer
acpi : Introduce acpi_parse_entries
arm : refactor gic into generic and dt specific parts
arm: Introduce a generic way to use a device from acpi
arm : acpi Add GIC specific ACPI boot support
arm : create generic uart initialization function
arm : acpi Initialize serial port from ACPI SPCR table
arm : acpi create min DT stub for DOM0
arm : acpi create chosen node for DOM0
arm : acpi create efi node for DOM0
arm : acpi add status override table
arm : acpi add xen environment table
arm : add helper functions to map memory regions
arm : acpi add efi structures to common efi header
arm : acpi read acpi memory info from uefi
arm : acpi add placeholder for acpi load address
arm : acpi estimate memory required for acpi/efi tables
arm : acpi dynamically map mmio regions
arm : acpi prepare acpi tables for dom0
arm : acpi create and map acpi tables
arm : acpi add helper function to calculate crc32
arm : acpi pass rsdp and memory via efi table
arm : acpi add acpi parameter to enable/disable acpi
arm : acpi enable efi for acpi
arm : acpi configure interrupts dynamically
arm : acpi route irq's at time of boot
config/arm64.mk | 1 +
xen/arch/arm/Makefile | 1 +
xen/arch/arm/acpi/Makefile | 2 +
xen/arch/arm/acpi/boot.c | 279 +++++++++++++++++++++
xen/arch/arm/acpi/lib.c | 31 +++
xen/arch/arm/arm64/smpboot.c | 12 +-
xen/arch/arm/device.c | 19 ++
xen/arch/arm/domain_build.c | 551 ++++++++++++++++++++++++++++++++++++++++-
xen/arch/arm/efi/efi-boot.h | 20 +-
xen/arch/arm/gic-v2.c | 143 ++++++++++-
xen/arch/arm/gic.c | 23 +-
xen/arch/arm/irq.c | 17 ++
xen/arch/arm/kernel.c | 5 +-
xen/arch/arm/kernel.h | 1 +
xen/arch/arm/p2m.c | 26 ++
xen/arch/arm/psci.c | 16 ++
xen/arch/arm/setup.c | 43 +++-
xen/arch/arm/smpboot.c | 33 ++-
xen/arch/arm/time.c | 38 ++-
xen/arch/arm/traps.c | 51 +++-
xen/arch/arm/vgic.c | 18 ++
xen/arch/arm/xen.lds.S | 7 +
xen/arch/x86/acpi/lib.c | 15 ++
xen/common/efi/boot.c | 2 +
xen/common/efi/runtime.c | 2 +-
xen/common/sysctl.c | 2 +
xen/drivers/acpi/Makefile | 4 +-
xen/drivers/acpi/osl.c | 11 +-
xen/drivers/acpi/tables.c | 99 ++++++--
xen/drivers/char/Makefile | 2 +-
xen/drivers/char/arm-uart.c | 136 ++++++++++
xen/drivers/char/dt-uart.c | 107 --------
xen/drivers/char/pl011.c | 96 +++++--
xen/include/acpi/actbl.h | 10 +-
xen/include/acpi/actbl1.h | 62 ++++-
xen/include/acpi/actbl2.h | 39 +++
xen/include/acpi/actbl3.h | 92 +++++--
xen/include/asm-arm/acpi.h | 95 +++++++
xen/include/asm-arm/arm64/io.h | 14 ++
xen/include/asm-arm/config.h | 5 +
xen/include/asm-arm/device.h | 30 +++
xen/include/asm-arm/irq.h | 2 +
xen/include/asm-arm/p2m.h | 10 +
xen/include/asm-arm/setup.h | 1 +
xen/include/xen/acpi.h | 10 +
xen/include/xen/efi.h | 67 ++++-
xen/include/xen/serial.h | 3 +-
47 files changed, 2038 insertions(+), 215 deletions(-)
create mode 100644 xen/arch/arm/acpi/Makefile
create mode 100644 xen/arch/arm/acpi/boot.c
create mode 100644 xen/arch/arm/acpi/lib.c
create mode 100644 xen/drivers/char/arm-uart.c
delete mode 100644 xen/drivers/char/dt-uart.c
create mode 100644 xen/include/asm-arm/acpi.h
--
1.9.1
next reply other threads:[~2015-05-17 20:03 UTC|newest]
Thread overview: 194+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-17 20:03 Parth Dixit [this message]
2015-05-17 20:03 ` [PATCH v2 01/41] arm/acpi: Build numa for x86 only Parth Dixit
2015-05-18 12:51 ` Julien Grall
2015-05-20 15:07 ` Jan Beulich
2015-05-20 15:21 ` Julien Grall
2015-05-20 15:41 ` Jan Beulich
2015-05-20 15:49 ` Julien Grall
2015-05-20 16:31 ` Jan Beulich
2015-07-05 12:59 ` Parth Dixit
2015-07-05 17:39 ` Julien Grall
2015-07-05 17:49 ` Parth Dixit
2015-07-06 10:49 ` Jan Beulich
2015-05-17 20:03 ` [PATCH v2 02/41] arm/acpi: Build pmstat " Parth Dixit
2015-05-18 12:54 ` Julien Grall
2015-05-20 15:12 ` Jan Beulich
2015-05-24 6:10 ` Parth Dixit
2015-07-05 13:01 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 03/41] arm/acpi : emulate io ports for arm Parth Dixit
2015-05-18 13:03 ` Julien Grall
2015-07-05 13:02 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 04/41] arm/acpi : add arm specific acpi header file Parth Dixit
2015-05-18 13:12 ` Julien Grall
2015-05-24 5:59 ` Parth Dixit
2015-07-05 13:02 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 05/41] acpi : add helper function for mapping memory Parth Dixit
2015-05-18 13:26 ` Julien Grall
2015-05-18 14:01 ` Jan Beulich
2015-05-18 14:20 ` Julien Grall
2015-05-18 14:32 ` Jan Beulich
2015-05-18 14:35 ` Julien Grall
2015-05-24 6:40 ` Parth Dixit
2015-05-24 7:31 ` Julien Grall
2015-07-05 13:03 ` Parth Dixit
2015-05-20 16:03 ` Jan Beulich
2015-05-20 17:06 ` Julien Grall
2015-05-17 20:03 ` [PATCH v2 06/41] arm/acpi : Add basic ACPI initialization Parth Dixit
2015-05-18 14:11 ` Julien Grall
2015-05-24 6:02 ` Parth Dixit
2015-07-05 13:04 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 07/41] arm/acpi : Introduce ARM Boot Architecture Flags in FADT Parth Dixit
2015-05-18 14:29 ` Julien Grall
2015-05-24 6:03 ` Parth Dixit
2015-07-05 13:04 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 08/41] arm/acpi : Parse FADT table and get PSCI flags Parth Dixit
2015-05-18 14:58 ` Julien Grall
2015-05-24 6:05 ` Parth Dixit
2015-07-05 13:05 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 09/41] arm/acpi : Add Generic Interrupt and Distributor struct Parth Dixit
2015-07-05 13:06 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 10/41] arm/acpi : Print GIC information when MADT is parsed Parth Dixit
2015-05-18 15:06 ` Julien Grall
2015-05-24 6:09 ` Parth Dixit
2015-07-05 13:07 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 11/41] arm/acpi : add GTDT support updated by ACPI 5.1 Parth Dixit
2015-05-18 15:11 ` Julien Grall
2015-05-24 6:06 ` Parth Dixit
2015-07-05 13:07 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 12/41] arm : move dt specific code in smp to seperate functions Parth Dixit
2015-05-20 15:43 ` Julien Grall
2015-07-05 13:08 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 13/41] arm/acpi : parse MADT to map logical cpu to MPIDR and get cpu_possible_map Parth Dixit
2015-05-20 16:08 ` Jan Beulich
2015-05-20 16:38 ` Julien Grall
2015-07-05 13:09 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 14/41] arm : acpi add helper function for setting interrupt type Parth Dixit
2015-05-20 17:21 ` Julien Grall
2015-07-05 13:09 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 15/41] arm : acpi parse GTDT to initialize timer Parth Dixit
2015-05-20 18:03 ` Julien Grall
2015-05-24 7:00 ` Parth Dixit
2015-07-05 13:10 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 16/41] acpi : Introduce acpi_parse_entries Parth Dixit
2015-05-20 16:13 ` Jan Beulich
2015-05-21 9:14 ` Parth Dixit
2015-05-21 9:20 ` Jan Beulich
2015-07-05 13:11 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 17/41] arm : refactor gic into generic and dt specific parts Parth Dixit
2015-05-21 11:06 ` Julien Grall
2015-05-21 12:22 ` Julien Grall
2015-07-05 13:12 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 18/41] arm: Introduce a generic way to use a device from acpi Parth Dixit
2015-05-21 11:19 ` Julien Grall
2015-05-24 7:06 ` Parth Dixit
2015-05-24 7:40 ` Julien Grall
2015-05-25 5:58 ` Parth Dixit
2015-05-25 10:00 ` Julien Grall
2015-05-25 11:38 ` Parth Dixit
2015-07-05 13:12 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 19/41] arm : acpi Add GIC specific ACPI boot support Parth Dixit
2015-05-21 12:29 ` Julien Grall
2015-07-05 13:13 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 20/41] arm : create generic uart initialization function Parth Dixit
2015-05-18 8:20 ` Jan Beulich
2015-05-20 18:11 ` Julien Grall
2015-05-21 11:28 ` Julien Grall
2015-05-24 7:07 ` Parth Dixit
2015-05-24 7:48 ` Julien Grall
2015-07-05 13:14 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 21/41] arm : acpi Initialize serial port from ACPI SPCR table Parth Dixit
2015-05-26 15:04 ` Julien Grall
2015-07-05 13:14 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 22/41] arm : acpi create min DT stub for DOM0 Parth Dixit
2015-06-02 17:27 ` Julien Grall
2015-07-05 13:15 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 23/41] arm : acpi create chosen node " Parth Dixit
2015-06-02 17:40 ` Julien Grall
2015-07-05 13:16 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 24/41] arm : acpi create efi " Parth Dixit
2015-05-20 16:16 ` Jan Beulich
2015-05-24 6:30 ` Parth Dixit
2015-05-26 8:21 ` Jan Beulich
2015-05-26 8:39 ` Jan Beulich
2015-07-05 13:17 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 25/41] arm : acpi add status override table Parth Dixit
2015-07-05 13:18 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 26/41] arm : acpi add xen environment table Parth Dixit
2015-05-20 16:22 ` Jan Beulich
2015-05-20 17:00 ` Julien Grall
2015-05-21 6:22 ` Jan Beulich
2015-05-21 10:34 ` Julien Grall
2015-05-21 10:46 ` Jan Beulich
2015-05-21 10:52 ` Julien Grall
2015-05-21 11:38 ` Jan Beulich
2015-05-21 11:41 ` Julien Grall
2015-05-24 7:16 ` Parth Dixit
2015-05-26 17:13 ` Julien Grall
2015-05-26 17:34 ` Stefano Stabellini
2015-05-27 11:53 ` Jan Beulich
2015-05-28 10:58 ` Stefano Stabellini
2015-05-28 12:07 ` Jan Beulich
2015-05-28 12:12 ` Stefano Stabellini
2015-05-28 12:22 ` Jan Beulich
2015-05-29 10:31 ` Stefano Stabellini
2015-05-29 10:43 ` Jan Beulich
2015-07-05 13:19 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 27/41] arm : add helper functions to map memory regions Parth Dixit
2015-06-08 14:05 ` Julien Grall
2015-07-05 13:19 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 28/41] arm : acpi add efi structures to common efi header Parth Dixit
2015-05-20 16:25 ` Jan Beulich
2015-07-05 13:27 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 29/41] arm : acpi read acpi memory info from uefi Parth Dixit
2015-06-08 16:09 ` Julien Grall
2015-07-05 13:28 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 30/41] arm : acpi add placeholder for acpi load address Parth Dixit
2015-06-08 16:19 ` Julien Grall
2015-07-05 13:28 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 31/41] arm : acpi estimate memory required for acpi/efi tables Parth Dixit
2015-06-08 16:44 ` Julien Grall
2015-07-05 13:29 ` Parth Dixit
2015-05-17 20:03 ` [PATCH v2 32/41] arm : acpi dynamically map mmio regions Parth Dixit
2015-06-08 16:50 ` Julien Grall
2015-06-14 15:27 ` Parth Dixit
2015-06-15 1:19 ` Julien Grall
2015-07-05 13:30 ` Parth Dixit
2015-07-30 12:19 ` Shannon Zhao
2015-07-30 18:02 ` Parth Dixit
2015-07-30 18:31 ` Julien Grall
2015-07-30 20:02 ` Parth Dixit
2015-07-31 1:30 ` Shannon Zhao
2015-07-31 12:42 ` Julien Grall
2015-07-31 14:09 ` Stefano Stabellini
2015-07-31 16:24 ` Stefano Stabellini
2015-07-31 16:50 ` Ian Campbell
2015-08-03 12:08 ` Christoffer Dall
2015-07-31 1:15 ` Shannon Zhao
2015-05-17 20:04 ` [PATCH v2 33/41] arm : acpi prepare acpi tables for dom0 Parth Dixit
2015-06-08 16:54 ` Julien Grall
2015-07-05 13:31 ` Parth Dixit
2015-05-17 20:04 ` [PATCH v2 34/41] arm : acpi create and map acpi tables Parth Dixit
2015-07-05 13:31 ` Parth Dixit
2015-05-17 20:04 ` [PATCH v2 35/41] arm : acpi add helper function to calculate crc32 Parth Dixit
2015-06-08 16:59 ` Julien Grall
2015-07-05 13:33 ` Parth Dixit
2015-05-17 20:04 ` [PATCH v2 36/41] arm : acpi pass rsdp and memory via efi table Parth Dixit
2015-07-05 13:34 ` Parth Dixit
2015-05-17 20:04 ` [PATCH v2 37/41] arm : acpi add acpi parameter to enable/disable acpi Parth Dixit
2015-06-08 16:35 ` Julien Grall
2015-06-11 13:38 ` Julien Grall
2015-05-17 20:04 ` [PATCH v2 38/41] arm : acpi enable efi for acpi Parth Dixit
2015-05-20 16:27 ` Jan Beulich
2015-07-05 13:35 ` Parth Dixit
2015-05-17 20:04 ` [PATCH v2 39/41] arm : acpi configure interrupts dynamically Parth Dixit
2015-06-08 17:39 ` Julien Grall
2015-07-05 13:36 ` Parth Dixit
2015-05-17 20:04 ` [PATCH v2 40/41] xen: arm64: Add ACPI support Parth Dixit
2015-07-05 13:37 ` Parth Dixit
2015-05-17 20:04 ` [PATCH v2 41/41] arm : acpi route irq's at time of boot Parth Dixit
2015-06-08 17:44 ` Julien Grall
2015-07-05 13:37 ` Parth Dixit
2015-05-17 21:11 ` [PATCH v2 00/41] Add ACPI support for arm64 on Xen Julien Grall
[not found] ` <CABy3MNkMvpM21L5JtiKebCGdvPxJA_5m18c=t_OEExUjgaPRkQ@mail.gmail.com>
2015-05-18 12:46 ` Julien Grall
2015-05-18 8:25 ` Jan Beulich
2015-05-18 8:27 ` Parth Dixit
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=1431893048-5214-1-git-send-email-parth.dixit@linaro.org \
--to=parth.dixit@linaro.org \
--cc=andrew.cooper3@citrix.com \
--cc=christoffer.dall@linaro.org \
--cc=ian.campbell@citrix.com \
--cc=jbeulich@suse.com \
--cc=julien.grall@citrix.com \
--cc=keir@xen.org \
--cc=stefano.stabellini@citrix.com \
--cc=tim@xen.org \
--cc=xen-devel@lists.xen.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).