Discussion:
Epia-MII VGA not working and PCMCIA rebooting
(too old to reply)
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 vga+filo.bin as my payload linuxbios still boot up to the
kernel, but VGA does not come up.

Maybe could I go to V2 for beeing exactly on the same point as you? I
could give it a try this tonight.

Also: Do you know if acpi is working on V2? I've plans to "try" (only try,
I don't know if I've the required programming skills) to implement it on
v1, but if it's working on v2 I could skip this step and do all the job on
VGA.

Thanks!
Hi
It seems i am on the same point as you. This project is simply
fascinating, and so much time consuming :)
I've done this famous dd with the kcore and so on, but i think to do
miss something.
I've got a classic crt screen but nothing appear either. Also I'am
working with v2 . my Linuxbios is booting to the kernel so this is ok.
What is not, is that VGABIOS on V2 LB is not fully operationnal, i want
to make it be. Please could you tell me how you did "append it to my
filo payload like the HOWTO says and modified the config file" as ?
It could geratly help me in trying to make a port to V2 since i've
understood you are in V1, don't you ?
Though the details of your experiments could unstuck me.
Post by Ignacio Verona
Hi! Linuxbios is working prety well now on my Epia mII 10k, but a few
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!
_______________________________________________
Linuxbios mailing list
http://www.clustermatic.org/mailman/listinfo/linuxbios
Mathieu Deschamps
2004-05-17 08:52:34 UTC
Permalink
well you can try to V2 but you'll see that VGA bios isn't as far
"worked" as it is in v1.
I'am not as far as you've gone, because you have this i don't:

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/

in fact i'am still seeking the HOWTOs of this (even for V1) in maillist
and such, i've found some piece of info but nothing explaining what to
do like some sort of step by step experiment... that is why I was likely
to ask your way :) or your links to theses howto.

I know almost only V2, i've been working on V1 only a few weeks, then i
fork to V2 and still work mainly on it.
V2 is totaly refactored, romcc compiler is a central part. Probally the
harder as I felt, is to find the good combinaison of config option
corresponding to v1 ones. for example, if i'am not mistaken, v2 has no
IDT config option for VGA bios, thus making you wonder where to start
with V2 VGAbios. All that said, i found in V2 an answer to the need
of structure/architecture V1 spotted, and the source tree is a lot
"clearer" and "close" solutions were incorporated ..

Also i think acpi isn't more worked on v2, i've read to deact. it
anytime i could as i done; but I'am not sure maybe some other people
won't confirm.

mathieu
Post by Ignacio Verona
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...
Yes, I'm on v1 right now. And about the combined filo+vgabios payload this
dd if=filo.elf of=vga+filo.bin bs=1 seek=65536
And using vga+filo.bin as my payload linuxbios still boot up to the
kernel, but VGA does not come up.
Maybe could I go to V2 for beeing exactly on the same point as you? I
could give it a try this tonight.
Also: Do you know if acpi is working on V2? I've plans to "try" (only try,
I don't know if I've the required programming skills) to implement it on
v1, but if it's working on v2 I could skip this step and do all the job on
VGA.
Thanks!
Hi
It seems i am on the same point as you. This project is simply
fascinating, and so much time consuming :)
I've done this famous dd with the kcore and so on, but i think to do
miss something.
I've got a classic crt screen but nothing appear either. Also I'am
working with v2 . my Linuxbios is booting to the kernel so this is ok.
What is not, is that VGABIOS on V2 LB is not fully operationnal, i want
to make it be. Please could you tell me how you did "append it to my
filo payload like the HOWTO says and modified the config file" as ?
It could geratly help me in trying to make a port to V2 since i've
understood you are in V1, don't you ?
Though the details of your experiments could unstuck me.
Post by Ignacio Verona
Hi! Linuxbios is working prety well now on my Epia mII 10k, but a few
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!
_______________________________________________
Linuxbios mailing list
http://www.clustermatic.org/mailman/listinfo/linuxbios
_______________________________________________
Linuxbios mailing list
http://www.clustermatic.org/mailman/listinfo/linuxbios
ron minnich
2004-05-17 20:48:38 UTC
Permalink
Post by Ignacio Verona
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/
that means it is ok.
Mathieu Deschamps
2004-05-18 08:05:52 UTC
Permalink
ok so this is what i aim to.
Post by ron minnich
Post by Ignacio Verona
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/
that means it is ok.
_______________________________________________
Linuxbios mailing list
http://www.clustermatic.org/mailman/listinfo/linuxbios
Dave Ashley
2004-05-18 00:39:25 UTC
Permalink
Post by ron minnich
b8? Anybody know what that one is?
The vgabios itself has a bug in it. The b8 is an invalid INT # and
what has happened is the vgabios code itself has crashed and is executing
randomly. On the EPIA-M I had seen this problem on certain units where if
the motherboard got too hot (but not really that hot) and you reboot, it
would just sit there beeping forever with its onboard noisemaker. This was
with the stock AWARD bios. The problem would go away if I set up a fan to
blow on the motherboard and cool it down.

Under linuxbios the problem would manifest itself where during the vgabios
init code you'd get into an endless loop of invalid INT callbacks. So it
would stop the system from booting.

My "fix" was to only allow certain INT's in the callback and so if an
invalid one happens, we just abort out of the VGA init code. This worked fine
for our purposes, the vgabios had been able to init the hardware enough to
get the system working, and life could go on. Note also when this endless
INT callback thingy happened in linuxbios, if I blasted the fan on the
motherboard to cool it down, that would fix the problem.

I really don't know how a bug in the vgabios could manifest itself only on
certain motherboards and only when they get hot. But it's not impossible.

Note these int21 handler code was required for getting the vgabios working
on the EPIA-M. Whether the thing is a case statement or a table is
irrelevant, the case statement approach allows for endless customization.
The point is the int21 callbacks must be implemented. That's how a black
box like the vgabios can be delivered to VIA without source, yet VIA can
integrate it into their AWARD bios. The INT 21 callbacks like 4F01 are for
the vgabios to query the system to find out how much video ram has been
reserved for the display (I default to 8M), what is the preferred output
device, and other mysterious and poorly documented settings. The documentation
I was going on was the CLE266 BIOS PORTING GUIDE from VIA, an NDA document.
It is cryptic and incomplete (typical). It doesn't cover all of the INT21
callbacks that the vgabios makes use of.

Even if you boot off the AWARD bios, then run the vgabios with the emulator
and make use of the AWARD bios to know what to return for these 4fxx INT21
callbacks, you're still left with the bug in the vgabios itself. I'm satisfied
there is a bug there so I haven't spent any more time trying to improve the
situation.

Long story short I don't know why Ignacio Verona's not getting VGA output
on his EPIA-MII. However there is a reason for all the business in linuxbios
with the unsupport int printing + aborting the vgabios execution and the
code in the epia-m tree that handles the callbacks, so don't start thinking
about ripping it out unless you really know what you're doing.

-Dave
Stefan Reinauer
2004-05-18 11:06:24 UTC
Permalink
Post by Dave Ashley
Note these int21 handler code was required for getting the vgabios working
on the EPIA-M. Whether the thing is a case statement or a table is
irrelevant, the case statement approach allows for endless customization.
So, in an award setup this is provided by award bios rather than being
setup by the video bios itself? Sounds like a specific issue of Via
onboard graphics in this case then.

Thus the way it is implemented is perfectly fine, except that the int21
handler has to be advanced to cope with all the AX values fed into it.
I suggest also adding a default case to notify the user about
unimplemented values for AX.

Stefan
Continue reading on narkive:
Loading...