Due to an influx of spam, we have had to impose restrictions on new accounts. Please see this wiki page for instructions on how to get full permissions. Sorry for the inconvenience.
Admin message
Our infrastructure migration is complete. Please remember to update your SSH remote to point to ssh.gitlab.freedesktop.org; SSH to the old hostname will time out. You should not see any problems apart from that. Please let us know if you do have any other issues.
bisect took to me to this change that certainly reflects the behavior I am seeing :
5.1.0-rc5
commit 81da87f6 (refs/bisect/bad)
Author: Thomas Zimmermann tzimmermann@suse.de
Date: Tue May 21 13:08:29 2019 +0200
drm: Replace drm_gem_vram_push_to_system() with kunmap + unpin
The push-to-system function forces a buffer out of video RAM. This decision
should rather be made by the memory manager. By replacing the function with
calls to the kunmap and unpin functions, the buffer's memory becomes available,
but the buffer remains in VRAM until it's evicted by a pin operation.
This patch replaces the remaining instances of drm_gem_vram_push_to_system()
in ast and mgag200, and removes the function from DRM.
My 1st impression is we need a method that restores the previous behavior that pushes the content to the device .
I found this issue using
gnome-desktop3-3.28.2-1.el8.x86_64
If there is a more specific. RPM I can look at for guidance I will .
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Can you pls attach full boot log for the previous kernel (that one that worked, i.e. 982c0500 ("dt-bindings: gpu: add #cooling-cells property to the ARM Mali Midgard GPU binding"))?
I'm trying to spot anything that's different. Only thing I can think about is that the offset programming is botched, and implicitly relied on the previous buffer getting thrown out. And now that we don't do that anymore (both buffers for fbcon and Xorg fit together) we still scan out whatever is at offset 0 in vram, which happens to be fbcon.
Thomas, does mga200 work for you if you pick a resolution at boot (with video=) so that 2 buffers fit?
There are explicit changes for the console in two places :
mga_crtc_do_set_base()
/* unmap if console */<br>
if (&mdev->mfbdev->mfb == mga_fb)<br>
drm_gem_vram_kunmap(gbo);<br>
drm_gem_vram_unpin(gbo);<br> }<br>
That looks suspicious .
What it is the difference between going from text mode where the screen is 24x80 ascii terminal mode - I believe if was referred to as "vga" mode, to graphics mode ? It appears the "frame buffers" may not be getting setup right after the switch, or the lower-level mgag200 driver is not properly detecting where to retrieve the data to display from.
What it is the difference between going from text mode where the screen is
24x80 ascii terminal mode - I believe if was referred to as "vga" mode, to
graphics mode ? It appears the "frame buffers" may not be getting setup
right after the switch, or the lower-level mgag200 driver is not properly
detecting where to retrieve the data to display from.
You're not running in classic vga mode when in text mode, e.g. from your dmesg (there's more stuff in there that shows the vga -> mgag200 transition):
[ 5.144662] fbcon: mgag200drmfb (fb0) is primary device
[ 5.144716] Console: switching to colour frame buffer device 128x48
Your "text" mode is actually the fbcon console on top of the mgag200drmfb fbdev emulation on top of the mgag200 drm driver. So in "text mode" the drm driver is already running, and clearly it seems to work (somewhat at least).
But when X boots and allocates its own framebuffer memory, somehow the switch to that new buffer is broken.
Now with your little experiment there's two strange things:
- I'd expect the graphical start address to be non-zero (for the broken kernel, working kernel has both 0), but per your description it's the other way round?
- The address looks corrupted. You need to print it as %u (it's an u32, not a pointer), right now it looks way too big.
Another expirement: On the working kernel, can you try to program an offset start address like this:
That should result in the entire console/gnome being moved up about 1/3rd of the screen, with possibly garbage at the bottom third.
Finally can you pls attach the output of lspci -nn and what's in /proc/iomem? The address you have suspiciously looks like a cpu address, not a gpu address for the framebuffer ...
1. It appears gpu_addr of 0x300000 ( 3MB) is the offset into the adapter .
I see in mga_set_start_address(); it is being used to set registers , so I assume that is an offset into the video ram of the adapter;
2. " But when X boots and allocates its own framebuffer memory, somehow the switch to that new buffer is broken. "
Where / how can I track that address down ?
Is there something in the DRM tracing that will show that ?
3. I feel our best bet to track this down is at the breakage point with commit 81da87f6 , not at the tip , because it is the lowest common denominator debugging at the initial breakage, even though the drm frame-work has changed since.
That should result in the entire console/gnome being moved up about 1/3rd of
the screen, with possibly garbage at the bottom third.
Finally can you pls attach the output of lspci -nn and what's in
/proc/iomem? The address you have suspiciously looks like a cpu address, not
a gpu address for the framebuffer ...
This one still needs to be done. I'm suspecting that something with the base address doesn't work.
Also question on your setup: Are you showing the screen through the management console of the machine itself, or does this go through some external connector?
Ignore my notes in comment 16 regarding "set mode from user space " ; false alarm.
I've been slowly looking at the DRM debug logs trying to learn the behavior.
---
wrt comment 17.
The contents of lspci and /proc/iomem are in attachment #4 (closed).
Since iomem is not that large == It will be shown below this comment.
The vga/text mode appearance was fine, with the offset being x100000, which is kind of puzzling.
When graphics mode was started , the offset used was 0x400000; No gnome splash screen seen.
3. The video device mgag200 is embedded on the motherboard on a variety of server class machines as remote consoles without a physical video output to an edge connector to attach a monitor to - so I guess the answer is : "remote management"
4: As noted below : I see the PCI space used for the device is: