Discussion:
Epia-MII VGA not working and PCMCIA rebooting
Ignacio Verona
2004-05-16 19:47:30 UTC
Permalink
Hi! Linuxbios is working prety well now on my Epia mII 10k, but a few
problems:

1. I can't get VGA to work. I've extracted it from a original-bios booted
system with
dd if=/proc/kcore of=video.bios.bin bs=1 count=65536 skip=790528
and then appended it to my filo payload like the HOWTO says I've to do,
and modified the config file with all the options in EPIA howto, but
nothing shows up on my monitor (tft screen, has it something to do with?)

2. If I boot up my mobo without the PCMCIA/CF module on, it boots properly
but, if I put it on and try to boot, linux bios does somethings and then
reboot, forever. any known bug about this?

thanks!
Ignacio Verona
2004-05-16 20:07:31 UTC
Permalink
Here is the complete log of my bootup process, from bios to log-in... I
can't understand so much of the bios part :(

LinuxBIOS-1.0.0 Sun May 16 23:28:22 CEST 2004 starting...
80 08 07 0d 0a 02 40 00 04 60 70 00 82 08 00 01
0e ff 0c ff ff ff ff ff ff ff ff 48 30 ff ff 40
75 75 45 45 00 00 00 00 00 3c 48 30 2d 55 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01
c1 49 4e 46 49 4e 45 4f 45 36 34 44 36 34 33 32
30 47 55 36 42 20 20 20 20 20 20 01 09 03 10 02
27 e6 18 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Copying LinuxBIOS to ram.
Jumping to LinuxBIOS.
LinuxBIOS-1.0.0 Sun May 16 23:28:22 CEST 2004 booting...
Finding PCI configuration type.
PCI: Using configuration type 1
Scanning PCI bus...PCI: pci_scan_bus for bus 0
PCI: 00:00.0 [1106/3123]
PCI: 00:01.0 [1106/b091]
PCI: 00:10.0 [1106/3038]
PCI: 00:10.1 [1106/3038]
PCI: 00:10.2 [1106/3038]
PCI: 00:10.3 [1106/3104]
PCI: 00:11.0 [1106/3177]
PCI: 00:11.1 [1106/0571]
PCI: 00:11.5 [1106/3059]
PCI: 00:12.0 [1106/3065]
PCI: pci_scan_bus for bus 1
PCI: 01:00.0 [1106/3122]
PCI: pci_scan_bus returning with max=01
PCI: pci_scan_bus returning with max=01
done
Allocating PCI resources...
PCI: 00:00.0 register 10(00000008), read-only ignoring it
PCI: 00:00.0 register 10(00000008), read-only ignoring it
PCI: 00:00.0 register 10(00000008), read-only ignoring it
PCI: 00:00.0 register 10(00000008), read-only ignoring it
ASSIGN RESOURCES, bus 0
PCI: 00:01.0 1c <- [0x00001000 - 0x00000fff] bus 1 io
PCI: 00:01.0 24 <- [0xf8000000 - 0xfbffffff] bus 1 prefmem
PCI: 00:01.0 20 <- [0xfc000000 - 0xfcffffff] bus 1 mem
ASSIGN RESOURCES, bus 1
PCI: 01:00.0 10 <- [0xf8000000 - 0xfbffffff] prefmem
PCI: 01:00.0 14 <- [0xfc000000 - 0xfcffffff] mem
ASSIGNED RESOURCES, bus 1
PCI: 00:10.0 20 <- [0x00001800 - 0x0000181f] io
PCI: 00:10.1 20 <- [0x00001820 - 0x0000183f] io
PCI: 00:10.2 20 <- [0x00001840 - 0x0000185f] io
PCI: 00:10.3 10 <- [0xfd000000 - 0xfd0000ff] mem
PCI: 00:11.1 20 <- [0x00001860 - 0x0000186f] io
PCI: 00:11.5 10 <- [0x00001000 - 0x000010ff] io
PCI: 00:12.0 10 <- [0x00001400 - 0x000014ff] io
PCI: 00:12.0 14 <- [0xfd001000 - 0xfd0010ff] mem
ASSIGNED RESOURCES, bus 0
Allocating VGA resource
done.
Enabling PCI resourcess...PCI: 00:00.0 cmd <- 06
PCI: 00:01.0 cmd <- 07
PCI: 00:10.0 cmd <- 01
PCI: 00:10.1 cmd <- 01
PCI: 00:10.2 cmd <- 01
PCI: 00:10.3 cmd <- 02
PCI: 00:11.0 cmd <- 07
PCI: 00:11.1 cmd <- 07
PCI: 00:11.5 cmd <- 01
PCI: 00:12.0 cmd <- 83
PCI: 01:00.0 cmd <- 03
done.
Initializing PCI devices...
PCI devices initialized
totalram: 96M
Initializing CPU #0
Enabling cache...
Setting fixed MTRRs(0-88) type: UC
Setting fixed MTRRs(0-16) type: WB
DONE fixed MTRRs
Setting variable MTRR 0, base: 0MB, range: 64MB, type WB
Setting variable MTRR 1, base: 64MB, range: 32MB, type WB
DONE variable MTRRs
Clear out the extra MTRR's
call intel_enable_fixed_mtrr()
call intel_enable_var_mtrr()
Leave setup_mtrrs
done.

