virtio-mem: factor out hotplug specifics from virtio_mem_remove() into virtio_mem_dei...
authorDavid Hildenbrand <david@redhat.com>
Tue, 9 Nov 2021 02:31:58 +0000 (18:31 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 9 Nov 2021 18:02:48 +0000 (10:02 -0800)
Let's prepare for a new virtio-mem kdump mode in which we don't actually
hot(un)plug any memory but only observe the state of device blocks.

Link: https://lkml.kernel.org/r/20211005121430.30136-9-david@redhat.com
Signed-off-by: David Hildenbrand <david@redhat.com>
Cc: Baoquan He <bhe@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/virtio/virtio_mem.c

index 1be3ee7..76d8aef 100644 (file)
@@ -2667,9 +2667,8 @@ out_free_vm:
        return rc;
 }
 
-static void virtio_mem_remove(struct virtio_device *vdev)
+static void virtio_mem_deinit_hotplug(struct virtio_mem *vm)
 {
-       struct virtio_mem *vm = vdev->priv;
        unsigned long mb_id;
        int rc;
 
@@ -2716,7 +2715,8 @@ static void virtio_mem_remove(struct virtio_device *vdev)
         * away. Warn at least.
         */
        if (virtio_mem_has_memory_added(vm)) {
-               dev_warn(&vdev->dev, "device still has system memory added\n");
+               dev_warn(&vm->vdev->dev,
+                        "device still has system memory added\n");
        } else {
                virtio_mem_delete_resource(vm);
                kfree_const(vm->resource_name);
@@ -2730,6 +2730,13 @@ static void virtio_mem_remove(struct virtio_device *vdev)
        } else {
                vfree(vm->bbm.bb_states);
        }
+}
+
+static void virtio_mem_remove(struct virtio_device *vdev)
+{
+       struct virtio_mem *vm = vdev->priv;
+
+       virtio_mem_deinit_hotplug(vm);
 
        /* reset the device and cleanup the queues */
        vdev->config->reset(vdev);