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