All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH-for-4.1 v4 0/7] virtio-balloon: fixes
@ 2019-07-25 11:36 David Hildenbrand
  2019-07-25 11:36 ` [Qemu-devel] [PATCH-for-4.1 v4 1/7] virtio-balloon: Fix wrong sign extension of PFNs David Hildenbrand
                   ` (6 more replies)
  0 siblings, 7 replies; 53+ messages in thread
From: David Hildenbrand @ 2019-07-25 11:36 UTC (permalink / raw)
  To: qemu-devel
  Cc: Michael S . Tsirkin, David Hildenbrand, qemu-stable,
	Stefan Hajnoczi, Igor Mammedov, David Gibson

As we discovered yet another issue with current PBP code, we decided
to use a temporary PBP only, limited to one series of inflation requests.

Patch #1 is a fix for a wrong sign extension (MST brought this up but
wasn't sure if it is broken - I think it is indeed broken). Patch #2 fixed
QEMU segfaults. Patch #3 and #4 are cleanups that make follow-up fixes
easier. Patch #5 avoids using RAMBlock addresses as tokens and patch #6
fixes all kinds of issues related to using a global PBP. Patch #7 gets
rid of a temporary workaround from patch #5.

We want to have patches 1-6 in 4.1 and backport them to 4.0. Patch #1
needs backports to basically all QEMU releases with virtio-balloon.

Did a quick sanity test, hopefully no other BUG sneeked in. Will do some
more testing.

v3 -> v4:
- Add "virtio-balloon: No need to track subpages for the PBP anymore",
  which doesn't need a stable backport

Cc: Stefan Hajnoczi <stefanha@redhat.com>
Cc: David Gibson <david@gibson.dropbear.id.au>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: qemu-stable@nongnu.org

David Hildenbrand (7):
  virtio-balloon: Fix wrong sign extension of PFNs
  virtio-balloon: Fix QEMU crashes on pagesize > BALLOON_PAGE_SIZE
  virtio-balloon: Simplify deflate with pbp
  virtio-balloon: Better names for offset variables in inflate/deflate
    code
  virtio-balloon: Rework pbp tracking data
  virtio-balloon: Use temporary PBP only
  virtio-balloon: No need to track subpages for the PBP anymore

 hw/virtio/virtio-balloon.c         | 120 ++++++++++++++---------------
 include/hw/virtio/virtio-balloon.h |   3 -
 2 files changed, 60 insertions(+), 63 deletions(-)

-- 
2.21.0



^ permalink raw reply	[flat|nested] 53+ messages in thread
* [Qemu-devel] [PULL 00/12] virtio, pc: fixes, cleanups
@ 2019-07-25 15:31 Michael S. Tsirkin
  2019-07-25 15:32 ` [Qemu-devel] [PULL 12/12] virtio-balloon: free pbp more aggressively Michael S. Tsirkin
  2019-07-26  9:53 ` [Qemu-devel] [PULL 00/12] virtio, pc: fixes, cleanups Peter Maydell
  0 siblings, 2 replies; 53+ messages in thread
From: Michael S. Tsirkin @ 2019-07-25 15:31 UTC (permalink / raw)
  To: qemu-devel; +Cc: Peter Maydell

