Corrupt ttys, splash; Console colour dummy device

Bug #907446 reported by TJ
18
This bug affects 2 people
Affects Status Importance Assigned to Milestone
grub-gfxpayload-lists (Ubuntu)
Confirmed
Undecided
Unassigned
linux (Ubuntu)
Incomplete
Medium
Unassigned

Bug Description

A clean installation of 11.10 32-bit, wiping out the previously correctly working Xubuntu 10.04 installation. The boot splash screen is corrupted (appears to be text-mode but with the >128 ASCII-code box drawing characters). Once at the X/Unity log-in prompt switching to any of the the virtual consoles (tty1-6) the consoles are also corrupted and impossible to read. The best description of what is seen is that spaces are spaces, but characters are drawn outline-shadowed (like HTML inset/outset table borders) and drawn mirrored through the Y axis. E.g. a "b" looks like a "d". Making out the characters is extremely difficult unless you know what to expect, such as when typing username at the console log-in prompt. I noticed the kernel reports:
Console: colour dummy console 80x25

instead of what I'd expect:
Console: colour VGA+ 80x25

Also, it seems the efifb driver creates a framebuffer device later although I'm not sure if it is responsible for the corrupted display. More likely is that GRUB leaves the video chipset in an unexpected mode.

WORKAROUND: The bug can be fixed by adding in /etc/default/grub :
GRUB_GFXPAYLOAD_LINUX=text

However, this is a local workaround. The blueprint refers to the file "/boot/grub/gfxblacklist" which is generated by a script in the package "grub-gfxpayload-lists". The file contains PCI IDs of video devices that GRUB should not leave in graphics mode. These are declared in /usr/share/grub-gfxpayload-lists/blacklist/ . The attached patch adds a new file "20_intel" to the blacklisted devices in the package.
If adding it manually to a system, place it in the /usr/share/grub-gfxpayload-lists/blacklist/ directory. To add the new device to /boot/grub/gfxblacklist.txt :
sudo update-grub-gfxpayload

ProblemType: Bug
DistroRelease: Ubuntu 11.10
Package: linux-image-3.0.0-12-generic 3.0.0-12.20
ProcVersionSignature: Ubuntu 3.0.0-12.20-generic 3.0.4
Uname: Linux 3.0.0-12-generic i686
AlsaVersion: Advanced Linux Sound Architecture Driver Version 1.0.24.
AplayDevices:
 **** List of PLAYBACK Hardware Devices ****
 card 0: I82801BAICH2 [Intel 82801BA-ICH2], device 0: Intel ICH [Intel 82801BA-ICH2]
   Subdevices: 1/1
   Subdevice #0: subdevice #0
ApportVersion: 1.23-0ubuntu4
Architecture: i386
AudioDevicesInUse:
 USER PID ACCESS COMMAND
 /dev/snd/controlC0: tj 1618 F.... pulseaudio
CRDA: Error: [Errno 2] No such file or directory
Card0.Amixer.info:
 Card hw:0 'I82801BAICH2'/'Intel 82801BA-ICH2 with YMF753 at irq 9'
   Mixer name : 'Yamaha YMF753'
   Components : 'AC97a:594d4803'
   Controls : 41
   Simple ctrls : 28
Date: Wed Dec 21 17:02:46 2011
EcryptfsInUse: Yes
HibernationDevice: RESUME=UUID=be8937e3-e911-452c-b8ce-353b831a7c2c
InstallationMedia: Ubuntu 11.10 "Oneiric Ocelot" - Release i386 (20111012)
Lsusb:
 Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
 Bus 002 Device 002: ID 054c:0069 Sony Corp. Memorystick MSC-U03 Reader
 Bus 002 Device 003: ID 044e:3002 Alps Electric Co., Ltd Bluetooth Device
MachineType: Sony Corporation PCG-SRX51P_B(GB)
PccardctlIdent:
 Socket 0:
   no product info available
PccardctlStatus:
 Socket 0:
   no card
ProcEnviron:
 LANGUAGE=en_GB:en
 PATH=(custom, no user)
 LANG=en_GB.UTF-8
 SHELL=/bin/bash
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-3.0.0-12-generic root=UUID=ca308bfa-d389-4d9e-92a7-2dd4b55cba2e ro quiet splash vt.handoff=7 video=efifb:off
RelatedPackageVersions:
 linux-restricted-modules-3.0.0-12-generic N/A
 linux-backports-modules-3.0.0-12-generic N/A
 linux-firmware 1.60
