Add drm_panic support for stdu in vmwgfx. This patch was tested in a VM with VMSVGA on Virtual Box.
Based on the feedback for v2 patch, I've made the following updates in my v3 patch. - Use MEMREMAP_WB | MEMREMAP_DEC flags for memremap - Use vmw_priv->initial_height and initial_width for sb and VRAM - Move all panic related functions to the vmwgfx_kms.c file - Ensure if the current display unit is 0 in get_scanout_buffer() I did not apply all of Ian's feedback in this v3 patch for the reasons outlined below. > 1. You can call `vmw_kms_write_svga` directly in `panic_flush`. There > is no need to mark the buffer as dirty or send any commands. In my test environment (VirtualBox), the panic screen appears unstably without dirty command's submission. Without it, the screen sometimes appears immediately as expected, and at other times, there's a delay of 15 to 20 seconds. I've also observed that it sometimes only appears after switching between the VirtualBox console window and other windows. With command submission, we can stably get a panic screen. Even if it fails, we may get the panic screen ultimately. Therefore, I think we should retain vmw_kms_panic_do_bo_dirty() to submit commands. > 2. The format should be hardcoded to RGB565 to minimize the risk of > overrunning VRAM. Adjust the pitch accordingly to 2x width. While it's possible to output the panic screen with RGB565 by adjusting pitch and width, and BPP on the (virtual) hardware side, this approach causes debugfs to fail. It appears that the BPP must be reset after the panic screen is displayed, and there is no way to wait for the screen to be fully displayed within the drm_panic handler code. In my test environment, as VRAM has enough space even when using XRGB8888 (32 bits), I think the risk of overruning VRAM is low. So I've kept the default format and CPP size. v1: https://lore.kernel.org/all/20250901083701.32365-1-ryasu...@redhat.com/ v2: https://lore.kernel.org/all/20250908141152.221291-2-ryasu...@redhat.com/ - Map a scanout_buffer to VRAM in .get_scanout_buffer - And then write to VRAM directly using fifo in legacy mode to avoid allocations or command submissions. Ryosuke Yasuoka (1): drm/vmwgfx: add drm_panic support for stdu mode drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 4 + drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 165 +++++++++++++++++++++++++++ drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 2 + 3 files changed, 171 insertions(+) base-commit: d41c79838c47bc822534cd53628fe5e0f8ad2424 -- 2.51.0