Commit 39b68bc4 authored by Peter Maydell's avatar Peter Maydell
Browse files

Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging



virtio, vhost, acpi: features, fixes, tests

ARM ACPI memory hotplug support +
tests for new arm/virt ACPI tables.

Virtio fs support (no migration).
A vhost-user reconnect bugfix.

Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>

# gpg: Signature made Tue 15 Oct 2019 22:02:19 BST
# gpg:                using RSA key 281F0DB8D28D5469
# gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>" [full]
# gpg:                 aka "Michael S. Tsirkin <mst@redhat.com>" [full]
# Primary key fingerprint: 0270 606B 6F3C DF3D 0B17  0970 C350 3912 AFBE 8E67
#      Subkey fingerprint: 5D09 FD08 71C8 F85B 94CA  8A0D 281F 0DB8 D28D 5469

* remotes/mst/tags/for_upstream:
  virtio: add vhost-user-fs-pci device
  virtio: add vhost-user-fs base device
  virtio: Add virtio_fs linux headers
  tests/acpi: add expected tables for arm/virt
  tests: document how to update acpi tables
  tests: Add bios tests to arm/virt
  tests: allow empty expected files
  tests/acpi: add empty files
  tests: Update ACPI tables list for upcoming arm/virt tests
  docs/specs: Add ACPI GED documentation
  hw/arm: Use GED for system_powerdown event
  hw/arm: Factor out powerdown notifier from GPIO
  hw/arm/virt-acpi-build: Add PC-DIMM in SRAT
  hw/arm/virt: Enable device memory cold/hot plug with ACPI boot
  hw/arm/virt: Add memory hotplug framework
  hw/acpi: Add ACPI Generic Event Device Support
  hw/acpi: Do not create memory hotplug method when handler is not defined
  hw/acpi: Make ACPI IO address space configurable
  vhost-user: save features if the char dev is closed

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parents 6bda415c 9d59bed1
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -381,6 +381,7 @@ vhost_crypto=""
vhost_scsi=""
vhost_vsock=""
vhost_user=""
vhost_user_fs=""
kvm="no"
hax="no"
hvf="no"
@@ -1293,6 +1294,10 @@ for opt do
  ;;
  --enable-vhost-vsock) vhost_vsock="yes"
  ;;
  --disable-vhost-user-fs) vhost_user_fs="no"
  ;;
  --enable-vhost-user-fs) vhost_user_fs="yes"
  ;;
  --disable-opengl) opengl="no"
  ;;
  --enable-opengl) opengl="yes"
@@ -2236,6 +2241,10 @@ test "$vhost_crypto" = "" && vhost_crypto=$vhost_user
if test "$vhost_crypto" = "yes" && test "$vhost_user" = "no"; then
  error_exit "--enable-vhost-crypto requires --enable-vhost-user"
fi
test "$vhost_user_fs" = "" && vhost_user_fs=$vhost_user
if test "$vhost_user_fs" = "yes" && test "$vhost_user" = "no"; then
  error_exit "--enable-vhost-user-fs requires --enable-vhost-user"
fi

# OR the vhost-kernel and vhost-user values for simplicity
if test "$vhost_net" = ""; then
@@ -6374,6 +6383,7 @@ echo "vhost-crypto support $vhost_crypto"
echo "vhost-scsi support $vhost_scsi"
echo "vhost-vsock support $vhost_vsock"
echo "vhost-user support $vhost_user"
echo "vhost-user-fs support $vhost_user_fs"
echo "Trace backends    $trace_backends"
if have_backend "simple"; then
echo "Trace output file $trace_file-<pid>"
@@ -6870,6 +6880,9 @@ fi
if test "$vhost_user" = "yes" ; then
  echo "CONFIG_VHOST_USER=y" >> $config_host_mak
fi
if test "$vhost_user_fs" = "yes" ; then
  echo "CONFIG_VHOST_USER_FS=y" >> $config_host_mak
fi
if test "$blobs" = "yes" ; then
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
fi
+70 −0
Original line number Diff line number Diff line
==================================================
QEMU and ACPI BIOS Generic Event Device interface
==================================================

The ACPI *Generic Event Device* (GED) is a HW reduced platform
specific device introduced in ACPI v6.1 that handles all platform
events, including the hotplug ones. GED is modelled as a device
in the namespace with a _HID defined to be ACPI0013. This document
describes the interface between QEMU and the ACPI BIOS.

GED allows HW reduced platforms to handle interrupts in ACPI ASL
statements. It follows a very similar approach to the _EVT method
from GPIO events. All interrupts are listed in  _CRS and the handler
is written in _EVT method. However, the QEMU implementation uses a
single interrupt for the GED device, relying on an IO memory region
to communicate the type of device affected by the interrupt. This way,
we can support up to 32 events with a unique interrupt.

**Here is an example,**

::

   Device (\_SB.GED)
   {
       Name (_HID, "ACPI0013")
       Name (_UID, Zero)
       Name (_CRS, ResourceTemplate ()
       {
           Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
           {
               0x00000029,
           }
       })
       OperationRegion (EREG, SystemMemory, 0x09080000, 0x04)
       Field (EREG, DWordAcc, NoLock, WriteAsZeros)
       {
           ESEL,   32
       }
       Method (_EVT, 1, Serialized)
       {
           Local0 = ESEL // ESEL = IO memory region which specifies the
                         // device type.
           If (((Local0 & One) == One))
           {
               MethodEvent1()
           }
           If ((Local0 & 0x2) == 0x2)
           {
               MethodEvent2()
           }
           ...
       }
   }

GED IO interface (4 byte access)
--------------------------------
**read access:**

::

   [0x0-0x3] Event selector bit field (32 bit) set by QEMU.

    bits:
       0: Memory hotplug event
       1: System power down event
    2-31: Reserved

**write_access:**

Nothing is expected to be written into GED IO memory
+1 −0
Original line number Diff line number Diff line
@@ -12,3 +12,4 @@ Contents:

   ppc-xive
   ppc-spapr-xive
   acpi_hw_reduced_hotplug
+4 −0
Original line number Diff line number Diff line
@@ -31,3 +31,7 @@ config ACPI_VMGENID
    bool
    default y
    depends on PC

config ACPI_HW_REDUCED
    bool
    depends on ACPI
+1 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ common-obj-$(CONFIG_ACPI_MEMORY_HOTPLUG) += memory_hotplug.o
common-obj-$(CONFIG_ACPI_CPU_HOTPLUG) += cpu.o
common-obj-$(CONFIG_ACPI_NVDIMM) += nvdimm.o
common-obj-$(CONFIG_ACPI_VMGENID) += vmgenid.o
common-obj-$(CONFIG_ACPI_HW_REDUCED) += generic_event_device.o
common-obj-$(call lnot,$(CONFIG_ACPI_X86)) += acpi-stub.o

common-obj-y += acpi_interface.o
Loading