This enables PCI moderation for ARM and ARM64 as well as support for
PCI-based virtual shared memory devices for all our supported archs and
boards.

Only few - but a growing number of - ARM SoCs support PCI and also
MSI/MSI-X yet. We therefore have to emulate a simple generic PCI host
controller on ARM which turned out to be trivial with the existing code.
More complex is INTx support for ivshmem, which is needed in the absence
of a GICv2m that we can piggyback with.

The series enables ivshmem-net for Seattle, HiKey, Banana Pi and TK1
with the root cell and a non-root Linux cell communicating. The tricky
part on ARM is unfortunately the tuning to suitable GICD pins on both
sides that are unused (may not need to be unconnected to physical
devices, but Linux must not make use of them) but still in the range of
physically supported pins so that we can inject the ivshmem interrupts
via the GICD as router. On GICv2m, and likely also with the GICv3 once
we support it fully, there is more space available.

Porting to new boards is clearly underdocumented, but one step after the
other, and maybe people can derive already enough details from the
examples.

Jan

Jan Kiszka (23):
  core: ivshmem: Introduce separate header file
  core: ivshmem: Remove "pci" tagging from function and module names
  x86: pci: Rename pci_translate_msi_vector and move prototype to
    asm/pci.h
  core: ivhsmem: Factor out architecture-specific parts
  core: pci: Add byte and word access support for mmconfig
  core, configs, tools: Make mmconfig PCI platform parameters generic
  arm: Provide __aeabi_llsl and __aeabi_llsr
  arm, arm64: Prepare for PCI support
  core: Rename shutdown to hypervisor_disable
  core: Make PCI a generic feature
  core: pci: Permit write access to read-only Header Type register
  arm-common: Add support for interrupt injection via GICD
  arm-common: Add MSI-X support for ivshmem devices based on GICv2m
  core: pci: Add virtual host controller
  core, tools: Add IRQ base number for virtual PCI hosts to cell config
  core: ivshmem: Introduce arch_ivshmem_init
  arm: ivshmem: Add support for INTx-based interrupt injection
  driver: Remove shared memory devices prior to disabling the hypervisor
  driver: Register virtual PCI controller via device tree overlay
  config: Enable PCI and inter-cell communication for AMD Seattle
  configs: Enable inter-cell communication for Jetson TK1
  configs: Enable inter-cell communication for Banana Pi
  configs: Enable inter-cell communication for HiKey

 configs/amd-seattle-linux-demo.c                 |  48 ++++++-
 configs/amd-seattle.c                            |  53 +++++--
 configs/bananapi-linux-demo.c                    |  28 +++-
 configs/bananapi.c                               |  46 +++++--
 configs/dts/inmate-amd-seattle.dts               |  39 +++++-
 configs/dts/inmate-bananapi.dts                  |  17 +++
 configs/dts/inmate-hikey.dts                     |  17 +++
 configs/dts/inmate-jetson-tk1.dts                |  17 +++
 configs/f2a88xm-hd3.c                            |  26 ++--
 configs/h87i.c                                   |  26 ++--
 configs/hikey-linux-demo.c                       |  28 +++-
 configs/hikey.c                                  |  42 +++++-
 configs/imb-a180.c                               |  10 +-
 configs/jetson-tk1-linux-demo.c                  |  37 ++++-
 configs/jetson-tk1.c                             |  45 ++++--
 configs/qemu-vm.c                                |  18 +--
 driver/Makefile                                  |   7 +
 driver/cell.c                                    |   6 -
 driver/main.c                                    |   3 +
 driver/pci.c                                     | 156 +++++++++++++++++++++
 driver/pci.h                                     |  11 ++
 driver/vpci_template.dts                         |  26 ++++
 hypervisor/Makefile                              |   2 +-
 hypervisor/arch/arm-common/Kbuild                |   2 +-
 hypervisor/arch/arm-common/gic-common.c          |   6 +
 hypervisor/arch/arm-common/include/asm/gic.h     |   1 +
 hypervisor/arch/arm-common/include/asm/ivshmem.h |  20 +++
 hypervisor/arch/arm-common/irqchip.c             |   6 +
 hypervisor/arch/arm-common/ivshmem.c             |  56 ++++++++
 hypervisor/arch/arm-common/pci.c                 |  65 +++++++++
 hypervisor/arch/arm/Kbuild                       |   2 +-
 hypervisor/arch/arm/include/asm/paging.h         |   2 +-
 hypervisor/arch/arm/lib.c                        |  32 +++++
 hypervisor/arch/arm/mmio.c                       |   1 +
 hypervisor/arch/arm64/include/asm/paging.h       |   2 +-
 hypervisor/arch/x86/Kbuild                       |   4 +-
 hypervisor/arch/x86/control.c                    |  13 +-
 hypervisor/arch/x86/include/asm/apic.h           |   4 -
 hypervisor/arch/x86/include/asm/ivshmem.h        |  22 +++
 hypervisor/arch/x86/include/asm/pci.h            |   5 +
 hypervisor/arch/x86/ivshmem.c                    |  75 ++++++++++
 hypervisor/arch/x86/mmio.c                       |   3 +-
 hypervisor/arch/x86/pci.c                        |  10 +-
 hypervisor/arch/x86/setup.c                      |   5 -
 hypervisor/arch/x86/vtd.c                        |   3 +-
 hypervisor/control.c                             |  26 +++-
 hypervisor/include/jailhouse/cell-config.h       |  41 +++---
 hypervisor/include/jailhouse/control.h           |   2 +
 hypervisor/include/jailhouse/ivshmem.h           |  71 ++++++++++
 hypervisor/include/jailhouse/pci.h               |  15 +-
 hypervisor/{pci_ivshmem.c => ivshmem.c}          | 168 +++++++----------------
 hypervisor/mmio.c                                |   3 +-
 hypervisor/pci.c                                 |  57 ++++----
 hypervisor/setup.c                               |   6 +-
 tools/jailhouse-cell-linux                       |   5 +-
 tools/root-cell-config.c.tmpl                    |  38 ++---
 56 files changed, 1148 insertions(+), 331 deletions(-)
 create mode 100644 driver/vpci_template.dts
 create mode 100644 hypervisor/arch/arm-common/include/asm/ivshmem.h
 create mode 100644 hypervisor/arch/arm-common/ivshmem.c
 create mode 100644 hypervisor/arch/arm-common/pci.c
 create mode 100644 hypervisor/arch/arm/lib.c
 create mode 100644 hypervisor/arch/x86/include/asm/ivshmem.h
 create mode 100644 hypervisor/arch/x86/ivshmem.c
 create mode 100644 hypervisor/include/jailhouse/ivshmem.h
 rename hypervisor/{pci_ivshmem.c => ivshmem.c} (71%)

-- 
2.1.4

-- 
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to