Bug 97553

Summary: Switching to tty1 gives only blank screen with version newer than 0.5.103
Product: xorg Reporter: Max Rus <off_mail>
Component: Driver/openchromeAssignee: Kevin Brace <kevinbrace>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: high CC: kevinbrace, openchrome-devel
Version: git   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
register dump with working tty1 screen
none
register dump with blank tty1 screen (after blind login)
none
Xorg.0.log for last working driver version and first problematic. none

Description Max Rus 2016-08-31 19:16:03 UTC
Created attachment 126147 [details]
register dump with working tty1 screen

I have a motherboard Asus P5VD2-MX SE with P4M890 and integrated VGA output. Lubuntu 16.04. Dell S2740L FullHD monitor connected to VGA output.

I noticed that with newest drivers I can't see anything on the screen after switching to text console with Ctrl+Alt+F1. Returning to X session (Alt+F7) works normally.

I bisected commits and found this one as the first with problem:

f4166d683aeed6b5e17d8715ca676add112cb2e1
Date:   Fri Jul 8 14:43:31 2016 -0500

    Rewriting iga1_crtc_restore
    
    Rewrote iga1_crtc_restore callback function, in order to improve
    ACPI S3 State resume reliability.

Driver with version before this commit shows TTY1 normally.

Attached register dumps from normal and problematic versions (blindly logined and run "via_regs_dump -d -m -p").
Xorg.0.log files also are attached.
Comment 1 Max Rus 2016-08-31 19:16:49 UTC
Created attachment 126148 [details]
register dump with blank tty1 screen (after blind login)
Comment 2 Max Rus 2016-08-31 19:18:55 UTC
Created attachment 126149 [details]
Xorg.0.log for last working driver version and first problematic.
Comment 3 Kevin Brace 2016-09-01 04:57:18 UTC
Hi Max,

First of all, I apologize for causing inconvenience on your side.
I do strive to fix OpenChrome, but unfortunately in the process, unexpected portions of the code breaks for some people.
I have been aware of some issues with tty1 terminal switch for some time.
At least with the two computer I mainly use for testing, Epic 1314 (VN896 chipset) and Sylvania g netbook (VX700 chipset), Ctrl + Alt + F1 switch works as long as the use does not put the computer into standby. (ACPI S3 State)
Once the computer is put into standby, and resume from it, Ctrl + Alt + F1 causes Epic 1314 to freeze or causes Sylvania g netbook for have a blank screen similar to what you are describing. (It can come out of the blank screen with repeated Ctrl + Alt + F7. One try usually does not do it.)
I do own a mainboard with P4M890 chipset (It was made by ABIT.), but due to a personal event that happened in mid-July, I do not have access to it, and it will be like this probably until October.
    Regarding the bisecting you have performed, Version 0.5.103 rewrote the VGA register save / restore portion.
I did this, in order to fix a bug that caused Sylvania g netbook and KM400 chipset based boxes to lose the screen after standby resume.
For both of them, standby resume now works, although Ctrl + Alt + F1 causes the screen to go blank from hereon.
I will start working on fixing this bug before OpenChrome Version 0.6 release 
Regarding the cause, I will think that I am not properly saving all VGA registers is the root cause, but I have not found the exact root cause of the bug.
That being said, since you did the bisecting of the bug, that will be a good starting point for me to look into the bug.
Comment 4 Max Rus 2016-09-01 21:22:44 UTC
Hi, Kevin.

I tried to change function iga1_crtc_restore this way:

diff --git a/src/via_display.c b/src/via_display.c
index 721dfe8..e451f66 100644
--- a/src/via_display.c
+++ b/src/via_display.c
@@ -3188,7 +3188,7 @@ iga1_crtc_restore(xf86CrtcPtr crtc)
     ViaDisablePrimaryFIFO(pScrn);
 
     vgaHWLock(hwp);
-    vgaHWProtect(pScrn, TRUE);
+    vgaHWProtect(pScrn, FALSE);
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "Exiting iga1_crtc_restore.\n"));

and now TTY1-6 shows text. I can't explain why it worked (but I found similar function in internet with comments "ON: Reenable sequencer, then turn on screen." and decided to change this parameter to "ON"). And I have no knowledge how such a change could affect resume from standby process (ACPI S3 State) you tried to repair.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.