Max cpuid index : 1
Vendor ID : CentaurHauls
Processor Type : 0x00
Processor Family : 0x06
Processor Model : 0x09
Processor Mask : 0x00
Processor Stepping : 0x05
Feature flags : 0x0380b13d


MTRR check
Fixed MTRRs : Enabled
Variable MTRRs: Enabled

Disabling local apic...done.
CPU #0 Initialized
Mainboard fixup
Final mainboard fixup
Southbridge fixup
setting firewire
setting usb
Assigning IRQ 11 to 0:10.0
Readback = 11
Assigning IRQ 10 to 0:10.1
Readback = 10
Assigning IRQ 12 to 0:10.2
Readback = 12
Assigning IRQ 5 to 0:10.3
Readback = 5
setting vt8235
Assigning IRQ 5 to 0:11.1
Readback = 5
Assigning IRQ 12 to 0:11.5
Readback = 12
setting ethernet
Assigning IRQ 11 to 0:12.0
Readback = 11
setting vga
Assigning IRQ 11 to 1:0.0
Readback = 11
setting pci slot
setting vt8235 slot
Assigning IRQ 5 to 0:11.1
Readback = 5
Assigning IRQ 12 to 0:11.5
Readback = 12
INSTALL REAL-MODE IDT
DO THE VGA BIOS
found VGA: vid=1106, did=3122
write_protect_vgabios
0x55 0xaa 0x70 0xe9 0xfc 0x7f 0x8b 0x1b 0x34 0xde 0xca 0x83 0x0 0x0 0x0
0x0 bus/
devfn = 0x100
biosint: # 0x15, eax 0x5f00 ebx 0x100 ecx 0x100 edx 0xa1ff
biosint: ebp 0x123a0 esp 0xff2 edi 0xe40c esi 0x12c04
biosint: ip 0x641c cs 0xc000 flags 0x46
biosint: # 0x1a, eax 0xb108 ebx 0x0 ecx 0x0 edx 0x3d5
biosint: ebp 0x123a0 esp 0xfcc edi 0xf6 esi 0x1c01b
biosint: ip 0x40f0 cs 0xc000 flags 0x46
0xb108: bus 0 devfn 0x0 reg 0xf6 val 0x11
biosint: # 0x15, eax 0x5f02 ebx 0x100 ecx 0x101 edx 0x3d5
biosint: ebp 0x123a0 esp 0xfdc edi 0x44 esi 0x1c01b
biosint: ip 0x6468 cs 0xc000 flags 0x46
biosint: # 0x15, eax 0x5f01 ebx 0xc01 ecx 0x5 edx 0x112
biosint: ebp 0x123a0 esp 0xfa4 edi 0x44 esi 0x1aacd
biosint: ip 0x6448 cs 0xc000 flags 0x46
biosint: # 0x15, eax 0x5f01 ebx 0xc01 ecx 0x5 edx 0x112
biosint: ebp 0x123a0 esp 0xfa4 edi 0x44 esi 0x1aacd
biosint: ip 0x6448 cs 0xc000 flags 0x46
biosint: # 0x15, eax 0x5f01 ebx 0xc01 ecx 0x5 edx 0x112
biosint: ebp 0x123a0 esp 0xf92 edi 0x44 esi 0x1aacd
biosint: ip 0x6448 cs 0xc000 flags 0x46
biosint: # 0x15, eax 0x5f02 ebx 0x300 ecx 0x1 edx 0x3d5
biosint: ebp 0x123a0 esp 0xfb8 edi 0x44 esi 0x1c01b
biosint: ip 0x6468 cs 0xc000 flags 0x46
biosint: # 0x15, eax 0x5f02 ebx 0x300 ecx 0x1 edx 0x3d5
biosint: ebp 0x123a0 esp 0xfb8 edi 0x44 esi 0x1c01b
biosint: ip 0x6468 cs 0xc000 flags 0x46
biosint: # 0x15, eax 0x5f02 ebx 0x300 ecx 0x1 edx 0x3d5
biosint: ebp 0x123a0 esp 0xfb8 edi 0x44 esi 0x1c01b
biosint: ip 0x6468 cs 0xc000 flags 0x46
biosint: # 0x15, eax 0x5f0f ebx 0x100 ecx 0x100 edx 0x3d5
biosint: ebp 0x123a0 esp 0xfee edi 0x44 esi 0x12c04
biosint: ip 0x651b cs 0xc000 flags 0x2
biosint: # 0x15, eax 0x5f02 ebx 0x0 ecx 0x1 edx 0x0
biosint: ebp 0x123a0 esp 0xfdc edi 0x44 esi 0x12c04
biosint: ip 0x6468 cs 0xc000 flags 0x46
biosint: # 0x15, eax 0x5f01 ebx 0xc01 ecx 0x700 edx 0x112
biosint: ebp 0x10fca esp 0xf8e edi 0xac51 esi 0x1aacd
biosint: ip 0x6448 cs 0xc000 flags 0x46
biosint: # 0xb8, eax 0x707 ebx 0x0 ecx 0x700 edx 0x0
biosint: ebp 0x10fca esp 0xfc0 edi 0xb880 esi 0x1010a
biosint: ip 0x188 cs 0xc000 flags 0x246
biosint: Unsupport int #0xb8
Checking IRQ routing tables...
/usr/src/freebios/src/arch/i386/lib/pirq_routing.c:
30:check_pirq_routing_tab
le() - irq_routing_table located at: 0x0000a400
done.
Copying IRQ routing tables to 0xf0000...done.
Verifing priq routing tables copy at 0xf0000...failed
Wrote linuxbios table at: 00000500 - 00000670 checksum e006

