Hi Amanoel Am 25.08.21 um 21:12 schrieb Amanoel Dawod:
No problem, managed to boot directly into a text terminal and grabbed DRM related dmesg log. Hopefully it's what you're looking for :) Find it attached please.
Thanks, this was helpful. The failure is shown at
[ 3.263394] [drm:0xffffffffc0303583] bad framebuffer height 2304, should be >= 768 && <= 768
where the FB height is too large. But I'm puzzled why this happens. The only way seems to be tiling, which isn't supported by Linux' simple framebuffers AFAIK. All framebuffers are supposed to be linear.
You said that the resolution is 3840 x 2160, but the attached log says 1024x768. I guess that the former is the monitor's native resolution and the latter is the display mode?
The attached patch adds a few extra lines of debugging output. Could you please apply it, rebuild, and report back with the log.
Best regards Thomas
-- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 Nürnberg, Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Felix Imendörffer
From 0558d0df9faac232056e6f55a33d10ca301bf7e8 Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann <tzimmermann@xxxxxxx> Date: Thu, 26 Aug 2021 20:26:35 +0200 Subject: [PATCH] fb extra output --- drivers/gpu/drm/drm_fb_helper.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 3ab078321045..d3e412efbbda 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1631,9 +1631,14 @@ static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper, sizes.surface_width = max_t(u32, desired_mode->hdisplay + x, sizes.surface_width); sizes.surface_height = max_t(u32, desired_mode->vdisplay + y, sizes.surface_height); + DRM_ERROR("x=%d y=%d, desired_mode->hdisplay=%u desired_mode->vdisplay=%u sizes.surface_width=%u sizes.surface_height=%u\n", + x, y, desired_mode->hdisplay, sizes.surface_width, desired_mode->vdisplay + y, sizes.surface_height); + for (j = 0; j < mode_set->num_connectors; j++) { struct drm_connector *connector = mode_set->connectors[j]; + DRM_ERROR("connector->has_tile=%d\n", (int)connector->has_tile); + if (connector->has_tile && desired_mode->hdisplay == connector->tile_h_size && desired_mode->vdisplay == connector->tile_v_size) { -- 2.32.0
Attachment:
OpenPGP_signature
Description: OpenPGP digital signature