[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v9 0/7] xen/arm: Add GICv3 support

From: Vijaya Kumar K <Vijaya.Kumar@xxxxxxxxxxxxxxxxxx>

Add GICv3 support for arm64 platform.
From v6 version, this patch series is split into v6a and v6.
All the GICv2 and VGIC code refactoring patches of v6a are merged.

The v8 version of GICv3 patches are posted here.

Tested with ARM64 simulator with multicore core
and booted Dom0 kernel.

Major changes in v9:
  - Rebased on top of Stephano's patches in staging branch
  - Added 2 more fixes for generic GICv2 code to make it 
    generic for GICV3
  - Fixed alignment
  - Removed unsed PIDR2 macros

Major changes in v8:
  - Introduced assembler aliases for GIC system registers
    to be able to compile with Linaro toolchain
  - Few PIDRn macros definitions are moved to vgic-v3.c
  - Introduced 2 more patches. Patch 1 for introducing
    sizes.h file and Patch 2 for {READ,WRITE}_SYSREG macro changes

Major changes in v7:
  - Introduced vgic callback to handle sysreg emulation
  - Coding style fixes
  - undef64_exception instead of undef_exception for sysreg error

Major changes in v6:
  - Added read_apr() to read ICH_APRn in GICv3
  - Added asserts
  - PIDR2 check for architecture value
  - Remove update_cpu_lr_mask call
  - Changed parameter ordering for gicv3_send_sgi()
  - Save and restore ICC_SRE_EL1 register
  - Computed cpumask in gicv3_send_sgi() function

Major changes in v5:
 - Introduced new patch for checking platform capability for gicv3
 - Introduced more patches for vgic clean up and code movement
 - Added synchronization barriers and clean up in GICv3 driver
 - Rebase on top of master branch +
   remotes/origin/no_maintenance_interrupts-v8 patch set
 - Code base available in github
   git clone https://github.com/vijaykilari/Xen-GICv3.git
 - Fixed comments and coding style

Major changes in v4:
 - Changed io handlers to take mmio address and size as
 - ioremap is used instead of fixmap to map GICv2 address
   space. Removed /4 in GICv2 register definitions
 - vGIC driver now uses register size to calculate IRQ rank
 - GICv2 LR register definitions are declared locally in GICv2 driver
 - GICR & GICD common register handling in vgic-v3 driver are segregated
   in one common function
 - irq_hw_controller definition is managed in GICv2 and GICv3 drivers
 - Made irq_ops const
 - GIC DT node is updated in respective drivers
 - Comments and coding style fixes
 - Rebased on remotes/origin/no_maintenance_interrupts-v8 + Julien's
   patch set

Major changes in v3:
 - Moved io.h from xen/arch/arm to xen/include/asm-arm
   and renamed as mmio.h
 - Made all the io handlers as domain specific and removed
   check handlers. Instead address and size are passed
 - Cleaned up sgi handling functions in V2 gic driver and
   made generic
 - Removed unused parameters in do_sgi call
 - VGIC driver is chosen based on GIC driver initialized
 - Implemented SGI handling for GICv3 to boot multicore
 - Missing coding style fixes
 - Rebased to remotes/origin/no_maintenance_interrupts-v6
   branch of Stephano's unstable tree

Major Changes in v2:
 - Added per domain io handler
 - Use device api to initialize gic driver
 - Avoid use of void pointer to access common data
 - Moved vgic address information data from domain.h
 - Coding style

Vijaya Kumar K (7):
  xen/arm: move itargets initialization to vgic-v2
  xen/arm: fallback to vcpu 0 if get_target_vcpu handler not exists
  xen/arm: Add support for GIC v3
  xen/arm: Add virtual GICv3 support
  xen/arm: Update Dom0 GIC dt node with GICv3 information
  xen/arm: add SGI handling for GICv3
  xen/arm: check for GICv3 platform support

 xen/arch/arm/Makefile             |    2 +
 xen/arch/arm/domain_build.c       |   47 +-
 xen/arch/arm/gic-v2.c             |   51 ++
 xen/arch/arm/gic-v3.c             | 1285 +++++++++++++++++++++++++++++++++++++
 xen/arch/arm/gic.c                |    6 +
 xen/arch/arm/setup.c              |    5 +-
 xen/arch/arm/traps.c              |   15 +
 xen/arch/arm/vgic-v2.c            |   26 +-
 xen/arch/arm/vgic-v3.c            |  988 ++++++++++++++++++++++++++++
 xen/arch/arm/vgic.c               |   37 +-
 xen/include/asm-arm/cpufeature.h  |    1 +
 xen/include/asm-arm/domain.h      |    8 +
 xen/include/asm-arm/gic.h         |   24 +
 xen/include/asm-arm/gic_v3_defs.h |  161 +++++
 xen/include/asm-arm/processor.h   |   17 +-
 xen/include/asm-arm/sysregs.h     |   56 ++
 xen/include/asm-arm/vgic.h        |   16 +-
 17 files changed, 2676 insertions(+), 69 deletions(-)
 create mode 100644 xen/arch/arm/gic-v3.c
 create mode 100644 xen/arch/arm/vgic-v3.c
 create mode 100644 xen/include/asm-arm/gic_v3_defs.h


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.