SetCrtc to new root fb when resizing in blit mode

When armsoc resizes the root fb, it allocates a new root scanout bo, and
unreferences the old one without first setting the crtcs to use the new
root scanout.  In flip mode, this doesn't matter, since the scanouts are
already using their per-crtc scanouts.

However, in blit mode, (a) the old root framebuffer's contents are lost,
and (b) armsoc ends up doing a RmFB for a framebuffer that is still active
on the CRTCS.  The kernel should be able to deal with broken userspace
like this.

However, due to a bug in the exynos drm driver, this premature rmfb
causes an Oops when resuming Chromium OS when in 'docked' mode.

Signed-off-by: Daniel Kurtz <djkurtz@chromium.org>

BUG=chromium:444736
TEST=On exynos-based chromebook (daisy/snow, spring, peach_pit, peach_pi)
 (1) Attach HDMI
 (2) backlight_dbus_tool --set --percent=0.0 (switches to "Docked" mode)
 (3) powerd_dbus_suspend
 (4) tap key to resume...
  => No Oops; login screen displayed on (docked) external monitor

Change-Id: I3be128a0c840a5389772703388e920ed17854dad
Reviewed-on: https://chromium-review.googlesource.com/238151
Reviewed-by: Dominik Behr <dbehr@chromium.org>
Commit-Queue: Daniel Kurtz <djkurtz@chromium.org>
Trybot-Ready: Daniel Kurtz <djkurtz@chromium.org>
Tested-by: Daniel Kurtz <djkurtz@chromium.org>
1 file changed