Welcome to elfboot, the open sourced starter.
January 2002, Eric Biederman.
Version 1.2

37:init_bytes() - zkernel_start:0xfffd0000 zkernel_mask:0x0000ffff
Found ELF candiate at offset 0
New segment addr 0x100000 size 0x20fb0 offset 0xa0 filesize 0x7000
(cleaned up) New segment addr 0x100000 size 0x20fb0 offset 0xa0 filesize
0x7000
New segment addr 0x120fc0 size 0x60 offset 0x70a0 filesize 0x60
(cleaned up) New segment addr 0x120fc0 size 0x60 offset 0x70a0 filesize 0x60
Dropping non PT_LOAD segment
Loading Segment: addr: 0x0000000000100000 memsz: 0x0000000000020fb0
filesz: 0x00
00000000007000
Clearing Segment: addr: 0x0000000000107000 memsz: 0x0000000000019fb0
Loading Segment: addr: 0x0000000000120fc0 memsz: 0x0000000000000060
filesz: 0x00
00000000000060
Jumping to boot code at 0x104c1c
FILO version 0.4 (***@AMBox) Sun May 16 11:57:40 CEST 2004
boot: hda1:/vmlinuz root=/dev/hda1 console=tty0 console=ttyS0,115200
hda: LBA 78GB: ST380021A
Mounted ext2fs
Found Linux version 2.6.5 (***@AMBox) #5 Sun May 16 23:27:43 CEST 2004
bzImage.
Loading kernel... ok
Jumping to entry point...
Linux version 2.6.5 (***@AMBox) (gcc version 2.95.4 20011002 (Debian
prerelease
)) #5 Sun May 16 23:27:43 CEST 2004
BIOS-provided physical RAM map:
BIOS-e820: 00000000000006d8 - 00000000000a0000 (usable)
BIOS-e820: 0000000000100000 - 0000000006000000 (usable)
96MB LOWMEM available.
On node 0 totalpages: 24576
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 20480 pages, LIFO batch:5
HighMem zone: 0 pages, LIFO batch:1
DMI not present.
ACPI: Unable to locate RSDP
Built 1 zonelists
Kernel command line: root=/dev/hda1 console=tty0 console=ttyS0,115200
Initializing CPU#0
PID hash table entries: 512 (order 9: 4096 bytes)
Detected 999.655 MHz processor.
Using tsc for high-res timesource
Console: colour dummy device 80x25
Memory: 94924k/98304k available (1201k kernel code, 2860k reserved, 470k
data, 8
8k init, 0k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay loop... 1974.27 BogoMIPS
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: L1 I Cache: 64K (32 bytes/line), D cache 64K (32 bytes/line)
CPU: L2 Cache: 64K (32 bytes/line)
CPU: Centaur VIA Nehemiah stepping 05
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
NET: Registered protocol family 16
PCI: Using configuration type 1
Linux Kernel Card Services
options: [pci] [cardbus]
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
udf: registering filesystem
Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing disabled
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
via-rhine.c:v1.10-LK1.1.19-2.5 July-12-2003 Written by Donald Becker
http://www.scyld.com/network/via-rhine.html
eth0: VIA VT6102 Rhine-II at 0x1400, 00:40:63:d5:8b:8e, IRQ 11.
eth0: MII PHY found at address 1, status 0x7869 advertising 05e1 Link 45e1.
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
hda: ST380021A, ATA DISK drive
Using anticipatory io scheduler
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: max request size: 128KiB
hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=65535/16/63
hda: hda1 hda2 hda3
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
input: AT Translated Set 2 keyboard on isa0060/serio0
NET: Registered protocol family 2
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 8192 bind 8192)
NET: Registered protocol family 1
NET: Registered protocol family 17
EXT2-fs warning (device hda1): ext2_fill_super: mounting ext3 filesystem
as ext2

VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 88k freed
INIT: version 2.84 booting
Loading /etc/console/boottime.kmap.gz
Activating swap.
Adding 240964k swap on /dev/hda2. Priority:-1 extents:1
Checking root file system...
fsck 1.27 (8-Mar-2002)
/dev/hda1: clean, 62343/1221600 files, 250294/2441872 blocks
System time was Sun May 16 21:29:54 UTC 2004.
Setting the System Clock using the Hardware Clock as reference...
System Clock set. System local time is now Sun May 16 21:29:54 UTC 2004.
Checking all file systems...
fsck 1.27 (8-Mar-2002)
Setting kernel variables.
Loading the saved-state of the serial devices...
/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
ttyS1: LSR safety check engaged!
ttyS1: LSR safety check engaged!
/dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A
Mounting local filesystems...
nothing was mounted
Running 0dns-down to make sure resolv.conf is ok...done.
Cleaning: /etc/network/ifstate.
Setting up IP spoofing protection: rp_filter.
Configuring network interfaces: eth0: Setting full-duplex based on MII #1
link p
artner capability of 45e1.
done.
Starting portmap daemon: portmap.
R
Setting the System Clock using the Hardware Clock as reference...
System Clock set. Local time: Sun May 16 23:29:57 CEST 2004

Cleaning: /tmp /var/lock /var/run.
Initializing random number generator... done.
Recovering nvi editor sessions... done.
INIT: Entering runlevel: 2
Starting system log daemon: syslogd.
Starting kernel log daemon: klogd.
Starting internet superserver: inetd.
Starting MySQL database server: mysqld.
Starting PCMCIA services: cardmgr.
Starting OpenBSD Secure Shell server: sshd.
Starting deferred execution scheduler: atd.
Starting periodic command scheduler: cron.

Debian GNU/Linux 3.0 AMBox ttyS0

AMBox login:
ron minnich
2004-05-17 02:08:32 UTC
Permalink
Post by Ignacio Verona
biosint: # 0xb8, eax 0x707 ebx 0x0 ecx 0x700 edx 0x0
biosint: ebp 0x10fca esp 0xfc0 edi 0xb880 esi 0x1010a
biosint: ip 0x188 cs 0xc000 flags 0x246
biosint: Unsupport int #0xb8
b8? Anybody know what that one is?

ron
Nathanael Noblet
2004-05-17 15:18:51 UTC
Permalink
Post by ron minnich
Post by Ignacio Verona
biosint: # 0xb8, eax 0x707 ebx 0x0 ecx 0x700 edx 0x0
biosint: ebp 0x10fca esp 0xfc0 edi 0xb880 esi 0x1010a
biosint: ip 0x188 cs 0xc000 flags 0x246
biosint: Unsupport int #0xb8
b8? Anybody know what that one is?
It has something to do with VGA, I had similar problems (have been back
to them so they are most likely still there). The Unsupported int
number would change for me. If I powered down (hold power button down)
the machine it would start up properly the next time. It wasn't
something that ALWAYS happened, but fairly often it would.
--
Nathanael D. Noblet
Gnat Solutions
412 - 135 Gorge Road E
Victoria, BC V9A 1L1

T/F 250.385.4613

http://www.gnat.ca/
Stefan Reinauer
2004-05-17 15:28:45 UTC
Permalink
Post by Nathanael Noblet
Post by ron minnich
Post by Ignacio Verona
biosint: Unsupport int #0xb8
b8? Anybody know what that one is?
It has something to do with VGA, I had similar problems (have been back
to them so they are most likely still there). The Unsupported int
number would change for me. If I powered down (hold power button down)
the machine it would start up properly the next time. It wasn't
something that ALWAYS happened, but fairly often it would.
Ralph Brown's Interrupt List is not very helpful either:
http://www.ctyme.com/intr/int-b8.htm

