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.
Since ~v6.5 there is a random 60% chance that the display panel will fail to initialise during boot (with FBDEV_EMULATION), instead it will just be a black screen. The issue can be entirely mitigated by introducing some delay (adding console=ttyMSM0,115200 to the kernel cmdline is enough).
It happens on the OnePlus 6 and likely with other devices too. I have been able to reproduce it on upstream 6.5 with a small patch enabling prepare_prev_first in the panel driver.
Poking via modetest or blanking the display do nothing, and there is no additional messages printed via dmesg.
I can confirm this issue. It happens in my Poco F1 (SDM845) too. The workaround suggested by Caleb doesn't consistently work though in my phone. it still fails like half the times.
This sounds awfully similar to what I reported in #42 (comment 2155962), manifesting itself between next-20231006 and next-20231009. On one device the looks like DSC corruption, some others have a black screen most of the time. Strangely SDM845 wasn't affected back then so maybe this is a new/different issue?
Also, if you can, please address the typo in the title (and resulting notifications ).
Something I found out recently on sm6350 is that the mdss_gdsc needs to be off (turned off normally by genpd_power_off_unused) before mdss probe, otherwise the display will be stuck on black. So with DRM_MSM=y it won't really work since genpd_power_off_unused is called too late, but with DRM_MSM=m it seems to be work reliably with my setup.
I didn't figure out yet a better way to solve this, potentially a reset inside dispcc is somewhere that can be used to properly reset it to avoid this race condition there.
So might be something worth checking if also on sdm845 something similar could be the case...
There is an optional mdss reset, DISP_CC_MDSS_CORE_BCR see sm8350/sm8450/sm8550. Could you please check if adding it fixed the CONFIG_DRM_MSM=y vs CONFIG_DRM_MSM=m issue for you?
I did a quick testing with the following patch to add the DISP_CC_MDSS_CORE_BCR reset. If i specified it as 0x2000, then the entire device doesn't boot up for most of the time and get's stuck in a black screen. It rarely boots up, but when it does, it works correctly. I also tried specifying 0x1000, 0x3000, 0x4000 , in all 3 cases, it behaved the same way as reported in the MR. So, I think 0x2000 is maybe valid? and there is a bug somewhere else. Sadly, I don't have a device with UART serial debugging enabled. So I couldn't get any logs.
I tried adding this reset on the OnePlus 6 and it resulted in a crashdump on every single boot.
Assuming that this register isn't protected, my guess would be that doing a proper reset of the mdss block is somehow more involved.
I wonder if perhaps downstream Linux is missing some parts of the hardware init because it relies on the bootloader having done this initialisation beforehand? Like with the "continuous splash" feature.
I tried comparing the output of "debugcc" when the display works vs when it doesn't and there is no difference.