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
The migration is almost done, at least the rest should happen in the background. There are still a few technical difference between the old cluster and the new ones, and they are summarized in this issue. Please pay attention to the TL:DR at the end of the comment.
Hello, I have a problem with kernels newer than v6.1.4. For some reason, my screen splits in half (when I rotate the screen, the split and orientation does not change).
This problem occurs with every Linux distribution I have tested.
Arch, Manjaro, Debian, Ubuntu, Fedora. Even without a display server, the error occurs in the console. Therefore, I think it must have something to do with the framebuffer.
For example, whenever the cursor flashes, the image on the left side of the monitor moves up and comes out at the bottom. Sometimes the right site does it as well, but not as often.
It is difficult to describe... A good example would be a toothed belt that you hold tight, and a motor tries to turn anyway. It's exactly the same kind of jerking with the picture.
It is interesting because it only occurs to a certain degree and does not go around like a conveyor belt. Sometimes one of the sites turns black first during poweroff or startup.
@jani
Yes grub shows properly, the Linux version where the issue first occurs is the v6.1.5.
All versions I tested from before work.(Also "stock" distro-kernels)
Does it only get broken after i915 is probed? As for this question, I don't really know.
I only know, that when I start the kernel in "save-mode" it works just fine.
So I think this assumption might be correct.
I also tried FreeBSD and installed a desktop environment, and it works properly.
But I think that doesn't matter. (Edit: With the i915 driver, Free BSD gets a Purple Screen and that's it. Maybe I tested an older version of i915 with Free BSD back then)
Edit: When I plug in a Monitor, Projector, TV, they work fine. The issue on the main Display remains.
As I have the exact same problem Johannes described in this issue, I would like to ask, if I can do anything to help fixing this error.
Currently I have to run a 6.0 kernel which is not maintained because there is no working LTS version. The display started working with kernel version 6.0.x (#6476 (closed)) and got the problem in 6.1.x (Johannes provided all the details).
Do you need further logs or anything else (tagging @jani because you already made assumptions for the cause of the issue)? Is there a possible workaround (as external displays work fine there might be an option to configure something to make the internal display work?)
@glU79z
We could take the last working version of the kernel and apply the patches (gitbisec.txt). Then we can see which one is the problem and investigate it further.
There's been a bunch of changes here, can anyone try v6.9 or drm-tip branch from https://gitlab.freedesktop.org/drm/tip with drm.debug=14 module parameter and attach dmesg from boot?
I have built with the v6.9 tip you suggested.
Unfortunately, the patch did not fix the problem. (Same as before):(
(Maybe I faild to applay it correctly ?)
I went into the cloned directory and used this command for patching.
$patch -p1 < /path/to/your/0001-drm-i915-dsi-modify-MIPI_RESET_1-2-gpio-enable-disab.patch.
Hope that drm.debug=14 is enabled correctly.
Then I saw that this was mentioned under the previous comment:
""Dual-link models (one Takahiro has) still require commit 8d58bb79 ("drm/i915/dsi: fix VBT send packet port selection for dual link DSI") on top. Included here as a patch for completeness, should apply to both v6.1-rc7 and v6.0.9:""
I also patched this:
0001-drm-i915-dsi-fix-VBT-send-packet-port-selection-for-.patch
Edit:(If anyone wonders, the patch 0001-drm-i915-dsi-opportunistic-attempt-at-using-GPIO-on-.patch from #6131 (comment 1659626) didn't cause the issue.)
I research into the difference of kernel 6.1.4 and 6.1.5 and found the problem lies in /drivers/gpu/drm/i915/display/intel_dsi_vbt.c in the source code of kernel.
In 6.1.5, the kernel added a new function icl_native_gpio_set_value() which result the problem.
Owing to lack of the knowledge of coding the kernel, i just annotated some of the code. And then i builded the kernel in my computer and install it. The flickering problem is gone with the version of kernel 6.11.1.
Here is my solution:
Download the source code of kernel you want after 6.1.5
Find the file intel_dsi_vbt.c in /linux-6../drivers/gpu/drm/i915/display/intel_dsi_vbt.c
In that file, find function icl_native_gpio_set_value(),(it's in line 323 in kernel 6.11.1) , and then annotated all of the code in case "MIPI_RESET_1" and "MIPI_RESET_2"
And then build this kernel and install it.
That all.
And by the way, i found the code annotated is about Hot Plug Detect, and i guessed it may have some bad effect to that, next i would like to contact the author of that file to know more infomation about it.
Oh... I just try for a few times, it works newer than 6.1.4, such as 6.1.5, but 6.11.1 does not work properly, but do solved some problem, like screen flickering, but the screen was black, not able to display anything...
I test 6.2,6.3,6.4,6.5, The solution works well, but In the newer version of kernel, like 6.1.112 or 6.6, it is not works. Em,Is there anything i can do to solve this problem?
Hi @Rufish, Please look up the Bisect and the Patch I found, that caused the error. In my opinion, the best we can do is to dump the VBT. Since I wasn't able to dump it back then, I will try it later. Disabling this Case Switch itself won't fix the Issue. It is more likely that you will create new problems.
Here are a few thoughts from me, as I'm already working on this a bit. Spoiler: I'm not good at programming with c or c++, nor do I really know how the Intel etc. code really works. It could be nonsense from the start.
As you suggested, I think as well that the error might have its origin in the case statement. Specially, in the "calculation" of the Index Value. If our case cant handle the Index Value correctly, that could result in the incorrect behavior.
I got the VBT file by this way, and i found my vbt file is the same as you uploaded before.
Here is my vbt i915_vbt, and hex file i915_vbt-heydump.txt
uname -a
Linux chafi-MatebookE-Ubuntu 6.8.0-45-generic #45 (closed)-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
@Rufish@jani I happened to be testing around with different kernel versions when this popped up. Sorry for the poor quality, but maybe this will help. I've been switching back and forth from newer to older kernel versions, testing them. This is the picture of the 6.8.5-301.fc40... "stock" Fedora workstation kernel. Maybe this could help. (I don't know if I can reproduce it again)
Edit: I saw similar things in other issues, I tested upwards Kernel version 6.1.4.
I gave it some thought, maybe I'm totally wrong (I mean I'm completely lost):
Could it be that the patch did not introduce the error, but instead triggered an existing problem in the framebuffer handling? The repeated [drm:drm_mode_addfb2] [FB:xxx] messages say that the driver is constantly creating new framebuffers. Is it properly releasing the previous ones? Could this be a framebuffer leak? For more details, please refer to the video I have added to the problem description. :)