Linuxbios writes to the beginning of the Memory for MP tables. Shouldn't those addresses be interrupt vector table? It doesn't look it contains any pointers to an interrupt handler. Who is the table for? Will Linux kernel reference it? Linuxbios successfully loads the payload FILO which brings up Linux kernel. But the kernel hangs while waiting for a timer interrupt. See below. I guess the interrupt table is not correct. ========================================================== Linux version 2.4.20-8 (bhcompile@porky.devel.redhat.com) (gcc version 3.2.2 200 30222 (Red Hat Linux 3.2.2-5)) #1 Thu Mar 13 17:54:28 EST 2003 BIOS-provided physical RAM map: BIOS-e820: 0000000000000c88 - 00000000000a0000 (usable) BIOS-e820: 0000000000100000 - 0000000040000000 (usable) 128MB HIGHMEM available. 896MB LOWMEM available. hm, page 00000000 reserved twice. On node 0 totalpages: 262144 zone(0): 4096 pages. zone(1): 225280 pages. zone(2): 32768 pages. Kernel command line: ro root=/dev/hda2 console=ttyS0,57600 Initializing CPU#0 Detected 1597.358 MHz processor. Console: colour dummy device 80x25 Calibrating delay loop...
====================================================================
The MP table is specific to Tyan/s2735 not my board. I should change it. We use intel E7501/ICHs-3. But s2735 is ICH5. Don't know if it matters.
gin
* Gin ginlin@nexcom.com.tw [041209 10:20]:
Linuxbios writes to the beginning of the Memory for MP tables. Shouldn't those addresses be interrupt vector table? It doesn't look it contains any pointers to an interrupt handler. Who is the table for? Will Linux kernel reference it?
Linux uses the MP-Table for assigning interrupts to devices if it is there. It is basically a variant of describing a device tree to the system. It has nothing to do with the IVT, not directly at least. The IVT is set up by Linux. (And by LinuxBIOS for exception handling and gdb stub support)
Linuxbios successfully loads the payload FILO which brings up Linux kernel. But the kernel hangs while waiting for a timer interrupt. See below. I guess the interrupt table is not correct. ========================================================== Initializing CPU#0 Detected 1597.358 MHz processor. Console: colour dummy device 80x25 Calibrating delay loop...
Your interrupts are not set up correctly.
Stefan
Forget about the previous email. Actually I solved the problem of Calibrating delay loop. The problem is that I used the device list in static.c as my onboard devices and it was missing apic cluster.
In the board specific config file(under src/...), I noticed there is a tree-like device list. See below. Should I make it exactly the same as my board? Would it stop me from booting into linux kernel? Now I am getting another error. It prints out keyboard controller jammed.. : :gin :======================================================= # sample config for tyan/s2735 chip northbridge/intel/e7501 device pci_domain 0 on device pci 0.0 on end device pci 0.1 on end device pci 2.0 on chip southbridge/intel/i82870 device pci 1c.0 on end device pci 1d.0 on end device pci 1e.0 on end device pci 1f.0 on end end end device pci 6.0 on end chip southbridge/intel/i82801er device pci 1d.0 on end device pci 1d.1 on end device pci 1d.2 on end device pci 1d.3 on end device pci 1d.7 on end device pci 1e.0 on end device pci 1f.0 on # device pci 8.0 end chip superio/winbond/w83627hf device pnp 2e.0 on # Floppy io 0x60 = 0x3f0 irq 0x70 = 6 drq 0x74 = 2 end device pnp 2e.1 off # Parallel Port io 0x60 = 0x378 irq 0x70 = 7 end device pnp 2e.2 on # Com1 : : : ===================================================================
Linux version 2.4.20-8 (bhcompile@porky.devel.redhat.com) (gcc version 3.2.2 200 30222 (Red Hat Linux 3.2.2-5)) #1 Thu Mar 13 17:54:28 EST 2003 BIOS-provided physical RAM map: BIOS-e820: 0000000000000c88 - 00000000000a0000 (usable) BIOS-e820: 0000000000100000 - 0000000040000000 (usable) 128MB HIGHMEM available. 896MB LOWMEM available. hm, page 00000000 reserved twice. On node 0 totalpages: 262144 zone(0): 4096 pages. zone(1): 225280 pages. zone(2): 32768 pages. Kernel command line: ro root=/dev/hda2 console=ttyS0,57600 Initializing CPU#0 Detected 1597.322 MHz processor. Console: colour dummy device 80x25 Calibrating delay loop... 3185.04 BogoMIPS Memory: 1027480k/1048576k available (1347k kernel code, 17508k reserved, 999k da ta, 132k init, 131072k highmem) Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes) Inode cache hash table entries: 65536 (order: 7, 524288 bytes) Mount cache hash table entries: 512 (order: 0, 4096 bytes) Buffer-cache hash table entries: 65536 (order: 6, 262144 bytes) Page-cache hash table entries: 262144 (order: 8, 1048576 bytes) CPU: Trace cache: 12K uops, L1 D cache: 8K CPU: L2 cache: 512K Intel machine check architecture supported. Intel machine check reporting enabled on CPU#0. CPU: Intel(R) Xeon(TM) CPU 1.60GHz stepping 07 Enabling fast FPU save and restore... done. Enabling unmasked SIMD FPU exception support... done. Checking 'hlt' instruction... OK. POSIX conformance testing by UNIFIX mtrr: v1.40 (20010327) Richard Gooch (rgooch@atnf.csiro.au) mtrr: detected mtrr type: Intel PCI: Using configuration type 1 PCI: Probing PCI hardware PCI: Ignoring BAR0-3 of IDE controller 00:1f.1 PCI: Unable to handle 64-bit address space for PCI: Unable to handle 64-bit address space for Transparent bridge - Intel Corp. 82801BA/CA/DB PCI Bridge PCI: Using IRQ router PIIX [8086/2480] at 00:1f.0 isapnp: Scanning for PnP cards... isapnp: No Plug & Play device found Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 Initializing RT netlink socket apm: BIOS not found. Starting kswapd allocated 32 pages and 32 bhs reserved for the highmem bounces VFS: Disk quotas vdquot_6.5.1 pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF). pc_keyb: controller jammed (0xFF).
On Thu, 9 Dec 2004, Gin wrote:
Forget about the previous email. Actually I solved the problem of Calibrating delay loop. The problem is that I used the device list in static.c as my onboard devices and it was missing apic cluster.
I hope you did not modify static.c?
In the board specific config file(under src/...), I noticed there is a tree-like device list. See below. Should I make it exactly the same as my board?
yes.
ron
I hope you did not modify static.c?
I did. I did change the dev_root chip_op to 0 otherwise it won't execute the default root op.
I don't know if the error is related to my superio. The superio on board is not winbond w83627hf, which is the code is based on. So the pnp devices are never enabled.
In file /devices/root_device.c, scan_static_bus supposes to walk through the device tree and enable the PNP devices. I put a printk message. I don't think the PNP devices ever get initialized.
gin
On Fri, 2004-12-10 at 04:45, Gin wrote:
In file /devices/root_device.c, scan_static_bus supposes to walk through the device tree and enable the PNP devices. I put a printk message. I don't think the PNP devices ever get initialized.
What is your southbridge (LPC) again ? I guess you LPC bridge does not have scan_static_bus is its device:scan_bus() method. The other possiblitiy is you did not list those PNP devices as 'sub' devices of the LPC bridge.
On Fri, 10 Dec 2004, Li-Ta Lo wrote:
What is your southbridge (LPC) again ? I guess you LPC bridge does not have scan_static_bus is its device:scan_bus() method. The other possiblitiy is you did not list those PNP devices as 'sub' devices of the LPC bridge.
Ollie, it is worse than that, Gin needs to rewrite his mainboard config file. I am not sure what mainboard he has any more.
ron
What is your southbridge (LPC) again ? I guess you LPC bridge does not have scan_static_bus is its device:scan_bus() method.
I guess you are correct. So the PNP devices are there but didn't get looped through. But that's in the chip_op of the LPC bridge. It should be fixed in the code??
Ron, I did change the board config file for my target board. Here is my platform: North Bridge: E7501 South Bridge: ICH3 - S SuperIO: SMSC(LPC47B27x)
The code I am based on right now is ICH5 and Winbond w83627hf. Some Dev ID of ICH5 and ICH3-s are different. LPC bridge is one of them. Don't know if it matters?
Is there code for ICH3-s and SMSC superIO that I can use? Otherwise I will need to modify from the code I have now.
gin
On Sat, 11 Dec 2004, Gin wrote:
Ron, I did change the board config file for my target board. Here is my platform: North Bridge: E7501 South Bridge: ICH3 - S SuperIO: SMSC(LPC47B27x)
The code I am based on right now is ICH5 and Winbond w83627hf. Some Dev ID of ICH5 and ICH3-s are different. LPC bridge is one of them. Don't know if it matters?
I think it matters ...
ron
I got the keyboard controller problem fixed by enabling Keyboard separately (Not through the PNP devices list). Since now the PNP devices don't get enabled at all. For now it's ok because we need only serial com port and keyboard. But I will love to have the code for SMSC if you have one available. Thanks.
Now linux kernel boots fine except for one problem. It is extremely slow after this line "Red Hat nash version 3.4.42 starting" It displays each character slowly including what I typed from the keyboard(over serial console). It is very slow all the way to linux command prompt. I think it might have something to do with the routing table. I haven't changed much of mptable.c which is specific for another board. I couldn't think of anything else.
gin ===================================================== Red Hat nash version 3.4.42 starting Loading jbd.o module Loading ext3.o module Mounting /proc filesystem Creating block devices Creating root device Mounting root filesystem Freeing unused kernel memory: 132k freed
INIT: version 2.84 booting
Welcome to RedEntering runlevel: 3 : ========================================================= :
one possibility is that you are getting no serial interrupts, so the serial I/O is happening only very rarely.
You're going to need to fix your linuxbios burning up so that it is built correctly.
One question, again, as I forget: what mobo is this?
ron
I hope you did not modify static.c?
I did. I did change the dev_root chip_op to 0 otherwise it won't execute the default root op.
I don't know if the error is related to my superio. The superio on board is not winbond w83627hf, which is the code is based on. So the pnp devices are never enabled.
In file /devices/root_device.c, scan_static_bus supposes to walk through the device tree and enable the PNP devices. I put a printk message. I don't think the PNP devices ever get initialized.
gin
On Fri, 10 Dec 2004, Gin wrote:
I did. I did change the dev_root chip_op to 0 otherwise it won't execute the default root op.
you should never modify that file. Need to modify it indicates a configuraiton error.
I don't know if the error is related to my superio. The superio on board is not winbond w83627hf, which is the code is based on. So the pnp devices are never enabled.
you need to modify the mainboard spec, then. You're going at this from the wrong direction.
ron
On Thu, 9 Dec 2004, Gin wrote:
Linuxbios successfully loads the payload FILO which brings up Linux kernel. But the kernel hangs while waiting for a timer interrupt. See below. I guess the interrupt table is not correct.
yes, it's a bad IRQ or MP table or both.
We have tools to extract them from the standard bios, see the util tree.
ron