Intermittent Black Screen on LVDS Display With gma500_gfx Driver On Atom N2600
by jared_hagel from LinuxQuestions.org on (#6HSCS)
My device containing the Atom N2600 processor sometimes boots to a black display just before displaying an xfce desktop. When this problem occurs, I see the BIOS screen and startup text for grub and initramfs, but the screen goes black at some point before displaying the desktop and remains black. The backlight seems to work. This occurs about once out of every 5 reboots of my device. I am running Ubuntu 22 with an xfce desktop, but this same problem occurs on Ubuntu 20 with an LXQt desktop.
My display is connected via an LVDS interface. I've used an oscillisciope to probe the LVDS A clock and the 3 data pair signals (A0-A2) when this problem occurs, and it appears that the processor is setting every pixel to black on the display. I say this because if I force the display to solid black (via the command 'dd if=/dev/zero of=/dev/fb0' after pressing Ctrl+Alt+F1 to get into a virtual console) when the device starts normally I see the same activity on the LVDS clock and data lines. When the display is showing black the LVDS clock is running at 25MHz, the A0 data line is very busy, and the A1 and A2 data lines are idle. When this problem occurs everything else works fine - I can connect to the device via SSH and VNC. VNC shows the XFCE desktop I normally see.
I believe this is an issue with the gma500_gfx driver because if I blacklist the gma500_gfx driver, the i915 driver is used (with a non-optimal 800x600 resolution) and no matter how many times I reboot this device the LVDS display always works as expected.
I've tried to debug this issue by using drm.debug=6 as a kernel command line argument and recompiling the gma500_gfx driver to output additional register information, but nothing I've seen yet in dmesg or xrandr output is different between a normal and bad boot up of this device. I've just discovered the intel-gpu-tools package, but most of those tools fail with a message 'Couldn't map MMIO region' or 'No known gpu found for chipset flags 0x1 (intel)'. I suspect these tools don't support the gpu in the Atom N2600 processor.
I'd appreciate any other debugging advice. I'm new to gpu debugging and have already looked into this problem for days.
My display is connected via an LVDS interface. I've used an oscillisciope to probe the LVDS A clock and the 3 data pair signals (A0-A2) when this problem occurs, and it appears that the processor is setting every pixel to black on the display. I say this because if I force the display to solid black (via the command 'dd if=/dev/zero of=/dev/fb0' after pressing Ctrl+Alt+F1 to get into a virtual console) when the device starts normally I see the same activity on the LVDS clock and data lines. When the display is showing black the LVDS clock is running at 25MHz, the A0 data line is very busy, and the A1 and A2 data lines are idle. When this problem occurs everything else works fine - I can connect to the device via SSH and VNC. VNC shows the XFCE desktop I normally see.
I believe this is an issue with the gma500_gfx driver because if I blacklist the gma500_gfx driver, the i915 driver is used (with a non-optimal 800x600 resolution) and no matter how many times I reboot this device the LVDS display always works as expected.
I've tried to debug this issue by using drm.debug=6 as a kernel command line argument and recompiling the gma500_gfx driver to output additional register information, but nothing I've seen yet in dmesg or xrandr output is different between a normal and bad boot up of this device. I've just discovered the intel-gpu-tools package, but most of those tools fail with a message 'Couldn't map MMIO region' or 'No known gpu found for chipset flags 0x1 (intel)'. I suspect these tools don't support the gpu in the Atom N2600 processor.
I'd appreciate any other debugging advice. I'm new to gpu debugging and have already looked into this problem for days.