mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v1] drm/virtio: Fix driver removal with disabled KMS
@ 2026-06-04 12:27 Dmitry Osipenko
  2026-06-07  4:31 ` Ryosuke Yasuoka
  0 siblings, 1 reply; 5+ messages in thread
From: Dmitry Osipenko @ 2026-06-04 12:27 UTC (permalink / raw)
  To: David Airlie, Gerd Hoffmann, Gurchetan Singh, Chia-I Wu, Ryosuke Yasuoka
  Cc: dri-devel, virtualization, linux-kernel

DRM atomic and modesetting aren't initialized if virtio-gpu driver built
with disabled KMS, leading to access of uninitialized data on driver
removal/unbinding and crashing kernel. Fix it by skipping shutting down
atomic core with unavailable KMS.

Fixes: 72122c69d717 ("drm/virtio: Add option to disable KMS support")
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
---
 drivers/gpu/drm/virtio/virtgpu_drv.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
index f0fb784c0f6f..2aaa7cb08085 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.c
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
@@ -138,7 +138,10 @@ static void virtio_gpu_remove(struct virtio_device *vdev)
 
 	virtio_gpu_release_vqs(dev);
 	drm_dev_unplug(dev);
-	drm_atomic_helper_shutdown(dev);
+
+	if (drm_core_check_feature(dev, DRIVER_ATOMIC))
+		drm_atomic_helper_shutdown(dev);
+
 	virtio_gpu_deinit(dev);
 	drm_dev_put(dev);
 }
-- 
2.54.0


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

* Re: [PATCH v1] drm/virtio: Fix driver removal with disabled KMS
  2026-06-04 12:27 [PATCH v1] drm/virtio: Fix driver removal with disabled KMS Dmitry Osipenko
@ 2026-06-07  4:31 ` Ryosuke Yasuoka
  2026-06-08 18:40   ` Dmitry Osipenko
  0 siblings, 1 reply; 5+ messages in thread
From: Ryosuke Yasuoka @ 2026-06-07  4:31 UTC (permalink / raw)
  To: Dmitry Osipenko, David Airlie, Gerd Hoffmann, Gurchetan Singh, Chia-I Wu
  Cc: dri-devel, virtualization, linux-kernel

Hi Dmitry

On 04/06/2026 15:27, Dmitry Osipenko wrote:
> DRM atomic and modesetting aren't initialized if virtio-gpu driver built
> with disabled KMS, leading to access of uninitialized data on driver
> removal/unbinding and crashing kernel. Fix it by skipping shutting down
> atomic core with unavailable KMS.
> 
> Fixes: 72122c69d717 ("drm/virtio: Add option to disable KMS support")
> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> ---
>  drivers/gpu/drm/virtio/virtgpu_drv.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> index f0fb784c0f6f..2aaa7cb08085 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> @@ -138,7 +138,10 @@ static void virtio_gpu_remove(struct virtio_device *vdev)
>  
>  	virtio_gpu_release_vqs(dev);
>  	drm_dev_unplug(dev);
> -	drm_atomic_helper_shutdown(dev);
> +
> +	if (drm_core_check_feature(dev, DRIVER_ATOMIC))
> +		drm_atomic_helper_shutdown(dev);
> +
>  	virtio_gpu_deinit(dev);
>  	drm_dev_put(dev);
>  }

The patch looks good to me at a glance. I haven't done a full, deep code
review yet, but I've tested it on my lab and everything works as
expected.

Tested-by: Ryosuke Yasuoka <ryasuoka@redhat.com>

test info
base-commit: ce73a5db44e3d5f9c0c061f0868ae209b59605f1 (drm-misc)

Removing the virtio-gpu device by the following command, and the following
panic message can be observed.

# echo 1 > /sys/devices/pci0000\:00/0000\:00\:01.0/remove

[  330.048794] ------------[ cut here ]------------
[  330.050023] WARNING: drivers/gpu/drm/drm_modeset_lock.c:319 at drm_modeset_lock+0x118/0x120, CPU#5: bash/22216
[  330.052581] Modules linked in: rfkill nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables sunrpc qrtr vfat snd_hda_codec_generic fat intel_rapl_msr intel_rapl_common snd_hda_intel snd_intel_dspcfg snd_hda_codec kvm_amd iTCO_wdt intel_pmc_bxt snd_hwdep kvm snd_hda_core snd_pcm i2c_i801 irqbypass i2c_smbus snd_timer snd lpc_ich soundcore virtio_balloon virtio_net net_failover failover joydev dm_multipath loop nfnetlink vsock_loopback vmw_vsock_virtio_transport_common vmw_vsock_vmci_transport vmw_vmci zram lz4hc_compress vsock lz4_compress virtio_scsi virtio_gpu virtio_dma_buf serio_raw scsi_dh_rdac scsi_dh_emc scsi_dh_alua i2c_dev qemu_fw_cfg virtiofs fuse
[  330.067477] CPU: 5 UID: 0 PID: 22216 Comm: bash Not tainted 7.1.0-rc5 #9 PREEMPT(lazy)
[  330.069058] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS edk2-20251119-3.fc43 11/19/2025
[  330.070880] RIP: 0010:drm_modeset_lock+0x118/0x120
[  330.071858] Code: e8 ad e3 48 ff 85 c0 75 c7 b8 f0 ff ff ff eb c2 0f 0b e9 22 ff ff ff e8 06 82 5e 00 4c 8b 04 24 48 8b 4c 24 08 e9 40 ff ff ff <0f> 0b e9 4e ff ff ff 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
[  330.075466] RSP: 0018:ffffd2f38ea6baf8 EFLAGS: 00010286
[  330.076522] RAX: 0000000000000000 RBX: ffffd2f38ea6bb78 RCX: ffffd2f38ea6bb78
[  330.077939] RDX: ffff8ea806fd8000 RSI: ffffd2f38ea6bb78 RDI: ffff8ea8016ce190
[  330.079362] RBP: ffffd2f38ea6bb78 R08: ffff8ea8016ce170 R09: 000000000fe6d5f1
[  330.080785] R10: fffff93844235700 R11: ffff8ea80004f800 R12: 0000000000000000
[  330.082410] R13: ffff8ea8016ce000 R14: 0000000000000090 R15: ffff8ea8017180d0
[  330.083787] FS:  00007f202225f780(0000) GS:ffff8ea9ecea0000(0000) knlGS:0000000000000000
[  330.085395] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  330.086553] CR2: 00005567379b41a0 CR3: 00000001a100e000 CR4: 0000000000750ef0
[  330.087980] PKRU: 55555554
[  330.088556] Call Trace:
[  330.089041]  <TASK>
[  330.089480]  ? rcutree_enqueue.isra.0+0x1e/0xe0
[  330.090365]  drm_modeset_lock_all_ctx+0x29/0x3f0
[  330.091274]  ? mnt_get_count+0x4d/0xa0
[  330.091988]  ? __destroy_inode+0x8a/0x180
[  330.092799]  drm_atomic_helper_shutdown+0x7b/0x120
[  330.093779]  virtio_gpu_remove+0x57/0x70 [virtio_gpu]
[  330.094784]  virtio_dev_remove+0x3f/0x90
[  330.095595]  device_release_driver_internal+0x19e/0x200
[  330.096626]  bus_remove_device+0xe4/0x1c0
[  330.097425]  ? srso_alias_return_thunk+0x5/0xfbef5
[  330.098390]  ? device_remove_attrs+0xa1/0x100
[  330.099224]  device_del+0x160/0x3d0
[  330.099937]  ? srso_alias_return_thunk+0x5/0xfbef5
[  330.100881]  ? pci_bus_read_config_dword+0x4c/0x80
[  330.101842]  device_unregister+0x17/0x70
[  330.102629]  unregister_virtio_device+0x15/0x30
[  330.103555]  virtio_pci_remove+0x3f/0x80
[  330.104340]  pci_device_remove+0x4a/0xc0
[  330.105094]  device_release_driver_internal+0x19e/0x200
[  330.106142]  pci_stop_bus_device+0x63/0x80
[  330.106995]  pci_stop_and_remove_bus_device_locked+0x1a/0x30
[  330.108113]  remove_store+0x83/0xa0
[  330.108830]  kernfs_fop_write_iter+0x147/0x200
[  330.109773]  vfs_write+0x25d/0x480
[  330.110483]  ksys_write+0x73/0xf0
[  330.111140]  do_syscall_64+0xe2/0x560
[  330.112093]  ? srso_alias_return_thunk+0x5/0xfbef5
[  330.113066]  ? irqentry_exit+0x40/0x6c0
[  330.113858]  ? srso_alias_return_thunk+0x5/0xfbef5
[  330.114800]  ? do_syscall_64+0x99/0x560
[  330.115551]  ? exc_page_fault+0x82/0x1d0
[  330.116318]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
[  330.117286] RIP: 0033:0x7f20222d0bbe
[  330.117969] Code: 4d 89 d8 e8 34 bd 00 00 4c 8b 5d f8 41 8b 93 08 03 00 00 59 5e 48 83 f8 fc 74 11 c9 c3 0f 1f 80 00 00 00 00 48 8b 45 10 0f 05 <c9> c3 83 e2 39 83 fa 08 75 e7 e8 13 ff ff ff 0f 1f 00 f3 0f 1e fa
[  330.121352] RSP: 002b:00007ffdb43331f0 EFLAGS: 00000202 ORIG_RAX: 0000000000000001
[  330.122797] RAX: ffffffffffffffda RBX: 00007f202244c5c0 RCX: 00007f20222d0bbe
[  330.124122] RDX: 0000000000000002 RSI: 00005567379b41a0 RDI: 0000000000000001
[  330.125459] RBP: 00007ffdb4333200 R08: 0000000000000000 R09: 0000000000000000
[  330.126839] R10: 0000000000000000 R11: 0000000000000202 R12: 0000000000000002
[  330.128205] R13: 0000000000000002 R14: 00005567379b41a0 R15: 00005567379c3370
[  330.129605]  </TASK>
[  330.130073] ---[ end trace 0000000000000000 ]---
[  330.130987] BUG: kernel NULL pointer dereference, address: 0000000000000018
[  330.131963] #PF: supervisor write access in kernel mode
[  330.131963] #PF: error_code(0x0002) - not-present page
[  330.131963] PGD 0 P4D 0
[  330.131963] Oops: Oops: 0002 [#1] SMP NOPTI
[  330.131963] CPU: 5 UID: 0 PID: 22216 Comm: bash Tainted: G        W           7.1.0-rc5 #9 PREEMPT(lazy)
[  330.131963] Tainted: [W]=WARN
[  330.131963] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS edk2-20251119-3.fc43 11/19/2025
[  330.131963] RIP: 0010:ww_mutex_lock+0x38/0x110
[  330.131963] Code: 89 f4 55 53 48 89 fb 48 83 ec 20 65 48 8b 2d 57 93 21 02 48 89 6c 24 18 31 ed 2e 2e 2e 31 c0 65 48 8b 15 53 93 21 02 48 89 e8 <f0> 48 0f b1 13 75 53 4d 85 e4 74 2a 48 8d 6c 24 08 41 83 44 24 10
[  330.131963] RSP: 0018:ffffd2f38ea6bae0 EFLAGS: 00010246
[  330.131963] RAX: 0000000000000000 RBX: 0000000000000018 RCX: ffffd2f38ea6bb78
[  330.131963] RDX: ffff8ea806fd8000 RSI: ffffd2f38ea6bb78 RDI: 0000000000000018
[  330.131963] RBP: 0000000000000000 R08: ffff8ea8016ce170 R09: 000000000fe6d5f1
[  330.131963] R10: fffff93844235700 R11: ffff8ea80004f800 R12: ffffd2f38ea6bb78
[  330.131963] R13: ffff8ea8016ce000 R14: 0000000000000000 R15: 0000000000000018
[  330.131963] FS:  00007f202225f780(0000) GS:ffff8ea9ecea0000(0000) knlGS:0000000000000000
[  330.131963] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  330.131963] CR2: 0000000000000018 CR3: 00000001a100e000 CR4: 0000000000750ef0
[  330.131963] PKRU: 55555554
[  330.131963] Call Trace:
[  330.131963]  <TASK>
[  330.131963]  ? srso_alias_return_thunk+0x5/0xfbef5
[  330.131963]  ? drm_modeset_lock+0x92/0x120
[  330.131963]  drm_modeset_lock_all_ctx+0x8e/0x3f0
[  330.131963]  ? __destroy_inode+0x8a/0x180
[  330.131963]  drm_atomic_helper_shutdown+0x7b/0x120
[  330.131963]  virtio_gpu_remove+0x57/0x70 [virtio_gpu]
[  330.131963]  virtio_dev_remove+0x3f/0x90
[  330.131963]  device_release_driver_internal+0x19e/0x200
[  330.131963]  bus_remove_device+0xe4/0x1c0
[  330.131963]  ? srso_alias_return_thunk+0x5/0xfbef5
[  330.131963]  ? device_remove_attrs+0xa1/0x100
[  330.131963]  device_del+0x160/0x3d0
[  330.131963]  ? srso_alias_return_thunk+0x5/0xfbef5
[  330.131963]  ? pci_bus_read_config_dword+0x4c/0x80
[  330.131963]  device_unregister+0x17/0x70
[  330.131963]  unregister_virtio_device+0x15/0x30
[  330.131963]  virtio_pci_remove+0x3f/0x80
[  330.131963]  pci_device_remove+0x4a/0xc0
[  330.131963]  device_release_driver_internal+0x19e/0x200
[  330.131963]  pci_stop_bus_device+0x63/0x80
[  330.131963]  pci_stop_and_remove_bus_device_locked+0x1a/0x30
[  330.131963]  remove_store+0x83/0xa0
[  330.131963]  kernfs_fop_write_iter+0x147/0x200
[  330.131963]  vfs_write+0x25d/0x480
[  330.131963]  ksys_write+0x73/0xf0
[  330.131963]  do_syscall_64+0xe2/0x560
[  330.131963]  ? srso_alias_return_thunk+0x5/0xfbef5
[  330.131963]  ? irqentry_exit+0x40/0x6c0
[  330.131963]  ? srso_alias_return_thunk+0x5/0xfbef5
[  330.131963]  ? do_syscall_64+0x99/0x560
[  330.131963]  ? exc_page_fault+0x82/0x1d0
[  330.131963]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
[  330.131963] RIP: 0033:0x7f20222d0bbe
[  330.131963] Code: 4d 89 d8 e8 34 bd 00 00 4c 8b 5d f8 41 8b 93 08 03 00 00 59 5e 48 83 f8 fc 74 11 c9 c3 0f 1f 80 00 00 00 00 48 8b 45 10 0f 05 <c9> c3 83 e2 39 83 fa 08 75 e7 e8 13 ff ff ff 0f 1f 00 f3 0f 1e fa
[  330.131963] RSP: 002b:00007ffdb43331f0 EFLAGS: 00000202 ORIG_RAX: 0000000000000001
[  330.131963] RAX: ffffffffffffffda RBX: 00007f202244c5c0 RCX: 00007f20222d0bbe
[  330.131963] RDX: 0000000000000002 RSI: 00005567379b41a0 RDI: 0000000000000001
[  330.131963] RBP: 00007ffdb4333200 R08: 0000000000000000 R09: 0000000000000000
[  330.131963] R10: 0000000000000000 R11: 0000000000000202 R12: 0000000000000002
[  330.131963] R13: 0000000000000002 R14: 00005567379b41a0 R15: 00005567379c3370
[  330.131963]  </TASK>
[  330.131963] Modules linked in: rfkill nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables sunrpc qrtr vfat snd_hda_codec_generic fat intel_rapl_msr intel_rapl_common snd_hda_intel snd_intel_dspcfg snd_hda_codec kvm_amd iTCO_wdt intel_pmc_bxt snd_hwdep kvm snd_hda_core snd_pcm i2c_i801 irqbypass i2c_smbus snd_timer snd lpc_ich soundcore virtio_balloon virtio_net net_failover failover joydev dm_multipath loop nfnetlink vsock_loopback vmw_vsock_virtio_transport_common vmw_vsock_vmci_transport vmw_vmci zram lz4hc_compress vsock lz4_compress virtio_scsi virtio_gpu virtio_dma_buf serio_raw scsi_dh_rdac scsi_dh_emc scsi_dh_alua i2c_dev qemu_fw_cfg virtiofs fuse
[  330.131963] CR2: 0000000000000018
[  330.131963] ---[ end trace 0000000000000000 ]---
[  330.131963] RIP: 0010:ww_mutex_lock+0x38/0x110
[  330.131963] Code: 89 f4 55 53 48 89 fb 48 83 ec 20 65 48 8b 2d 57 93 21 02 48 89 6c 24 18 31 ed 2e 2e 2e 31 c0 65 48 8b 15 53 93 21 02 48 89 e8 <f0> 48 0f b1 13 75 53 4d 85 e4 74 2a 48 8d 6c 24 08 41 83 44 24 10
[  330.131963] RSP: 0018:ffffd2f38ea6bae0 EFLAGS: 00010246
[  330.131963] RAX: 0000000000000000 RBX: 0000000000000018 RCX: ffffd2f38ea6bb78
[  330.131963] RDX: ffff8ea806fd8000 RSI: ffffd2f38ea6bb78 RDI: 0000000000000018
[  330.131963] RBP: 0000000000000000 R08: ffff8ea8016ce170 R09: 000000000fe6d5f1
[  330.131963] R10: fffff93844235700 R11: ffff8ea80004f800 R12: ffffd2f38ea6bb78
[  330.131963] R13: ffff8ea8016ce000 R14: 0000000000000000 R15: 0000000000000018
[  330.225288] FS:  00007f202225f780(0000) GS:ffff8ea9ecea0000(0000) knlGS:0000000000000000
[  330.225288] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  330.225288] CR2: 0000000000000018 CR3: 00000001a100e000 CR4: 0000000000750ef0
[  330.225288] PKRU: 55555554
[  330.225288] note: bash[22216] exited with irqs disabled

Best regards,
Ryosuke


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

* Re: [PATCH v1] drm/virtio: Fix driver removal with disabled KMS
  2026-06-07  4:31 ` Ryosuke Yasuoka
