On Fri, Oct 22, 2021 at 2:15 PM Artem S. Tashkinov aros@gmx.com wrote:
Kernel 5.14.12 introduced this change, git commit ec7cc3f74b4236860ce612656aa5be7936d1c594:
--- a/linux-5.14.11/drivers/video/fbdev/Kconfig +++ b/linux-5.14.12/drivers/video/fbdev/Kconfig @@ -2191,8 +2191,9 @@ config FB_HYPERV This framebuffer driver supports Microsoft Hyper-V Synthetic Video.
config FB_SIMPLE
- bool "Simple framebuffer support"
- depends on (FB = y) && !DRM_SIMPLEDRM
- tristate "Simple framebuffer support"
- depends on FB
- depends on !DRM_SIMPLEDRM select FB_CFB_FILLRECT select FB_CFB_COPYAREA select FB_CFB_IMAGEBLIT
However if you enable CONFIG_DRM_SIMPLEDRM=y along with it, the system will show a black screen on boot while logging these messages:
[drm] Initialized simpledrm 1.0.0 20200625 for simple-framebuffer.0 on minor 0 simple-framebuffer simple-framebuffer.0: [drm] *ERROR* fbdev: Failed to setup generic emulation (ret=-22) fbcon: Taking over console
If you want to help debug this, you can try adding a few printk statements around this code that could run into -EINVAL (22):
drm_file_alloc() ... if (dev->driver->open) { ret = dev->driver->open(dev, file); if (ret < 0) goto out_prime_destroy; }
or static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper, int preferred_bpp) ... ret = (*fb_helper->funcs->fb_probe)(fb_helper, &sizes); or static int do_fbcon_takeover(int show_logo) ... if (!num_registered_fb) return -ENODEV;
and then go from there.
When CONFIG_DRM_SIMPLEDRM is disabled it proceeds to boot normally: simple-framebuffer simple-framebuffer.0: framebuffer at 0xe1000000, 0x300000 bytes simple-framebuffer simple-framebuffer.0: format=a8r8g8b8, mode=1024x768x32, linelength=4096 fbcon: Deferring console take-over simple-framebuffer simple-framebuffer.0: fb0: simplefb registered!
Ok, good, so FB_SIMPLE continues to work as expected if it's built-in.
When the driver is a loadable module, it should work once you load the module, but that is only after the system is fully booted. It's possible that there is a bug with the module loading.
In the meantime I would suggest to keep using FB_SIMPLE=y if that works for you.
Arnd