From mboxrd@z Thu Jan 1 00:00:00 1970 From: vijay.kilari@gmail.com Subject: [PATCH v5 00/21] xen/arm: Add GICv3 support Date: Thu, 12 Jun 2014 19:06:11 +0530 Message-ID: <1402580192-13937-1-git-send-email-vijay.kilari@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian.Campbell@citrix.com, julien.grall@linaro.org, stefano.stabellini@eu.citrix.com, stefano.stabellini@citrix.com, tim@xen.org, xen-devel@lists.xen.org Cc: Prasun.Kapoor@caviumnetworks.com, Vijaya Kumar K , vijay.kilari@gmail.com List-Id: xen-devel@lists.xenproject.org From: Vijaya Kumar K Made changes to existing gic and vgic drivers to make it generic and added support for GIC v3 hw version Tested with ARM64 simulator with multicore core and booted Dom0 kernel. 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 (21): xen/arm: move io.h as mmio.h to include folder xen/arm: make mmio handlers domain specific xen/arm: make sgi handling generic xen/arm: remove unused parameter in do_sgi call xen/arm: use ioremap to map gic-v2 registers xen/arm: segregate and split GIC low level functionality arm/xen: move GIC context data structure to gic driver xen/arm: use device api to detect GIC version xen/arm: move vgic rank data to gic header file xen/arm: move vgic defines to vgic header file xen/arm: prefix byte_read and byte_write functions with vgic xen/arm: move 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: 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 | 6 +- xen/arch/arm/domain.c | 5 + xen/arch/arm/domain_build.c | 49 +- xen/arch/arm/gic-v2.c | 725 +++++++++++++++ xen/arch/arm/gic-v3.c | 1234 +++++++++++++++++++++++++ xen/arch/arm/gic.c | 537 ++--------- xen/arch/arm/io.c | 59 +- xen/arch/arm/irq.c | 1 + xen/arch/arm/setup.c | 5 +- xen/arch/arm/time.c | 1 + xen/arch/arm/traps.c | 32 +- xen/arch/arm/vgic-v2.c | 510 ++++++++++ xen/arch/arm/vgic-v3.c | 959 +++++++++++++++++++ xen/arch/arm/vgic.c | 574 ++---------- xen/arch/arm/vpsci.c | 1 + xen/arch/arm/vtimer.c | 1 + xen/arch/arm/vuart.c | 28 +- xen/include/asm-arm/cpufeature.h | 1 + xen/include/asm-arm/device.h | 1 + xen/include/asm-arm/domain.h | 85 +- xen/include/asm-arm/gic.h | 274 ++++-- xen/include/asm-arm/gic_v3_defs.h | 164 ++++ xen/{arch/arm/io.h => include/asm-arm/mmio.h} | 30 +- xen/include/asm-arm/processor.h | 27 +- xen/include/asm-arm/sysregs.h | 3 + xen/include/asm-arm/vgic.h | 183 ++++ xen/include/xen/lib.h | 2 + xen/include/xen/sched.h | 16 + 28 files changed, 4322 insertions(+), 1191 deletions(-) create mode 100644 xen/arch/arm/gic-v2.c create mode 100644 xen/arch/arm/gic-v3.c create mode 100644 xen/arch/arm/vgic-v2.c create mode 100644 xen/arch/arm/vgic-v3.c create mode 100644 xen/include/asm-arm/gic_v3_defs.h rename xen/{arch/arm/io.h => include/asm-arm/mmio.h} (66%) create mode 100644 xen/include/asm-arm/vgic.h -- 1.7.9.5