@ 2026-06-08 18:40   ` Dmitry Osipenko
  2026-06-09  8:59     ` Ryosuke Yasuoka
  0 siblings, 1 reply; 5+ messages in thread
From: Dmitry Osipenko @ 2026-06-08 18:40 UTC (permalink / raw)
  To: Ryosuke Yasuoka, David Airlie, Gerd Hoffmann, Gurchetan Singh, Chia-I Wu
  Cc: dri-devel, virtualization, linux-kernel

Hi,

On 6/7/26 07:31, Ryosuke Yasuoka wrote:
> Hi Dmitry
> 
> On 04/06/2026 15:27, Dmitry Osipenko wrote:
>> DRM atomic and modesetting aren't initialized if virtio-gpu driver built
>> with disabled KMS, leading to access of uninitialized data on driver
>> removal/unbinding and crashing kernel. Fix it by skipping shutting down
>> atomic core with unavailable KMS.
>>
>> Fixes: 72122c69d717 ("drm/virtio: Add option to disable KMS support")
>> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
>> ---
>>  drivers/gpu/drm/virtio/virtgpu_drv.c | 5 ++++-
>>  1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
>> index f0fb784c0f6f..2aaa7cb08085 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
>> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
>> @@ -138,7 +138,10 @@ static void virtio_gpu_remove(struct virtio_device *vdev)
>>  
>>  	virtio_gpu_release_vqs(dev);
>>  	drm_dev_unplug(dev);
>> -	drm_atomic_helper_shutdown(dev);
>> +
>> +	if (drm_core_check_feature(dev, DRIVER_ATOMIC))
>> +		drm_atomic_helper_shutdown(dev);
>> +
>>  	virtio_gpu_deinit(dev);
>>  	drm_dev_put(dev);
>>  }
> 
> The patch looks good to me at a glance. I haven't done a full, deep code
> review yet, but I've tested it on my lab and everything works as
> expected.
> 
> Tested-by: Ryosuke Yasuoka <ryasuoka@redhat.com>

