NetBSD Problem Report #51181
From www@NetBSD.org Sun May 29 12:40:52 2016
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
(Client CN "mail.netbsd.org", Issuer "Postmaster NetBSD.org" (verified OK))
by mollari.NetBSD.org (Postfix) with ESMTPS id A02B37A468
for <gnats-bugs@gnats.NetBSD.org>; Sun, 29 May 2016 12:40:52 +0000 (UTC)
Message-Id: <20160529124051.76B327AABA@mollari.NetBSD.org>
Date: Sun, 29 May 2016 12:40:51 +0000 (UTC)
From: coypu@sdf.org
Reply-To: coypu@sdf.org
To: gnats-bugs@NetBSD.org
Subject: nouveau can't set monitor resolution
X-Send-Pr-Version: www-1.0
>Number: 51181
>Category: kern
>Synopsis: nouveau can't set monitor resolution
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: kern-bug-people
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun May 29 12:45:00 +0000 2016
>Closed-Date: Sun Feb 26 12:26:31 +0000 2017
>Last-Modified: Sun Feb 26 12:26:31 +0000 2017
>Originator: coypu
>Release: NetBSD 7.99.29
>Organization:
>Environment:
NetBSD 7.99.29 NetBSD 7.99.29 (GENERIC) #1: Thu May 26 20:42:53 IDT 2016 fly@net.Home:/usr/obj/sys/arch/amd64/compile/GENERIC amd64
>Description:
attempting to set a different resolution with xrandr fails in the following manner (not recoverable): http://i.imgur.com/HM19J3Q.jpg
somewhat related, I am unable to see the console: http://i.imgur.com/4f6rFVs.jpg - it appears to have incorrect stride:
nouveaufb0: framebuffer at 0xffff80011e632000, size 1440x900, depth 32, stride 5760.
attempting to hard-code a different resolution (possibly incorrect method?) in nouveaufb as follows:
diff --git a/sys/external/bsd/drm2/nouveau/nouveaufb.c b/sys/external/bsd/drm2/nouveau/nouveaufb.c
index 1b0f639..a647adc 100644
--- a/sys/external/bsd/drm2/nouveau/nouveaufb.c
+++ b/sys/external/bsd/drm2/nouveau/nouveaufb.c
@@ -96,6 +96,9 @@ nouveaufb_attach(device_t parent, device_t self, void *aux)
aprint_naive("\n");
aprint_normal("\n");
+
+ sc->sc_nfa.nfa_fb_sizes.surface_width = 640;
+ sc->sc_nfa.nfa_fb_sizes.surface_height = 480;
nouveau_pci_task_init(&sc->sc_attach_task, &nouveaufb_attach_task);
error = nouveau_pci_task_schedule(parent, &sc->sc_attach_task);
only changes the portion of the screen which is displayed, as seen in this picture: http://i.imgur.com/A4ngweK.jpg
it doesn't make the monitor resolution(?) different.
starting X in this situation uses the default 1440x900.
>How-To-Repeat:
>Fix:
yes please
>Release-Note:
>Audit-Trail:
From: coypu@SDF.ORG
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: kern/51181: nouveau can't set monitor resolution
Date: Wed, 22 Jun 2016 17:37:40 +0000
If I use HDMI output, it works flawlessly.
Previously, I was using analog output of DP port (with VGA adapter...)
This is not a fix, bug still exists.
Stride seems like it is a factor of 3 from what it should be.
From: coypu@SDF.ORG
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: kern/51181: nouveau can't set monitor resolution
Date: Wed, 22 Jun 2016 18:59:00 +0000
Still can't set monitor resolution without everything breaking though.
--
From: coypu@SDF.ORG
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: kern/51181: nouveau can't set monitor resolution
Date: Thu, 24 Nov 2016 02:20:45 +0000
Thanks to a lot of help I found out that nvidia hardware requires 256byte
alignment, not 64byte like radeon.
Rounding up stride to 256 bytes works!
As a crude diff I've used:
roundup2((sizes->surface_width * howmany(sizes->surface_bpp, 8)),
- 64));
+ 256));
in drmfb_attach (sys/external/bsd/drm2/drm/drmfb.c).
Presumably something similar is needed in Xorg ... somewhere.
And that patch might not be too great for intel/radeon... but it works!
From: "Maya Rashish" <maya@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/51181 CVS commit: src/sys/external/bsd/drm2
Date: Mon, 12 Dec 2016 19:45:56 +0000
Module Name: src
Committed By: maya
Date: Mon Dec 12 19:45:56 UTC 2016
Modified Files:
src/sys/external/bsd/drm2/drm: drmfb.c
src/sys/external/bsd/drm2/i915drm: intelfb.c
src/sys/external/bsd/drm2/include/drm: drmfb.h
src/sys/external/bsd/drm2/nouveau: nouveaufb.c
Log Message:
add da_fb_linebytes to drmfb_attach_args and use it to pass linebytes
from nouveau code to drmfb. keep the same linebytes logic for i915.
nvidia hardware needs 256 byte alignment, so aligning to just 64 was
not enough.
fixes broken console with a width of 1440px (PR kern/51181)
ok riastradh
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/drm/drmfb.c
cvs rdiff -u -r1.13 -r1.14 src/sys/external/bsd/drm2/i915drm/intelfb.c
cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/include/drm/drmfb.h
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/nouveau/nouveaufb.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: "Soren Jacobsen" <snj@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/51181 CVS commit: [netbsd-7] src/sys/external/bsd/drm2
Date: Wed, 14 Dec 2016 19:13:24 +0000
Module Name: src
Committed By: snj
Date: Wed Dec 14 19:13:24 UTC 2016
Modified Files:
src/sys/external/bsd/drm2/drm [netbsd-7]: drmfb.c
src/sys/external/bsd/drm2/i915drm [netbsd-7]: intelfb.c
src/sys/external/bsd/drm2/include/drm [netbsd-7]: drmfb.h
src/sys/external/bsd/drm2/nouveau [netbsd-7]: nouveaufb.c
Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1322):
sys/external/bsd/drm2/drm/drmfb.c: revision 1.3
sys/external/bsd/drm2/i915drm/intelfb.c: revision 1.14
sys/external/bsd/drm2/include/drm/drmfb.h: revision 1.2
sys/external/bsd/drm2/nouveau/nouveaufb.c: revision 1.4
add da_fb_linebytes to drmfb_attach_args and use it to pass linebytes
from nouveau code to drmfb. keep the same linebytes logic for i915.
nvidia hardware needs 256 byte alignment, so aligning to just 64 was
not enough.
fixes broken console with a width of 1440px (PR kern/51181)
ok riastradh
To generate a diff of this commit:
cvs rdiff -u -r1.1.2.3 -r1.1.2.4 src/sys/external/bsd/drm2/drm/drmfb.c
cvs rdiff -u -r1.9.4.3 -r1.9.4.4 src/sys/external/bsd/drm2/i915drm/intelfb.c
cvs rdiff -u -r1.1.2.2 -r1.1.2.3 \
src/sys/external/bsd/drm2/include/drm/drmfb.h
cvs rdiff -u -r1.1.2.4 -r1.1.2.5 \
src/sys/external/bsd/drm2/nouveau/nouveaufb.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
State-Changed-From-To: open->closed
State-Changed-By: maya@NetBSD.org
State-Changed-When: Sun, 26 Feb 2017 12:26:31 +0000
State-Changed-Why:
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2014
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.