sorry if this is off-topic for this list:
I just started trying linuxbios because I am unhappy with how long it takes the standard bios to boot over pxe (though it does work nicely).
I have built linuxbios from cvs from 8-apr and used etherboot 5.0.8 as the payload. This works and etherboot succesfully loads my kernel (2.4.22) from my tftp server. The kernel however, fails to open eth0 and so the nfs mount of my root parition fails, etc.
The exact same kernel with (almost) identical command line, booted over pxe works just fine. I diff'd the output of the kernel startup and found a few things that might be significant:
linuxBIOS/etherboot:
via-rhine.c:v1.10-LK1.1.19 July-12-2003 Written by Donald Becker http://www.scyld.com/network/via-rhine.html PCI: No IRQ known for interrupt pin A of device 00:12.0. Please try using pci=biosirq. eth0: VIA VT6102 Rhine-II at 0x1400, 00:40:63:d4:17:70, IRQ 0. eth0: MII PHY found at address 1, status 0x786d advertising 05e1 Link 45e1.
Via BIOS/PXE:
via-rhine.c:v1.10-LK1.1.19 July-12-2003 Written by Donald Becker http://www.scyld.com/network/via-rhine.html eth0: VIA VT6102 Rhine-II at 0xec00, 00:40:63:d4:17:70, IRQ 5. eth0: MII PHY found at address 1, status 0x786d advertising 05e1 Link 45e1.
I say "almost" exact same command line because PXE appends "BOOT_IMA" to it, not sure why.
I've googled as much as I know how and have not found anything relevent. If anyone has any ideas I would appreciate it.
Thanks, Larry Matter
Uh oh, I think this was another consequence of a broken pci-irq.c file in the Linux source. If you look in your arch/i386/kernel/pci-irq.c, get rid of the xor in the pirq_cyrix_get and pirq_cyrix_set functions like so: static int pirq_cyrix_get(struct pci_dev *router, struct pci_dev *dev, i nt pirq) { return read_config_nybble(router, 0x5C, (pirq-1)/*^1*/); }
static int pirq_cyrix_set(struct pci_dev *router, struct pci_dev *dev, i nt pirq, int irq) { write_config_nybble(router, 0x5C, (pirq-1)/*^1*/, irq); return 1; }
Recompile your kernel, replace your image, and see what happens.
On Thu, 15 Apr 2004, Larry Matter wrote:
sorry if this is off-topic for this list:
I just started trying linuxbios because I am unhappy with how long it takes the standard bios to boot over pxe (though it does work nicely).
I have built linuxbios from cvs from 8-apr and used etherboot 5.0.8 as the payload. This works and etherboot succesfully loads my kernel (2.4.22) from my tftp server. The kernel however, fails to open eth0 and so the nfs mount of my root parition fails, etc.
The exact same kernel with (almost) identical command line, booted over pxe works just fine. I diff'd the output of the kernel startup and found a few things that might be significant:
linuxBIOS/etherboot:
via-rhine.c:v1.10-LK1.1.19 July-12-2003 Written by Donald Becker http://www.scyld.com/network/via-rhine.html PCI: No IRQ known for interrupt pin A of device 00:12.0. Please try using pci=biosirq. eth0: VIA VT6102 Rhine-II at 0x1400, 00:40:63:d4:17:70, IRQ 0. eth0: MII PHY found at address 1, status 0x786d advertising 05e1 Link 45e1.
Via BIOS/PXE:
via-rhine.c:v1.10-LK1.1.19 July-12-2003 Written by Donald Becker http://www.scyld.com/network/via-rhine.html eth0: VIA VT6102 Rhine-II at 0xec00, 00:40:63:d4:17:70, IRQ 5. eth0: MII PHY found at address 1, status 0x786d advertising 05e1 Link 45e1.
I say "almost" exact same command line because PXE appends "BOOT_IMA" to it, not sure why.
I've googled as much as I know how and have not found anything relevent. If anyone has any ideas I would appreciate it.
Thanks, Larry Matter _______________________________________________ Linuxbios mailing list Linuxbios@clustermatic.org http://www.clustermatic.org/mailman/listinfo/linuxbios
On Thu, 15 Apr 2004, Hendricks David W. wrote:
Uh oh, I think this was another consequence of a broken pci-irq.c file in the Linux source. If you look in your arch/i386/kernel/pci-irq.c, get rid of the xor in the pirq_cyrix_get and pirq_cyrix_set functions like so: static int pirq_cyrix_get(struct pci_dev *router, struct pci_dev *dev, i nt pirq) { return read_config_nybble(router, 0x5C, (pirq-1)/*^1*/); }
static int pirq_cyrix_set(struct pci_dev *router, struct pci_dev
*dev, i nt pirq, int irq) { write_config_nybble(router, 0x5C, (pirq-1)/*^1*/, irq); return 1; }
Recompile your kernel, replace your image, and see what happens.
I don't think this is it, since cyrix is geode stuff.
I am not sure what it is though. Do you want to send David and me the whole serial output?
ron
On Thu, 15 Apr 2004, Larry Matter wrote:
sorry if this is off-topic for this list:
I just started trying linuxbios because I am unhappy with how long it takes the standard bios to boot over pxe (though it does work nicely).
I have also just built a linuxbios, and it gets to filo and is fine ... but I STILL have the damned 'half baud rate' bug for anyone who has the fix.
Dave Ashley fixed this I think.
via-rhine.c:v1.10-LK1.1.19 July-12-2003 Written by Donald Becker http://www.scyld.com/network/via-rhine.html PCI: No IRQ known for interrupt pin A of device 00:12.0. Please try using pci=biosirq. eth0: VIA VT6102 Rhine-II at 0x1400, 00:40:63:d4:17:70, IRQ 0. eth0: MII PHY found at address 1, status 0x786d advertising 05e1 Link 45e1.
the IRQ is not getting set correctly, I will look at this too.
ron
but I STILL have the damned 'half baud rate' bug for anyone who has the fix.
Dave Ashley fixed this I think.
I'm *so* glad you mentioned that. It was driving me nucking futs. I found a post from Dave that at least mentions how to get around it. Now I can send you that output...
Larry
p.s., here is the post if you joined the list late like me: http://www.clustermatic.org/pipermail/linuxbios/2003-December/006195.html
I even found the fix Dave posted, in C, and am figuring out the best way to apply it.
ron