All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes
@ 2017-05-17 21:44 Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 01/13] hw/acpi-defs: replace leading X with x_ in FADT field names Michael S. Tsirkin
                   ` (14 more replies)
  0 siblings, 15 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 21:44 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell

This includes the previous pull request which still
does not appear to be in - not rebased so merging twice
will not cause conflicts. Note that patch 08 makes checkpatch
complain, patch 9 fixes that.

The following changes since commit 76d20ea0f1b26ebd5da2f5fb2fdf3250cde887bb:

  Merge remote-tracking branch 'armbru/tags/pull-qapi-2017-05-04-v3' into staging (2017-05-09 15:49:14 -0400)

are available in the git repository at:

  git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git tags/for_upstream

for you to fetch changes up to a764040cc831cfe5b8bf1c80e8341b9bf2de3ce8:

  exec: abstract address_space_do_translate() (2017-05-18 00:35:15 +0300)

----------------------------------------------------------------
pci, virtio, vhost: fixes

A bunch of fixes that missed the release.
Most notably we are reverting shpc back to enabled by default state
as guests uses that as an indicator that hotplug is supported
(even though it's unused). Unfortunately we can't fix this
on the stable branch since that would break migration.

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

----------------------------------------------------------------
Ard Biesheuvel (2):
      hw/acpi-defs: replace leading X with x_ in FADT field names
      hw/arm/virt: generate 64-bit addressable ACPI objects

Bruce Rogers (1):
      ACPI: don't call acpi_pcihp_device_plug_cb on xen

Eduardo Habkost (1):
      iommu: Don't crash if machine is not PC_MACHINE

Greg Kurz (1):
      virtio: allow broken device to notify guest

Herongguang (Stephen) (1):
      pci: deassert intx when pci device unrealize

Igor Mammedov (1):
      pc/fwcfg: unbreak migration from qemu-2.5 and qemu-2.6 during firmware boot

Marc-André Lureau (1):
      libvhost-user: fix crash when rings aren't ready

Marcel Apfelbaum (1):
      Revert "hw/pci: disable pci-bridge's shpc by default"

Michael S. Tsirkin (1):
      acpi-defs: clean up open brace usage

Peter Xu (2):
      pc: add 2.10 machine type
      exec: abstract address_space_do_translate()

Zhiyong Yang (1):
      hw/virtio: fix vhost user fails to startup when MQ

 contrib/libvhost-user/libvhost-user.h |   6 +-
 include/hw/acpi/acpi-defs.h           |  45 +++++++--------
 include/hw/acpi/aml-build.h           |   3 +
 include/hw/compat.h                   |   6 +-
 include/hw/i386/pc.h                  |  10 ++--
 contrib/libvhost-user/libvhost-user.c |  26 +++++++--
 exec.c                                | 103 +++++++++++++++++++++++-----------
 hw/acpi/aml-build.c                   |  27 +++++++++
 hw/acpi/piix4.c                       |  11 +++-
 hw/arm/virt-acpi-build.c              |  26 ++++-----
 hw/i386/acpi-build.c                  |   4 +-
 hw/i386/amd_iommu.c                   |  15 ++++-
 hw/i386/intel_iommu.c                 |  14 ++++-
 hw/i386/pc.c                          |   9 ++-
 hw/i386/pc_piix.c                     |  16 +++++-
 hw/i386/pc_q35.c                      |  14 ++++-
 hw/pci-bridge/pci_bridge_dev.c        |   2 +-
 hw/pci/pci.c                          |   1 +
 hw/virtio/vhost-user.c                |  21 ++++---
 hw/virtio/virtio.c                    |   4 +-
 tests/bios-tables-test.c              |   4 +-
 21 files changed, 253 insertions(+), 114 deletions(-)

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 01/13] hw/acpi-defs: replace leading X with x_ in FADT field names
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
@ 2017-05-17 21:45 ` Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 02/13] hw/arm/virt: generate 64-bit addressable ACPI objects Michael S. Tsirkin
                   ` (13 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 21:45 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Ard Biesheuvel, Laszlo Ersek, Igor Mammedov,
	Paolo Bonzini, Richard Henderson, Eduardo Habkost

From: Ard Biesheuvel <ard.biesheuvel@linaro.org>

At the request of Michael, replace the leading capital X in the FADT
field name Xfacs and Xdsdt with lower case x + underscore.

Cc: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/hw/acpi/acpi-defs.h | 4 ++--
 hw/i386/acpi-build.c        | 4 ++--
 tests/bios-tables-test.c    | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h
index 293ee45..93e1eba 100644
--- a/include/hw/acpi/acpi-defs.h
+++ b/include/hw/acpi/acpi-defs.h
@@ -144,8 +144,8 @@ typedef struct AcpiTableHeader AcpiTableHeader;
     /* ARM-Specific Boot Flags (see below for individual flags) (ACPI 5.1) */ \
     uint16_t arm_boot_flags; \
     uint8_t minor_revision;  /* FADT Minor Revision (ACPI 5.1) */ \
-    uint64_t Xfacs;          /* 64-bit physical address of FACS */ \
-    uint64_t Xdsdt;          /* 64-bit physical address of DSDT */ \
+    uint64_t x_facs;          /* 64-bit physical address of FACS */ \
+    uint64_t x_dsdt;          /* 64-bit physical address of DSDT */ \
     /* 64-bit Extended Power Mgt 1a Event Reg Blk address */ \
     struct AcpiGenericAddress xpm1a_event_block; \
     /* 64-bit Extended Power Mgt 1b Event Reg Blk address */ \
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 1d8c645..c75f73e 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -341,7 +341,7 @@ build_fadt(GArray *table_data, BIOSLinker *linker, AcpiPmInfo *pm,
     AcpiFadtDescriptorRev3 *fadt = acpi_data_push(table_data, sizeof(*fadt));
     unsigned fw_ctrl_offset = (char *)&fadt->firmware_ctrl - table_data->data;
     unsigned dsdt_entry_offset = (char *)&fadt->dsdt - table_data->data;
-    unsigned xdsdt_entry_offset = (char *)&fadt->Xdsdt - table_data->data;
+    unsigned xdsdt_entry_offset = (char *)&fadt->x_dsdt - table_data->data;
 
     /* FACS address to be filled by Guest linker */
     bios_linker_loader_add_pointer(linker,
@@ -354,7 +354,7 @@ build_fadt(GArray *table_data, BIOSLinker *linker, AcpiPmInfo *pm,
         ACPI_BUILD_TABLE_FILE, dsdt_entry_offset, sizeof(fadt->dsdt),
         ACPI_BUILD_TABLE_FILE, dsdt_tbl_offset);
     bios_linker_loader_add_pointer(linker,
-        ACPI_BUILD_TABLE_FILE, xdsdt_entry_offset, sizeof(fadt->Xdsdt),
+        ACPI_BUILD_TABLE_FILE, xdsdt_entry_offset, sizeof(fadt->x_dsdt),
         ACPI_BUILD_TABLE_FILE, dsdt_tbl_offset);
 
     build_header(linker, table_data,
diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
index 9c96a67..bdef3b9 100644
--- a/tests/bios-tables-test.c
+++ b/tests/bios-tables-test.c
@@ -175,8 +175,8 @@ static void test_acpi_fadt_table(test_data *data)
     ACPI_READ_FIELD(fadt_table->reset_value, addr);
     ACPI_READ_FIELD(fadt_table->arm_boot_flags, addr);
     ACPI_READ_FIELD(fadt_table->minor_revision, addr);
-    ACPI_READ_FIELD(fadt_table->Xfacs, addr);
-    ACPI_READ_FIELD(fadt_table->Xdsdt, addr);
+    ACPI_READ_FIELD(fadt_table->x_facs, addr);
+    ACPI_READ_FIELD(fadt_table->x_dsdt, addr);
     ACPI_READ_GENERIC_ADDRESS(fadt_table->xpm1a_event_block, addr);
     ACPI_READ_GENERIC_ADDRESS(fadt_table->xpm1b_event_block, addr);
     ACPI_READ_GENERIC_ADDRESS(fadt_table->xpm1a_control_block, addr);
-- 
MST

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 02/13] hw/arm/virt: generate 64-bit addressable ACPI objects
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 01/13] hw/acpi-defs: replace leading X with x_ in FADT field names Michael S. Tsirkin
@ 2017-05-17 21:45 ` Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 03/13] hw/virtio: fix vhost user fails to startup when MQ Michael S. Tsirkin
                   ` (12 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 21:45 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Ard Biesheuvel, Andrew Jones, Laszlo Ersek,
	Igor Mammedov, Shannon Zhao, qemu-arm

From: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Our current ACPI table generation code limits the placement of ACPI
tables to 32-bit addressable memory, in order to be able to emit the
root pointer (RSDP) and root table (RSDT) using table types from the
ACPI 1.0 days.

Since ARM was not supported by ACPI before version 5.0, it makes sense
to lift this restriction. This is not crucial for mach-virt, which is
guaranteed to have some memory available below the 4 GB mark, but it
is a nice to have for QEMU machines that do not have any 32-bit
addressable memory, which is not uncommon for real world 64-bit ARM
systems.

Since we already emit a version of the RSDP root pointer that has a
secondary 64-bit wide address field for the 64-bit root table (XSDT),
all we need to do is replace the RSDT generation with the generation
of an XSDT table, and use a different slot in the FADT table to refer
to the DSDT.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Peter Maydell <peter.maydell@linaro.org>
---
 include/hw/acpi/acpi-defs.h | 11 +++++++++++
 include/hw/acpi/aml-build.h |  3 +++
 hw/acpi/aml-build.c         | 27 +++++++++++++++++++++++++++
 hw/arm/virt-acpi-build.c    | 26 +++++++++++++-------------
 4 files changed, 54 insertions(+), 13 deletions(-)

diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h
index 93e1eba..91bae7f 100644
--- a/include/hw/acpi/acpi-defs.h
+++ b/include/hw/acpi/acpi-defs.h
@@ -233,6 +233,17 @@ struct AcpiRsdtDescriptorRev1
 typedef struct AcpiRsdtDescriptorRev1 AcpiRsdtDescriptorRev1;
 
 /*
+ * ACPI 2.0 eXtended System Description Table (XSDT)
+ */
+struct AcpiXsdtDescriptorRev2
+{
+    ACPI_TABLE_HEADER_DEF       /* ACPI common table header */
+    uint64_t table_offset_entry[0];  /* Array of pointers to other */
+    /* ACPI tables */
+} QEMU_PACKED;
+typedef struct AcpiXsdtDescriptorRev2 AcpiXsdtDescriptorRev2;
+
+/*
  * ACPI 1.0 Firmware ACPI Control Structure (FACS)
  */
 struct AcpiFacsDescriptorRev1
diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h
index 00c21f1..eb07c2d 100644
--- a/include/hw/acpi/aml-build.h
+++ b/include/hw/acpi/aml-build.h
@@ -381,6 +381,9 @@ void acpi_build_tables_cleanup(AcpiBuildTables *tables, bool mfre);
 void
 build_rsdt(GArray *table_data, BIOSLinker *linker, GArray *table_offsets,
            const char *oem_id, const char *oem_table_id);
+void
+build_xsdt(GArray *table_data, BIOSLinker *linker, GArray *table_offsets,
+           const char *oem_id, const char *oem_table_id);
 
 int
 build_append_named_dword(GArray *array, const char *name_format, ...)
diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
index c6f2032..4ddfb68 100644
--- a/hw/acpi/aml-build.c
+++ b/hw/acpi/aml-build.c
@@ -1599,6 +1599,33 @@ build_rsdt(GArray *table_data, BIOSLinker *linker, GArray *table_offsets,
                  (void *)rsdt, "RSDT", rsdt_len, 1, oem_id, oem_table_id);
 }
 
+/* Build xsdt table */
+void
+build_xsdt(GArray *table_data, BIOSLinker *linker, GArray *table_offsets,
+           const char *oem_id, const char *oem_table_id)
+{
+    int i;
+    unsigned xsdt_entries_offset;
+    AcpiXsdtDescriptorRev2 *xsdt;
+    const unsigned table_data_len = (sizeof(uint64_t) * table_offsets->len);
+    const unsigned xsdt_entry_size = sizeof(xsdt->table_offset_entry[0]);
+    const size_t xsdt_len = sizeof(*xsdt) + table_data_len;
+
+    xsdt = acpi_data_push(table_data, xsdt_len);
+    xsdt_entries_offset = (char *)xsdt->table_offset_entry - table_data->data;
+    for (i = 0; i < table_offsets->len; ++i) {
+        uint64_t ref_tbl_offset = g_array_index(table_offsets, uint32_t, i);
+        uint64_t xsdt_entry_offset = xsdt_entries_offset + xsdt_entry_size * i;
+
+        /* xsdt->table_offset_entry to be filled by Guest linker */
+        bios_linker_loader_add_pointer(linker,
+            ACPI_BUILD_TABLE_FILE, xsdt_entry_offset, xsdt_entry_size,
+            ACPI_BUILD_TABLE_FILE, ref_tbl_offset);
+    }
+    build_header(linker, table_data,
+                 (void *)xsdt, "XSDT", xsdt_len, 1, oem_id, oem_table_id);
+}
+
 void build_srat_memory(AcpiSratMemoryAffinity *numamem, uint64_t base,
                        uint64_t len, int node, MemoryAffinityFlags flags)
 {
diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
index 0835e59..6e5f339 100644
--- a/hw/arm/virt-acpi-build.c
+++ b/hw/arm/virt-acpi-build.c
@@ -364,12 +364,12 @@ static void acpi_dsdt_add_power_button(Aml *scope)
 
 /* RSDP */
 static GArray *
-build_rsdp(GArray *rsdp_table, BIOSLinker *linker, unsigned rsdt_tbl_offset)
+build_rsdp(GArray *rsdp_table, BIOSLinker *linker, unsigned xsdt_tbl_offset)
 {
     AcpiRsdpDescriptor *rsdp = acpi_data_push(rsdp_table, sizeof *rsdp);
-    unsigned rsdt_pa_size = sizeof(rsdp->rsdt_physical_address);
-    unsigned rsdt_pa_offset =
-        (char *)&rsdp->rsdt_physical_address - rsdp_table->data;
+    unsigned xsdt_pa_size = sizeof(rsdp->xsdt_physical_address);
+    unsigned xsdt_pa_offset =
+        (char *)&rsdp->xsdt_physical_address - rsdp_table->data;
 
     bios_linker_loader_alloc(linker, ACPI_BUILD_RSDP_FILE, rsdp_table, 16,
                              true /* fseg memory */);
@@ -381,8 +381,8 @@ build_rsdp(GArray *rsdp_table, BIOSLinker *linker, unsigned rsdt_tbl_offset)
 
     /* Address to be filled by Guest linker */
     bios_linker_loader_add_pointer(linker,
-        ACPI_BUILD_RSDP_FILE, rsdt_pa_offset, rsdt_pa_size,
-        ACPI_BUILD_TABLE_FILE, rsdt_tbl_offset);
+        ACPI_BUILD_RSDP_FILE, xsdt_pa_offset, xsdt_pa_size,
+        ACPI_BUILD_TABLE_FILE, xsdt_tbl_offset);
 
     /* Checksum to be filled by Guest linker */
     bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE,
@@ -659,7 +659,7 @@ static void build_fadt(GArray *table_data, BIOSLinker *linker,
                        VirtMachineState *vms, unsigned dsdt_tbl_offset)
 {
     AcpiFadtDescriptorRev5_1 *fadt = acpi_data_push(table_data, sizeof(*fadt));
-    unsigned dsdt_entry_offset = (char *)&fadt->dsdt - table_data->data;
+    unsigned xdsdt_entry_offset = (char *)&fadt->x_dsdt - table_data->data;
     uint16_t bootflags;
 
     switch (vms->psci_conduit) {
@@ -685,7 +685,7 @@ static void build_fadt(GArray *table_data, BIOSLinker *linker,
 
     /* DSDT address to be filled by Guest linker */
     bios_linker_loader_add_pointer(linker,
-        ACPI_BUILD_TABLE_FILE, dsdt_entry_offset, sizeof(fadt->dsdt),
+        ACPI_BUILD_TABLE_FILE, xdsdt_entry_offset, sizeof(fadt->x_dsdt),
         ACPI_BUILD_TABLE_FILE, dsdt_tbl_offset);
 
     build_header(linker, table_data,
@@ -748,7 +748,7 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
 {
     VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
     GArray *table_offsets;
-    unsigned dsdt, rsdt;
+    unsigned dsdt, xsdt;
     GArray *tables_blob = tables->table_data;
 
     table_offsets = g_array_new(false, true /* clear */,
@@ -788,12 +788,12 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
         build_iort(tables_blob, tables->linker);
     }
 
-    /* RSDT is pointed to by RSDP */
-    rsdt = tables_blob->len;
-    build_rsdt(tables_blob, tables->linker, table_offsets, NULL, NULL);
+    /* XSDT is pointed to by RSDP */
+    xsdt = tables_blob->len;
+    build_xsdt(tables_blob, tables->linker, table_offsets, NULL, NULL);
 
     /* RSDP is in FSEG memory, so allocate it separately */
-    build_rsdp(tables->rsdp, tables->linker, rsdt);
+    build_rsdp(tables->rsdp, tables->linker, xsdt);
 
     /* Cleanup memory that's no longer used. */
     g_array_free(table_offsets, true);
-- 
MST

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 03/13] hw/virtio: fix vhost user fails to startup when MQ
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 01/13] hw/acpi-defs: replace leading X with x_ in FADT field names Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 02/13] hw/arm/virt: generate 64-bit addressable ACPI objects Michael S. Tsirkin
@ 2017-05-17 21:45 ` Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 04/13] libvhost-user: fix crash when rings aren't ready Michael S. Tsirkin
                   ` (11 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 21:45 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Zhiyong Yang, qemu-stable, Maxime Coquelin,
	Jens Freimann, Marc-André Lureau

From: Zhiyong Yang <zhiyong.yang@intel.com>

 Qemu2.7~2.9 and vhost user for dpdk 17.02 release work together
to cause failures of new connection when negotiating to set MQ.
(one queue pair works well).
   Because there exist some bugs in qemu code when introducing
VHOST_USER_PROTOCOL_F_REPLY_ACK to qemu. When vhost_user_set_mem_table
is invoked to deal with the vhost message VHOST_USER_SET_MEM_TABLE
for the second time, qemu indeed doesn't send the messge (The message
needs to be sent only once)but still will be waiting for dpdk's reply
ack, then, qemu is always freezing, while DPDK is always waiting for
next vhost message from qemu.
  The patch aims to fix the bug, MQ can work well.
  The same bug is found in function vhost_user_net_set_mtu, it is fixed
at the same time.
  DPDK related patch is as following:
  http://www.dpdk.org/dev/patchwork/patch/23955/

Signed-off-by: Zhiyong Yang <zhiyong.yang@intel.com>
Cc: qemu-stable@nongnu.org
Fixes: ca525ce5618b ("vhost-user: Introduce a new protocol feature REPLY_ACK.")
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Jens Freimann <jfreiman@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 hw/virtio/vhost-user.c | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
index 9334a8a..32a95a8 100644
--- a/hw/virtio/vhost-user.c
+++ b/hw/virtio/vhost-user.c
@@ -163,22 +163,26 @@ fail:
 }
 
 static int process_message_reply(struct vhost_dev *dev,
-                                 VhostUserRequest request)
+                                 VhostUserMsg msg)
 {
-    VhostUserMsg msg;
+    VhostUserMsg msg_reply;
 
-    if (vhost_user_read(dev, &msg) < 0) {
+    if ((msg.flags & VHOST_USER_NEED_REPLY_MASK) == 0) {
+        return 0;
+    }
+
+    if (vhost_user_read(dev, &msg_reply) < 0) {
         return -1;
     }
 
-    if (msg.request != request) {
+    if (msg_reply.request != msg.request) {
         error_report("Received unexpected msg type."
                      "Expected %d received %d",
-                     request, msg.request);
+                     msg.request, msg_reply.request);
         return -1;
     }
 
-    return msg.payload.u64 ? -1 : 0;
+    return msg_reply.payload.u64 ? -1 : 0;
 }
 
 static bool vhost_user_one_time_request(VhostUserRequest request)
@@ -208,6 +212,7 @@ static int vhost_user_write(struct vhost_dev *dev, VhostUserMsg *msg,
      * request, we just ignore it.
      */
     if (vhost_user_one_time_request(msg->request) && dev->vq_index != 0) {
+        msg->flags &= ~VHOST_USER_NEED_REPLY_MASK;
         return 0;
     }
 
@@ -320,7 +325,7 @@ static int vhost_user_set_mem_table(struct vhost_dev *dev,
     }
 
     if (reply_supported) {
-        return process_message_reply(dev, msg.request);
+        return process_message_reply(dev, msg);
     }
 
     return 0;
@@ -712,7 +717,7 @@ static int vhost_user_net_set_mtu(struct vhost_dev *dev, uint16_t mtu)
 
     /* If reply_ack supported, slave has to ack specified MTU is valid */
     if (reply_supported) {
-        return process_message_reply(dev, msg.request);
+        return process_message_reply(dev, msg);
     }
 
     return 0;
-- 
MST

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 04/13] libvhost-user: fix crash when rings aren't ready
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
                   ` (2 preceding siblings ...)
  2017-05-17 21:45 ` [Qemu-devel] [PULL 03/13] hw/virtio: fix vhost user fails to startup when MQ Michael S. Tsirkin
@ 2017-05-17 21:45 ` Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 05/13] pc/fwcfg: unbreak migration from qemu-2.5 and qemu-2.6 during firmware boot Michael S. Tsirkin
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 21:45 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Marc-André Lureau, Dr . David Alan Gilbert,
	Philippe Mathieu-Daudé,
	Felipe Franciosi, Eric Blake

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Calling libvhost-user functions like vu_queue_get_avail_bytes() when the
queue doesn't yet have addresses will result in the crashes like the
following:

