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