]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
virtio-mem: mark device ready before registering callbacks in kdump mode
authorDavid Hildenbrand <david@redhat.com>
Wed, 4 Dec 2024 12:54:40 +0000 (13:54 +0100)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 27 Jan 2025 14:39:25 +0000 (09:39 -0500)
After the callbacks are registered we may immediately get a callback. So
mark the device ready before registering the callbacks.

Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20241204125444.1734652-10-david@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/virtio/virtio_mem.c

index b0b8714415783a5b4a461a947c52af839c7065f0..126f1d669bb0ef0da9486cec6ac79c45bcb9c430 100644 (file)
@@ -2648,6 +2648,7 @@ static int virtio_mem_init_hotplug(struct virtio_mem *vm)
        if (rc)
                goto out_unreg_pm;
 
+       virtio_device_ready(vm->vdev);
        return 0;
 out_unreg_pm:
        unregister_pm_notifier(&vm->pm_notifier);
@@ -2729,6 +2730,8 @@ static bool virtio_mem_vmcore_pfn_is_ram(struct vmcore_cb *cb,
 
 static int virtio_mem_init_kdump(struct virtio_mem *vm)
 {
+       /* We must be prepared to receive a callback immediately. */
+       virtio_device_ready(vm->vdev);
 #ifdef CONFIG_PROC_VMCORE
        dev_info(&vm->vdev->dev, "memory hot(un)plug disabled in kdump kernel\n");
        vm->vmcore_cb.pfn_is_ram = virtio_mem_vmcore_pfn_is_ram;
@@ -2870,8 +2873,6 @@ static int virtio_mem_probe(struct virtio_device *vdev)
        if (rc)
                goto out_del_vq;
 
-       virtio_device_ready(vdev);
-
        /* trigger a config update to start processing the requested_size */
        if (!vm->in_kdump) {
                atomic_set(&vm->config_changed, 1);