Program received signal SIGSEGV, Segmentation fault.
0x000055c414112ce4 in vring_avail_idx (vq=0x55c41582fd68, vq=0x55c41582fd68)
    at /home/dgilbert/git/qemu/contrib/libvhost-user/libvhost-user.c:940
940            vq->shadow_avail_idx = vq->vring.avail->idx;
(gdb) p vq
$1 = (VuVirtq *) 0x55c41582fd68
(gdb) p vq->vring
$2 = {num = 0, desc = 0x0, avail = 0x0, used = 0x0, log_guest_addr = 0, flags = 0}

    at /home/dgilbert/git/qemu/contrib/libvhost-user/libvhost-user.c:940
No locals.
    at /home/dgilbert/git/qemu/contrib/libvhost-user/libvhost-user.c:960
        num_heads = <optimized out>
    out_bytes=out_bytes@entry=0x7fffd035d7c4, max_in_bytes=max_in_bytes@entry=0,
    max_out_bytes=max_out_bytes@entry=0) at /home/dgilbert/git/qemu/contrib/libvhost-user/libvhost-user.c:1034

Add a pre-condition checks on vring.avail before accessing it.

Fix documentation and return type of vu_queue_empty() while at it.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Tested-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 contrib/libvhost-user/libvhost-user.h |  6 +++---
 contrib/libvhost-user/libvhost-user.c | 26 ++++++++++++++++++++------
 2 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/contrib/libvhost-user/libvhost-user.h b/contrib/libvhost-user/libvhost-user.h
