Myles Watson wrote:
Ok thank you for all your help. I can boot and run Linux 2.6.33 now and I see all four CPU cores in /proc/cpuinfo. I compiled and added SeaBIOS as payload for coreboot and it works. I also compiled and added GPXE to the image and was able to PXE-boot. However, there are a few problems:
- The server has 4x1GB memory, but I only see 1GB. Why? What can I do?
Send the complete boot log as an attachment and see if anyone can spot the reason.
See attachment for my coreboot output. The server has 4x512MB (not 4x1GB) memory, and only half the memory is visible. The /var/log/messages in Linux says:
Scanning NUMA topology in Northbridge 24 Number of physical nodes 2 Node 0 MemBase 0000000000000000 Limit 000000003ffef000 Skipping disabled node 1 Using node hash shift of 63
I can see all four cores in /proc/cpuinfo and I can use them, but "numactl --hardware" shows that there is only one numa node detected, so something is wrong from BIOS.
- There is something wrong with the interrupts. When the kernel is
initializing the ethernet interfaces it says
"Determining IP information for eth0...Disabling IRQ #19"
Did you modify mptable.c and irq_tables.c for your board? The IRQ routing is probably different than what the s2881 has. You can run getpir and look in /proc/interrupts and lspci when you boot with the factory BIOS.
I'm not sure how those numbers and bitmasks in mptables.c, lspci, /proc/interrupts and irq_table.c correlate, but I'll keep trying to figure it out ... I have run getpir and mptable utilitys, but taking the output from these utilitys and putting it into the source tree will not make the server boot. I guess I need to study more exactly how this kind of hardware works, and how to interpret the tables and outputs from lspci.
My latest dl145 sourcecode directory is at the following URL in case someone is interested or could give me a hint: http://www.lysator.liu.se/~enok/dl145_g1/
The output of lspci and /proc/interrupts from a factory BIOS DL145G1 (with two single-core Opterons) looks like this:
[root@cl200 ~]# lspci -tv -[0000:00]-+-01.0-[0000:03]-- +-01.1 Advanced Micro Devices [AMD] AMD-8131 PCI-X IOAPIC +-02.0-[0000:02]--+-03.0 Broadcom Corporation NetXtreme BCM5704 Gigabit Ethernet | -03.1 Broadcom Corporation NetXtreme BCM5704 Gigabit Ethernet +-02.1 Advanced Micro Devices [AMD] AMD-8131 PCI-X IOAPIC +-06.0-[0000:01]--+-00.0 Advanced Micro Devices [AMD] AMD-8111 USB | +-00.1 Advanced Micro Devices [AMD] AMD-8111 USB | -04.0 ATI Technologies Inc Rage XL +-07.0 Advanced Micro Devices [AMD] AMD-8111 LPC +-07.1 Advanced Micro Devices [AMD] AMD-8111 IDE +-07.3 Advanced Micro Devices [AMD] AMD-8111 ACPI +-18.0 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration +-18.1 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map +-18.2 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller +-18.3 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control +-19.0 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration +-19.1 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map +-19.2 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller -19.3 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control [root@cl200 ~]# cat /proc/interrupts CPU0 CPU1 0: 125 0 IO-APIC-edge timer 1: 13 27 IO-APIC-edge i8042 4: 0 1 IO-APIC-edge 8: 0 0 IO-APIC-edge rtc0 9: 0 0 IO-APIC-fasteoi acpi 14: 5819 6709 IO-APIC-edge ide0 15: 0 0 IO-APIC-edge ide1 19: 0 0 IO-APIC-fasteoi ohci_hcd:usb1, ohci_hcd:usb2 31: 1220580 993 IO-APIC-fasteoi eth0 NMI: 0 0 Non-maskable interrupts LOC: 997597 807576 Local timer interrupts SPU: 0 0 Spurious interrupts PMI: 0 0 Performance monitoring interrupts PND: 0 0 Performance pending work RES: 49543 65171 Rescheduling interrupts CAL: 55 85 Function call interrupts TLB: 2639 7498 TLB shootdowns TRM: 0 0 Thermal event interrupts THR: 0 0 Threshold APIC interrupts MCE: 0 0 Machine check exceptions MCP: 82 82 Machine check polls ERR: 0 MIS: 0
The same output from my dualcore DL145G1 with coreboot (booted with irqpoll kernel argument) looks as follows:
[root@cl199 ~]# lspci -tv -[0000:00]-+-01.0-[0000:01]----01.0 MYRICOM Inc. Myrinet 2000 Scalable Cluster Interconnect +-01.1 Advanced Micro Devices [AMD] AMD-8131 PCI-X IOAPIC +-02.0-[0000:02]--+-03.0 Broadcom Corporation NetXtreme BCM5704 Gigabit Ethernet | -03.1 Broadcom Corporation NetXtreme BCM5704 Gigabit Ethernet +-02.1 Advanced Micro Devices [AMD] AMD-8131 PCI-X IOAPIC +-03.0-[0000:03]--+-00.0 Advanced Micro Devices [AMD] AMD-8111 USB | +-00.1 Advanced Micro Devices [AMD] AMD-8111 USB | -04.0 ATI Technologies Inc Rage XL +-04.0 Advanced Micro Devices [AMD] AMD-8111 LPC +-04.1 Advanced Micro Devices [AMD] AMD-8111 IDE +-04.2 Advanced Micro Devices [AMD] AMD-8111 SMBus 2.0 +-04.3 Advanced Micro Devices [AMD] AMD-8111 ACPI +-18.0 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration +-18.1 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map +-18.2 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller +-18.3 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control +-19.0 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration +-19.1 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map +-19.2 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller -19.3 Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control [root@cl199 ~]# cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0: 218 0 0 0 IO-APIC-edge timer 1: 0 0 0 42 IO-APIC-edge i8042 2: 0 0 0 0 XT-PIC-XT cascade 4: 0 0 0 1 IO-APIC-edge 6: 0 0 0 3 IO-APIC-edge floppy 8: 0 0 0 0 IO-APIC-edge rtc0 12: 0 0 0 4 IO-APIC-edge i8042 14: 704 0 3 11547 IO-APIC-edge ide0 15: 0 0 0 0 IO-APIC-edge ide1 19: 0 1132 518 941 IO-APIC-fasteoi ohci_hcd:usb1, ohci_hcd:usb2 28: 0 0 0 0 IO-APIC-fasteoi eth0 NMI: 0 0 0 0 Non-maskable interrupts LOC: 895964 895791 895716 895639 Local timer interrupts SPU: 0 0 0 0 Spurious interrupts PMI: 0 0 0 0 Performance monitoring interrupts PND: 0 0 0 0 Performance pending work RES: 2850 3860 8762 3934 Rescheduling interrupts CAL: 106 42 87 104 Function call interrupts TLB: 275 878 275 831 TLB shootdowns TRM: 0 0 0 0 Thermal event interrupts THR: 0 0 0 0 Threshold APIC interrupts MCE: 0 0 0 0 Machine check exceptions MCP: 3 3 3 3 Machine check polls ERR: 0 MIS: 0