Looks rather like a bug elsewhere..

Stefan
Stefan Reinauer
2004-05-17 15:51:33 UTC
Permalink
Post by Ignacio Verona
biosint: # 0x15, eax 0x5f01 ebx 0xc01 ecx 0x700 edx 0x112
biosint: ebp 0x10fca esp 0xf8e edi 0xac51 esi 0x1aacd
biosint: ip 0x6448 cs 0xc000 flags 0x46
biosint: # 0xb8, eax 0x707 ebx 0x0 ecx 0x700 edx 0x0
biosint: ebp 0x10fca esp 0xfc0 edi 0xb880 esi 0x1010a
biosint: ip 0x188 cs 0xc000 flags 0x246
biosint: Unsupport int #0xb8
Hm. The problem happens earlier. int 0x15 is something that the VGA BIOS
would probably install, but this does not seem to work. Thus there's a
hardcoded response handled in src/mainboard/via/epia-m/mainboard.c (v1)
function handleint21()

Looking at above code, int0x15 gets called with eax=0x5f01 (besides lots
of other values) - a case that is not handled in handleint21() at all.

There needs to be some way to call into interrupts set up by the
executed option rom, or otherwise functions like handleint21() will have
to be added and changed for every minor release of a vga bios update.

Stefan
Stefan Reinauer
2004-05-17 16:10:17 UTC
Permalink
Post by Stefan Reinauer
There needs to be some way to call into interrupts set up by the
executed option rom, or otherwise functions like handleint21() will have
to be added and changed for every minor release of a vga bios update.
There's a potential hint in src/arch/i386/lib/idt.c:biosint():

// cases in a good compiler are just as good as your own tables.
switch (intnumber) {
case 0 ... 15:
[..]
#ifdef CONFIG_PCIBIOS
case PCIBIOS:
[..]
#endif
case MEMSIZE:
[..]
#ifdef CONFIG_INT21HANDLER
case 0x15:
[..]
#endif
default:
[..]
}

It looks like this case construct was done for readability, but in fact
some kind of interrupt lookup table is needed to handle things
correctly.

Stefan
ron minnich
2004-05-17 20:57:24 UTC
Permalink
Post by Stefan Reinauer
// cases in a good compiler are just as good as your own tables.
switch (intnumber) {
[..]
#ifdef CONFIG_PCIBIOS
[..]
#endif
[..]
#ifdef CONFIG_INT21HANDLER
[..]
#endif
[..]
}
It looks like this case construct was done for readability, but in fact
some kind of interrupt lookup table is needed to handle things
correctly.
guilty as charged. I tried to make it readable but had no idea that we
would need a table. Ignorance on my part.

ron
Stefan Reinauer
2004-05-18 11:15:34 UTC
Permalink
Post by ron minnich
guilty as charged. I tried to make it readable but had no idea that we
would need a table. Ignorance on my part.
Not in this case as David explained. I actually assumed there was some
problem with 16<-->32bit jumping if an option rom is allowed to set up
it's own int-handler or something. This question will come back when we
want to have raid controllers or scsi adapters installing their own
int 13 for booting from attached disks though.

Stefan

ron minnich
2004-05-17 02:07:30 UTC
Permalink
Post by Ignacio Verona
1. I can't get VGA to work. I've extracted it from a original-bios booted
system with
dd if=/proc/kcore of=video.bios.bin bs=1 count=65536 skip=790528
and then appended it to my filo payload like the HOWTO says I've to do,
and modified the config file with all the options in EPIA howto, but
nothing shows up on my monitor (tft screen, has it something to do with?)
^^^
uh oh. Send me serial output.
Post by Ignacio Verona
2. If I boot up my mobo without the PCMCIA/CF module on, it boots properly
but, if I put it on and try to boot, linux bios does somethings and then
reboot, forever. any known bug about this?
sounds like you just found one :-)

need serial output.

ron
Ignacio Verona
2004-05-17 08:02:28 UTC
Permalink
Ron:
Thanks for your answ. Reading the serial output can you say something
about the PCMCIA problem?
And what about tft? May be cause VGA no to work? Right now I do not have
any CRTs here...

Mathieu:
Yes, I'm on v1 right now. And about the combined filo+vgabios payload this
is what I do for creating:
dd if=filo.elf of=vga+filo.bin bs=1 seek=65536
And using v