qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH RFC V5 0/9] Implement GIC-500 from GICv3 family for


From: Shlomo Pongratz
Subject: [Qemu-devel] [PATCH RFC V5 0/9] Implement GIC-500 from GICv3 family for arm64
Date: Tue, 20 Oct 2015 20:22:03 +0300

From: Shlomo Pongratz <address@hidden>

This patch is a first step multicores support for arm64.

This implemntation was tested up to 100 cores.

Things left to do:

Support SPI, ITS and ITS CONTROL, note that this patch porpose is to enable
running multi cores using the "virt" virtual machine and this goal is achived
without that.

Add GICv2 backwards competability. Since there is a GICv2 implementation I
can't see the pusprose for it.

Special thanks to Peter Crostwaite whose patch to th Linux (kernel) i.e.
Implement cpu_relax as yield solved the problem of the boot process getting
stuck for 24 cores and more.

Figure out why virtual machine name changed from virt-v3 to virt-v3-machine

V5->V4
  - Remove the 64 cores limit by using bitmaps.
  - Break the GICv3 code to multiple files e.g. distributer, redistributer, etc,
    and submit each file in a patch of its own.
  - Pass the cores' affinity to the GIC using property vector since the GIC
    can't access the CPU data structure and it is not aware of the number of the
    ARM_CPUS_PER_CLUSTER as defined in "target-arm/cpu.c"
    Rebase to hash ee9dfed242610e from Oct 20.

V3->V4:
  - Rebase the patch series on Pavel Feding's "vGICv3 support" V14 patch series.
  - Replace the usage of vnic/irqchip in the CPU structure to keep the gic
    object for the system instructions with the usage of the routine
    define_arm_cp_regs_with_opaque() as suggested by Peter Maydell in his mail
    from August the 3rd. 

V2->V3:
  - Replace my original 1 & 4 patches with Pavel's patches.
  - Add groups support to complies with new GICv2 addtions
  - Cosmetic changes.

V1->V2:
  - Split the original patch to 4 patches
  - Add SRE API to the GIC code.
  - Add call to gicv3_update to armv8_gicv3_set_priority_mask.
  - Cosmetic changes.
  - Fix number of irq when reading GICD_TYPER.


Shlomo Pongratz (9):
  hw/intc: Implement GIC-500 support files
  hw/intc: arm_gicv3_interrupts
  hw/intc: arm_gicv3_cpu_interface
  hw/intc: arm_gicv3_dist
  hw/intc arm_gicv3_redist
  hw/intc: arm_gicv3_spi_its
  hw/intc: arm_gicv3
  target-arm/cpu64 GICv3 system instructions support
  hw/arm: Add virt-v3 machine that uses GIC-500

 hw/arm/virt.c                      |  87 ++++-
 hw/intc/Makefile.objs              |   6 +
 hw/intc/arm_gicv3.c                | 134 ++++++++
 hw/intc/arm_gicv3_common.c         | 251 +++++++++++++-
 hw/intc/arm_gicv3_cpu_interface.c  | 130 ++++++++
 hw/intc/arm_gicv3_cpu_interface.h  |  21 ++
 hw/intc/arm_gicv3_dist.c           | 655 +++++++++++++++++++++++++++++++++++++
 hw/intc/arm_gicv3_dist.h           |   9 +
 hw/intc/arm_gicv3_interrupts.c     | 295 +++++++++++++++++
 hw/intc/arm_gicv3_interrupts.h     |  11 +
 hw/intc/arm_gicv3_redist.c         | 460 ++++++++++++++++++++++++++
 hw/intc/arm_gicv3_redist.h         |   9 +
 hw/intc/arm_gicv3_spi_its.c        | 359 ++++++++++++++++++++
 hw/intc/arm_gicv3_spi_its.h        |  11 +
 hw/intc/gicv3_internal.h           | 243 ++++++++++++++
 include/hw/arm/fdt.h               |   2 +
 include/hw/arm/virt.h              |   1 +
 include/hw/intc/arm_gicv3.h        |  44 +++
 include/hw/intc/arm_gicv3_common.h |  78 ++++-
 target-arm/cpu-qom.h               |   1 +
 target-arm/cpu.h                   |  12 +
 target-arm/cpu64.c                 | 118 +++++++
 target-arm/machine.c               |   7 +-
 23 files changed, 2929 insertions(+), 15 deletions(-)
 create mode 100644 hw/intc/arm_gicv3.c
 create mode 100644 hw/intc/arm_gicv3_cpu_interface.c
 create mode 100644 hw/intc/arm_gicv3_cpu_interface.h
 create mode 100644 hw/intc/arm_gicv3_dist.c
 create mode 100644 hw/intc/arm_gicv3_dist.h
 create mode 100644 hw/intc/arm_gicv3_interrupts.c
 create mode 100644 hw/intc/arm_gicv3_interrupts.h
 create mode 100644 hw/intc/arm_gicv3_redist.c
 create mode 100644 hw/intc/arm_gicv3_redist.h
 create mode 100644 hw/intc/arm_gicv3_spi_its.c
 create mode 100644 hw/intc/arm_gicv3_spi_its.h
 create mode 100644 hw/intc/gicv3_internal.h
 create mode 100644 include/hw/intc/arm_gicv3.h

-- 
1.9.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]