All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/3] virtio pmem: coverity fixes
@ 2019-07-12  7:35 Pankaj Gupta
  2019-07-12 15:36   ` [Qemu-devel] [PULL 6/8] " Michael S. Tsirkin
                   ` (3 more replies)
  0 siblings, 4 replies; 33+ messages in thread
From: Pankaj Gupta @ 2019-07-12  7:35 UTC (permalink / raw)
  To: mst; +Cc: pagupta, peter.maydell, cohuck, qemu-devel, david

This patch series two fixes for coverity and a 
transactional info removal patch.

Pankaj Gupta (3):
  virtio pmem: fix wrong mem region condition
  virtio pmem: remove memdev null check
  virtio pmem: remove transational device info

 hw/virtio/virtio-pmem-pci.c | 4 +---
 hw/virtio/virtio-pmem.c     | 4 ++--
 2 files changed, 3 insertions(+), 5 deletions(-)

-- 
2.14.5



^ permalink raw reply	[flat|nested] 33+ messages in thread
* [Qemu-devel] [PULL 0/8] virtio, pc, pci: fixes, cleanups, tests
@ 2019-07-12 15:36 Michael S. Tsirkin
  2019-07-12 15:36 ` [Qemu-devel] [PULL 1/8] xio3130_downstream: typo fix Michael S. Tsirkin
                   ` (2 more replies)
  0 siblings, 3 replies; 33+ messages in thread
From: Michael S. Tsirkin @ 2019-07-12 15:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell

The following changes since commit a2a9d4adabe340617a24eb73a8b2a116d28a6b38:

  Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-4.1-20190712' into staging (2019-07-12 11:06:48 +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 207efa18ac9eb7085a44cad24489d0da54bc5f65:

  virtio pmem: remove transitional names (2019-07-12 10:57:27 -0400)

----------------------------------------------------------------
virtio, pc, pci: fixes, cleanups, tests

A bunch of fixes all over the place.
ACPI tests will now run on more systems: might
introduce new failure reports but that's for
the best, isn't it?

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

----------------------------------------------------------------
Igor Mammedov (2):
      tests: acpi: do not require IASL for dumping AML blobs
      tests: acpi: do not skip tests when IASL is not installed

Michael S. Tsirkin (2):
      xio3130_downstream: typo fix
      pcie: consistent names for function args

Pankaj Gupta (3):
      virtio pmem: fix wrong mem region condition
      virtio pmem: remove memdev null check
      virtio pmem: remove transitional names

Stefan Hajnoczi (1):
      virtio-balloon: fix QEMU 4.0 config size migration incompatibility

 include/hw/pci/pcie.h              |  4 ++--
 include/hw/virtio/virtio-balloon.h |  2 ++
 hw/core/machine.c                  |  2 ++
 hw/pci-bridge/xio3130_downstream.c |  2 +-
 hw/virtio/virtio-balloon.c         | 28 +++++++++++++++++++++++++---
 hw/virtio/virtio-pmem-pci.c        |  4 +---
 hw/virtio/virtio-pmem.c            |  4 ++--
 tests/bios-tables-test.c           | 23 +++++++++++++++++------
 8 files changed, 52 insertions(+), 17 deletions(-)



