[coreboot] SB800: Linux hangs with `#define SB_GPP_UNHIDE_PORTS TRUE`
Paul Menzel
paulepanter at users.sourceforge.net
Mon Mar 4 01:05:09 CET 2013
Dear coreboot folks,
working on the ASRock E350M1 and trying to find out why the PCI devices
0:15.0 to 0:15.2 are not enabled, I am looking into the setup of the
General Purpose Ports (GPP).
In short, setting `SB_GPP_UNHIDE_PORTS` to `TRUE`, coreboot (based on
commit f91c8f29),
commit f91c8f290b2a723d1bda9a5dd7d668390672317e
Author: Jens Rottmann <JRottmann at LiPPERTembedded.de>
Date: Fri Mar 1 19:01:00 2013 +0100
FrontRunner/Toucan-AF: work around AGESA RAM init crashing on reboot
SeaBIOS 1.7.1 and GRUB 2 load fine, but then booting Debian Sid/unstable
with Linux 3.2.39 686 PAE kernel
linux-image-3.2.0-4-686-pae 3.2.39-2
Linux hangs after printing the following error message.
pci 0000:00:15.0: can't handle 64-bit address space for bridge
See [1] and [2].
A 64-bit Linux kernel 3.3.6 (Grml 2012.05 [3]) hangs too.
[ 0.000000] Linux version 3.3.0-2-grml-amd64 (Debian 3.3.6-1+grml.1) (team at grml.org) (gcc version 4.6.3 (Debian 4.6.3-5) ) #1 SMP Mon May 14 19:06:58 UTC 2012
[ 0.000000] Command line: initrd=/boot/grml64full_testing/initrd.img boot=live apm=power-off vga=791 nomce toram=grml64-full_testing.squashfs live-media-path=/live/grml64-full_testing/ boot=live bootid=8aa1383f-8bcd-472a-9a1a-e6e944a4bf80 console=ttyS0,115200n8 console=tty1 BOOT_IMAGE=/boot/grml64full_testing/vmlinuz
[…]
[ 0.332027] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[ 0.336160] [Firmware Bug]: ACPI: no secondary bus range in _CRS
[ 0.340055] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[ 0.344192] pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7]
[ 0.348026] pci_root PNP0A03:00: host bridge window [io 0x0d00-0xffff]
[ 0.352025] pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff]
[ 0.356028] pci_root PNP0A03:00: host bridge window [mem 0xe0000000-0xffffffff]
[ 0.360112] PCI host bridge to bus 0000:00
[ 0.364030] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7]
[ 0.368026] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff]
[ 0.372026] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[ 0.376026] pci_bus 0000:00: root bus resource [mem 0xe0000000-0xffffffff]
[ 0.385186] pci 0000:00:14.4: PCI bridge to [bus 01-01] (subtractive decode)
[ 0.388134] pci 0000:00:15.0: PCI bridge to [bus 02-02]
and then just hangs. Looking at the following working log, the PCI
devices are not found.
With coreboot-4.0-2441-gbdca153
commit bdca15337bc9337f399b43290dc74cb598c5ec4d
Author: Nico Huber <nico.huber at secunet.com>
Date: Mon May 21 14:01:52 2012 +0200
libpayload: Remove orphaned delay from USB mass storage
the Linux kernel ring buffer contains the following.
$ uname -a
Linux myhostname 3.2.0-4-686-pae #1 SMP Debian 3.2.39-2 i686 GNU/Linux
$ dmesg
[…]
[ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.2.0-4-686-pae root=/dev/mapper/bla-root ro rdinitrd=/sbin/bootchartd initcall_debug printk.time=y init=/sbin/bootchartd drm_kms_helper.poll=0 drm.debug=0x06 quiet noisapnp
[…]
[ 0.175212] calling acpi_pci_root_init+0x0/0x26 @ 1
[ 0.175217] HEST: Table parsing has been initialized.
[ 0.175224] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[ 0.175324] [Firmware Bug]: ACPI: no secondary bus range in _CRS
[ 0.175343] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[ 0.175538] pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7]
[ 0.175543] pci_root PNP0A03:00: host bridge window [io 0x0d00-0xffff]
[ 0.175548] pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff]
[ 0.175553] pci_root PNP0A03:00: host bridge window [mem 0xe0000000-0xffffffff]
[ 0.175575] pci 0000:00:00.0: [1022:1510] type 0 class 0x000600
[ 0.175637] pci 0000:00:01.0: [1002:9802] type 0 class 0x000300
[ 0.175654] pci 0000:00:01.0: reg 10: [mem 0xe0000000-0xefffffff pref]
[ 0.175665] pci 0000:00:01.0: reg 14: [io 0x1000-0x10ff]
[ 0.175676] pci 0000:00:01.0: reg 18: [mem 0xf0000000-0xf003ffff]
[ 0.175741] pci 0000:00:01.0: supports D1 D2
[ 0.175768] pci 0000:00:01.1: [1002:1314] type 0 class 0x000403
[ 0.175783] pci 0000:00:01.1: reg 10: [mem 0xf0040000-0xf0043fff]
[ 0.175859] pci 0000:00:01.1: supports D1 D2
[ 0.176022] pci 0000:00:11.0: [1002:4390] type 0 class 0x000101
[ 0.176050] pci 0000:00:11.0: reg 10: [io 0x1410-0x1417]
[ 0.176065] pci 0000:00:11.0: reg 14: [io 0x1420-0x1423]
[ 0.176080] pci 0000:00:11.0: reg 18: [io 0x1418-0x141f]
[ 0.176094] pci 0000:00:11.0: reg 1c: [io 0x1424-0x1427]
[ 0.176108] pci 0000:00:11.0: reg 20: [io 0x1400-0x140f]
[ 0.176123] pci 0000:00:11.0: reg 24: [mem 0xf004b000-0xf004b3ff]
[ 0.176153] pci 0000:00:11.0: set SATA to AHCI mode
[ 0.176222] pci 0000:00:12.0: [1002:4397] type 0 class 0x000c03
[ 0.176242] pci 0000:00:12.0: reg 10: [mem 0xf0048000-0xf0048fff]
[ 0.176343] pci 0000:00:12.2: [1002:4396] type 0 class 0x000c03
[ 0.176371] pci 0000:00:12.2: reg 10: [mem 0xf004b400-0xf004b4ff]
[ 0.176483] pci 0000:00:12.2: supports D1 D2
[ 0.176487] pci 0000:00:12.2: PME# supported from D0 D1 D2 D3hot
[ 0.176522] pci 0000:00:13.0: [1002:4397] type 0 class 0x000c03
[ 0.176543] pci 0000:00:13.0: reg 10: [mem 0xf0049000-0xf0049fff]
[ 0.176643] pci 0000:00:13.2: [1002:4396] type 0 class 0x000c03
[ 0.176671] pci 0000:00:13.2: reg 10: [mem 0xf004b500-0xf004b5ff]
[ 0.176783] pci 0000:00:13.2: supports D1 D2
[ 0.176787] pci 0000:00:13.2: PME# supported from D0 D1 D2 D3hot
[ 0.176821] pci 0000:00:14.0: [1002:4385] type 0 class 0x000c05
[ 0.176932] pci 0000:00:14.2: [1002:4383] type 0 class 0x000403
[ 0.176963] pci 0000:00:14.2: reg 10: [mem 0xf0044000-0xf0047fff 64bit]
[ 0.177053] pci 0000:00:14.2: PME# supported from D0 D3hot D3cold
[ 0.177077] pci 0000:00:14.3: [1002:439d] type 0 class 0x000601
[ 0.177184] pci 0000:00:14.4: [1002:4384] type 1 class 0x000604
[ 0.177246] pci 0000:00:14.5: [1002:4399] type 0 class 0x000c03
[ 0.177266] pci 0000:00:14.5: reg 10: [mem 0xf004a000-0xf004afff]
[ 0.177369] pci 0000:00:15.0: [1002:43a0] type 1 class 0x000604
[ 0.177479] pci 0000:00:15.0: supports D1 D2
[ 0.177518] pci 0000:00:15.1: [1002:43a1] type 1 class 0x000604
[ 0.177627] pci 0000:00:15.1: supports D1 D2
[ 0.177671] pci 0000:00:18.0: [1022:1700] type 0 class 0x000600
[ 0.177723] pci 0000:00:18.1: [1022:1701] type 0 class 0x000600
[ 0.177771] pci 0000:00:18.2: [1022:1702] type 0 class 0x000600
[ 0.177821] pci 0000:00:18.3: [1022:1703] type 0 class 0x000600
[ 0.177884] pci 0000:00:18.4: [1022:1704] type 0 class 0x000600
[ 0.177931] pci 0000:00:18.5: [1022:1718] type 0 class 0x000600
[ 0.177979] pci 0000:00:18.6: [1022:1716] type 0 class 0x000600
[ 0.178026] pci 0000:00:18.7: [1022:1719] type 0 class 0x000600
[ 0.178225] pci 0000:00:14.4: PCI bridge to [bus 01-01] (subtractive decode)
[ 0.178240] pci 0000:00:14.4: bridge window [io 0x0000-0x0cf7] (subtractive decode)
[ 0.178246] pci 0000:00:14.4: bridge window [io 0x0d00-0xffff] (subtractive decode)
[ 0.178251] pci 0000:00:14.4: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode)
[ 0.178256] pci 0000:00:14.4: bridge window [mem 0xe0000000-0xffffffff] (subtractive decode)
[ 0.178266] pci 0000:00:15.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[ 0.178277] pci 0000:00:15.1: bridge configuration invalid ([bus 00-00]), reconfiguring
[ 0.178363] pci 0000:00:15.0: PCI bridge to [bus 02-ff]
[ 0.178477] pci 0000:03:00.0: [10ec:8168] type 0 class 0x000200
[ 0.178502] pci 0000:03:00.0: reg 10: [io 0x0000-0x00ff]
[ 0.178542] pci 0000:03:00.0: reg 18: [mem 0x00000000-0x00000fff 64bit pref]
[ 0.178569] pci 0000:03:00.0: reg 20: [mem 0x00000000-0x00003fff 64bit pref]
[ 0.178674] pci 0000:03:00.0: supports D1 D2
[ 0.178678] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 0.184152] pci 0000:00:15.1: PCI bridge to [bus 03-ff]
[ 0.184183] pci_bus 0000:00: on NUMA node 0
[ 0.184197] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[ 0.184567] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGPB._PRT]
[ 0.184633] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PE20._PRT]
[ 0.184689] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PE21._PRT]
[ 0.184751] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PIBR._PRT]
[ 0.184922] pci0000:00: Requesting ACPI _OSC control (0x1d)
[ 0.184929] pci0000:00: ACPI _OSC request failed (AE_NOT_FOUND), returned control mask: 0x1d
[ 0.184933] ACPI _OSC control for PCIe not granted, disabling ASPM
[ 0.194987] initcall acpi_pci_root_init+0x0/0x26 returned 0 after 19532 usecs
[ 0.194995] calling acpi_pci_link_init+0x0/0x36 @ 1
[ 0.195153] ACPI: PCI Interrupt Link [INTA] (IRQs 3 4 5 7 10 11 12 15) *0
[ 0.195378] ACPI: PCI Interrupt Link [INTB] (IRQs 3 4 5 7 10 11 12 15) *0
[ 0.195530] ACPI: PCI Interrupt Link [INTC] (IRQs 3 4 5 7 10 11 12 15) *0
[ 0.195683] ACPI: PCI Interrupt Link [INTD] (IRQs 3 4 5 7 10 11 12 15) *0
[ 0.195833] ACPI: PCI Interrupt Link [INTE] (IRQs 3 4 5 7 10 11 12 15) *0
[ 0.195983] ACPI: PCI Interrupt Link [INTF] (IRQs 9) *0
[ 0.196143] ACPI: PCI Interrupt Link [INTG] (IRQs 3 4 5 7 10 11 12 15) *0
[ 0.196293] ACPI: PCI Interrupt Link [INTH] (IRQs 3 4 5 7 10 11 12 15) *0
[…]
The option/define `SB_GPP_UNHIDE_PORTS` was introduced in [4]
commit f3b0500050050e4f103e42fdcf111af232fa874b
Author: Kerry Sheh <shekairui at gmail.com>
Date: Wed Oct 12 12:06:23 2011 +0800
SB800: Hide unused gpp ports
Add configure option SB_GPP_UNHIDE_PORTS for mainboard
to hide/unhide the unused sb800 gpp ports.
Certain gpp port should be hidden, if no device was detected and
hotplug feature is disabled for such port.
Hidden unused ports makes lspci -vvv get more accurate information under Linux.
Test on avalue/eax-785e mainboard.
Change-Id: I1d7df0f2ab6ad69b1b99b8bf046411ae7cdb09c0
Signed-off-by: Kerry Sheh <kerry.she at amd.com>
Signed-off-by: Kerry Sheh <shekairui at gmail.com>
Reviewed-on: http://review.coreboot.org/207
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <patrick at georgi-clan.de>
and strangely the defaults for all boards were set from `TRUE` to
`FALSE`. I guess that it worked with `TRUE` beforehand, so I do not know
what happened in the meantime.
The option is only used in `Gpp.c`.
$ more src/vendorcode/amd/cimx/sb800/Gpp.c
[…]
if ( pConfig->GppUnhidePorts == FALSE ) {
if ((abValue & 0xF0) == 0) {
abValue = BIT8; // if all ports are empty set GPP_RESET
} else if ((abValue & 0xE0) != 0 && (abValue & 0x10) == 0) {
abValue |= BIT4; // PortA should always be visible whenever other ports are exist
}
// Update GPP_Portx_Enable (abcfg:0xC0[7:5])
writeAlink (SB_ABCFG_REGC0 | (UINT32) (ABCFG << 29), abValue);
}
[…]
Could you please try setting
#define SB_GPP_UNHIDE_PORTS TRUE
in AMD Persimmon or some other SB800 board and see how it goes?
Any other ideas are appreciated too.
Thanks,
Paul
[1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/pci/probe.c?id=939de1d69c5fb0da0cfe05a1a7c981421cf876f7#n401
[2] https://patchwork.kernel.org/patch/1051462/
• not committed
[3] http://grml.org/download/
• Go to »Older releases«.
[4] http://review.coreboot.org/207
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20130304/a989f40f/attachment-0001.sig>
More information about the coreboot
mailing list