Dear List Members,
I tried to get LinuxBIOS Rev 2163 running on an VIA EPIA-ML6000EA Board using the EPIA-M target. The kernel is on /dev/hda1 of an IDE harddisk.
After building the rom image vgabios+linuxbios[filo] I did the following:
Boot factory BIOS Remove BIOS chip Insert Test chip Write linuxbios.rom image to flash Reboot, it booted, network worked, but vga output failed Reboot, it booted, network worked, but vga output failed Switched off power Switched on power Graphic output totally fails and kernel panic occurs, my LinuxBIOS.rom does not boot on its own anymore.
Maybe this has something to do with the VGA Bios, but I don't know what the reason could be?
I extracted the VGA Bios from the running system with original BIOS with the following command and get an video.bios.bin with the 55 aa in the first two bytes: dd if=/dev/mem of=/video.bios.bin bs=65536 count=1 skip=12 At some other location I read something about other weird dd parameters.
The resulting vga image from /dev/mem looked as follows:
$ ls -l video.bios.bin -rw-r--r-- 1 pada pada 65536 2006-01-23 10:31 video.bios.bin
$ file video.bios.bin video.bios.bin: BIOS (ia32) ROM Ext. IBM comp. Video (118*512)
$ hd video.bios.bin | head 00000000 55 aa 76 e9 ac 89 90 1b 82 ea 74 8d 00 00 00 00 |Uv....t.....| 00000010 00 00 00 00 00 00 00 00 44 00 a5 37 c5 00 49 42 |........D.7.IB| 00000020 4d 20 43 4f 4d 50 41 54 49 42 4c 45 42 43 50 4f |M COMPATIBLEBCPO| 00000030 53 54 00 00 18 00 30 34 2f 30 38 2f 30 34 00 09 |ST....04/08/04..| 00000040 00 c0 c6 00 50 43 49 52 06 11 22 31 00 00 18 00 |..PCIR.."1....| 00000050 00 00 00 03 40 00 51 01 00 80 00 00 00 01 20 20 |....@.Q....... | 00000060 20 56 49 41 20 54 65 63 68 2e 20 49 6e 63 2e 20 | VIA Tech. Inc. | 00000070 56 54 33 31 32 33 20 20 20 4d 6f 62 69 6c 65 20 |VT3123 Mobile | 00000080 20 56 54 31 36 32 32 90 c2 00 40 56 65 72 34 30 | VT1622..@Ver40| 00000090 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 00 | ....|
Is this VGA Bios Image correct? I hacked the Makefile to prepend vga.bios.bin to the bios image (as described in the VIA EPIA-M howto)
Now I get a kernel panic with the following output on ttyS0 and the system hangs.
And Ideas what I could try to prevent the kernel panic?
Here's the full console output from null modem connection on ttyS0:
LinuxBIOS-1.1.8.0Fallback Mon Jan 23 11:24:51 CET 2006 starting... Enabling mainboard devices Enabling shadow ram vt8623 init starting Detecting Memory Number of Banks 04 Number of Rows 0d Priamry DRAM width08 No Columns 0a MA type e0 Bank 0 (*16 Mb) 10 No Physical Banks 02 Total Memory (*16 Mb) 20 CAS Supported 2.5 Cycle time at CL X (nS)50 Cycle time at CL X-0.5 (nS)00 Cycle time at CL X-1 (nS)00 Starting at CAS 2.5 tRP 48 tRCD 48 tRAS 28 Low Bond 00 High Bondc3 Setting DQS delay82vt8623 done 00:06 11 23 31 06 00 30 22 00 00 00 06 00 00 00 00 10:08 00 00 d0 00 00 00 00 00 00 00 00 00 00 00 00 20:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30:00 00 00 00 a0 00 00 00 00 00 00 00 00 00 00 00 40:00 18 88 80 82 44 00 00 18 99 88 80 82 44 00 00 50:c8 de cf 88 e0 07 00 00 e0 00 10 20 20 20 00 00 60:02 ff 00 30 e6 32 01 24 42 2d 43 58 84 55 00 00 70:82 48 00 01 01 08 50 00 01 00 00 00 00 00 12 02 80:0f 64 00 00 80 00 00 00 02 00 00 00 00 00 00 00 90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0:02 c0 20 00 07 02 00 1f 04 00 00 00 2f 02 04 00 b0:00 00 00 00 80 00 00 00 48 00 00 04 00 00 00 00 c0:01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 d0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0:00 dd 00 01 00 00 01 00 40 00 00 00 00 00 00 00 f0:00 00 00 00 00 00 12 13 00 00 00 00 00 00 00 00 AGP Doing MTRR init. Copying LinuxBIOS to ram. Jumping to LinuxBIOS. LinuxBIOS-1.1.8.0Fallback Mon Jan 23 11:24:51 CET 2006 booting... clocks_per_usec: 1495 Enumerating buses... Finding PCI configuration type. PCI: Using configuration type 1 PCI_DOMAIN: 0000 enabled APIC_CLUSTER: 0 enabled PCI: pci_scan_bus for bus 0 PCI: 00:00.0 [1106/3123] enabled PCI: 00:01.0 [1106/b091] enabled Disabling static device: PCI: 00:0a.0 Disabling static device: PCI: 00:0a.1 In vt8235_enable 1106 3038. PCI: 00:10.0 [1106/3038] enabled In vt8235_enable 1106 3038. PCI: 00:10.1 [1106/3038] enabled In vt8235_enable 1106 3038. PCI: 00:10.2 [1106/3038] enabled In vt8235_enable 1106 3104. PCI: 00:10.3 [1106/3104] enabled In vt8235_enable 1106 3177. Initialising Devices PCI: 00:11.0 [1106/3177] enabled In vt8235_enable 1106 0571. PCI: 00:11.1 [1106/0571] enabled In vt8235_enable 1106 3059. PCI: 00:11.5 [1106/3059] enabled In vt8235_enable ffff ffff. In vt8235_enable 1106 3065. PCI: 00:12.0 [1106/3065] enabled PCI: pci_scan_bus for bus 1 PCI: 01:00.0 [1106/3122] enabled PCI: pci_scan_bus returning with max=01 vt1211 enabling PNP devices. PNP: 002e.0 enabled vt1211 enabling PNP devices. PNP: 002e.1 enabled vt1211 enabling PNP devices. PNP: 002e.2 enabled vt1211 enabling PNP devices. PNP: 002e.3 enabled vt1211 enabling PNP devices. PNP: 002e.b enabled PCI: pci_scan_bus returning with max=01 done Allocating resources... Reading resources... Done reading resources. Setting resources... I would set ram size to 0x80000 Kbytes PCI: 00:10.0 20 <- [0x0000001800 - 0x000000181f] io PCI: 00:10.1 20 <- [0x0000001820 - 0x000000183f] io PCI: 00:10.2 20 <- [0x0000001840 - 0x000000185f] io PCI: 00:10.3 10 <- [0x00febff000 - 0x00febff0ff] mem PNP: 002e.0 60 <- [0x00000003f0 - 0x00000003f7] io PNP: 002e.0 70 <- [0x0000000006 - 0x0000000006] irq PNP: 002e.0 74 <- [0x0000000002 - 0x0000000002] drq PNP: 002e.1 60 <- [0x0000000378 - 0x000000037f] io PNP: 002e.1 70 <- [0x0000000007 - 0x0000000007] irq PNP: 002e.1 74 <- [0x0000000003 - 0x0000000003] drq PNP: 002e.2 60 <- [0x00000003f8 - 0x00000003ff] io PNP: 002e.2 70 <- [0x0000000004 - 0x0000000004] irq PNP: 002e.3 60 <- [0x00000002f8 - 0x00000002ff] io PNP: 002e.3 70 <- [0x0000000003 - 0x0000000003] irq PNP: 002e.b 60 <- [0x000000ec00 - 0x000000ecff] io PCI: 00:11.1 20 <- [0x0000001860 - 0x000000186f] io PCI: 00:11.5 10 <- [0x0000001000 - 0x00000010ff] io PCI: 00:12.0 10 <- [0x0000001400 - 0x00000014ff] io PCI: 00:12.0 14 <- [0x00fec00000 - 0x00fec000ff] mem Done setting resources. Done allocating resources. Enabling resourcess... PCI: 00:00.0 cmd <- 146 PCI: 00:01.0 bridge ctrl <- 000f PCI: 00:01.0 cmd <- 147 PCI: 01:00.0 cmd <- 140 PCI: 00:10.0 subsystem <- 00/00 PCI: 00:10.0 cmd <- 141 PCI: 00:10.1 subsystem <- 00/00 PCI: 00:10.1 cmd <- 141 PCI: 00:10.2 subsystem <- 00/00 PCI: 00:10.2 cmd <- 141 PCI: 00:10.3 subsystem <- 00/00 PCI: 00:10.3 cmd <- 142 PCI: 00:11.0 cmd <- 147 PNP: 002e.0 - enabling PNP: 002e.1 - enabling PNP: 002e.2 - enabling PNP: 002e.3 - enabling PNP: 002e.b - enabling PCI: 00:11.1 cmd <- 147 PCI: 00:11.5 subsystem <- 00/00 PCI: 00:11.5 cmd <- 141 PCI: 00:12.0 cmd <- 1c3 done. Initializing devices... Root Device init PCI: 00:10.0 init PCI: 00:10.1 init PCI: 00:10.2 init PCI: 00:10.3 init PCI: 00:11.0 init vt8235 init RTC Init Invalid CMOS LB checksum pci_routing_fixup: dev is 00011040 setting firewire setting usb Assigning IRQ 5 to 0:10.0 Readback = 5 pci_level_irq: lower order bits are wrong: want 0x0, got 0x20 Assigning IRQ 9 to 0:10.1 Readback = 9 pci_level_irq: lower order bits are wrong: want 0x0, got 0x20 Assigning IRQ 9 to 0:10.2 Readback = 9 pci_level_irq: lower order bits are wrong: want 0x0, got 0x20 Assigning IRQ 5 to 0:10.3 Readback = 5 pci_level_irq: lower order bits are wrong: want 0x0, got 0x20 setting vt8235 Assigning IRQ 5 to 0:11.1 Readback = 5 pci_level_irq: lower order bits are wrong: want 0x0, got 0x20 Assigning IRQ 9 to 0:11.5 Readback = 9 pci_level_irq: lower order bits are wrong: want 0x0, got 0x20 setting ethernet Assigning IRQ 5 to 0:12.0 Readback = 5 pci_level_irq: lower order bits are wrong: want 0x0, got 0x20 setting vga Assigning IRQ 5 to 1:0.0 Readback = 5 pci_level_irq: lower order bits are wrong: want 0x0, got 0x20 setting pci slot setting cardbus slot setting riser slot PNP: 002e.0 init PNP: 002e.1 init PNP: 002e.2 init PNP: 002e.3 init PNP: 002e.b init PCI: 00:11.1 init Enabling VIA IDE. ide_init: enabling compatibility IDE addresses enables in reg 0x42 0x0 enables in reg 0x42 read back as 0x0 enables in reg 0x40 0x13 enables in reg 0x40 read back as 0x13 enables in reg 0x9 0x8a enables in reg 0x9 read back as 0x8a command in reg 0x4 0x7 command in reg 0x4 reads back as 0x7 PCI: 00:11.5 init PCI: 00:12.0 init Configuring VIA Rhine LAN APIC_CLUSTER: 0 init Initializing CPU #0 CPU: vendor Centaur device 698 Enabling cache
Setting fixed MTRRs(0-88) type: UC Setting fixed MTRRs(0-16) Type: WB Setting fixed MTRRs(24-88) Type: WB DONE fixed MTRRs Setting variable MTRR 0, base: 0MB, range: 256MB, type WB Setting variable MTRR 1, base: 256MB, range: 128MB, type WB Setting variable MTRR 2, base: 384MB, range: 64MB, type WB Setting variable MTRR 3, base: 448MB, range: 32MB, type WB DONE variable MTRRs Clear out the extra MTRR's
MTRR check Fixed MTRRs : Enabled Variable MTRRs: Enabled
Disabling local apic...done. CPU #0 Initialized PCI: 00:00.0 init VT8623 random fixup ... Frame buffer at d0000000 PCI: 00:01.0 init VT8623 AGP random fixup ... PCI: 01:00.0 init VGA random fixup ... INSTALL REAL-MODE IDT DO THE VGA BIOS found VGA: vid=1106, did=3122 rom base, size: fffc0000 write_protect_vgabios bus/devfn = 0x100 biosint: # 0x6, eax 0x5f53 ebx 0x101 ecx 0x19f88 edx 0xe093 biosint: ebp 0x19090 esp 0x39d8 edi 0xfa90 esi 0x1a539 biosint: ip 0xc763 cs 0xf000 flags 0x202 biosint: Oops, exception 6 biosint: Bailing out biosint: # 0x10, eax 0x4f14 ebx 0x18003 ecx 0x1 edx 0x0 biosint: ebp 0x19fa8 esp 0xffa edi 0x0 esi 0xffff725e biosint: ip 0x8f7e cs 0x0 flags 0x46 BIOSINT: Unsupport int #0x10 Devices initialized Copying IRQ routing tables to 0xf0000...done. Verifing copy of IRQ routing tables at 0xf0000...done Checking IRQ routing table consistency... check_pirq_routing_table() - irq_routing_table located at: 0x000f0000 done. ACPI: Writing ACPI tables at f0400... ACPI: * FACS ACPI: * DSDT @ 000f049e Length 3f0 ACPI: * FADT ACPI: added table 1/5 Length now 40 ACPI: done. Moving GDT to 0x500...ok Wrote linuxbios table at: 00000530 - 00000b5c checksum bcdc
Welcome to elfboot, the open sourced starter. January 2002, Eric Biederman. Version 1.3
33:stream_init() - rom_stream: 0xfffd0000 - 0xfffeffff Found ELF candiate at offset 0 New segment addr 0x100000 size 0x23fc0 offset 0xc0 filesize 0x9f48 (cleaned up) New segment addr 0x100000 size 0x23fc0 offset 0xc0 filesize 0x9f48 New segment addr 0x123fc0 size 0x48 offset 0xa020 filesize 0x48 (cleaned up) New segment addr 0x123fc0 size 0x48 offset 0xa020 filesize 0x48 Dropping non PT_LOAD segment Dropping non PT_LOAD segment Loading Segment: addr: 0x0000000000100000 memsz: 0x0000000000023fc0 filesz: 0x0000000000009f48 Clearing Segment: addr: 0x0000000000109f48 memsz: 0x000000000001a078 Loading Segment: addr: 0x0000000000123fc0 memsz: 0x0000000000000048 filesz: 0x0000000000000048 Jumping to boot code at 0x107c80 FILO version 0.4.2 (pada@vranx) Mon Jan 23 10:46:07 CET 2006 boot: hda1:/vmlinuz root=/dev/hda1 console=tty0 console=ttyS0,115200 hda: LBA 6499MB: IBM-DHEA-36481 hdb: ATAPI: TOSHIBA CD-ROM XM-6602B Mounted ext2fs Found Linux version 2.6.14.2static (pada@vranx) #3 Thu Jan 26 12:43:13 CET 2006 bzImage. Loading kernel... ok Jumping to entry point... Linux version 2.6.14.2static (pada@vranx) (gcc-Version 3.3.5 (Debian 1:3.3.5-13)) #3 Thu Jan 26 12:43:13 CET 2006 BIOS-provided physical RAM map: BIOS-e820: 0000000000000ba4 - 00000000000a0000 (usable) BIOS-e820: 0000000000100000 - 000000001e000000 (usable) 480MB LOWMEM available. DMI not present. ACPI: PM-Timer IO Port: 0x408 Allocating PCI resources starting at 20000000 (gap: 1e000000:e2000000) Built 1 zonelists Kernel command line: root=/dev/hda1 console=tty0 console=ttyS0,115200 No local APIC present or hardware disabled Initializing CPU#0 PID hash table entries: 2048 (order: 11, 32768 bytes) Detected 666.401 MHz processor. Using pmtmr for high-res timesource Console: colour dummy device 80x25 Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) Memory: 480144k/491520k available (4492k kernel code, 10892k reserved, 1495k data, 248k init, 0k highmem) Checking if this processor honours the WP bit even in supervisor mode... Ok. Calibrating delay using timer specific routine.. 1334.55 BogoMIPS (lpj=2669102) Mount-cache hash table entries: 512 CPU: L1 I Cache: 64K (32 bytes/line), D cache 64K (32 bytes/line) CPU: L2 Cache: 64K (32 bytes/line) mtrr: v2.0 (20020519) CPU: Centaur VIA Nehemiah stepping 08 Enabling fast FPU save and restore... done. Enabling unmasked SIMD FPU exception support... done. Checking 'hlt' instruction... OK. ACPI: setting ELCR to 0020 (from 0220) NET: Registered protocol family 16 ACPI: bus type pci registered Unable to handle kernel NULL pointer dereference at virtual address 00000000 printing eip: c00fa955 *pde = 00000000 Oops: 0000 [#1] CPU: 0 EIP: 0060:[<c00fa955>] Not tainted VLI EFLAGS: 00010046 (2.6.14.2static) EIP is at 0xc00fa955 eax: 49435000 ebx: 000f0000 ecx: 0400d5b4 edx: 0000a960 esi: 00000000 edi: c0675d64 ebp: 49435024 esp: c149ff32 ds: 007b es: 007b ss: 0068 Process swapper (pid: 1, threadinfo=c149e000 task=c144aa50) Stack: 54ba0046 0060c044 00010000 1b080000 000ac073 02960000 42db0000 a4a0c012 0000c00f 00000000 00000000 553f0000 5024c044 674e4943 4f6ac010 f240c010 0000c00e 00000000 00000000 00000000 00000000 00000000 007b0000 a4a00000 Call Trace: Code: 00 00 32 c0 66 9d cb 3d 24 50 43 49 77 17 0a db 75 17 bb 00 00 0f 00 ba 60 a9 00 00 b9 b4 d5 00 04 32 c0 eb 06 b0 80 eb 02 b0 81 <6e> 9d cb 87 db 87 db 87 db 87 db 66 9c fa 3c 01 75 0a e8 9c 00 <0>Kernel panic - not syncing: Attempted to kill init!
Thanks for any help, Daniel