From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34052) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vp6yU-0008S4-5E for qemu-devel@nongnu.org; Fri, 06 Dec 2013 20:46:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vp6yO-0005hb-50 for qemu-devel@nongnu.org; Fri, 06 Dec 2013 20:46:30 -0500 Received: from cantor2.suse.de ([195.135.220.15]:39598 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vp6yN-0005gd-R1 for qemu-devel@nongnu.org; Fri, 06 Dec 2013 20:46:24 -0500 Message-ID: <52A27DE9.20909@suse.de> Date: Sat, 07 Dec 2013 02:46:17 +0100 From: =?UTF-8?B?QW5kcmVhcyBGw6RyYmVy?= MIME-Version: 1.0 References: <1385720262-14107-1-git-send-email-pbonzini@redhat.com> In-Reply-To: <1385720262-14107-1-git-send-email-pbonzini@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v4 00/30] virtio: cleanup, fix hot-unplug, move to realize List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini , qemu-devel@nongnu.org Cc: mst@redhat.com Am 29.11.2013 11:17, schrieb Paolo Bonzini: > This series fixes hot-unplug of virtio devices, which can crash due to > dangling pointer accesses. >=20 > The current implementation supports guest-initiated hot-unplug via the > virtio_bus_destroy_device function, but not hot-unplugging the virtio > device by virtue of unplugging its parent container device. >=20 > The problem is that the callback for the bus implementation to cleanup > is placed in the wrong place; it is in virtio_bus_destroy_device, which > should be called by the bus, instead of being somewhere in device code. > We need to have the callback in device code (for example in dc->exit), > so that we invoke it on every unplug action, no matter who starts it. >=20 > Thus, the series cleans up plugging and unplugging of virtio devices > so that it does not need any help from the bus (patches 2-5). It then > stops the virtio devices' overriding of dc->exit, moving their cleanup > code to the new exit callback in VirtioDeviceClass (patches 6-11). > Finally, patch 12 can make virtio-pci implement the device_unplugged > callback. >=20 > A similar dangling-pointer bug is exposed by this change in virtio-ccw. > Patch 1 avoids this; it is kept at the beginning to ensure bisectabilit= y. >=20 > Patches 13-30 are Andreas's conversion of virtio to realize/unrealize, > which has better error propagation as shown by the small testcase fix. >=20 > v3->v4: rebased, added Andreas's realize patches on top >=20 > v2->v3: fix to s390 patch; added Reviewed-by and Cced patch 1 to > qemu-stable. >=20 > v1->v2: remove useless pointer chasing in virtio_pci_notify, add > patch 1 to fix breakage reported by Cornelia. >=20 > Andreas F=C3=A4rber (18): > virtio-blk-dataplane: Improve error reporting > virtio-9p: QOM realize preparations > virtio-blk: QOM realize preparations > virtio-serial: QOM realize preparations > virtio-net: QOM realize preparations > virtio-balloon: QOM realize preparations > virtio-rng: QOM realize preparations > virtio-scsi: QOM realize preparations > virtio: Start converting VirtioDevice to QOM realize > virtio-9p: Convert to QOM realize > virtio-blk: Convert to QOM realize > virtio-serial: Convert to QOM realize > virtio-net: Convert to QOM realize > virtio-balloon: Convert to QOM realize > virtio-rng: Convert to QOM realize > virtio-scsi: Convert to QOM realize > virtio: Complete converting VirtioDevice to QOM realize > virtio: Convert exit to unrealize >=20 > Paolo Bonzini (12): > virtio-ccw: move virtio_ccw_stop_ioeventfd to virtio_ccw_busdev_unplu= g > virtio-bus: remove vdev field > virtio-ccw: remove vdev field > virtio-pci: remove vdev field > virtio-bus: cleanup plug/unplug interface > virtio-blk: switch exit callback to VirtioDeviceClass > virtio-serial: switch exit callback to VirtioDeviceClass > virtio-net: switch exit callback to VirtioDeviceClass > virtio-scsi: switch exit callback to VirtioDeviceClass > virtio-balloon: switch exit callback to VirtioDeviceClass > virtio-rng: switch exit callback to VirtioDeviceClass These 6 patches still fail to acknowledge that by fixing the overridden exit callback they also fix the issue that I was fixing differently in: http://patchwork.ozlabs.org/patch/249786/ (v1) http://patchwork.ozlabs.org/patch/263881/ (v2) Request to add a sentence to the commit message such as: "This also fixes a memory leak for bus_name, spotted by Andreas." (Reported-by would be wrong since I didn't spot the 2nd hotunplug issue) I will be offline for a couple of days and couldn't complete going through all patches, so if the end result is working QOM-realize'ified devices then I'm fine with these going through you, mst or whomever. :) Thanks, Andreas > virtio-pci: add device_unplugged callback --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=C3=BCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=C3=B6rffer; HRB 16746 AG N=C3=BC= rnberg