Hi all,
I have a little problem trying to get a vesa framebuffer when booting my system. I have the system with the original bios and the vesa fb working. These are the relevant dmesg traces:
[ 0.263974] PCI host bridge to bus 0000:00 [ 0.263976] pci_bus 0000:00: root bus resource [io 0x0000-0x03af window] [ 0.263977] pci_bus 0000:00: root bus resource [io 0x03e0-0x0cf7 window] [ 0.263978] pci_bus 0000:00: root bus resource [io 0x03b0-0x03df window] [ 0.263979] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window] [ 0.263980] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window] [ 0.263981] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000dffff window] [ 0.263982] pci_bus 0000:00: root bus resource [mem 0xe0000000-0xfed3ffff window] <------------------ [ 0.263983] pci_bus 0000:00: root bus resource [mem 0xfedca000-0xffffffff window] [ 0.263985] pci_bus 0000:00: root bus resource [bus 00-ff] [ 0.263992] pci 0000:00:00.0: [1022:1576] type 00 class 0x060000 [ 0.264083] pci 0000:00:01.0: [1002:9874] type 00 class 0x030000 [ 0.264098] pci 0000:00:01.0: reg 0x10: [mem 0xe0000000-0xefffffff 64bit pref] [ 0.264105] pci 0000:00:01.0: reg 0x18: [mem 0xf0000000-0xf07fffff 64bit pref] [ 0.264109] pci 0000:00:01.0: reg 0x20: [io 0xf000-0xf0ff] [ 0.264114] pci 0000:00:01.0: reg 0x24: [mem 0xfeb00000-0xfeb3ffff] [ 0.264118] pci 0000:00:01.0: reg 0x30: [mem 0xfeb40000-0xfeb5ffff pref] [ 0.264121] pci 0000:00:01.0: enabling Extended Tags [ 0.264151] pci 0000:00:01.0: supports D1 D2 [ 0.264153] pci 0000:00:01.0: PME# supported from D1 D2 D3hot ... [ 0.279059] pci_bus 0000:00: resource 4 [io 0x0000-0x03af window] [ 0.279061] pci_bus 0000:00: resource 5 [io 0x03e0-0x0cf7 window] [ 0.279062] pci_bus 0000:00: resource 6 [io 0x03b0-0x03df window] [ 0.279063] pci_bus 0000:00: resource 7 [io 0x0d00-0xffff window] [ 0.279064] pci_bus 0000:00: resource 8 [mem 0x000a0000-0x000bffff window] [ 0.279065] pci_bus 0000:00: resource 9 [mem 0x000c0000-0x000dffff window] [ 0.279066] pci_bus 0000:00: resource 10 [mem 0xe0000000-0xfed3ffff window] <-------------------- [ 0.279067] pci_bus 0000:00: resource 11 [mem 0xfedca000-0xffffffff window] ... [ 0.427777] vesafb: mode is 800x600x16, linelength=1664, pages=47 [ 0.427777] vesafb: scrolling: redraw [ 0.427778] vesafb: Truecolor: size=0:5:6:5, shift=0:11:5:0 [ 0.427789] vesafb: framebuffer at 0xe0000000, mapped to 0x (ptrval), using 1950k, total 49152k [ 0.427821] fb0: VESA VGA frame buffer device
With the sytem and my modified coreboot I can get a vesa fb working and I get no image on screen until the amdgpu driver is loaded and the Xorg is running. The suspicious dmesg traces are:
[ 0.253527] PCI host bridge to bus 0000:00 [ 0.253529] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window] [ 0.253530] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window] [ 0.253531] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff] [ 0.253532] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000dffff] [ 0.253533] pci_bus 0000:00: root bus resource [mem 0xd0000000-0xffffffff] [ 0.253535] pci_bus 0000:00: root bus resource [bus 00-ff] [ 0.253544] pci 0000:00:00.0: [1022:1576] type 00 class 0x060000 [ 0.253640] pci 0000:00:01.0: [1002:9874] type 00 class 0x030000 [ 0.253658] pci 0000:00:01.0: reg 0x10: [mem 0xe0000000-0xefffffff 64bit pref] [ 0.253666] pci 0000:00:01.0: reg 0x18: [mem 0xf0000000-0xf07fffff 64bit pref] [ 0.253672] pci 0000:00:01.0: reg 0x20: [io 0x2000-0x20ff] [ 0.253677] pci 0000:00:01.0: reg 0x24: [mem 0xf0b00000-0xf0b3ffff] [ 0.253682] pci 0000:00:01.0: reg 0x30: [mem 0xf0b40000-0xf0b5ffff pref] [ 0.253723] pci 0000:00:01.0: supports D1 D2 [ 0.253724] pci 0000:00:01.0: PME# supported from D1 D2 D3hot ... [ 0.267038] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window] [ 0.267039] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window] [ 0.267041] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.267042] pci_bus 0000:00: resource 7 [mem 0x000c0000-0x000dffff] [ 0.267043] pci_bus 0000:00: resource 8 [mem 0xd0000000-0xffffffff]
In this case the resource 10 related to the mem address 0xe0000000 is not int the pci_bus 0000:00: root bus resource list and is not in pci_bus 0000:00: resourceX list... and this is the address related to the framebuffer.
What could it be the source of the problem?
Thanks! Jorge
Dear Jorge,
On 2019-11-12 15:12, Jorge Fernandez Monteagudo wrote:
I have a little problem trying to get a vesa framebuffer when booting my system.
What board with what graphics device is it?
I have the system with the original bios and the vesa fb working. These are the relevant dmesg traces:
[…]
With the system and my modified coreboot I can get a vesa fb working and I get no image on screen until the amdgpu driver is loaded and the Xorg is running. The suspicious dmesg traces are:
[ 0.253527] PCI host bridge to bus 0000:00 [ 0.253529] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window] [ 0.253530] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window] [ 0.253531] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff] [ 0.253532] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000dffff] [ 0.253533] pci_bus 0000:00: root bus resource [mem 0xd0000000-0xffffffff] [ 0.253535] pci_bus 0000:00: root bus resource [bus 00-ff] [ 0.253544] pci 0000:00:00.0: [1022:1576] type 00 class 0x060000 [ 0.253640] pci 0000:00:01.0: [1002:9874] type 00 class 0x030000 [ 0.253658] pci 0000:00:01.0: reg 0x10: [mem 0xe0000000-0xefffffff 64bit pref] [ 0.253666] pci 0000:00:01.0: reg 0x18: [mem 0xf0000000-0xf07fffff 64bit pref] [ 0.253672] pci 0000:00:01.0: reg 0x20: [io 0x2000-0x20ff] [ 0.253677] pci 0000:00:01.0: reg 0x24: [mem 0xf0b00000-0xf0b3ffff] [ 0.253682] pci 0000:00:01.0: reg 0x30: [mem 0xf0b40000-0xf0b5ffff pref] [ 0.253723] pci 0000:00:01.0: supports D1 D2 [ 0.253724] pci 0000:00:01.0: PME# supported from D1 D2 D3hot ... [ 0.267038] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window] [ 0.267039] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window] [ 0.267041] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.267042] pci_bus 0000:00: resource 7 [mem 0x000c0000-0x000dffff] [ 0.267043] pci_bus 0000:00: resource 8 [mem 0xd0000000-0xffffffff]
In this case the resource 10 related to the mem address 0xe0000000 is not int the pci_bus 0000:00: root bus resource list and is not in pci_bus 0000:00: resourceX list... and this is the address related to the framebuffer.
What could it be the source of the problem?
Please always attach the coreboot logs and the CBFS content.
build/cbfstool build/coreboot.rom print
Do you run the VGA Option ROM? Without it, you won’t get any output until a proper driver sets up the device to my knowledge.
Kind regards,
Paul
Hi Jorge,
Am 12.11.19 um 15:12 schrieb Jorge Fernandez Monteagudo:
I have a little problem trying to get a vesa framebuffer when booting my system. I have the system with the original bios and the vesa fb working. These are the relevant dmesg traces:
...
With the sytem and my modified coreboot I can get a vesa fb working and I get no image on screen until the amdgpu driver is loaded and the Xorg is running. The suspicious dmesg traces are:
... [ 0.253533] pci_bus 0000:00: root bus resource [mem 0xd0000000-0xffffffff] ... [ 0.253658] pci 0000:00:01.0: reg 0x10: [mem 0xe0000000-0xefffffff 64bit pref] ... [ 0.267043] pci_bus 0000:00: resource 8 [mem 0xd0000000-0xffffffff]
In this case the resource 10 related to the mem address 0xe0000000 is not int the pci_bus 0000:00: root bus resource list and is not in pci_bus 0000:00: resourceX
but it is. It's part of 0xd0000000-0xffffffff.
Beside little SMM and some ACPI, coreboot is no resident firmware like a BIOS that leaves some code to call into. Hence, if you run the VBIOS inside coreboot, it will also leave nothing for the OS to query the framebuffer info.
You have to make use of the framebuffer info coreboot leaves in it's own tables. With the current payload loading (I assume the kernel is wrapped into a SELF binary), this information is not handed over to the kernel (it could, though). So you need a driver that can fetch it. Have a look into drivers/firmware/google/ in the kernel. GOOGLE_ FRAMEBUFFER_COREBOOT=y should do the trick.
Nico