Thanks a lot for the testing. The review from you will be very welcomed
too.

-- 
Best regards,
Dmitry

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

* Re: [PATCH v1] drm/virtio: Fix driver removal with disabled KMS
  2026-06-08 18:40   ` Dmitry Osipenko
@ 2026-06-09  8:59     ` Ryosuke Yasuoka
  2026-06-09  9:33       ` Dmitry Osipenko
  0 siblings, 1 reply; 5+ messages in thread
From: Ryosuke Yasuoka @ 2026-06-09  8:59 UTC (permalink / raw)
  To: Dmitry Osipenko, David Airlie, Gerd Hoffmann, Gurchetan Singh, Chia-I Wu
  Cc: dri-devel, virtualization, linux-kernel

Hi Dmitry

On 08/06/2026 21:40, Dmitry Osipenko wrote:
> Hi,
> 
> On 6/7/26 07:31, Ryosuke Yasuoka wrote:
>> Hi Dmitry
>> 
>> On 04/06/2026 15:27, Dmitry Osipenko wrote:
>>> DRM atomic and modesetting aren't initialized if virtio-gpu driver built
>>> with disabled KMS, leading to access of uninitialized data on driver
>>> removal/unbinding and crashing kernel. Fix it by skipping shutting down
>>> atomic core with unavailable KMS.
>>>
>>> Fixes: 72122c69d717 ("drm/virtio: Add option to disable KMS support")
>>> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
>>> ---
>>>  drivers/gpu/drm/virtio/virtgpu_drv.c | 5 ++++-
>>>  1 file changed, 4 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
>>> index f0fb784c0f6f..2aaa7cb08085 100644
>>> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
>>> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
>>> @@ -138,7 +138,10 @@ static void virtio_gpu_remove(struct virtio_device *vdev)
>>>  
>>>  	virtio_gpu_release_vqs(dev);
>>>  	drm_dev_unplug(dev);
>>> -	drm_atomic_helper_shutdown(dev);
>>> +
>>> +	if (drm_core_check_feature(dev, DRIVER_ATOMIC))
>>> +		drm_atomic_helper_shutdown(dev);
>>> +
>>>  	virtio_gpu_deinit(dev);
>>>  	drm_dev_put(dev);
>>>  }
>> 
>> The patch looks good to me at a glance. I haven't done a full, deep code
>> review yet, but I've tested it on my lab and everything works as
>> expected.
>> 
>> Tested-by: Ryosuke Yasuoka <ryasuoka@redhat.com>
> 
> Thanks a lot for the testing. The review from you will be very welcomed
> too.

I reviewed your patch and this change looks good to me.

Reviewed-by: Ryosuke Yasuoka <ryasuoka@redhat.com>

Thank you!
Ryosuke


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

* Re: [PATCH v1] drm/virtio: Fix driver removal with disabled KMS
  2026-06-09  8:59     ` Ryosuke Yasuoka