SourcePackage: linux
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 01/24/03
dmi.bios.vendor: Phoenix Technologies LTD
dmi.bios.version: R0232U2
dmi.chassis.asset.tag: 463M3A3471383200000000000000
dmi.chassis.type: 10
dmi.chassis.vendor: Sony Corporation
dmi.chassis.version: N/A
dmi.modalias: dmi:bvnPhoenixTechnologiesLTD:bvrR0232U2:bd01/24/03:svnSonyCorporation:pnPCG-SRX51P_B(GB):pvr01:cvnSonyCorporation:ct10:cvrN/A:
dmi.product.name: PCG-SRX51P_B(GB)
dmi.product.version: 01
dmi.sys.vendor: Sony Corporation

Revision history for this message
TJ (tj) wrote :
Brad Figg (brad-figg)
Changed in linux (Ubuntu):
status: New → Confirmed
Revision history for this message
TJ (tj) wrote :

The original report was made whilst booting the affected system with "video=efifb:off" which meant the efifb reports were missing from dmesg. This attachment rectifies that omission.

Revision history for this message
TJ (tj) wrote :

I'm attaching a couple of JPEG images captured on camera of the tty:

1. At the tty log-in prompt (IMG_20111221_174124.jpg)
2. After a blind user log-in (IMG_20111221_174156.jpg)

Revision history for this message
TJ (tj) wrote :
Revision history for this message
Joseph Salisbury (jsalisbury) wrote :

Do you have this issue if you try other versions of Ubuntu, such as 10.10 or 11.04?

Changed in linux (Ubuntu):
importance: Undecided → Medium
Revision history for this message
TJ (tj) wrote :

I've been analysing the kernel's start-up code that sets the console.

The selection of the dummy console occurs in drivers/video/console/vgacon.c::vgacon_startup()

