Issue #538 has been updated by Nico Huber.

Brian L wrote in #note-10:
> Yup, so I'm like 99% sure now. Coreboot does not initialize my internal 
> display whether using libgfxinit or vga blob. However, if SeaBios runs the 
> vgablob, then it does work
> 
> Sooooo... i just found out that if I change the VGA_BIOS_ID from "8086,0166" 
> (the default that coreboot uses for pretty much all lenovo laptops for years 
> now and has always worked fine for me) to "8086,0106"... coreboot properly 
> loads the option rom, i get a bios screen, and i get an edid now!!!! what the 
> heck??

There are plenty of things that can go wrong with configurations with VBIOS 
blobs. The `VGA_BIOS_ID` thing is just one of them. `VGA_BIOS_ID` decides how 
the VBIOS file in CBFS is called. This is important when coreboot/SeaBIOS try 
to find a matching file for the hardware ID that is encountered at runtime. 
Because the VBIOS blob supports multiple IDs, coreboot first tries to find an 
exact match, and if that doesn't work, falls back to "8086,0106" (that's 
hardcoded in C code for Sandy and Ivy Bridge iGPUs). SeaBIOS has its own 
mapping mechanism but that's barely ever configured, so people tend to enter 
the exact ID for `VGA_BIOS_ID`.

It's hard to tell without seeing the whole `.config`, but assuming you haven't 
also switched the payload, you are in a classic coreboot and SeaBIOS competing 
to run the VBIOS situation: SeaBIOS always tries to run it. If you run it in 
coreboot first, it runs twice which often doesn't work even if the first run 
succeeded. Generally, never use `VGA_ROM_RUN` with a SeaBIOS payload. If this 
is what you tried, the "8086,0106" would work because then SeaBIOS couldn't 
find the file anymore and the VBIOS only runs once.

The card0/1 thing might just be the boot framebuffer showing up as `card0`. You 
can check where it points to:
```
$ ls -l /sys/class/drm/card0
```

Nothing of this explains the docking issue and why libgfxinit and Linux fail to 
initialize graphics even though the EDID can be read later (your i2cdump shows 
that the EDID is perfectly fine). If you want to investigate this further, two 
ideas: Check if the EDID can still be read with `i2cdump` when the panel is 
*off*, e.g. with the lid *closed*. Normally, it should work, but your panel 
might be unusually wired, or something could just have broken physically.
```
# i2cdump -y 3 0x50
# sleep 10; i2cdump -y 3 0x50 # close lid, open again in 15s, compare
```
The other thing would be to check where exactly libgfxinit fails. You can build 
with `CONFIG_DEBUG_ADA_CODE=y` to get traces of it, then `cbmem -c` should give 
a lot more information.

----------------------------------------
Bug #538: [Soft Brick] x230 Dock Causes Internal Display to "Permanently" 
Malfunction
https://ticket.coreboot.org/issues/538#change-1842

* Author: Brian L
* Status: New
* Priority: High
* Target version: none
* Start date: 2024-05-14
* Affected hardware: Lenovo x230
----------------------------------------
Environment:  
  - Lenovo x230
  - Stock screen replaced with Pixel Qi (not sure if relevant) (plug & play 
LVDS)
  - Coreboot using Heads (coreboot + linuxboot)
  - Official lenovo docking station connected to external monitor via 
DisplayPort

Bug Trigger:  
Using Heads/coreboot fine for years with my Pixel Qi screen modded x230. I then 
bought a Lenovo docking station. Booted up, everything worked fine.  
Disconnected from dock, booted up, and there was no bios screen. Screen did not 
turn on until taken over by Linux Kernel. Once in userspace, wayland could no 
longer identify the monitor as a Pixel Qi or its proper resolution. EDID is 
blank. 
Booting with docking station allows bios to show on external display.

Restarting did *not* fix the issue, reflashing heads did *not* fix the issue, 
flashing skulls (coreboot + seabios) did *not* fix the issue.

Flashing stock bios *did fix* the issue. I can now see BIOS screen and get 
proper EDID in userspace whether on the dock or not. 
*However* reflashing coreboot again, even coming from stock bios working state, 
and I immediately now no longer get a BIOS screen or EDID, even without ever 
introducing the dock again. Essentially now bricked with anything but stock 
bios.



-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
https://ticket.coreboot.org/my/account
_______________________________________________
coreboot mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to