Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging
authorPeter Maydell <peter.maydell@linaro.org>
Thu, 28 Mar 2019 09:18:53 +0000 (09:18 +0000)
committerPeter Maydell <peter.maydell@linaro.org>
Thu, 28 Mar 2019 09:18:53 +0000 (09:18 +0000)
* Kconfig improvements (msi_nonbroken, imply for default PCI devices)
* intel-iommu: sharing passthrough FlatViews (Peter)
* Fix for SEV with VFIO (Brijesh)
* Allow compilation without CONFIG_PARALLEL (Thomas)

# gpg: Signature made Thu 21 Mar 2019 16:42:24 GMT
# gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg:                issuer "pbonzini@redhat.com"
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full]
# gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [full]
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
#      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83

* remotes/bonzini/tags/for-upstream: (23 commits)
  virtio-vga: only enable for specific boards
  config-all-devices.mak: rebuild on reconfigure
  minikconf: fix parser typo
  intel-iommu: optimize nodmar memory regions
  test-announce-self: convert to qgraph
  hw/alpha/Kconfig: DP264 hardware requires e1000 network card
  hw/hppa/Kconfig: Dino board requires e1000 network card
  hw/sh4/Kconfig: r2d machine requires the rtl8139 network card
  hw/ppc/Kconfig: e500 based machines require virtio-net-pci device
  hw/ppc/Kconfig: Bamboo machine requires e1000 network card
  hw/mips/Kconfig: Fulong 2e board requires ati-vga/rtl8139 PCI devices
  hw/mips/Kconfig: Malta machine requires the pcnet network card
  hw/i386/Kconfig: enable devices that can be created by default
  hw/isa/Kconfig: PIIX4 southbridge requires USB UHCI
  hw/isa/Kconfig: i82378 SuperIO requires PC speaker device
  prep: do not select I82374
  hw/i386/Kconfig: PC uses I8257, not I82374
  hw/char/parallel: Make it possible to compile also without CONFIG_PARALLEL
  target/i386: sev: Do not pin the ram device memory region
  memory: Fix the memory region type assignment order
  ...

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
# Conflicts:
# hw/rdma/Makefile.objs
# hw/riscv/sifive_plic.c

1  2 
hw/rdma/Makefile.objs
hw/riscv/sifive_plic.c

index c354e60e5b3792e701533c7d3ace907c25ec1efe,533ab2f84afe7146f09d042f8aa9cfb24ceec927..819bb12a35aa9dd2f7a67c34800b1e8d0b911d50
@@@ -1,5 -1,3 +1,3 @@@
- ifeq ($(CONFIG_PVRDMA),y)
- obj-$(CONFIG_PCI) += rdma_utils.o rdma_backend.o rdma_rm.o rdma.o
- obj-$(CONFIG_PCI) += vmw/pvrdma_dev_ring.o vmw/pvrdma_cmd.o \
 -obj-$(CONFIG_VMW_PVRDMA) += rdma_utils.o rdma_backend.o rdma_rm.o
++obj-$(CONFIG_VMW_PVRDMA) += rdma_utils.o rdma_backend.o rdma_rm.o rdma.o
+ obj-$(CONFIG_VMW_PVRDMA) += vmw/pvrdma_dev_ring.o vmw/pvrdma_cmd.o \
                       vmw/pvrdma_qp_ops.o vmw/pvrdma_main.o
- endif
index 1c703e1a376a55c56c4d1b6613ee4a28acb194ee,4b0537c912bcd5f6e68b5899f112b725114b7d30..ac768e6c27f805a9220b18f47238959aa0cab451
@@@ -22,8 -22,8 +22,9 @@@
  #include "qemu/log.h"
  #include "qemu/error-report.h"
  #include "hw/sysbus.h"
+ #include "hw/pci/msi.h"
  #include "target/riscv/cpu.h"
 +#include "sysemu/sysemu.h"
  #include "hw/riscv/sifive_plic.h"
  
  #define RISCV_DEBUG_PLIC 0
@@@ -446,18 -445,7 +447,20 @@@ static void sifive_plic_realize(DeviceS
      sysbus_init_mmio(SYS_BUS_DEVICE(dev), &plic->mmio);
      qdev_init_gpio_in(dev, sifive_plic_irq_request, plic->num_sources);
  
 +    /* We can't allow the supervisor to control SEIP as this would allow the
 +     * supervisor to clear a pending external interrupt which will result in
 +     * lost a interrupt in the case a PLIC is attached. The SEIP bit must be
 +     * hardware controlled when a PLIC is attached.
 +     */
 +    for (i = 0; i < smp_cpus; i++) {
 +        RISCVCPU *cpu = RISCV_CPU(qemu_get_cpu(i));
 +        if (riscv_cpu_claim_interrupts(cpu, MIP_SEIP) < 0) {
 +            error_report("SEIP already claimed");
 +            exit(1);
 +        }
 +    }
++
+     msi_nonbroken = true;
  }
  
  static void sifive_plic_class_init(ObjectClass *klass, void *data)