index 156b50e..af02a31 100644
--- a/contrib/libvhost-user/libvhost-user.h
+++ b/contrib/libvhost-user/libvhost-user.h
@@ -327,13 +327,13 @@ void vu_queue_set_notification(VuDev *dev, VuVirtq *vq, int enable);
 bool vu_queue_enabled(VuDev *dev, VuVirtq *vq);
 
 /**
- * vu_queue_enabled:
+ * vu_queue_empty:
  * @dev: a VuDev context
  * @vq: a VuVirtq queue
  *
- * Returns: whether the queue is empty.
+ * Returns: true if the queue is empty or not ready.
  */
-int vu_queue_empty(VuDev *dev, VuVirtq *vq);
+bool vu_queue_empty(VuDev *dev, VuVirtq *vq);
 
 /**
  * vu_queue_notify:
diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c
index 61e1657..9efb9da 100644
--- a/contrib/libvhost-user/libvhost-user.c
+++ b/contrib/libvhost-user/libvhost-user.c
@@ -1031,6 +1031,11 @@ vu_queue_get_avail_bytes(VuDev *dev, VuVirtq *vq, unsigned int *in_bytes,
     idx = vq->last_avail_idx;
 
     total_bufs = in_total = out_total = 0;
+    if (unlikely(dev->broken) ||
+        unlikely(!vq->vring.avail)) {
+        goto done;
+    }
+
     while ((rc = virtqueue_num_heads(dev, vq, idx)) > 0) {
         unsigned int max, num_bufs, indirect = 0;
         struct vring_desc *desc;
@@ -1121,11 +1126,16 @@ vu_queue_avail_bytes(VuDev *dev, VuVirtq *vq, unsigned int in_bytes,
 
 /* Fetch avail_idx from VQ memory only when we really need to know if
  * guest has added some buffers. */
