kvmtool uses the Linux-only dt property 'linux,pci-probe-only' to prevent it from trying to reprogram the BARs. Let's make the BARs writable so we can get rid of this band-aid. Let's also extend the legacy PCI emulation, which came out in 1992, so we can properly emulate the PCI Express version 1.1 protocol, which is relatively newer, being published in 2005. With these two changes, we are very close to running EDK2 as the firmware for the virtual machine; the only thing that is missing is flash emulation for storing firmware variables. Summary of the patches: * Patches 1-12 are fixes or enhancements needed to support reprogramable BARs. * Patches 13-15 add support for reprogramable BARs and remove the dt property. * Patch 16 adds support for PCIE 1.1. Based on the series at [1]. [1] https://lists.cs.columbia.edu/pipermail/kvmarm/2019-March/034964.html Alexandru Elisei (8): Makefile: Use correct objcopy binary when cross-compiling for x86_64 Remove pci-shmem device Check that a PCI device's memory size is power of two arm: pci.c: Advertise only PCI bus 0 in the DT virtio/pci: Ignore MMIO and I/O accesses when they are disabled Use independent read/write locks for ioport and mmio virtio/pci: Add support for BAR configuration Add PCI Express 1.1 support Julien Thierry (7): ioport: pci: Move port allocations to PCI devices pci: Fix ioport allocation size arm/pci: Fix PCI IO region arm/pci: Do not use first PCI IO space bytes for devices virtio/pci: Make memory and IO BARs independent vfio: Add support for BAR configuration arm/fdt: Remove 'linux,pci-probe-only' property Sami Mujawar (1): pci: Fix BAR resource sizing arbitration Makefile | 4 +- arm/fdt.c | 1 - arm/include/arm-common/kvm-arch.h | 2 +- arm/include/arm-common/pci.h | 1 + arm/kvm.c | 3 + arm/pci.c | 28 ++- builtin-run.c | 5 - hw/pci-shmem.c | 400 ------------------------------ hw/vesa.c | 21 +- include/kvm/ioport.h | 4 - include/kvm/pci-shmem.h | 32 --- include/kvm/pci.h | 61 ++++- include/kvm/util.h | 2 + include/kvm/vesa.h | 6 +- include/kvm/virtio-pci.h | 1 + ioport.c | 36 +-- mmio.c | 26 +- pci.c | 64 ++++- powerpc/include/kvm/kvm-arch.h | 2 +- vfio/core.c | 6 +- vfio/pci.c | 97 +++++++- virtio/pci.c | 355 ++++++++++++++++++++------ x86/include/kvm/kvm-arch.h | 2 +- 23 files changed, 562 insertions(+), 597 deletions(-) delete mode 100644 hw/pci-shmem.c delete mode 100644 include/kvm/pci-shmem.h -- 2.20.1