All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/41] Add ACPI support for arm64 on Xen
@ 2015-05-17 20:03 Parth Dixit
  2015-05-17 20:03 ` [PATCH v2 01/41] arm/acpi: Build numa for x86 only Parth Dixit
                   ` (42 more replies)
  0 siblings, 43 replies; 194+ messages in thread
From: Parth Dixit @ 2015-05-17 20:03 UTC (permalink / raw)
  To: xen-devel
  Cc: keir, ian.campbell, andrew.cooper3, tim, julien.grall,
	stefano.stabellini, jbeulich, parth.dixit, christoffer.dall

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

^ permalink raw reply	[flat|nested] 194+ messages in thread

end of thread, other threads:[~2015-08-03 12:08 UTC | newest]

Thread overview: 194+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-17 20:03 [PATCH v2 00/41] Add ACPI support for arm64 on Xen Parth Dixit
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

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.