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

[Xen-devel] [PATCH v7a 00/14] GIC and VGIC code refactoring



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

Made changes to existing gic and vgic drivers to make it
generic and added support for GIC v3 hw version.

The complete GICv3 patch series
"[PATCH v5 00/21] xen/arm: Add GICv3 support" is split
into two patch series version v6a and v6.

The 14 patches of v7a series is posted here which contains
refactoring of existing GIC and VGIC drivers to accomodate
GICv3 series (v6)

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

Major changes in v7a:
 - Made changes to send_SGI() to pass NULL as cpu_mask for 
   sgi modes which does not require cpu mask
 - Renamed update_cpu_lr_mask() clear_cpu_lr_mask()
 - used writeb_relaxed() to access ITARGETR & IPRIORITYR 
   registers

Major changes in v6a:
 - Changed send_SGI parameters ordering
 - coding styles and missing comments
 - New patch (17) to check for idle domain before saving GIC context
 - Introduced new callback in vgic handler for handling SGI

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
   parameters
 - 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 (14):
  xen/arm: make sgi handling generic
  xen/arm: use ioremap to map gic-v2 registers
  xen/arm: segregate and split GIC low level functionality
  xen/arm: move GIC context data structure to gic driver
  xen/arm: use device api to detect GIC version
  xen/arm: switch to dynamic allocation of vgic rank
  xen/arm: prefix byte_read and byte_write functions with vgic
  xen/arm: move vgic defines to vgic header file
  xen/arm: move and rename is_vcpu_running function to sched.h
  xen/arm: move pending_irq structure to vgic header file
  xen/arm: calculate vgic irq rank based on register size
  xen/arm: Remove REG macro in vgic driver
  xen/arm: split vgic driver into generic and vgic-v2 driver
  xen/arm: Restrict saving of gic register for idle domain

 xen/arch/arm/Makefile           |    4 +-
 xen/arch/arm/domain.c           |    2 +
 xen/arch/arm/domain_build.c     |    2 +-
 xen/arch/arm/gic-v2.c           |  684 +++++++++++++++++++++++++++++++++++++++
 xen/arch/arm/gic.c              |  537 ++++++------------------------
 xen/arch/arm/irq.c              |    1 +
 xen/arch/arm/time.c             |    1 +
 xen/arch/arm/vgic-v2.c          |  507 +++++++++++++++++++++++++++++
 xen/arch/arm/vgic.c             |  568 ++++----------------------------
 xen/arch/arm/vpsci.c            |    1 +
 xen/arch/arm/vtimer.c           |    1 +
 xen/include/asm-arm/device.h    |    1 +
 xen/include/asm-arm/domain.h    |   75 +----
 xen/include/asm-arm/gic.h       |  250 +++++++++-----
 xen/include/asm-arm/processor.h |    8 +
 xen/include/asm-arm/vgic.h      |  179 ++++++++++
 xen/include/xen/sched.h         |   14 +
 17 files changed, 1733 insertions(+), 1102 deletions(-)
 create mode 100644 xen/arch/arm/gic-v2.c
 create mode 100644 xen/arch/arm/vgic-v2.c
 create mode 100644 xen/include/asm-arm/vgic.h

-- 
1.7.9.5


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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