drm fb helpers hotplug/resize
Zack Rusin
zackr at vmware.com
Wed Oct 5 19:49:17 UTC 2022
Hi, Thomas.
Because you've been the one who's been working on drm_fb_helper.c the most the last
few years I wanted to pick your brain a bit.
I was porting vmwgfx to drm_fb_helper code which is largely trivial, just removing
all of vmwgfx_fb.c and replacing it with a call to drm_fbdev_generic_setup. But
drm_fb_helper.c code never deals with resizes which is a bit of a problem.
e.g. replacing the drm_sysfs_hotplug_event() call from
https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c#L2255
with drm_kms_helper_hotplug_event will call drm_fbdev_client_hotplug and end up in
drm_fb_helper_hotplug_event:
https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/drm_fb_helper.c#L2003
Now drm_fb_helper_hotplug_event does drm_client_modeset_probe but it never resizes
drm_fb_helper::buffer and drm_fb_helper::fb so they're both incorrectly sized.
In general I don't see drm_fb_helper code ever being able to deal with resizes. In
particular because the fbdev's xres_virtual/yres_virtual are sized exactly to the
initial xres/yres.
It's definitely a lot bigger issue on virtualized environments where at boot we'll
have some very conservative size (800x600) on vmwgfx which is then usually resized
to the size of the window. drm_fb_helper breaks pretty bad in that case because it
can't deal with those resizes at all.
Is this scenario something that drm_fb_helper should be able to handle or is it not
worth pursuing it? I don't think there's a trivial way of handling it so my guess is
that it would make drm_fb_helper quite a bit more complicated.
z
More information about the dri-devel
mailing list