^ permalink raw reply	[flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH] virtio-balloon: fix QEMU 4.0 config size migration incompatibility
@ 2019-07-12 15:36 ` Michael S. Tsirkin
  0 siblings, 0 replies; 33+ messages in thread
From: Stefan Hajnoczi @ 2019-07-10 14:14 UTC (permalink / raw)
  To: qemu-devel
  Cc: Wolfgang Bumiller, Eduardo Habkost, Michael S. Tsirkin,
	Dr. David Alan Gilbert, Stefan Hajnoczi

The virtio-balloon config size changed in QEMU 4.0 even for existing
machine types.  Migration from QEMU 3.1 to 4.0 can fail in some
circumstances with the following error:

  qemu-system-x86_64: get_pci_config_device: Bad config data: i=0x10 read: a1 device: 1 cmask: ff wmask: c0 w1cmask:0

This happens because the virtio-balloon config size affects the VIRTIO
Legacy I/O Memory PCI BAR size.

Introduce a qdev property called "qemu-4-0-config-size" and enable it
only for the QEMU 4.0 machine types.  This way <4.0 machine types use
the old size, 4.0 uses the larger size, and >4.0 machine types use the
appropriate size depending on enabled virtio-balloon features.

Live migration to and from old QEMUs to QEMU 4.1 works again as long as
a versioned machine type is specified (do not use just "pc"!).

Originally-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 include/hw/virtio/virtio-balloon.h |  2 ++
 hw/core/machine.c                  |  2 ++
 hw/virtio/virtio-balloon.c         | 28 +++++++++++++++++++++++++---
 3 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/include/hw/virtio/virtio-balloon.h b/include/hw/virtio/virtio-balloon.h
index 1afafb12f6..5a99293a45 100644
--- a/include/hw/virtio/virtio-balloon.h
+++ b/include/hw/virtio/virtio-balloon.h
@@ -71,6 +71,8 @@ typedef struct VirtIOBalloon {
     int64_t stats_poll_interval;
     uint32_t host_features;
     PartiallyBalloonedPage *pbp;
+
+    bool qemu_4_0_config_size;
 } VirtIOBalloon;
 
 #endif
diff --git a/hw/core/machine.c b/hw/core/machine.c
index 2be19ec0cd..c4ead16010 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -34,6 +34,7 @@ GlobalProperty hw_compat_4_0[] = {
     { "virtio-vga",     "edid", "false" },
     { "virtio-gpu-pci", "edid", "false" },
     { "virtio-device", "use-started", "false" },
+    { "virtio-balloon-device", "qemu-4-0-config-size", "true" },
 };
 const size_t hw_compat_4_0_len = G_N_ELEMENTS(hw_compat_4_0);
 
@@ -49,6 +50,7 @@ GlobalProperty hw_compat_3_1[] = {
     { "usb-tablet", "serial", "42" },
     { "virtio-blk-device", "discard", "false" },
     { "virtio-blk-device", "write-zeroes", "false" },
+    { "virtio-balloon-device", "qemu-4-0-config-size", "false" },
 };
 const size_t hw_compat_3_1_len = G_N_ELEMENTS(hw_compat_3_1);
 
diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
index 11fad86d64..e85d1c0d5c 100644
--- a/hw/virtio/virtio-balloon.c
+++ b/hw/virtio/virtio-balloon.c
@@ -615,6 +615,22 @@ virtio_balloon_free_page_report_notify(NotifierWithReturn *n, void *data)
     return 0;
 }
 
+static size_t virtio_balloon_config_size(VirtIOBalloon *s)
+{
+    uint64_t features = s->host_features;
+
+    if (s->qemu_4_0_config_size) {
+        return sizeof(struct virtio_balloon_config);
+    }
+    if (virtio_has_feature(features, VIRTIO_BALLOON_F_PAGE_POISON)) {
+        return sizeof(struct virtio_balloon_config);
+    }
+    if (virtio_has_feature(features, VIRTIO_BALLOON_F_FREE_PAGE_HINT)) {
+        return offsetof(struct virtio_balloon_config, poison_val);
+    }
+    return offsetof(struct virtio_balloon_config, free_page_report_cmd_id);
+}
+
 static void virtio_balloon_get_config(VirtIODevice *vdev, uint8_t *config_data)
 {
     VirtIOBalloon *dev = VIRTIO_BALLOON(vdev);
@@ -635,7 +651,7 @@ static void virtio_balloon_get_config(VirtIODevice *vdev, uint8_t *config_data)
     }
 
     trace_virtio_balloon_get_config(config.num_pages, config.actual);
-    memcpy(config_data, &config, sizeof(struct virtio_balloon_config));
+    memcpy(config_data, &config, virtio_balloon_config_size(dev));
 }
 
 static int build_dimm_list(Object *obj, void *opaque)
@@ -679,7 +695,7 @@ static void virtio_balloon_set_config(VirtIODevice *vdev,
     uint32_t oldactual = dev->actual;
     ram_addr_t vm_ram_size = get_current_ram_size();
 
-    memcpy(&config, config_data, sizeof(struct virtio_balloon_config));
+    memcpy(&config, config_data, virtio_balloon_config_size(dev));
     dev->actual = le32_to_cpu(config.actual);
     if (dev->actual != oldactual) {
         qapi_event_send_balloon_change(vm_ram_size -
@@ -766,7 +782,7 @@ static void virtio_balloon_device_realize(DeviceState *dev, Error **errp)
     int ret;
 
     virtio_init(vdev, "virtio-balloon", VIRTIO_ID_BALLOON,
-                sizeof(struct virtio_balloon_config));
+                virtio_balloon_config_size(s));
 
     ret = qemu_add_balloon_handler(virtio_balloon_to_target,
                                    virtio_balloon_stat, s);
@@ -897,6 +913,12 @@ static Property virtio_balloon_properties[] = {
                     VIRTIO_BALLOON_F_DEFLATE_ON_OOM, false),
     DEFINE_PROP_BIT("free-page-hint", VirtIOBalloon, host_features,
                     VIRTIO_BALLOON_F_FREE_PAGE_HINT, false),
+    /* QEMU 4.0 accidentally changed the config size even when free-page-hint
+     * is disabled, resulting in QEMU 3.1 migration incompatibility.  This
+     * property retains this quirk for QEMU 4.1 machine types.
+     */
+    DEFINE_PROP_BOOL("qemu-4-0-config-size", VirtIOBalloon,
+                     qemu_4_0_config_size, false),
     DEFINE_PROP_LINK("iothread", VirtIOBalloon, iothread, TYPE_IOTHREAD,
                      IOThread *),
     DEFINE_PROP_END_OF_LIST(),
-- 
2.21.0



^ permalink raw reply related	[flat|nested] 33+ messages in thread
* [Qemu-devel] [PATCH v3 0/2] tests: acpi: improve tests reproducability
@ 2019-07-08  9:24 Igor Mammedov
  2019-07-12 15:36   ` [Qemu-devel] [PULL 4/8] " Michael S. Tsirkin
  2019-07-12 15:36   ` [Qemu-devel] [PULL 5/8] " Michael S. Tsirkin
  0 siblings, 2 replies; 33+ messages in thread
From: Igor Mammedov @ 2019-07-08  9:24 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst

ChangeLog since v1:
  * fixup commit message in 2/2
  * pickup Reviewed-bys and repost as v3

series should help to make tests more reproducable and not depend
on IASL being installed. IASL will be required only is user needs
to get textual diff of mismatching files.


Igor Mammedov (2):
  tests: acpi: do not require IASL for dumping AML blobs
  tests: acpi: do not skip tests when IASL is not installed

 tests/bios-tables-test.c | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

-- 
2.18.1



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

end of thread, other threads:[~2019-07-15  8:46 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-12  7:35 [Qemu-devel] [PATCH 0/3] virtio pmem: coverity fixes Pankaj Gupta
2019-07-12  7:35 ` [Qemu-devel] [PATCH 1/3] virtio pmem: fix wrong mem region condition Pankaj Gupta
2019-07-12 15:36   ` [Qemu-devel] [PULL 6/8] " Michael S. Tsirkin
2019-07-12  8:50   ` [Qemu-devel] [PATCH 1/3] " Stefano Garzarella
2019-07-12  9:56   ` Cornelia Huck
2019-07-12 17:05   ` Philippe Mathieu-Daudé
2019-07-15  6:44   ` David Hildenbrand
2019-07-12  7:35 ` [Qemu-devel] [PATCH 2/3] virtio pmem: remove memdev null check Pankaj Gupta
2019-07-12 15:36   ` [Qemu-devel] [PULL 7/8] " Michael S. Tsirkin
2019-07-12 10:01   ` [Qemu-devel] [PATCH 2/3] " Cornelia Huck
2019-07-12  7:35 ` [Qemu-devel] [PATCH 3/3] virtio pmem: remove transational device info Pankaj Gupta
2019-07-12 15:36   ` [Qemu-devel] [PULL 8/8] virtio pmem: remove transitional names Michael S. Tsirkin
2019-07-12 10:03   ` [Qemu-devel] [PATCH 3/3] virtio pmem: remove transational device info Cornelia Huck
2019-07-12 10:06     ` Pankaj Gupta
2019-07-15  6:44   ` David Hildenbrand
2019-07-15  7:22     ` Pankaj Gupta
2019-07-15  7:25       ` David Hildenbrand
2019-07-12 10:03 ` [Qemu-devel] [PATCH 0/3] virtio pmem: coverity fixes Cornelia Huck
2019-07-12 10:05   ` Pankaj Gupta
  -- strict thread matches above, loose matches on Subject: below --
2019-07-12 15:36 [Qemu-devel] [PULL 0/8] virtio, pc, pci: fixes, cleanups, tests Michael S. Tsirkin
2019-07-12 15:36 ` [Qemu-devel] [PULL 1/8] xio3130_downstream: typo fix Michael S. Tsirkin
2019-07-12 15:36 ` [Qemu-devel] [PULL 2/8] pcie: consistent names for function args Michael S. Tsirkin
2019-07-15  8:45 ` [Qemu-devel] [PULL 0/8] virtio, pc, pci: fixes, cleanups, tests Peter Maydell
2019-07-10 14:14 [Qemu-devel] [PATCH] virtio-balloon: fix QEMU 4.0 config size migration incompatibility Stefan Hajnoczi
2019-07-12 15:36 ` [Qemu-devel] [PULL 3/8] " Michael S. Tsirkin
2019-07-10 15:24 ` [Qemu-devel] [PATCH] " Dr. David Alan Gilbert
2019-07-11  7:18 ` Wolfgang Bumiller
2019-07-11  8:30   ` Dr. David Alan Gilbert
2019-07-08  9:24 [Qemu-devel] [PATCH v3 0/2] tests: acpi: improve tests reproducability Igor Mammedov
2019-07-08  9:24 ` [Qemu-devel] [PATCH v3 1/2] tests: acpi: do not require IASL for dumping AML blobs Igor Mammedov
2019-07-12 15:36   ` [Qemu-devel] [PULL 4/8] " Michael S. Tsirkin
2019-07-08  9:24 ` [Qemu-devel] [PATCH v3 2/2] tests: acpi: do not skip tests when IASL is not installed Igor Mammedov
2019-07-12 15:36   ` [Qemu-devel] [PULL 5/8] " Michael S. Tsirkin

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.