merge / skulls

pre-built coreboot images and documentation on how to flash them for Thinkpad Laptops
GNU General Public License v3.0
700 stars 66 forks source link

ThinkPad T440p not seeing Nvidia GPU #220

Open mercadolino opened 2 years ago

mercadolino commented 2 years ago

Hello, I've installed your coreboot on my T440p, first of all thank you very much for your awesome work, your guide and scripts where very good and I managed to perform the upgrade quite quickly without prior experience.

Now that I have the installation complete I am realizing that once I am in Linux the system is not able to see the dedicated GPU I have on my board, it's an NVIDIA GK208M GeForce GT 730M.

Is that something that has to be added to coreboot?

Thanks for helping out!

ghost commented 2 years ago

What does lspci show?

nullenvk commented 2 years ago

I'm not sure how useful is this, but I am experiencing a similar problem on vanilla Coreboot. The GPU doesn't show up at all in lspci, whereas earlier Coreboot versions used to detect it properly (at least Coreboot 4.13 used to), regardless of whether the GPU's BIOS image was added to the motherboard BIOS. If @mercadolino experiences exact same issues, I think it'd be a good idea to report this to upstream Coreboot's issue tracker.

tlaurion commented 2 years ago

Have not followed integration of that board and config changes, but have you looked at osboot coreboot config files?

Example: https://notabug.org/osboot/osbmk/src/master/resources/coreboot/t440p_12mb/config/libgfxinit_corebootfb

nullenvk commented 2 years ago

@tlaurion Thanks for that. I've done a diff on my config file and osboot's one, and apart from some (probably) insignificant changes related to CBFS size, Azalia settings and some debug options, I haven't noticed any important differences.

However, I have dumped a Coreboot log using cbmem just now, because I thought it might be useful to diagnose the issue, but I haven't noticed any references to the missing PCI address (which, according to the dumped original GPU VBIOS image, should be 10de:1290). I'm posting it here too, just in case. cbmem_dump.txt

tlaurion commented 2 years ago

@nullenvk I may be out of scope totally, but for the work that has been done on the w530-dgpu versions under coreboot, you need to add option ROMs for it to be actually booted and then detected. More blobs, that is. Hope that helps

Check the dgpu boards PR under heads project. Some needed it to even have screen output. Since I do not own those boards, I am not that aware and simply trusted replications.

Those needed additional extractions script to get lenovo firmware and apply logic to extract them otherwise those blobs would need to be hosted.

nullenvk commented 2 years ago

@tlaurion Thanks for suggestions, but I have already tried out flashing a Coreboot ROM with the dGPU's option ROM built-in, but I didn't observe any differences in comparison with the Coreboot rom without option ROMs. However, I've accidentally stumbled upon this line in the cbmem log: [INFO ] PCI: Static device PCI: 00:01.0 not found, disabling it. This is the only line in the log referencing PCI devices not being found, and that address seems to correspond with the one mentioned in this issue: https://ticket.coreboot.org/issues/310 I don't have much more to say now, but I'll try to investigate this issue further after I finish working on another issue.

nullenvk commented 2 years ago

@mercadolino @Xanth0k1d @tlaurion I have found a way to enable the dedicated GPU on T440p, but that required some manual intervention in that model's device tree. I don't have much time to send a proper pull request to Coreboot's Gerrit, but nonetheless, I'd like to provide you with information on how to get it working on your own.

At some point between releases 4.13 and 4.14, some maintainer has decided to disable a PEG device which used to cause problems on the iGPU variant of T440p, assuming that it's unused by the system altogether. However, on the dGPU variant, it's necessary for proper detection of the card. Finally, here's the commit detailing what should you do to fix this issue:

https://github.com/nullenvk/coreboot/commit/aef930dcb6089ef21f00820b2af93654138e1f83

Th3Fanbus commented 2 years ago

Hi, coreboot developer(s) here. We recently submitted a tiny change to fix dGPU detection on at least some T440p.

Unconditionally enabling the PEG (PCI Express Graphics) root port at 00:01.1 doesn't hurt. It might increase power consumption a bit, but we can't really do much about it for now. MRC.bin is supposed to initialize PEG ports, but it fails miserably: it will disable the iGPU if it finds a dGPU in a PEG port, and even then it doesn't initialize the PEG port correctly. Fully disabling the PEG ports involves powering down the unused bundles/lanes, and we haven't implemented this yet (no ETA on when it will be done, sorry).