> Date: Sun, 8 Sep 2019 23:53:43 +1000
> From: Jonathan Gray <[email protected]>
>
> On Sun, Sep 08, 2019 at 02:53:31PM +0200, Marcus MERIGHI wrote:
> > Hello Jonathan!
> >
> > Thanks for the explanation and your work!
> >
> > [email protected] (Jonathan Gray), 2019.09.08 (Sun) 04:05 (CEST):
> > > Previously the drm code faked a 1024x768 fb if nothing was connected.
> > >
> > > Now there is a deferred setup path, but we don't handle doing
> > > rasops_init()/wsdisplay_cnattach() in that at the moment. Given it is
> > > hotplug driven it would have to be able to safely teardown/detach the
> > > console as well.
> >
> > What I understand from the above is that it was known to work formerly,
> > is known _not_ to work nowadays and would be non-trivial to fix.
> >
> > I think this only hits machines with "wsdisplay0 at *drm0", not those
> > with "wsdisplay0 at vga*", correct?
> > (a second machine auf mine with "wsdisplay0 at inteldrm0" shows the same
> > behaviour. I have nothing to test "wsdisplay0 at vga0".)
> >
> > 6.6-release is approaching. Am I to prepare for either booting with a
> > serial console or with a permanently attached monitor on machines that
> > have wsdisplay0 at *drm?
> >
> > Please don't take this as a complaint, I'm only trying to prepare...
> >
> > Marcus
>
> Here is a partial revert of
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ca91a2758fcef6635626993557dd51cfbb6dd134
>
> to go back to the old behaviour. I have only tested this with amdgpu
> currently.
I think this makes sense. I have a Skylake system here where efifb(4)
reattaches (with a 800x600 default resolution) if I don't have a
monitor connected. With this diff inteldrm(4) remains attached with a
1024x768 resolution.
ok kettenis@
> Index: sys/dev/pci/drm/drm_fb_helper.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/pci/drm/drm_fb_helper.c,v
> retrieving revision 1.17
> diff -u -p -r1.17 drm_fb_helper.c
> --- sys/dev/pci/drm/drm_fb_helper.c 11 Jul 2019 01:50:55 -0000 1.17
> +++ sys/dev/pci/drm/drm_fb_helper.c 8 Sep 2019 13:43:18 -0000
> @@ -2002,15 +2002,23 @@ static int drm_fb_helper_single_fb_probe
> }
>
> if (crtc_count == 0 || sizes.fb_width == -1 || sizes.fb_height == -1) {
> +#ifdef __linux__
> DRM_INFO("Cannot find any crtc or sizes\n");
>
> /* First time: disable all crtc's.. */
> -#ifdef notyet
> /* XXX calling this hangs boot with no connected outputs */
> if (!fb_helper->deferred_setup /* &&
> SPLAY_EMPTY(fb_helper->dev->files) */)
> restore_fbdev_mode(fb_helper);
> -#endif
> return -EAGAIN;
> +#else
> + /*
> + * hmm everyone went away - assume VGA cable just fell out
> + * and will come back later.
> + */
> + DRM_INFO("Cannot find any crtc or sizes - going 1024x768\n");
> + sizes.fb_width = sizes.surface_width = 1024;
> + sizes.fb_height = sizes.surface_height = 768;
> +#endif
> }
>
> /* Handle our overallocation */
>
>