-int
+bool
 vu_queue_empty(VuDev *dev, VuVirtq *vq)
 {
+    if (unlikely(dev->broken) ||
+        unlikely(!vq->vring.avail)) {
+        return true;
+    }
+
     if (vq->shadow_avail_idx != vq->last_avail_idx) {
-        return 0;
+        return false;
     }
 
     return vring_avail_idx(vq) == vq->last_avail_idx;
@@ -1174,7 +1184,8 @@ vring_notify(VuDev *dev, VuVirtq *vq)
 void
 vu_queue_notify(VuDev *dev, VuVirtq *vq)
 {
-    if (unlikely(dev->broken)) {
+    if (unlikely(dev->broken) ||
+        unlikely(!vq->vring.avail)) {
         return;
     }
 
@@ -1291,7 +1302,8 @@ vu_queue_pop(VuDev *dev, VuVirtq *vq, size_t sz)
     struct vring_desc *desc;
     int rc;
 
-    if (unlikely(dev->broken)) {
+    if (unlikely(dev->broken) ||
+        unlikely(!vq->vring.avail)) {
         return NULL;
     }
 
@@ -1445,7 +1457,8 @@ vu_queue_fill(VuDev *dev, VuVirtq *vq,
 {
     struct vring_used_elem uelem;
 
-    if (unlikely(dev->broken)) {
+    if (unlikely(dev->broken) ||
+        unlikely(!vq->vring.avail)) {
         return;
     }
 
@@ -1474,7 +1487,8 @@ vu_queue_flush(VuDev *dev, VuVirtq *vq, unsigned int count)
 {
     uint16_t old, new;
 
-    if (unlikely(dev->broken)) {
+    if (unlikely(dev->broken) ||
+        unlikely(!vq->vring.avail)) {
         return;
     }
 
-- 
MST

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 05/13] pc/fwcfg: unbreak migration from qemu-2.5 and qemu-2.6 during firmware boot
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
                   ` (3 preceding siblings ...)
  2017-05-17 21:45 ` [Qemu-devel] [PULL 04/13] libvhost-user: fix crash when rings aren't ready Michael S. Tsirkin
@ 2017-05-17 21:45 ` Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 06/13] pc: add 2.10 machine type Michael S. Tsirkin
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 21:45 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Igor Mammedov, Eduardo Habkost, Laszlo Ersek,
	Paolo Bonzini, Richard Henderson

From: Igor Mammedov <imammedo@redhat.com>

Since 2.7 commit (b2a575a Add optionrom compatible with fw_cfg DMA version)
regressed migration during firmware exection time by
abusing fwcfg.dma_enabled property to decide loading
dma version of option rom AND by mistake disabling DMA
for 2.6 and earlier globally instead of only for option rom.

so 2.6 machine type guest is broken when it already runs
firmware in DMA mode but migrated to qemu-2.7(pc-2.6)
at that time;

a) qemu-2.6:pc2.6 (fwcfg.dma=on,firmware=dma,oprom=ioport)
b) qemu-2.7:pc2.6 (fwcfg.dma=off,firmware=ioport,oprom=ioport)

  to:   a     b
from
a       OK   FAIL
b       OK   OK

So we currently have broken forward migration from
qemu-2.6 to qemu-2.[789] that however could be fixed
for 2.10 by re-enabling DMA for 2.[56] machine types
and allowing dma capable option rom only since 2.7.
As result qemu should end up with:

c) qemu-2.10:pc2.6 (fwcfg.dma=on,firmware=dma,oprom=ioport)

   to:  a     b    c
from
a      OK   FAIL  OK
b      OK   OK    OK
c      OK   FAIL  OK

where forward migration from qemu-2.6 to qemu-2.10 should
work again leaving only qemu-2.[789]:pc-2.6 broken.

Reported-by: Eduardo Habkost <ehabkost@redhat.com>
Analyzed-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/hw/i386/pc.h | 7 +++----
 hw/i386/pc.c         | 9 ++++-----
 hw/i386/pc_piix.c    | 1 +
 hw/i386/pc_q35.c     | 1 +
 4 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 416aaa5..d0183c4 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -151,6 +151,9 @@ struct PCMachineClass {
     bool save_tsc_khz;
     /* generate legacy CPU hotplug AML */
     bool legacy_cpu_hotplug;
+
+    /* use DMA capable linuxboot option rom */
+    bool linuxboot_dma_enabled;
 };
 
 #define TYPE_PC_MACHINE "generic-pc-machine"
@@ -438,10 +441,6 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
 #define PC_COMPAT_2_6 \
     HW_COMPAT_2_6 \
     {\
-        .driver   = "fw_cfg_io",\
-        .property = "dma_enabled",\
-        .value    = "off",\
-    },{\
         .driver   = TYPE_X86_CPU,\
         .property = "cpuid-0xb",\
         .value    = "off",\
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index f3b372a..8063241 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1047,12 +1047,10 @@ static void load_linux(PCMachineState *pcms,
     fw_cfg_add_i32(fw_cfg, FW_CFG_SETUP_SIZE, setup_size);
     fw_cfg_add_bytes(fw_cfg, FW_CFG_SETUP_DATA, setup, setup_size);
 
-    if (fw_cfg_dma_enabled(fw_cfg)) {
+    option_rom[nb_option_roms].bootindex = 0;
+    option_rom[nb_option_roms].name = "linuxboot.bin";
+    if (pcmc->linuxboot_dma_enabled && fw_cfg_dma_enabled(fw_cfg)) {
         option_rom[nb_option_roms].name = "linuxboot_dma.bin";
-        option_rom[nb_option_roms].bootindex = 0;
-    } else {
-        option_rom[nb_option_roms].name = "linuxboot.bin";
-        option_rom[nb_option_roms].bootindex = 0;
     }
     nb_option_roms++;
 }
@@ -2321,6 +2319,7 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
      * to be used at the moment, 32K should be enough for a while.  */
     pcmc->acpi_data_size = 0x20000 + 0x8000;
     pcmc->save_tsc_khz = true;
+    pcmc->linuxboot_dma_enabled = true;
     mc->get_hotplug_handler = pc_get_hotpug_handler;
     mc->cpu_index_to_socket_id = pc_cpu_index_to_socket_id;
     mc->possible_cpu_arch_ids = pc_possible_cpu_arch_ids;
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 9f102aa..a11190b 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -474,6 +474,7 @@ static void pc_i440fx_2_6_machine_options(MachineClass *m)
     PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
     pc_i440fx_2_7_machine_options(m);
     pcmc->legacy_cpu_hotplug = true;
+    pcmc->linuxboot_dma_enabled = false;
     SET_MACHINE_COMPAT(m, PC_COMPAT_2_6);
 }
 
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index dd792a8..0a61a20 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -335,6 +335,7 @@ static void pc_q35_2_6_machine_options(MachineClass *m)
     PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
     pc_q35_2_7_machine_options(m);
     pcmc->legacy_cpu_hotplug = true;
+    pcmc->linuxboot_dma_enabled = false;
     SET_MACHINE_COMPAT(m, PC_COMPAT_2_6);
 }
 
-- 
MST

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 06/13] pc: add 2.10 machine type
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
                   ` (4 preceding siblings ...)
  2017-05-17 21:45 ` [Qemu-devel] [PULL 05/13] pc/fwcfg: unbreak migration from qemu-2.5 and qemu-2.6 during firmware boot Michael S. Tsirkin
@ 2017-05-17 21:45 ` Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 07/13] iommu: Don't crash if machine is not PC_MACHINE Michael S. Tsirkin
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 21:45 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Peter Xu, Paolo Bonzini, Richard Henderson,
	Eduardo Habkost

From: Peter Xu <peterx@redhat.com>

CC: "Michael S. Tsirkin" <mst@redhat.com>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Richard Henderson <rth@twiddle.net>
CC: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/hw/i386/pc.h |  3 +++
 hw/i386/pc_piix.c    | 15 ++++++++++++---
 hw/i386/pc_q35.c     | 13 +++++++++++--
 3 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index d0183c4..e447f5d 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -382,6 +382,9 @@ int e820_add_entry(uint64_t, uint64_t, uint32_t);
 int e820_get_num_entries(void);
 bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
 
+#define PC_COMPAT_2_9 \
+    HW_COMPAT_2_9 \
+
 #define PC_COMPAT_2_8 \
     HW_COMPAT_2_8 \
     {\
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index a11190b..8f3d85c 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -437,21 +437,30 @@ static void pc_i440fx_machine_options(MachineClass *m)
     m->default_display = "std";
 }
 
-static void pc_i440fx_2_9_machine_options(MachineClass *m)
+static void pc_i440fx_2_10_machine_options(MachineClass *m)
 {
     pc_i440fx_machine_options(m);
     m->alias = "pc";
     m->is_default = 1;
 }
 
+DEFINE_I440FX_MACHINE(v2_10, "pc-i440fx-2.10", NULL,
+                      pc_i440fx_2_10_machine_options);
+
+static void pc_i440fx_2_9_machine_options(MachineClass *m)
+{
+    pc_i440fx_2_10_machine_options(m);
+    m->is_default = 0;
+    m->alias = NULL;
+    SET_MACHINE_COMPAT(m, PC_COMPAT_2_9);
+}
+
 DEFINE_I440FX_MACHINE(v2_9, "pc-i440fx-2.9", NULL,
                       pc_i440fx_2_9_machine_options);
 
 static void pc_i440fx_2_8_machine_options(MachineClass *m)
 {
     pc_i440fx_2_9_machine_options(m);
-    m->is_default = 0;
-    m->alias = NULL;
     SET_MACHINE_COMPAT(m, PC_COMPAT_2_8);
 }
 
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 0a61a20..cf9a788 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -301,19 +301,28 @@ static void pc_q35_machine_options(MachineClass *m)
     m->max_cpus = 288;
 }
 
-static void pc_q35_2_9_machine_options(MachineClass *m)
+static void pc_q35_2_10_machine_options(MachineClass *m)
 {
     pc_q35_machine_options(m);
     m->alias = "q35";
 }
 
+DEFINE_Q35_MACHINE(v2_10, "pc-q35-2.10", NULL,
+                   pc_q35_2_10_machine_options);
+
+static void pc_q35_2_9_machine_options(MachineClass *m)
+{
+    pc_q35_2_10_machine_options(m);
+    m->alias = NULL;
+    SET_MACHINE_COMPAT(m, PC_COMPAT_2_9);
+}
+
 DEFINE_Q35_MACHINE(v2_9, "pc-q35-2.9", NULL,
                    pc_q35_2_9_machine_options);
 
 static void pc_q35_2_8_machine_options(MachineClass *m)
 {
     pc_q35_2_9_machine_options(m);
-    m->alias = NULL;
     SET_MACHINE_COMPAT(m, PC_COMPAT_2_8);
 }
 
-- 
MST

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 07/13] iommu: Don't crash if machine is not PC_MACHINE
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
                   ` (5 preceding siblings ...)
  2017-05-17 21:45 ` [Qemu-devel] [PULL 06/13] pc: add 2.10 machine type Michael S. Tsirkin
@ 2017-05-17 21:45 ` Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 08/13] ACPI: don't call acpi_pcihp_device_plug_cb on xen Michael S. Tsirkin
                   ` (7 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 21:45 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Eduardo Habkost, Paolo Bonzini, Richard Henderson

From: Eduardo Habkost <ehabkost@redhat.com>

Currently it's possible to crash QEMU using "-device *-iommu" and
"-machine none":

  $ qemu-system-x86_64 -machine none -device amd-iommu
  qemu/hw/i386/amd_iommu.c:1140:amdvi_realize: Object 0x55627dafbc90 is not an instance of type generic-pc-machine
  Aborted (core dumped)
  $ qemu-system-x86_64 -machine none -device intel-iommu
  qemu/hw/i386/intel_iommu.c:2972:vtd_realize: Object 0x56292ec0bc90 is not an instance of type generic-pc-machine
  Aborted (core dumped)

Fix amd-iommu and intel-iommu to ensure the current machine is really a
TYPE_PC_MACHINE instance at their realize methods.

Resulting error messages:

  $ qemu-system-x86_64 -machine none -device amd-iommu
  qemu-system-x86_64: -device amd-iommu: Machine-type 'none' not supported by amd-iommu
  $ qemu-system-x86_64 -machine none -device intel-iommu
  qemu-system-x86_64: -device intel-iommu: Machine-type 'none' not supported by intel-iommu

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/i386/amd_iommu.c   | 15 ++++++++++++++-
 hw/i386/intel_iommu.c | 14 ++++++++++++--
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c
index f86a40a..516ebae 100644
--- a/hw/i386/amd_iommu.c
+++ b/hw/i386/amd_iommu.c
@@ -21,6 +21,7 @@
  */
 #include "qemu/osdep.h"
 #include "hw/i386/amd_iommu.h"
+#include "qapi/error.h"
 #include "qemu/error-report.h"
 #include "trace.h"
 
@@ -1137,7 +1138,19 @@ static void amdvi_realize(DeviceState *dev, Error **err)
     int ret = 0;
     AMDVIState *s = AMD_IOMMU_DEVICE(dev);
     X86IOMMUState *x86_iommu = X86_IOMMU_DEVICE(dev);
-    PCIBus *bus = PC_MACHINE(qdev_get_machine())->bus;
+    MachineState *ms = MACHINE(qdev_get_machine());
+    MachineClass *mc = MACHINE_GET_CLASS(ms);
+    PCMachineState *pcms =
+        PC_MACHINE(object_dynamic_cast(OBJECT(ms), TYPE_PC_MACHINE));
+    PCIBus *bus;
+
+    if (!pcms) {
+        error_setg(err, "Machine-type '%s' not supported by amd-iommu",
+                   mc->name);
+        return;
+    }
+
+    bus = pcms->bus;
     s->iotlb = g_hash_table_new_full(amdvi_uint64_hash,
                                      amdvi_uint64_equal, g_free, g_free);
 
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index 02f047c..a12b176 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -2969,11 +2969,21 @@ static bool vtd_decide_config(IntelIOMMUState *s, Error **errp)
 
 static void vtd_realize(DeviceState *dev, Error **errp)
 {
-    PCMachineState *pcms = PC_MACHINE(qdev_get_machine());
-    PCIBus *bus = pcms->bus;
+    MachineState *ms = MACHINE(qdev_get_machine());
+    MachineClass *mc = MACHINE_GET_CLASS(ms);
+    PCMachineState *pcms =
+        PC_MACHINE(object_dynamic_cast(OBJECT(ms), TYPE_PC_MACHINE));
+    PCIBus *bus;
     IntelIOMMUState *s = INTEL_IOMMU_DEVICE(dev);
     X86IOMMUState *x86_iommu = X86_IOMMU_DEVICE(dev);
 
+    if (!pcms) {
+        error_setg(errp, "Machine-type '%s' not supported by intel-iommu",
+                   mc->name);
+        return;
+    }
+
+    bus = pcms->bus;
     VTD_DPRINTF(GENERAL, "");
     x86_iommu->type = TYPE_INTEL;
 
-- 
MST

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 08/13] ACPI: don't call acpi_pcihp_device_plug_cb on xen
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
                   ` (6 preceding siblings ...)
  2017-05-17 21:45 ` [Qemu-devel] [PULL 07/13] iommu: Don't crash if machine is not PC_MACHINE Michael S. Tsirkin
@ 2017-05-17 21:45 ` Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 09/13] acpi-defs: clean up open brace usage Michael S. Tsirkin
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 21:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Bruce Rogers, Igor Mammedov

From: Bruce Rogers <brogers@suse.com>

Commit f0c9d64a exposed the issue that with a xenfv machine using
pci passthrough, acpi pci hotplug code was being executed by mistake.
Guard calls to acpi_pcihp_device_plug_cb (and corresponding
acpi_pcihp_device_unplug_cb) with a check for xen_enabled(). Without
this check I am seeing an error that the bus doesn't have the
acpi-pcihp-bsel property set.

Signed-off-by: Bruce Rogers <brogers@suse.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/acpi/piix4.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
index a553a7e..c409374 100644
--- a/hw/acpi/piix4.c
+++ b/hw/acpi/piix4.c
@@ -385,7 +385,10 @@ static void piix4_device_plug_cb(HotplugHandler *hotplug_dev,
                                 dev, errp);
         }
     } else if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) {
-        acpi_pcihp_device_plug_cb(hotplug_dev, &s->acpi_pci_hotplug, dev, errp);
+        if (!xen_enabled()) {
+            acpi_pcihp_device_plug_cb(hotplug_dev, &s->acpi_pci_hotplug, dev,
+                                      errp);
+        }
     } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
         if (s->cpu_hotplug_legacy) {
             legacy_acpi_cpu_plug_cb(hotplug_dev, &s->gpe_cpu, dev, errp);
@@ -408,8 +411,10 @@ static void piix4_device_unplug_request_cb(HotplugHandler *hotplug_dev,
         acpi_memory_unplug_request_cb(hotplug_dev, &s->acpi_memory_hotplug,
                                       dev, errp);
     } else if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) {
-        acpi_pcihp_device_unplug_cb(hotplug_dev, &s->acpi_pci_hotplug, dev,
-                                    errp);
+        if (!xen_enabled()) {
+            acpi_pcihp_device_unplug_cb(hotplug_dev, &s->acpi_pci_hotplug, dev,
+                                        errp);
+        }
     } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU) &&
                !s->cpu_hotplug_legacy) {
         acpi_cpu_unplug_request_cb(hotplug_dev, &s->cpuhp_state, dev, errp);
-- 
MST

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 09/13] acpi-defs: clean up open brace usage
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
                   ` (7 preceding siblings ...)
  2017-05-17 21:45 ` [Qemu-devel] [PULL 08/13] ACPI: don't call acpi_pcihp_device_plug_cb on xen Michael S. Tsirkin
@ 2017-05-17 21:45 ` Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 10/13] Revert "hw/pci: disable pci-bridge's shpc by default" Michael S. Tsirkin
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 21:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Igor Mammedov

patchew has been saying:
ERROR: open brace '{' following struct go on the same line

Fix up acpi-defs.h to follow this rule.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/hw/acpi/acpi-defs.h | 34 ++++++++++++----------------------
 1 file changed, 12 insertions(+), 22 deletions(-)

diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h
index 91bae7f..72be675 100644
--- a/include/hw/acpi/acpi-defs.h
+++ b/include/hw/acpi/acpi-defs.h
@@ -81,8 +81,8 @@ typedef struct AcpiRsdpDescriptor AcpiRsdpDescriptor;
     uint32_t asl_compiler_revision;  /* ASL compiler revision number */
 
 
-struct AcpiTableHeader         /* ACPI common table header */
-{
+/* ACPI common table header */
+struct AcpiTableHeader {
     ACPI_TABLE_HEADER_DEF
 } QEMU_PACKED;
 typedef struct AcpiTableHeader AcpiTableHeader;
@@ -224,8 +224,7 @@ typedef struct AcpiSerialPortConsoleRedirection
 /*
  * ACPI 1.0 Root System Description Table (RSDT)
  */
-struct AcpiRsdtDescriptorRev1
-{
+struct AcpiRsdtDescriptorRev1 {
     ACPI_TABLE_HEADER_DEF       /* ACPI common table header */
     uint32_t table_offset_entry[0];  /* Array of pointers to other */
     /* ACPI tables */
@@ -235,8 +234,7 @@ typedef struct AcpiRsdtDescriptorRev1 AcpiRsdtDescriptorRev1;
 /*
  * ACPI 2.0 eXtended System Description Table (XSDT)
  */
-struct AcpiXsdtDescriptorRev2
-{
+struct AcpiXsdtDescriptorRev2 {
     ACPI_TABLE_HEADER_DEF       /* ACPI common table header */
     uint64_t table_offset_entry[0];  /* Array of pointers to other */
     /* ACPI tables */
@@ -246,8 +244,7 @@ typedef struct AcpiXsdtDescriptorRev2 AcpiXsdtDescriptorRev2;
 /*
  * ACPI 1.0 Firmware ACPI Control Structure (FACS)
  */
-struct AcpiFacsDescriptorRev1
-{
+struct AcpiFacsDescriptorRev1 {
     uint32_t signature;           /* ACPI Signature */
     uint32_t length;                 /* Length of structure, in bytes */
     uint32_t hardware_signature;     /* Hardware configuration signature */
@@ -273,8 +270,7 @@ typedef struct AcpiFacsDescriptorRev1 AcpiFacsDescriptorRev1;
 
 /* Master MADT */
 
-struct AcpiMultipleApicTable
-{
+struct AcpiMultipleApicTable {
     ACPI_TABLE_HEADER_DEF     /* ACPI common table header */
     uint32_t local_apic_address;     /* Physical address of local APIC */
     uint32_t flags;
@@ -310,8 +306,7 @@ typedef struct AcpiMultipleApicTable AcpiMultipleApicTable;
 
 /* Sub-structures for MADT */
 
-struct AcpiMadtProcessorApic
-{
+struct AcpiMadtProcessorApic {
     ACPI_SUB_HEADER_DEF
     uint8_t  processor_id;           /* ACPI processor id */
     uint8_t  local_apic_id;          /* Processor's local APIC id */
@@ -319,8 +314,7 @@ struct AcpiMadtProcessorApic
 } QEMU_PACKED;
 typedef struct AcpiMadtProcessorApic AcpiMadtProcessorApic;
 
-struct AcpiMadtIoApic
-{
+struct AcpiMadtIoApic {
     ACPI_SUB_HEADER_DEF
     uint8_t  io_apic_id;             /* I/O APIC ID */
     uint8_t  reserved;               /* Reserved - must be zero */
@@ -473,8 +467,7 @@ typedef struct Acpi20Hpet Acpi20Hpet;
  * SRAT (NUMA topology description) table
  */
 
-struct AcpiSystemResourceAffinityTable
-{
+struct AcpiSystemResourceAffinityTable {
     ACPI_TABLE_HEADER_DEF
     uint32_t    reserved1;
     uint32_t    reserved2[2];
@@ -486,8 +479,7 @@ typedef struct AcpiSystemResourceAffinityTable AcpiSystemResourceAffinityTable;
 #define ACPI_SRAT_PROCESSOR_x2APIC   2
 #define ACPI_SRAT_PROCESSOR_GICC     3
 
-struct AcpiSratProcessorAffinity
-{
+struct AcpiSratProcessorAffinity {
     ACPI_SUB_HEADER_DEF
     uint8_t     proximity_lo;
     uint8_t     local_apic_id;
@@ -509,8 +501,7 @@ struct AcpiSratProcessorX2ApicAffinity {
 } QEMU_PACKED;
 typedef struct AcpiSratProcessorX2ApicAffinity AcpiSratProcessorX2ApicAffinity;
 
-struct AcpiSratMemoryAffinity
-{
+struct AcpiSratMemoryAffinity {
     ACPI_SUB_HEADER_DEF
     uint32_t    proximity;
     uint16_t    reserved1;
@@ -522,8 +513,7 @@ struct AcpiSratMemoryAffinity
 } QEMU_PACKED;
 typedef struct AcpiSratMemoryAffinity AcpiSratMemoryAffinity;
 
-struct AcpiSratProcessorGiccAffinity
-{
+struct AcpiSratProcessorGiccAffinity {
     ACPI_SUB_HEADER_DEF
     uint32_t    proximity;
     uint32_t    acpi_processor_uid;
-- 
MST

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 10/13] Revert "hw/pci: disable pci-bridge's shpc by default"
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
                   ` (8 preceding siblings ...)
  2017-05-17 21:45 ` [Qemu-devel] [PULL 09/13] acpi-defs: clean up open brace usage Michael S. Tsirkin
@ 2017-05-17 21:45 ` Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 11/13] virtio: allow broken device to notify guest Michael S. Tsirkin
                   ` (4 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 21:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Marcel Apfelbaum, Paolo Bonzini

From: Marcel Apfelbaum <marcel@redhat.com>

This reverts commit dc0ae767700c156894e36fab89a745a2dc4173de.

Disabling the shpc controller has an undesired side effect.
The PCI bridge remains with no attached devices at boot time,
and the guest operating systems do not allocate any resources
for it, leaving the bridge unusable. Note that the behaviour
is dictated by the pci bridge specification.

Revert the commit and leave the shpc controller even if is not
actually used by any architecture. Slot 0 remains unusable at boot time.

Keep shpc off for QEMU 2.9 machines.

Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 include/hw/compat.h            | 6 +++++-
 hw/pci-bridge/pci_bridge_dev.c | 2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/include/hw/compat.h b/include/hw/compat.h
index 846b90e..55b1765 100644
--- a/include/hw/compat.h
+++ b/include/hw/compat.h
@@ -2,7 +2,11 @@
 #define HW_COMPAT_H
 
 #define HW_COMPAT_2_9 \
-    /* empty */
+    {\
+        .driver   = "pci-bridge",\
+        .property = "shpc",\
+        .value    = "off",\
+    },
 
 #define HW_COMPAT_2_8 \
     {\
diff --git a/hw/pci-bridge/pci_bridge_dev.c b/hw/pci-bridge/pci_bridge_dev.c
index 647ad80..5dbd933 100644
--- a/hw/pci-bridge/pci_bridge_dev.c
+++ b/hw/pci-bridge/pci_bridge_dev.c
@@ -163,7 +163,7 @@ static Property pci_bridge_dev_properties[] = {
     DEFINE_PROP_ON_OFF_AUTO(PCI_BRIDGE_DEV_PROP_MSI, PCIBridgeDev, msi,
                             ON_OFF_AUTO_AUTO),
     DEFINE_PROP_BIT(PCI_BRIDGE_DEV_PROP_SHPC, PCIBridgeDev, flags,
-                    PCI_BRIDGE_DEV_F_SHPC_REQ, false),
+                    PCI_BRIDGE_DEV_F_SHPC_REQ, true),
     DEFINE_PROP_END_OF_LIST(),
 };
 
-- 
MST

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 11/13] virtio: allow broken device to notify guest
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
                   ` (9 preceding siblings ...)
  2017-05-17 21:45 ` [Qemu-devel] [PULL 10/13] Revert "hw/pci: disable pci-bridge's shpc by default" Michael S. Tsirkin
@ 2017-05-17 21:45 ` Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 12/13] pci: deassert intx when pci device unrealize Michael S. Tsirkin
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 21:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell, Greg Kurz, Cornelia Huck, Stefan Hajnoczi

From: Greg Kurz <groug@kaod.org>

According to section 2.1.2 of the virtio-1 specification:

"The device SHOULD set DEVICE_NEEDS_RESET when it enters an error state that
a reset is needed. If DRIVER_OK is set, after it sets DEVICE_NEEDS_RESET,
the device MUST send a device configuration change notification to the
driver."

Commit "f5ed36635d8f virtio: stop virtqueue processing if device is broken"
introduced a virtio_error() call that just does that:

- internally mark the device as broken
- set the DEVICE_NEEDS_RESET bit in the status
- send a configuration change notification

Unfortunately, virtio_notify_vector(), called by virtio_notify_config(),
returns right away when the device is marked as broken and the notification
isn't sent in this case.

The spec doesn't say whether a broken device can send notifications
in other situations or not. But since the driver isn't supposed to do
anything but to reset the device, it makes sense to keep the check in
virtio_notify_config().

Marking the device as broken AFTER the configuration change notification was
sent is enough to fix the issue.

Signed-off-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 hw/virtio/virtio.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 03592c5..890b4d7 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -2451,12 +2451,12 @@ void GCC_FMT_ATTR(2, 3) virtio_error(VirtIODevice *vdev, const char *fmt, ...)
     error_vreport(fmt, ap);
     va_end(ap);
 
-    vdev->broken = true;
-
     if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) {
         virtio_set_status(vdev, vdev->status | VIRTIO_CONFIG_S_NEEDS_RESET);
         virtio_notify_config(vdev);
     }
+
+    vdev->broken = true;
 }
 
 static void virtio_memory_listener_commit(MemoryListener *listener)
-- 
MST

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 12/13] pci: deassert intx when pci device unrealize
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
                   ` (10 preceding siblings ...)
  2017-05-17 21:45 ` [Qemu-devel] [PULL 11/13] virtio: allow broken device to notify guest Michael S. Tsirkin
@ 2017-05-17 21:45 ` Michael S. Tsirkin
  2017-05-17 21:45 ` [Qemu-devel] [PULL 13/13] exec: abstract address_space_do_translate() Michael S. Tsirkin
                   ` (2 subsequent siblings)
  14 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 21:45 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Herongguang (Stephen), qemu-stable, Marcel Apfelbaum

From: "Herongguang (Stephen)" <herongguang.he@huawei.com>

If a pci device is not reset by VM (by writing into config space)
and unplugged by VM, after that when VM reboots, qemu may assert:
pcibus_reset: Assertion `bus->irq_count[i] == 0' failed

Cc: qemu-stable@nongnu.org
Signed-off-by: herongguang <herongguang.he@huawei.com>
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 hw/pci/pci.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 259483b..98ccc27 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -1083,6 +1083,7 @@ static void pci_qdev_unrealize(DeviceState *dev, Error **errp)
         pc->exit(pci_dev);
     }
 
+    pci_device_deassert_intx(pci_dev);
     do_pci_unregister_device(pci_dev);
 }
 
-- 
MST

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 13/13] exec: abstract address_space_do_translate()
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
                   ` (11 preceding siblings ...)
  2017-05-17 21:45 ` [Qemu-devel] [PULL 12/13] pci: deassert intx when pci device unrealize Michael S. Tsirkin
@ 2017-05-17 21:45 ` Michael S. Tsirkin
  2017-05-17 22:29 ` [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes no-reply
  2017-05-18  9:33 ` Stefan Hajnoczi
  14 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 21:45 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Peter Xu, Maxime Coquelin, Paolo Bonzini,
	Peter Crosthwaite, Richard Henderson

From: Peter Xu <peterx@redhat.com>

This function is an abstraction helper for address_space_translate() and
address_space_get_iotlb_entry(). It does the lookup of address into
memory region section, then does proper IOMMU translation if necessary.
Refactor the two existing functions to use it.

This fixes vhost when IOMMU is disabled by guest.

Tested-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 exec.c | 103 +++++++++++++++++++++++++++++++++++++++++++----------------------
 1 file changed, 69 insertions(+), 34 deletions(-)

diff --git a/exec.c b/exec.c
index eac6085..f942eb2 100644
--- a/exec.c
+++ b/exec.c
@@ -463,18 +463,20 @@ address_space_translate_internal(AddressSpaceDispatch *d, hwaddr addr, hwaddr *x
 }
 
 /* Called from RCU critical section */
-IOMMUTLBEntry address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
-                                            bool is_write)
+static MemoryRegionSection address_space_do_translate(AddressSpace *as,
+                                                      hwaddr addr,
+                                                      hwaddr *xlat,
+                                                      hwaddr *plen,
+                                                      bool is_write,
+                                                      bool is_mmio)
 {
-    IOMMUTLBEntry iotlb = {0};
+    IOMMUTLBEntry iotlb;
     MemoryRegionSection *section;
     MemoryRegion *mr;
 
     for (;;) {
         AddressSpaceDispatch *d = atomic_rcu_read(&as->dispatch);
-        section = address_space_lookup_region(d, addr, false);
-        addr = addr - section->offset_within_address_space
-               + section->offset_within_region;
+        section = address_space_translate_internal(d, addr, &addr, plen, is_mmio);
         mr = section->mr;
 
         if (!mr->iommu_ops) {
@@ -482,55 +484,88 @@ IOMMUTLBEntry address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
         }
 
         iotlb = mr->iommu_ops->translate(mr, addr, is_write);
+        addr = ((iotlb.translated_addr & ~iotlb.addr_mask)
+                | (addr & iotlb.addr_mask));
+        *plen = MIN(*plen, (addr | iotlb.addr_mask) - addr + 1);
         if (!(iotlb.perm & (1 << is_write))) {
-            iotlb.target_as = NULL;
-            break;
+            goto translate_fail;
         }
 
-        addr = ((iotlb.translated_addr & ~iotlb.addr_mask)
-                | (addr & iotlb.addr_mask));
         as = iotlb.target_as;
     }
 
-    return iotlb;
+    *xlat = addr;
+
+    return *section;
+
+translate_fail:
+    return (MemoryRegionSection) { .mr = &io_mem_unassigned };
 }
 
 /* Called from RCU critical section */
-MemoryRegion *address_space_translate(AddressSpace *as, hwaddr addr,
-                                      hwaddr *xlat, hwaddr *plen,
-                                      bool is_write)
+IOMMUTLBEntry address_space_get_iotlb_entry(AddressSpace *as, hwaddr addr,
+                                            bool is_write)
 {
-    IOMMUTLBEntry iotlb;
-    MemoryRegionSection *section;
-    MemoryRegion *mr;
+    MemoryRegionSection section;
+    hwaddr xlat, plen;
 
-    for (;;) {
-        AddressSpaceDispatch *d = atomic_rcu_read(&as->dispatch);
-        section = address_space_translate_internal(d, addr, &addr, plen, true);
-        mr = section->mr;
+    /* Try to get maximum page mask during translation. */
+    plen = (hwaddr)-1;
 
-        if (!mr->iommu_ops) {
-            break;
-        }
+    /* This can never be MMIO. */
+    section = address_space_do_translate(as, addr, &xlat, &plen,
+                                         is_write, false);
 
-        iotlb = mr->iommu_ops->translate(mr, addr, is_write);
-        addr = ((iotlb.translated_addr & ~iotlb.addr_mask)
-                | (addr & iotlb.addr_mask));
-        *plen = MIN(*plen, (addr | iotlb.addr_mask) - addr + 1);
-        if (!(iotlb.perm & (1 << is_write))) {
-            mr = &io_mem_unassigned;
-            break;
-        }
+    /* Illegal translation */
+    if (section.mr == &io_mem_unassigned) {
+        goto iotlb_fail;
+    }
 
-        as = iotlb.target_as;
+    /* Convert memory region offset into address space offset */
+    xlat += section.offset_within_address_space -
+        section.offset_within_region;
+
+    if (plen == (hwaddr)-1) {
+        /*
+         * We use default page size here. Logically it only happens
+         * for identity mappings.
+         */
+        plen = TARGET_PAGE_SIZE;
     }
 
+    /* Convert to address mask */
+    plen -= 1;
+
+    return (IOMMUTLBEntry) {
+        .target_as = section.address_space,
+        .iova = addr & ~plen,
+        .translated_addr = xlat & ~plen,
+        .addr_mask = plen,
+        /* IOTLBs are for DMAs, and DMA only allows on RAMs. */
+        .perm = IOMMU_RW,
+    };
+
+iotlb_fail:
+    return (IOMMUTLBEntry) {0};
+}
+
+/* Called from RCU critical section */
+MemoryRegion *address_space_translate(AddressSpace *as, hwaddr addr,
+                                      hwaddr *xlat, hwaddr *plen,
+                                      bool is_write)
+{
+    MemoryRegion *mr;
+    MemoryRegionSection section;
+
+    /* This can be MMIO, so setup MMIO bit. */
+    section = address_space_do_translate(as, addr, xlat, plen, is_write, true);
+    mr = section.mr;
+
     if (xen_enabled() && memory_access_is_direct(mr, is_write)) {
         hwaddr page = ((addr & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE) - addr;
         *plen = MIN(page, *plen);
     }
 
-    *xlat = addr;
     return mr;
 }
 
-- 
MST

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
                   ` (12 preceding siblings ...)
  2017-05-17 21:45 ` [Qemu-devel] [PULL 13/13] exec: abstract address_space_do_translate() Michael S. Tsirkin
@ 2017-05-17 22:29 ` no-reply
  2017-05-17 22:34   ` Michael S. Tsirkin
  2017-05-18  9:33 ` Stefan Hajnoczi
  14 siblings, 1 reply; 19+ messages in thread
From: no-reply @ 2017-05-17 22:29 UTC (permalink / raw)
  To: mst; +Cc: famz, qemu-devel, peter.maydell

Hi,

This series seems to have some coding style problems. See output below for
more information:

Message-id: 1495057396-13387-1-git-send-email-mst@redhat.com
Subject: [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes
Type: series

=== TEST SCRIPT BEGIN ===
#!/bin/bash

BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0

git config --local diff.renamelimit 0
git config --local diff.renames True

commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
    echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
    if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
        failed=1
        echo
    fi
    n=$((n+1))
done

exit $failed
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
17bfbca exec: abstract address_space_do_translate()
8bb02e7 pci: deassert intx when pci device unrealize
1e14278 virtio: allow broken device to notify guest
dc29a74 Revert "hw/pci: disable pci-bridge's shpc by default"
3398123 acpi-defs: clean up open brace usage
c25b309 ACPI: don't call acpi_pcihp_device_plug_cb on xen
02d833c iommu: Don't crash if machine is not PC_MACHINE
013b6f7 pc: add 2.10 machine type
f8df4b9 pc/fwcfg: unbreak migration from qemu-2.5 and qemu-2.6 during firmware boot
39fbfab libvhost-user: fix crash when rings aren't ready
1b9f61d hw/virtio: fix vhost user fails to startup when MQ
e03f60a hw/arm/virt: generate 64-bit addressable ACPI objects
6fc4238 hw/acpi-defs: replace leading X with x_ in FADT field names

=== OUTPUT BEGIN ===
Checking PATCH 1/13: hw/acpi-defs: replace leading X with x_ in FADT field names...
Checking PATCH 2/13: hw/arm/virt: generate 64-bit addressable ACPI objects...
ERROR: open brace '{' following struct go on the same line
#157: FILE: include/hw/acpi/acpi-defs.h:239:
+struct AcpiXsdtDescriptorRev2
+{

total: 1 errors, 0 warnings, 125 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

Checking PATCH 3/13: hw/virtio: fix vhost user fails to startup when MQ...
Checking PATCH 4/13: libvhost-user: fix crash when rings aren't ready...
Checking PATCH 5/13: pc/fwcfg: unbreak migration from qemu-2.5 and qemu-2.6 during firmware boot...
Checking PATCH 6/13: pc: add 2.10 machine type...
Checking PATCH 7/13: iommu: Don't crash if machine is not PC_MACHINE...
Checking PATCH 8/13: ACPI: don't call acpi_pcihp_device_plug_cb on xen...
Checking PATCH 9/13: acpi-defs: clean up open brace usage...
Checking PATCH 10/13: Revert "hw/pci: disable pci-bridge's shpc by default"...
Checking PATCH 11/13: virtio: allow broken device to notify guest...
Checking PATCH 12/13: pci: deassert intx when pci device unrealize...
Checking PATCH 13/13: exec: abstract address_space_do_translate()...
WARNING: line over 80 characters
#46: FILE: exec.c:479:
+        section = address_space_translate_internal(d, addr, &addr, plen, is_mmio);

total: 0 errors, 1 warnings, 142 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
=== OUTPUT END ===

Test command exited with code: 1


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes
  2017-05-17 22:29 ` [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes no-reply
@ 2017-05-17 22:34   ` Michael S. Tsirkin
  0 siblings, 0 replies; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-17 22:34 UTC (permalink / raw)
  To: qemu-devel; +Cc: famz, peter.maydell

On Wed, May 17, 2017 at 03:29:33PM -0700, no-reply@patchew.org wrote:
> Hi,
> 
> This series seems to have some coding style problems. See output below for
> more information:
> 
> Message-id: 1495057396-13387-1-git-send-email-mst@redhat.com
> Subject: [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes
> Type: series
> 
> === TEST SCRIPT BEGIN ===
> #!/bin/bash
> 
> BASE=base
> n=1
> total=$(git log --oneline $BASE.. | wc -l)
> failed=0
> 
> git config --local diff.renamelimit 0
> git config --local diff.renames True
> 
> commits="$(git log --format=%H --reverse $BASE..)"
> for c in $commits; do
>     echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
>     if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
>         failed=1
>         echo
>     fi
>     n=$((n+1))
> done
> 
> exit $failed
> === TEST SCRIPT END ===
> 
> Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
> Switched to a new branch 'test'
> 17bfbca exec: abstract address_space_do_translate()
> 8bb02e7 pci: deassert intx when pci device unrealize
> 1e14278 virtio: allow broken device to notify guest
> dc29a74 Revert "hw/pci: disable pci-bridge's shpc by default"
> 3398123 acpi-defs: clean up open brace usage
> c25b309 ACPI: don't call acpi_pcihp_device_plug_cb on xen
> 02d833c iommu: Don't crash if machine is not PC_MACHINE
> 013b6f7 pc: add 2.10 machine type
> f8df4b9 pc/fwcfg: unbreak migration from qemu-2.5 and qemu-2.6 during firmware boot
> 39fbfab libvhost-user: fix crash when rings aren't ready
> 1b9f61d hw/virtio: fix vhost user fails to startup when MQ
> e03f60a hw/arm/virt: generate 64-bit addressable ACPI objects
> 6fc4238 hw/acpi-defs: replace leading X with x_ in FADT field names
> 
> === OUTPUT BEGIN ===
> Checking PATCH 1/13: hw/acpi-defs: replace leading X with x_ in FADT field names...
> Checking PATCH 2/13: hw/arm/virt: generate 64-bit addressable ACPI objects...
> ERROR: open brace '{' following struct go on the same line
> #157: FILE: include/hw/acpi/acpi-defs.h:239:
> +struct AcpiXsdtDescriptorRev2
> +{
> 
> total: 1 errors, 0 warnings, 125 lines checked
> 
> Your patch has style problems, please review.  If any of these errors
> are false positives report them to the maintainer, see
> CHECKPATCH in MAINTAINERS.
> 
> Checking PATCH 3/13: hw/virtio: fix vhost user fails to startup when MQ...
> Checking PATCH 4/13: libvhost-user: fix crash when rings aren't ready...
> Checking PATCH 5/13: pc/fwcfg: unbreak migration from qemu-2.5 and qemu-2.6 during firmware boot...
> Checking PATCH 6/13: pc: add 2.10 machine type...
> Checking PATCH 7/13: iommu: Don't crash if machine is not PC_MACHINE...
> Checking PATCH 8/13: ACPI: don't call acpi_pcihp_device_plug_cb on xen...
> Checking PATCH 9/13: acpi-defs: clean up open brace usage...
> Checking PATCH 10/13: Revert "hw/pci: disable pci-bridge's shpc by default"...
> Checking PATCH 11/13: virtio: allow broken device to notify guest...
> Checking PATCH 12/13: pci: deassert intx when pci device unrealize...
> Checking PATCH 13/13: exec: abstract address_space_do_translate()...
> WARNING: line over 80 characters
> #46: FILE: exec.c:479:
> +        section = address_space_translate_internal(d, addr, &addr, plen, is_mmio);
> 
> total: 0 errors, 1 warnings, 142 lines checked

Not by a lot, and seems much clearer this way, so I think it's ok to ignore.

> Your patch has style problems, please review.  If any of these errors
> are false positives report them to the maintainer, see
> CHECKPATCH in MAINTAINERS.
> === OUTPUT END ===
> 
> Test command exited with code: 1
> 
> 
> ---
> Email generated automatically by Patchew [http://patchew.org/].
> Please send your feedback to patchew-devel@freelists.org

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes
  2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
                   ` (13 preceding siblings ...)
  2017-05-17 22:29 ` [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes no-reply
@ 2017-05-18  9:33 ` Stefan Hajnoczi
  14 siblings, 0 replies; 19+ messages in thread
From: Stefan Hajnoczi @ 2017-05-18  9:33 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: qemu-devel, Peter Maydell

[-- Attachment #1: Type: text/plain, Size: 3680 bytes --]

On Thu, May 18, 2017 at 12:44:59AM +0300, Michael S. Tsirkin wrote:
> This includes the previous pull request which still
> does not appear to be in - not rebased so merging twice
> will not cause conflicts. Note that patch 08 makes checkpatch
> complain, patch 9 fixes that.
> 
> The following changes since commit 76d20ea0f1b26ebd5da2f5fb2fdf3250cde887bb:
> 
>   Merge remote-tracking branch 'armbru/tags/pull-qapi-2017-05-04-v3' into staging (2017-05-09 15:49:14 -0400)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git tags/for_upstream
> 
> for you to fetch changes up to a764040cc831cfe5b8bf1c80e8341b9bf2de3ce8:
> 
>   exec: abstract address_space_do_translate() (2017-05-18 00:35:15 +0300)
> 
> ----------------------------------------------------------------
> pci, virtio, vhost: fixes
> 
> A bunch of fixes that missed the release.
> Most notably we are reverting shpc back to enabled by default state
> as guests uses that as an indicator that hotplug is supported
> (even though it's unused). Unfortunately we can't fix this
> on the stable branch since that would break migration.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> 
> ----------------------------------------------------------------
> Ard Biesheuvel (2):
>       hw/acpi-defs: replace leading X with x_ in FADT field names
>       hw/arm/virt: generate 64-bit addressable ACPI objects
> 
> Bruce Rogers (1):
>       ACPI: don't call acpi_pcihp_device_plug_cb on xen
> 
> Eduardo Habkost (1):
>       iommu: Don't crash if machine is not PC_MACHINE
> 
> Greg Kurz (1):
>       virtio: allow broken device to notify guest
> 
> Herongguang (Stephen) (1):
>       pci: deassert intx when pci device unrealize
> 
> Igor Mammedov (1):
>       pc/fwcfg: unbreak migration from qemu-2.5 and qemu-2.6 during firmware boot
> 
> Marc-André Lureau (1):
>       libvhost-user: fix crash when rings aren't ready
> 
> Marcel Apfelbaum (1):
>       Revert "hw/pci: disable pci-bridge's shpc by default"
> 
> Michael S. Tsirkin (1):
>       acpi-defs: clean up open brace usage
> 
> Peter Xu (2):
>       pc: add 2.10 machine type
>       exec: abstract address_space_do_translate()
> 
> Zhiyong Yang (1):
>       hw/virtio: fix vhost user fails to startup when MQ
> 
>  contrib/libvhost-user/libvhost-user.h |   6 +-
>  include/hw/acpi/acpi-defs.h           |  45 +++++++--------
>  include/hw/acpi/aml-build.h           |   3 +
>  include/hw/compat.h                   |   6 +-
>  include/hw/i386/pc.h                  |  10 ++--
>  contrib/libvhost-user/libvhost-user.c |  26 +++++++--
>  exec.c                                | 103 +++++++++++++++++++++++-----------
>  hw/acpi/aml-build.c                   |  27 +++++++++
>  hw/acpi/piix4.c                       |  11 +++-
>  hw/arm/virt-acpi-build.c              |  26 ++++-----
>  hw/i386/acpi-build.c                  |   4 +-
>  hw/i386/amd_iommu.c                   |  15 ++++-
>  hw/i386/intel_iommu.c                 |  14 ++++-
>  hw/i386/pc.c                          |   9 ++-
>  hw/i386/pc_piix.c                     |  16 +++++-
>  hw/i386/pc_q35.c                      |  14 ++++-
>  hw/pci-bridge/pci_bridge_dev.c        |   2 +-
>  hw/pci/pci.c                          |   1 +
>  hw/virtio/vhost-user.c                |  21 ++++---
>  hw/virtio/virtio.c                    |   4 +-
>  tests/bios-tables-test.c              |   4 +-
>  21 files changed, 253 insertions(+), 114 deletions(-)
> 
> 

Thanks, applied to my staging tree:
https://github.com/stefanha/qemu/commits/staging

Stefan

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes
  2017-05-29  0:18 Michael S. Tsirkin
@ 2017-05-30  9:41 ` Stefan Hajnoczi
  0 siblings, 0 replies; 19+ messages in thread
From: Stefan Hajnoczi @ 2017-05-30  9:41 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: qemu-devel, Peter Maydell

[-- Attachment #1: Type: text/plain, Size: 3121 bytes --]

On Mon, May 29, 2017 at 03:18:30AM +0300, Michael S. Tsirkin wrote:
> The following changes since commit 9964e96dc9999cf7f7c936ee854a795415d19b60:
> 
>   Merge remote-tracking branch 'jasowang/tags/net-pull-request' into staging (2017-05-23 15:01:31 +0100)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git tags/for_upstream
> 
> for you to fetch changes up to 811bf15114bff4d46735acedbd72b906616ce365:
> 
>   acpi-test: update expected files (2017-05-29 03:07:57 +0300)
> 
> ----------------------------------------------------------------
> pci, virtio, vhost: fixes
> 
> A bunch of fixes all over the place. Most notably this fixes
> the new MTU feature when using vhost.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> 
> ----------------------------------------------------------------
> Ladi Prosek (1):
>       pc: ACPI BIOS: use highest NUMA node for hotplug mem hole SRAT entry
> 
> Maxime Coquelin (2):
>       virtio_net: Bypass backends for MTU feature negotiation
>       vhost-user: pass message as a pointer to process_message_reply()
> 
> Michael S. Tsirkin (1):
>       acpi-test: update expected files
> 
> Peter Xu (9):
>       memory: tune last param of iommu_ops.translate()
>       memory: remove the last param in memory_region_iommu_replay()
>       x86-iommu: use DeviceClass properties
>       intel_iommu: renaming context entry helpers
>       intel_iommu: provide vtd_ce_get_type()
>       intel_iommu: use IOMMU_ACCESS_FLAG()
>       intel_iommu: allow dev-iotlb context entry conditionally
>       intel_iommu: support passthrough (PT)
>       intel_iommu: turn off pt before 2.9
> 
>  hw/i386/intel_iommu_internal.h      |   1 +
>  include/exec/memory.h               |  15 +-
>  include/hw/compat.h                 |   8 +
>  include/hw/i386/x86-iommu.h         |   1 +
>  include/hw/virtio/virtio-net.h      |   1 +
>  include/hw/virtio/virtio.h          |   1 +
>  exec.c                              |   3 +-
>  hw/alpha/typhoon.c                  |   2 +-
>  hw/dma/rc4030.c                     |   2 +-
>  hw/i386/acpi-build.c                |   7 +-
>  hw/i386/amd_iommu.c                 |   4 +-
>  hw/i386/intel_iommu.c               | 313 ++++++++++++++++++++++++++----------
>  hw/i386/x86-iommu.c                 |  48 +-----
>  hw/net/virtio-net.c                 |  17 +-
>  hw/pci-host/apb.c                   |   2 +-
>  hw/ppc/spapr_iommu.c                |   2 +-
>  hw/s390x/s390-pci-bus.c             |   2 +-
>  hw/s390x/s390-pci-inst.c            |   2 +-
>  hw/vfio/common.c                    |   2 +-
>  hw/virtio/vhost-user.c              |  12 +-
>  memory.c                            |   7 +-
>  hw/i386/trace-events                |   2 +
>  tests/acpi-test-data/pc/SRAT.memhp  | Bin 264 -> 264 bytes
>  tests/acpi-test-data/q35/SRAT.memhp | Bin 264 -> 264 bytes
>  24 files changed, 299 insertions(+), 155 deletions(-)
> 
> 

Thanks, applied to my staging tree:
https://github.com/stefanha/qemu/commits/staging

Stefan

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes
@ 2017-05-29  0:18 Michael S. Tsirkin
  2017-05-30  9:41 ` Stefan Hajnoczi
  0 siblings, 1 reply; 19+ messages in thread
From: Michael S. Tsirkin @ 2017-05-29  0:18 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell

The following changes since commit 9964e96dc9999cf7f7c936ee854a795415d19b60:

  Merge remote-tracking branch 'jasowang/tags/net-pull-request' into staging (2017-05-23 15:01:31 +0100)

are available in the git repository at:

  git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git tags/for_upstream

for you to fetch changes up to 811bf15114bff4d46735acedbd72b906616ce365:

  acpi-test: update expected files (2017-05-29 03:07:57 +0300)

----------------------------------------------------------------
pci, virtio, vhost: fixes

A bunch of fixes all over the place. Most notably this fixes
the new MTU feature when using vhost.

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

----------------------------------------------------------------
Ladi Prosek (1):
      pc: ACPI BIOS: use highest NUMA node for hotplug mem hole SRAT entry

Maxime Coquelin (2):
      virtio_net: Bypass backends for MTU feature negotiation
      vhost-user: pass message as a pointer to process_message_reply()

Michael S. Tsirkin (1):
      acpi-test: update expected files

Peter Xu (9):
      memory: tune last param of iommu_ops.translate()
      memory: remove the last param in memory_region_iommu_replay()
      x86-iommu: use DeviceClass properties
      intel_iommu: renaming context entry helpers
      intel_iommu: provide vtd_ce_get_type()
      intel_iommu: use IOMMU_ACCESS_FLAG()
      intel_iommu: allow dev-iotlb context entry conditionally
      intel_iommu: support passthrough (PT)
      intel_iommu: turn off pt before 2.9

 hw/i386/intel_iommu_internal.h      |   1 +
 include/exec/memory.h               |  15 +-
 include/hw/compat.h                 |   8 +
 include/hw/i386/x86-iommu.h         |   1 +
 include/hw/virtio/virtio-net.h      |   1 +
 include/hw/virtio/virtio.h          |   1 +
 exec.c                              |   3 +-
 hw/alpha/typhoon.c                  |   2 +-
 hw/dma/rc4030.c                     |   2 +-
 hw/i386/acpi-build.c                |   7 +-
 hw/i386/amd_iommu.c                 |   4 +-
 hw/i386/intel_iommu.c               | 313 ++++++++++++++++++++++++++----------
 hw/i386/x86-iommu.c                 |  48 +-----
 hw/net/virtio-net.c                 |  17 +-
 hw/pci-host/apb.c                   |   2 +-
 hw/ppc/spapr_iommu.c                |   2 +-
 hw/s390x/s390-pci-bus.c             |   2 +-
 hw/s390x/s390-pci-inst.c            |   2 +-
 hw/vfio/common.c                    |   2 +-
 hw/virtio/vhost-user.c              |  12 +-
 memory.c                            |   7 +-
 hw/i386/trace-events                |   2 +
 tests/acpi-test-data/pc/SRAT.memhp  | Bin 264 -> 264 bytes
 tests/acpi-test-data/q35/SRAT.memhp | Bin 264 -> 264 bytes
 24 files changed, 299 insertions(+), 155 deletions(-)

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2017-05-30  9:41 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-17 21:44 [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes Michael S. Tsirkin
2017-05-17 21:45 ` [Qemu-devel] [PULL 01/13] hw/acpi-defs: replace leading X with x_ in FADT field names Michael S. Tsirkin
2017-05-17 21:45 ` [Qemu-devel] [PULL 02/13] hw/arm/virt: generate 64-bit addressable ACPI objects Michael S. Tsirkin
2017-05-17 21:45 ` [Qemu-devel] [PULL 03/13] hw/virtio: fix vhost user fails to startup when MQ Michael S. Tsirkin
2017-05-17 21:45 ` [Qemu-devel] [PULL 04/13] libvhost-user: fix crash when rings aren't ready Michael S. Tsirkin
2017-05-17 21:45 ` [Qemu-devel] [PULL 05/13] pc/fwcfg: unbreak migration from qemu-2.5 and qemu-2.6 during firmware boot Michael S. Tsirkin
2017-05-17 21:45 ` [Qemu-devel] [PULL 06/13] pc: add 2.10 machine type Michael S. Tsirkin
2017-05-17 21:45 ` [Qemu-devel] [PULL 07/13] iommu: Don't crash if machine is not PC_MACHINE Michael S. Tsirkin
2017-05-17 21:45 ` [Qemu-devel] [PULL 08/13] ACPI: don't call acpi_pcihp_device_plug_cb on xen Michael S. Tsirkin
2017-05-17 21:45 ` [Qemu-devel] [PULL 09/13] acpi-defs: clean up open brace usage Michael S. Tsirkin
2017-05-17 21:45 ` [Qemu-devel] [PULL 10/13] Revert "hw/pci: disable pci-bridge's shpc by default" Michael S. Tsirkin
2017-05-17 21:45 ` [Qemu-devel] [PULL 11/13] virtio: allow broken device to notify guest Michael S. Tsirkin
2017-05-17 21:45 ` [Qemu-devel] [PULL 12/13] pci: deassert intx when pci device unrealize Michael S. Tsirkin
2017-05-17 21:45 ` [Qemu-devel] [PULL 13/13] exec: abstract address_space_do_translate() Michael S. Tsirkin
2017-05-17 22:29 ` [Qemu-devel] [PULL 00/13] pci, virtio, vhost: fixes no-reply
2017-05-17 22:34   ` Michael S. Tsirkin
2017-05-18  9:33 ` Stefan Hajnoczi
2017-05-29  0:18 Michael S. Tsirkin
2017-05-30  9:41 ` Stefan Hajnoczi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.