There is a code label "novga" which results in the VGA console driver not being used:

 if (screen_info.orig_video_isVGA == VIDEO_TYPE_VLFB ||
     screen_info.orig_video_isVGA == VIDEO_TYPE_EFI) {
       no_vga:
#ifdef CONFIG_DUMMY_CONSOLE
  conswitchp = &dummy_con;
  return conswitchp->con_startup();
#else
  return NULL;
#endif

The "novga" label is also reached from later code that checks boot_params.screen_info has been initialized, and then whether the screen is in a VGA16 mode not handled by VGACON.

 /* boot_params.screen_info initialized? */
 if ((screen_info.orig_video_mode == 0) &&
     (screen_info.orig_video_lines == 0) &&
     (screen_info.orig_video_cols == 0))
  goto no_vga;

 /* VGA16 modes are not handled by VGACON */
 if ((screen_info.orig_video_mode == 0x0D) || /* 320x200/4 */
     (screen_info.orig_video_mode == 0x0E) || /* 640x200/4 */
     (screen_info.orig_video_mode == 0x10) || /* 640x350/4 */
     (screen_info.orig_video_mode == 0x12) || /* 640x480/4 */
     (screen_info.orig_video_mode == 0x6A)) /* 800x600/4 (VESA) */
  goto no_vga;

For a while I was chasing a presumption that arch/x86/kernel/setup.c::setup_arch() was enabling EFI support with

efi_enabled=1;

After a lot of analysis of boot_params.efi_info I arrived at the "novga" code and realised it can also be triggered by the boot-loader leaving the display in a graphic mode.

I then investigated the GRUB configuration and discovered the GRUB_GFXPAYLOAD_LINUX option, described in the blueprint

https://blueprints.launchpad.net/ubuntu/+spec/packageselection-foundations-n-grub2-boot-framebuffer

The bug can be fixed in "/etc/default/grub" by adding

GRUB_GFXPAYLOAD_LINUX=text

However, this is a local workaround. The blueprint refers to the file "/boot/grub/gfxblacklist" which is generated by a script in the package "grub-gfxpayload-lists". The file contains PCI IDs of video devices that GRUB should not leave in graphics mode. These are declared in "/usr/share/grub-gfxpayload-lists/blacklist/"

The attached patch adds a new file "20_intel" to the blacklisted devices in the package.

If adding it manually to a system, place it in the "/usr/share/grub-gfxpayload-lists/blacklist/" directory.

To add the new device to "/boot/grub/gfxblacklist.txt" run:

sudo update-grub-gfxpayload

Changed in grub-gfxpayload-lists (Ubuntu):
status: New → Confirmed
Revision history for this message
TJ (tj) wrote :

The attached log shows confirmation that the VGA+ console driver (vgacon) is being used, and the efifb is not loaded.

tags: added: patch
Revision history for this message
penalvch (penalvch) wrote :

TJ, this bug was reported a while ago and there hasn't been any activity in it recently. We were wondering if this is still an issue? If so, could you please test for this with the latest development release of Ubuntu? ISO images are available from http://cdimage.ubuntu.com/daily-live/current/ .

If it remains an issue, could you please run the following command in the development release from a Terminal (Applications->Accessories->Terminal), as it will automatically gather and attach updated debug information to this report:

apport-collect -p linux <replace-with-bug-number>

If reproducible, could you also please test the latest upstream kernel available (not the daily folder) following https://wiki.ubuntu.com/KernelMainlineBuilds ? It will allow additional upstream developers to examine the issue. Once you've tested the upstream kernel, please comment on which kernel version specifically you tested. If this bug is fixed in the mainline kernel, please add the following tags:
kernel-fixed-upstream
kernel-fixed-upstream-VERSION-NUMBER

where VERSION-NUMBER is the version number of the kernel you tested. For example:
kernel-fixed-upstream-v3.13-rc5

This can be done by clicking on the yellow circle with a black pencil icon next to the word Tags located at the bottom of the bug description. As well, please remove the tag:
needs-upstream-testing

If the mainline kernel does not fix this bug, please add the following tags:
kernel-bug-exists-upstream
kernel-bug-exists-upstream-VERSION-NUMBER

As well, please remove the tag:
needs-upstream-testing

Once testing of the upstream kernel is complete, please mark this bug's Status as Confirmed. Please let us know your results. Thank you for your understanding.

tags: added: latest-bios-r0232u2 needs-upstream-testing
description: updated
Changed in linux (Ubuntu):
status: Confirmed → Incomplete
Revision history for this message
Ubuntu Foundations Team Bug Bot (crichton) wrote :

The attachment "Blacklist Intel 815 devices from GRUB GFX handover" seems to be a patch. If it isn't, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are a member of the ~ubuntu-reviewers, unsubscribe the team.

[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issues please contact him.]

Revision history for this message
Tim Bartlett (tim-bartletts) wrote :

I have experienced the same bug with the Intel 815 graphics chipset on Ubuntu 12.04 running 3.2.0-57-generic-pae i686.

I have tested with 3.13.0-031300rc8-generic i686 from the mainline archive, and the bug still exists. TJ's GRUB blacklist patch fixes the issue for me with both kernels.

I don't think I can change tags, but this per Christopher's post above this bug should have the following tags changed:
+ kernel-bug-exists-upstream
+ kernel-bug-exists-upstream-v3.13-rc8
- needs-upstream-testing

I was not able to boot the development release or collect the apport information, as I couldn't get the machine to boot from USB, and the machine in question has a CD (not DVD) drive but the latest development build images are oversize for a CD. Let me know if you would like me to run the apport command on my installed OS (and whether the LTS or mainline kernel).

Cheers,
  Tim

Revision history for this message
penalvch (penalvch) wrote :

Tim Bartlett, thank you for your comment. So your hardware and problem may be tracked, could you please file a new report with Ubuntu by executing the following in a terminal while booted into a Ubuntu repository kernel (not a mainline one) via:
ubuntu-bug linux

For more on this, please read the official Ubuntu documentation:
Ubuntu Bug Control and Ubuntu Bug Squad: https://wiki.ubuntu.com/Bugs/BestPractices#X.2BAC8-Reporting.Focus_on_One_Issue
Ubuntu Kernel Team: https://wiki.ubuntu.com/KernelTeam/KernelTeamBugPolicies#Filing_Kernel_Bug_reports
Ubuntu Community: https://help.ubuntu.com/community/ReportingBugs#Bug_reporting_etiquette

When opening up the new report, please feel free to subscribe me to it.

Thank you for your understanding.

Helpful bug reporting tips:
https://wiki.ubuntu.com/ReportingBugs

To post a comment you must log in.