The following changes since commit bf8b024372bf8abf5a9f40bfa65eeefad23ff988:

  Update version for v4.1.0-rc2 release (2019-07-23 18:28:08 +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 1b47b37c33ec01ae1efc527f4c97f97f93723bc4:

  virtio-balloon: free pbp more aggressively (2019-07-25 11:19:25 -0400)

----------------------------------------------------------------
virtio, pc: fixes, cleanups

A bunch of fixes all over the place.

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

----------------------------------------------------------------
David Hildenbrand (7):
      virtio-balloon: Fix wrong sign extension of PFNs
      virtio-balloon: Fix QEMU crashes on pagesize > BALLOON_PAGE_SIZE
      virtio-balloon: Simplify deflate with pbp
      virtio-balloon: Better names for offset variables in inflate/deflate code
      virtio-balloon: Rework pbp tracking data
      virtio-balloon: Use temporary PBP only
      virtio-balloon: don't track subpages for the PBP

Evgeny Yakovlev (2):
      i386/acpi: fix gint overflow in crs_range_compare
      i386/acpi: show PCI Express bus on pxb-pcie expanders

Jan Kiszka (1):
      ioapic: kvm: Skip route updates for masked pins

Michael S. Tsirkin (1):
      virtio-balloon: free pbp more aggressively

Stefan Hajnoczi (1):
      docs: clarify multiqueue vs multiple virtqueues

 include/hw/virtio/virtio-balloon.h |   3 -
 hw/i386/acpi-build.c               |  17 ++++--
 hw/intc/ioapic.c                   |   8 ++-
 hw/virtio/virtio-balloon.c         | 115 ++++++++++++++++++-------------------
 docs/interop/vhost-user.rst        |  17 ++++++
 5 files changed, 90 insertions(+), 70 deletions(-)



^ permalink raw reply	[flat|nested] 53+ messages in thread
* [Qemu-devel] [PATCH-for-4.1 v3 0/6] virtio-balloon: fixes
@ 2019-07-22 13:41 David Hildenbrand
  2019-07-25 15:31   ` [Qemu-devel] [PULL 05/12] " Michael S. Tsirkin
                   ` (5 more replies)
  0 siblings, 6 replies; 53+ messages in thread
From: David Hildenbrand @ 2019-07-22 13:41 UTC (permalink / raw)
  To: qemu-devel
  Cc: Michael S . Tsirkin, David Hildenbrand, qemu-stable,
	Stefan Hajnoczi, Igor Mammedov, David Gibson

As we discovered yet another issue with current PBP code, we decided
to use a local PBP only, limited to one series of inflation requests.
This series supersedes:
- [PATCH-for-4.1 v2 0/3] virtio-balloon: fixes for PartialBalloonedPage
- [PATCH v1 0/3] virtio-balloon: PartialBalloonedPage rework

Patch #1 is a fix for a wrong sign extension (MST brought this up but
wasn't sure if it is broen - I think it is indeed broken). Patch #2 fixed
QEMU segfaults. Patch #3 and #4 are cleanups that make follow-up fixes
easier. Patch #5 avoids using RAMBlock addresses as tokens and patch #6
fixes all kinds of issues related to using a global PBP.

We want to have all patches in 4.1 and backport them to 4.0. Patch #1
needs backports to basically all QEMU releases with virtio-balloon.

Did a quick sanity test, hopefully no other BUG sneeked in. Will do some
more testing.

Cc: Stefan Hajnoczi <stefanha@redhat.com>
Cc: David Gibson <david@gibson.dropbear.id.au>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: qemu-stable@nongnu.org

David Hildenbrand (6):
  virtio-balloon: Fix wrong sign extension of PFNs
  virtio-balloon: Fix QEMU crashes on pagesize > BALLOON_PAGE_SIZE
  virtio-balloon: Simplify deflate with pbp
  virtio-balloon: Better names for offset variables in inflate/deflate
    code
  virtio-balloon: Rework pbp tracking data
  virtio-balloon: Use temporary PBP only

 hw/virtio/virtio-balloon.c         | 122 +++++++++++++++--------------
 include/hw/virtio/virtio-balloon.h |   3 -
 2 files changed, 62 insertions(+), 63 deletions(-)

-- 
2.21.0



^ permalink raw reply	[flat|nested] 53+ messages in thread
* [Qemu-devel] [PATCH] i386/acpi: show PCI Express bus on pxb-pcie expanders
@ 2019-07-25 15:31 ` Michael S. Tsirkin
  0 siblings, 0 replies; 53+ messages in thread
From: Evgeny Yakovlev @ 2019-07-19  8:54 UTC (permalink / raw)
  To: qemu-devel, mst; +Cc: yc-core

Show PCIe host bridge PNP id with PCI host bridge as a compatible id
when expanding a pcie bus.

Signed-off-by: Evgeny Yakovlev <wrfsh@yandex-team.ru>
---
 hw/i386/acpi-build.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index d281ffa..0675952 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -1908,10 +1908,13 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
             scope = aml_scope("\\_SB");
             dev = aml_device("PC%.02X", bus_num);
             aml_append(dev, aml_name_decl("_UID", aml_int(bus_num)));
-            aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0A03")));
             aml_append(dev, aml_name_decl("_BBN", aml_int(bus_num)));
             if (pci_bus_is_express(bus)) {
+                aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0A08")));
+                aml_append(dev, aml_name_decl("_CID", aml_eisaid("PNP0A03")));
                 aml_append(dev, build_q35_osc_method());
+            } else {
+                aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0A03")));
             }
 
             if (numa_node != NUMA_NODE_UNASSIGNED) {
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 53+ messages in thread
* [Qemu-devel] [PATCH v2] i386/acpi: fix gint overflow in crs_range_compare
@ 2019-07-25 15:31 ` Michael S. Tsirkin
  0 siblings, 0 replies; 53+ messages in thread
From: Evgeny Yakovlev @ 2019-07-18 16:14 UTC (permalink / raw)
  To: qemu-devel, mst; +Cc: yc-core

When very large regions (32GB sized in our case, PCI pass-through of GPUs)
are compared substraction result does not fit into gint.

As a result crs_replace_with_free_ranges does not get sorted ranges and
incorrectly computes PCI64 free space regions. Which then makes linux
guest complain about device and PCI64 hole intersection and device
becomes unusable.

Fix that by returning exactly fitting ranges.

Also fix indentation of an entire crs_replace_with_free_ranges to make
checkpatch happy.

Signed-off-by: Evgeny Yakovlev <wrfsh@yandex-team.ru>
---
v2:
entire crs_replace_with_free_ranges was indented with 5 spaces, including my change.
fix that as well

 hw/i386/acpi-build.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index d281ffa..e7b756b 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -755,10 +755,16 @@ static void crs_range_set_free(CrsRangeSet *range_set)
 
 static gint crs_range_compare(gconstpointer a, gconstpointer b)
 {
-     CrsRangeEntry *entry_a = *(CrsRangeEntry **)a;
-     CrsRangeEntry *entry_b = *(CrsRangeEntry **)b;
+    CrsRangeEntry *entry_a = *(CrsRangeEntry **)a;
+    CrsRangeEntry *entry_b = *(CrsRangeEntry **)b;
 
-     return (int64_t)entry_a->base - (int64_t)entry_b->base;
+    if (entry_a->base < entry_b->base) {
+        return -1;
+    } else if (entry_a->base > entry_b->base) {
+        return 1;
+    } else {
+        return 0;
+    }
 }
 
 /*
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 53+ messages in thread
* [Qemu-devel] [PATCH] docs: clarify multiqueue vs multiple virtqueues
@ 2019-07-25 15:31 ` Michael S. Tsirkin
  0 siblings, 0 replies; 53+ messages in thread
From: Stefan Hajnoczi @ 2019-06-24  9:13 UTC (permalink / raw)
  To: qemu-devel
  Cc: Marc-André Lureau, Sebastien Boeuf, Cathy Zhang,
	Stefan Hajnoczi, Michael S. Tsirkin

The vhost-user specification does not explain when
VHOST_USER_PROTOCOL_F_MQ must be implemented.  This may lead
implementors of vhost-user masters to believe that this protocol feature
is required for any device that has multiple virtqueues.  That would be
a mistake since existing vhost-user slaves offer multiple virtqueues but
do not advertise VHOST_USER_PROTOCOL_F_MQ.

For example, a vhost-net device with one rx/tx queue pair is not
multiqueue.  The slave does not need to advertise
VHOST_USER_PROTOCOL_F_MQ.  Therefore the master must assume it has these
virtqueues and cannot rely on askingt the slave how many virtqueues
exist.

Extend the specification to explain the different between true
multiqueue and regular devices with a fixed virtqueue layout.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
Based-on: <20190621094005.4134-1-stefanha@redhat.com>
---
 docs/interop/vhost-user.rst | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst
index 5750668aba..7827b710aa 100644
--- a/docs/interop/vhost-user.rst
+++ b/docs/interop/vhost-user.rst
@@ -324,6 +324,15 @@ must support changing some configuration aspects on the fly.
 Multiple queue support
 ----------------------
 
+Many devices have a fixed number of virtqueues.  In this case the master
+already knows the number of available virtqueues without communicating with the
+slave.
+
+Some devices do not have a fixed number of virtqueues.  Instead the maximum
+number of virtqueues is chosen by the slave.  The number can depend on host
+resource availability or slave implementation details.  Such devices are called
+multiple queue devices.
+
 Multiple queue support allows the slave to advertise the maximum number of
 queues.  This is treated as a protocol extension, hence the slave has to
 implement protocol features first. The multiple queues feature is supported
@@ -339,6 +348,14 @@ queue in the sent message to identify a specified queue.
 The master enables queues by sending message ``VHOST_USER_SET_VRING_ENABLE``.
 vhost-user-net has historically automatically enabled the first queue pair.
 
+Slaves should always implement the ``VHOST_USER_PROTOCOL_F_MQ`` protocol
+feature, even for devices with a fixed number of virtqueues, since it is simple
+to implement and offers a degree of introspection.
+
+Masters must not rely on the ``VHOST_USER_PROTOCOL_F_MQ`` protocol feature for
+devices with a fixed number of virtqueues.  Only true multiqueue devices
+require this protocol feature.
+
 Migration
 ---------
 
-- 
2.21.0



^ permalink raw reply related	[flat|nested] 53+ messages in thread
* [Qemu-devel] [PATCH] ioapic: kvm: Skip route updates for masked pins
@ 2019-07-25 15:31 ` Michael S. Tsirkin
  0 siblings, 0 replies; 53+ messages in thread
From: Jan Kiszka @ 2019-06-02 11:42 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Peter Xu, Michael S. Tsirkin

From: Jan Kiszka <jan.kiszka@siemens.com>

Masked entries will not generate interrupt messages, thus do no need to
be routed by KVM. This is a cosmetic cleanup, just avoiding warnings of
the kind

qemu-system-x86_64: vtd_irte_get: detected non-present IRTE (index=0, high=0xff00, low=0x100)

if the masked entry happens to reference a non-present IRTE.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 hw/intc/ioapic.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/hw/intc/ioapic.c b/hw/intc/ioapic.c
index 7074489fdf..2fb288a22d 100644
--- a/hw/intc/ioapic.c
+++ b/hw/intc/ioapic.c
@@ -197,9 +197,11 @@ static void ioapic_update_kvm_routes(IOAPICCommonState *s)
             MSIMessage msg;
             struct ioapic_entry_info info;
             ioapic_entry_parse(s->ioredtbl[i], &info);
-            msg.address = info.addr;
-            msg.data = info.data;
-            kvm_irqchip_update_msi_route(kvm_state, i, msg, NULL);
+            if (!info.masked) {
+                msg.address = info.addr;
+                msg.data = info.data;
+                kvm_irqchip_update_msi_route(kvm_state, i, msg, NULL);
+            }
         }
         kvm_irqchip_commit_routes(kvm_state);
     }
-- 
2.16.4


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

end of thread, other threads:[~2019-07-26  9:53 UTC | newest]

Thread overview: 53+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-25 11:36 [Qemu-devel] [PATCH-for-4.1 v4 0/7] virtio-balloon: fixes David Hildenbrand
2019-07-25 11:36 ` [Qemu-devel] [PATCH-for-4.1 v4 1/7] virtio-balloon: Fix wrong sign extension of PFNs David Hildenbrand
2019-07-25 12:36   ` Pankaj Gupta
2019-07-25 11:36 ` [Qemu-devel] [PATCH-for-4.1 v4 2/7] virtio-balloon: Fix QEMU crashes on pagesize > BALLOON_PAGE_SIZE David Hildenbrand
2019-07-25 11:36 ` [Qemu-devel] [PATCH-for-4.1 v4 3/7] virtio-balloon: Simplify deflate with pbp David Hildenbrand
2019-07-25 11:36 ` [Qemu-devel] [PATCH-for-4.1 v4 4/7] virtio-balloon: Better names for offset variables in inflate/deflate code David Hildenbrand
2019-07-25 11:36 ` [Qemu-devel] [PATCH-for-4.1 v4 5/7] virtio-balloon: Rework pbp tracking data David Hildenbrand
2019-07-26  8:08   ` David Gibson
2019-07-25 11:36 ` [Qemu-devel] [PATCH-for-4.1 v4 6/7] virtio-balloon: Use temporary PBP only David Hildenbrand
2019-07-25 11:53   ` Michael S. Tsirkin
2019-07-25 11:56     ` David Hildenbrand
2019-07-25 11:36 ` [Qemu-devel] [PATCH-for-4.1 v4 7/7] virtio-balloon: No need to track subpages for the PBP anymore David Hildenbrand
2019-07-25 15:32   ` [Qemu-devel] [PULL 11/12] virtio-balloon: don't track subpages for the PBP Michael S. Tsirkin
2019-07-26  8:10   ` [Qemu-devel] [PATCH-for-4.1 v4 7/7] virtio-balloon: No need to track subpages for the PBP anymore David Gibson
  -- strict thread matches above, loose matches on Subject: below --
2019-07-25 15:31 [Qemu-devel] [PULL 00/12] virtio, pc: fixes, cleanups Michael S. Tsirkin
2019-07-25 15:32 ` [Qemu-devel] [PULL 12/12] virtio-balloon: free pbp more aggressively Michael S. Tsirkin
2019-07-26  9:53 ` [Qemu-devel] [PULL 00/12] virtio, pc: fixes, cleanups Peter Maydell
2019-07-22 13:41 [Qemu-devel] [PATCH-for-4.1 v3 0/6] virtio-balloon: fixes David Hildenbrand
2019-07-22 13:41 ` [Qemu-devel] [PATCH-for-4.1 v3 1/6] virtio-balloon: Fix wrong sign extension of PFNs David Hildenbrand
2019-07-25 15:31   ` [Qemu-devel] [PULL 05/12] " Michael S. Tsirkin
2019-07-23  2:27   ` [Qemu-devel] [PATCH-for-4.1 v3 1/6] " David Gibson
2019-07-22 13:41 ` [Qemu-devel] [PATCH-for-4.1 v3 2/6] virtio-balloon: Fix QEMU crashes on pagesize > BALLOON_PAGE_SIZE David Hildenbrand
2019-07-25 15:31   ` [Qemu-devel] [PULL 06/12] " Michael S. Tsirkin
2019-07-22 13:41 ` [Qemu-devel] [PATCH-for-4.1 v3 3/6] virtio-balloon: Simplify deflate with pbp David Hildenbrand
2019-07-25 15:32   ` [Qemu-devel] [PULL 07/12] " Michael S. Tsirkin
2019-07-22 13:41 ` [Qemu-devel] [PATCH-for-4.1 v3 4/6] virtio-balloon: Better names for offset variables in inflate/deflate code David Hildenbrand
2019-07-25 15:32   ` [Qemu-devel] [PULL 08/12] " Michael S. Tsirkin
2019-07-22 13:41 ` [Qemu-devel] [PATCH-for-4.1 v3 5/6] virtio-balloon: Rework pbp tracking data David Hildenbrand
2019-07-25 15:32   ` [Qemu-devel] [PULL 09/12] " Michael S. Tsirkin
2019-07-23  2:54   ` [Qemu-devel] [PATCH-for-4.1 v3 5/6] " David Gibson
2019-07-23  7:38     ` David Hildenbrand
2019-07-22 13:41 ` [Qemu-devel] [PATCH-for-4.1 v3 6/6] virtio-balloon: Use temporary PBP only David Hildenbrand
2019-07-25 15:32   ` [Qemu-devel] [PULL 10/12] " Michael S. Tsirkin
2019-07-23  3:22   ` [Qemu-devel] [PATCH-for-4.1 v3 6/6] " David Gibson
2019-07-19  8:54 [Qemu-devel] [PATCH] i386/acpi: show PCI Express bus on pxb-pcie expanders Evgeny Yakovlev
2019-07-25 15:31 ` [Qemu-devel] [PULL 04/12] " Michael S. Tsirkin
2019-07-19 12:14 ` [Qemu-devel] [PATCH] " Igor Mammedov
2019-07-18 16:14 [Qemu-devel] [PATCH v2] i386/acpi: fix gint overflow in crs_range_compare Evgeny Yakovlev
2019-07-25 15:31 ` [Qemu-devel] [PULL 02/12] " Michael S. Tsirkin
2019-07-18 20:30 ` [Qemu-devel] [PATCH v2] " Michael S. Tsirkin
2019-06-24  9:13 [Qemu-devel] [PATCH] docs: clarify multiqueue vs multiple virtqueues Stefan Hajnoczi
2019-07-25 15:31 ` [Qemu-devel] [PULL 01/12] " Michael S. Tsirkin
2019-06-24 10:19 ` [Qemu-devel] [PATCH] " Marc-André Lureau
2019-07-17 10:14 ` Stefan Hajnoczi
2019-07-17 10:35   ` Michael S. Tsirkin
2019-06-02 11:42 [Qemu-devel] [PATCH] ioapic: kvm: Skip route updates for masked pins Jan Kiszka
2019-07-25 15:31 ` [Qemu-devel] [PULL 03/12] " Michael S. Tsirkin
2019-06-02 12:10 ` [Qemu-devel] [PATCH] " Peter Xu
2019-06-03  6:30   ` Jan Kiszka
2019-06-03  0:36 ` Michael S. Tsirkin
2019-07-21  8:58   ` Jan Kiszka
2019-07-21 10:04     ` Michael S. Tsirkin
2019-07-21 16:55       ` Paolo Bonzini

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.