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 <[email protected]> Cc: David Gibson <[email protected]> Cc: Michael S. Tsirkin <[email protected]> Cc: Igor Mammedov <[email protected]> Cc: [email protected] 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