@ 2026-06-09  9:33       ` Dmitry Osipenko
  0 siblings, 0 replies; 5+ messages in thread
From: Dmitry Osipenko @ 2026-06-09  9:33 UTC (permalink / raw)
  To: Ryosuke Yasuoka, David Airlie, Gerd Hoffmann, Gurchetan Singh, Chia-I Wu
  Cc: dri-devel, virtualization, linux-kernel

On 6/9/26 11:59, Ryosuke Yasuoka wrote:
> Hi Dmitry
> 
> On 08/06/2026 21:40, Dmitry Osipenko wrote:
>> Hi,
>>
>> On 6/7/26 07:31, Ryosuke Yasuoka wrote:
>>> Hi Dmitry
>>>
>>> On 04/06/2026 15:27, Dmitry Osipenko wrote:
>>>> DRM atomic and modesetting aren't initialized if virtio-gpu driver built
>>>> with disabled KMS, leading to access of uninitialized data on driver
>>>> removal/unbinding and crashing kernel. Fix it by skipping shutting down
>>>> atomic core with unavailable KMS.
>>>>
>>>> Fixes: 72122c69d717 ("drm/virtio: Add option to disable KMS support")
>>>> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
>>>> ---
>>>>  drivers/gpu/drm/virtio/virtgpu_drv.c | 5 ++++-
>>>>  1 file changed, 4 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
>>>> index f0fb784c0f6f..2aaa7cb08085 100644
>>>> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
>>>> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
>>>> @@ -138,7 +138,10 @@ static void virtio_gpu_remove(struct virtio_device *vdev)
>>>>  
>>>>  	virtio_gpu_release_vqs(dev);
>>>>  	drm_dev_unplug(dev);
>>>> -	drm_atomic_helper_shutdown(dev);
>>>> +
>>>> +	if (drm_core_check_feature(dev, DRIVER_ATOMIC))
>>>> +		drm_atomic_helper_shutdown(dev);
>>>> +
>>>>  	virtio_gpu_deinit(dev);
>>>>  	drm_dev_put(dev);
>>>>  }
>>>
>>> The patch looks good to me at a glance. I haven't done a full, deep code
>>> review yet, but I've tested it on my lab and everything works as
>>> expected.
>>>
>>> Tested-by: Ryosuke Yasuoka <ryasuoka@redhat.com>
>>
>> Thanks a lot for the testing. The review from you will be very welcomed
>> too.
> 
> I reviewed your patch and this change looks good to me.
> 
> Reviewed-by: Ryosuke Yasuoka <ryasuoka@redhat.com>

Thanks for the review, applied to misc-fixes

-- 
Best regards,
Dmitry

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

end of thread, other threads:[~2026-06-09  9:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-04 12:27 [PATCH v1] drm/virtio: Fix driver removal with disabled KMS Dmitry Osipenko
2026-06-07  4:31 ` Ryosuke Yasuoka
2026-06-08 18:40   ` Dmitry Osipenko
2026-06-09  8:59     ` Ryosuke Yasuoka
2026-06-09  9:33       ` Dmitry Osipenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome