Hi,
Nicolas Reinecke ported the x201 coreboot code to support the T410s many moons ago (during/after the Prague hackathon). Eventually I came around to test it and it boots fine into Linux with a GRUB2 payload and memtest works fine too. I had to forward port it and add some changes done to similar boards but nothing too complicated. SeaBIOS currently does not boot for unknown reasons and due to missing debug output this will be rather unpleasant to figure out.
One thing I am currently looking at and where I am pretty stuck is ACPI.
At boot Linux prints the following lines: [ 0.222549] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 0.222704] ACPI Exception: AE_NOT_FOUND, Could not execute arguments for [GNVS] (Region) (20150930/nsinit-355) [ 0.222972] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 0.223125] ACPI Error: Method parse/execution failed [_SB._INI] (Node ffff88012f499280), AE_NOT_FOUND (20150930/psparse-542) [ 0.223505] ACPI : EC: EC started [ 0.223608] ACPI: Interpreter enabled [ 0.223683] ACPI: (supports S0 S3 S4 S5) [ 0.223739] ACPI: Using IOAPIC for interrupt routing [ 0.223822] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.227171] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 0.227326] ACPI Error: Method parse/execution failed [_SB.PCI0.LPCB.HPET._STA] (Node ffff88012f4ac9d8), AE_NOT_FOUND (20150930/psparse-542) [ 0.227542] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 0.227693] ACPI Error: Method parse/execution failed [_SB.PCI0.LPCB.HPET._STA] (Node ffff88012f4ac9d8), AE_NOT_FOUND (20150930/psparse-542) […] [ 0.247375] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 0.247536] ACPI Error: Method parse/execution failed [_SB.PCI0.LPCB.HPET._STA] (Node ffff88012f4ac9d8), AE_NOT_FOUND (20150930/psparse-542) [ 0.247810] ACPI: PCI Root Bridge [UNCR] (domain 0000 [bus ff]) [ 0.247875] acpi PNP0A03:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] [ 0.247968] acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM […] [ 0.267614] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.268028] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 0.268183] ACPI Error: Method parse/execution failed [_SB.PCI0.LPCB.HPET._STA] (Node ffff88012f4ac9d8), AE_NOT_FOUND (20150930/psparse-542) […] [ 0.994884] ACPI: Power Button [PWRF] [ 0.995007] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 0.995162] ACPI Error: Method parse/execution failed [_PR.CP00._TPC] (Node ffff88012f4ad5f0), AE_NOT_FOUND (20150930/psparse-542) [ 0.995419] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 0.995610] ACPI Error: Method parse/execution failed [_PR.CP01._TPC] (Node ffff88012f4ad758), AE_NOT_FOUND (20150930/psparse-542) [ 0.995850] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 0.996003] ACPI Error: Method parse/execution failed [_PR.CP02._TPC] (Node ffff88012f4ad8c0), AE_NOT_FOUND (20150930/psparse-542) [ 0.996237] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 0.996390] ACPI Error: Method parse/execution failed [_PR.CP03._TPC] (Node ffff88012f4ada28), AE_NOT_FOUND (20150930/psparse-542) […] [ 1.058181] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 1.058339] ACPI Error: Method parse/execution failed [_PR.CP00._PPC] (Node ffff88012f4ad528), AE_NOT_FOUND (20150930/psparse-542) [ 1.058619] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 1.058773] ACPI Error: Method parse/execution failed [_PR.CP01._PPC] (Node ffff88012f4ad690), AE_NOT_FOUND (20150930/psparse-542) [ 1.059040] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 1.059192] ACPI Error: Method parse/execution failed [_PR.CP02._PPC] (Node ffff88012f4ad7f8), AE_NOT_FOUND (20150930/psparse-542) [ 1.059454] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 1.059617] ACPI Error: Method parse/execution failed [_PR.CP03._PPC] (Node ffff88012f4ad960), AE_NOT_FOUND (20150930/psparse-542)
Also, at suspend from S3 (which worked OK so far), I also get the messages about \PR: [ 239.588752] ACPI: Low-level resume complete [ 239.588798] ACPI : EC: EC started [ 239.588799] PM: Restoring platform NVS memory [ 239.589150] Enabling non-boot CPUs ... [ 239.608626] x86: Booting SMP configuration: [ 239.608627] smpboot: Booting Node 0 Processor 1 APIC 0x1 [ 239.611159] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 239.611168] ACPI Error: Method parse/execution failed [_PR.CP01._PPC] (Node ffff88012f4ad690), AE_NOT_FOUND (20150930/psparse-542) [ 239.611212] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 239.611217] ACPI Error: Method parse/execution failed [_PR.CP01._TPC] (Node ffff88012f4ad758), AE_NOT_FOUND (20150930/psparse-542) [ 239.611250] cache: parent cpu1 should not be sleeping [ 239.611415] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 239.611419] ACPI Error: Method parse/execution failed [_PR.CP01._PPC] (Node ffff88012f4ad690), AE_NOT_FOUND (20150930/psparse-542) [ 239.611440] CPU1 is up [ 239.628643] smpboot: Booting Node 0 Processor 2 APIC 0x4 [ 239.631102] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 239.631109] ACPI Error: Method parse/execution failed [_PR.CP02._PPC] (Node ffff88012f4ad7f8), AE_NOT_FOUND (20150930/psparse-542) [ 239.631159] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 239.631164] ACPI Error: Method parse/execution failed [_PR.CP02._TPC] (Node ffff88012f4ad8c0), AE_NOT_FOUND (20150930/psparse-542) [ 239.631199] cache: parent cpu2 should not be sleeping [ 239.631365] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 239.631369] ACPI Error: Method parse/execution failed [_PR.CP02._PPC] (Node ffff88012f4ad7f8), AE_NOT_FOUND (20150930/psparse-542) [ 239.631390] CPU2 is up [ 239.648678] smpboot: Booting Node 0 Processor 3 APIC 0x5 [ 239.651193] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 239.651201] ACPI Error: Method parse/execution failed [_PR.CP03._PPC] (Node ffff88012f4ad960), AE_NOT_FOUND (20150930/psparse-542) [ 239.651248] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 239.651252] ACPI Error: Method parse/execution failed [_PR.CP03._TPC] (Node ffff88012f4ada28), AE_NOT_FOUND (20150930/psparse-542) [ 239.651285] cache: parent cpu3 should not be sleeping [ 239.651445] ACPI Error: [NVSA] Namespace lookup failure, AE_NOT_FOUND (20150930/psargs-359) [ 239.651449] ACPI Error: Method parse/execution failed [_PR.CP03._PPC] (Node ffff88012f4ad960), AE_NOT_FOUND (20150930/psparse-542) [ 239.651471] CPU3 is up [ 239.653717] ACPI: Waking up from system sleep state S3
I tried to figure at least the latter out but couldn't. AFAICT the port uses cpu/intel/model_206ax/acpi/cpu.asl similar to other board from its era (although it hosts CPUs from the previous model_20656 generation).
Another thing that I would like to add is support for 8 GB DIMMs (and thus 16 GB of total RAM) which I think should theoretically work on this hardware. I have tested an 8 GB DIMM in a W510 (with a Clarksfield i7-820QM CPU and four DIMM slots) with its vendor firmware and it's working fine there. My T410s has an Arrandale i5-520. cpuid and /proc/cpuinfo reports a maximum physical address bits of 0x24 (36) on both systems (indicating a maximum RAM of 64 GB AFAICT). The DIMM in question does not work with the Lenovo firmware in the T410s and fails during memory training with coreboot. Is this futile and simply not supported on this hardware? Why and how to tell?
Hi Vladimir,
since you have REed the raminit for Nehalem I'd like you to ask if you have any knowledge, information or pointers about using 8 GB DIMMs with it or even using more than 8 GB in total. In my case it is about an Arrandale i5-520M (in a Thinkpad 410s).
I know that an i7-820QM (Clarksfield) is perfectly capable of working with 8 GB DIMMs and probably up to 32 GB or even more (the Thinkpad W510 has 4 DIMM slots and I have tested it with 20 GB) and that is from around the same time as the Arrendale chips - which does not mean anything but I still refuse to accept that Nehalem is that limited. The official specs are not trustworthy IMHO and cpuid(1) and /proc/cpuinfo show the same physical address width of 36 bits (which would indicate a maximum of 64 GB).
The current raminit for Nehalem in coreboot is not able to train the two 8 GB DIMMs I have tested so far. I have added a debug output to choose_reg178 in the first loop before the margins are compared to STANDARD_MIN_MARGIN that shows that all margins are 0. If there is anything I could try or information I can provide, please let me know.
The (ancient) vendor firmware I've been using on the T410s does sometimes manage to boot Linux with an 8 GB DIMM (dmesg is attached including the e820 map), but it is quite broken and memtest86 locks up or reboots within seconds so that's probably not a good target for RE efforts. :)
Addressing over 8G is not supported by the chipset used on nehalem thinkpad laptops (X201)
Stupid limitation, but it is not the CPU fault.
On Sat, Jan 21, 2017 at 5:55 AM, Stefan Tauner < stefan.tauner@alumni.tuwien.ac.at> wrote:
Hi Vladimir,
since you have REed the raminit for Nehalem I'd like you to ask if you have any knowledge, information or pointers about using 8 GB DIMMs with it or even using more than 8 GB in total. In my case it is about an Arrandale i5-520M (in a Thinkpad 410s).
I know that an i7-820QM (Clarksfield) is perfectly capable of working with 8 GB DIMMs and probably up to 32 GB or even more (the Thinkpad W510 has 4 DIMM slots and I have tested it with 20 GB) and that is from around the same time as the Arrendale chips - which does not mean anything but I still refuse to accept that Nehalem is that limited. The official specs are not trustworthy IMHO and cpuid(1) and /proc/cpuinfo show the same physical address width of 36 bits (which would indicate a maximum of 64 GB).
The current raminit for Nehalem in coreboot is not able to train the two 8 GB DIMMs I have tested so far. I have added a debug output to choose_reg178 in the first loop before the margins are compared to STANDARD_MIN_MARGIN that shows that all margins are 0. If there is anything I could try or information I can provide, please let me know.
The (ancient) vendor firmware I've been using on the T410s does sometimes manage to boot Linux with an 8 GB DIMM (dmesg is attached including the e820 map), but it is quite broken and memtest86 locks up or reboots within seconds so that's probably not a good target for RE efforts. :)
-- Kind regards/Mit freundlichen Grüßen, Stefan Tauner
-- coreboot mailing list: coreboot@coreboot.org https://www.coreboot.org/mailman/listinfo/coreboot
I know that an i7-820QM (Clarksfield) is perfectly capable of working with 8 GB DIMMs and probably up to 32 GB or even more (the Thinkpad W510 has 4 DIMM slots and I have tested it with 20 GB) and that is from around the same time as the Arrendale chips - which does not mean anything but* I still refuse to accept that Nehalem is that limited*.
*The* *> official specs are not trustworthy IMHO and cpuid(1) and /proc/cpuinfo* *> show the same physical address width of 36 bits (which would indicate a* *> **maximum of 64 GB)*.
And let me add... Stefan, you are perfectly correct, *to the highlighted RED* marked by me in your original text/email. Nehalem is perfectly capable of addressing MORE than 8GB of DDR. And it can support for sure 16GB, maybe even 32GB of DDR.
And I even might know (actually, certainly, I do) why LENOVO 410s is NOT able/capable to support 8GB DIMMs.
Let me throw this challenge to INTEL IOTG. If they (after all, it is INTEL technology, isn't it!?) know what is the root cause of this problem, and then how to fix this problem. ;-)
INTEL IOTG, floor all yours!
Zoran
On Sat, Jan 21, 2017 at 11:55 AM, Stefan Tauner < stefan.tauner@alumni.tuwien.ac.at> wrote:
Hi Vladimir,
since you have REed the raminit for Nehalem I'd like you to ask if you have any knowledge, information or pointers about using 8 GB DIMMs with it or even using more than 8 GB in total. In my case it is about an Arrandale i5-520M (in a Thinkpad 410s).
I know that an i7-820QM (Clarksfield) is perfectly capable of working with 8 GB DIMMs and probably up to 32 GB or even more (the Thinkpad W510 has 4 DIMM slots and I have tested it with 20 GB) and that is from around the same time as the Arrendale chips - which does not mean anything but I still refuse to accept that Nehalem is that limited. The official specs are not trustworthy IMHO and cpuid(1) and /proc/cpuinfo show the same physical address width of 36 bits (which would indicate a maximum of 64 GB).
The current raminit for Nehalem in coreboot is not able to train the two 8 GB DIMMs I have tested so far. I have added a debug output to choose_reg178 in the first loop before the margins are compared to STANDARD_MIN_MARGIN that shows that all margins are 0. If there is anything I could try or information I can provide, please let me know.
The (ancient) vendor firmware I've been using on the T410s does sometimes manage to boot Linux with an 8 GB DIMM (dmesg is attached including the e820 map), but it is quite broken and memtest86 locks up or reboots within seconds so that's probably not a good target for RE efforts. :)
-- Kind regards/Mit freundlichen Grüßen, Stefan Tauner
-- coreboot mailing list: coreboot@coreboot.org https://www.coreboot.org/mailman/listinfo/coreboot