With the log level up at 8, I have confirmed that my via/epia build is not calling southbridge_init to set up the vt8231. I have confirmed that the code from vt8231.c, is in the binary, it's just not getting invoked. With the exception of enabling the serial console and boosting the log level, my target Config.lb, mainboard Config.lb and Options.lb files are identical to those in CVS (copied below).
Can anybody point me at some likely places to dive in and figure out why the build is putting this code in the LB binary, but it's not getting called at run time?
I believe this is the reason that once control is passed off to the payload (filo), it can't see any ide devices. I'm working my way through the config/build/boot paths, trying to understand how the config tool uses the Config.lb and Options.lb files to assemble the build tree, but it's really slow going. It's a very cool system that has been put together, but like all cool systems that do hard stuff, it's got a pretty serious learning curve.... 8^)=
Thanks!
-Al
------mainboard Config.lb------- ## ## Compute the location and size of where this firmware image ## (linuxBIOS plus bootloader) will live in the boot rom chip. ## if USE_FALLBACK_IMAGE default ROM_SECTION_SIZE = FALLBACK_SIZE default ROM_SECTION_OFFSET = ( ROM_SIZE - FALLBACK_SIZE ) else default ROM_SECTION_SIZE = ( ROM_SIZE - FALLBACK_SIZE ) default ROM_SECTION_OFFSET = 0 end
## ## Compute the start location and size size of ## The linuxBIOS bootloader. ## default CONFIG_ROM_STREAM_START = (0xffffffff - ROM_SIZE + ROM_SECTION_OFFSET + 1) default PAYLOAD_SIZE = ( ROM_SECTION_SIZE - ROM_IMAGE_SIZE )
## ## Compute where this copy of linuxBIOS will start in the boot rom ## default _ROMBASE = ( CONFIG_ROM_STREAM_START + PAYLOAD_SIZE )
## ## Compute a range of ROM that can cached to speed up linuxBIOS, ## execution speed. ## ## XIP_ROM_SIZE must be a power of 2. ## XIP_ROM_BASE must be a multiple of XIP_ROM_SIZE ## default XIP_ROM_SIZE=65536 default XIP_ROM_BASE = ( _ROMBASE + ROM_IMAGE_SIZE - XIP_ROM_SIZE )
## ## Set all of the defaults for an x86 architecture ##
arch i386 end
## ## Build the objects we have code for in this directory. ##
driver mainboard.o if HAVE_PIRQ_TABLE object irq_tables.o end #object reset.o
## ## Romcc output ## makerule ./failover.E depends "$(MAINBOARD)/failover.c ./romcc" action "./romcc -E -O --label-prefix=failover -I$(TOP)/src -I. $(CPPFLAGS) $(MAINBOARD)/failover.c -o $@" end
makerule ./failover.inc depends "$(MAINBOARD)/failover.c ./romcc" action "./romcc -O --label-prefix=failover -I$(TOP)/src -I. $(CPPFLAGS) $(MAINBOARD)/failover.c -o $@" end
makerule ./auto.E depends "$(MAINBOARD)/auto.c option_table.h ./romcc" action "./romcc -E -mcpu=c3 -O -I$(TOP)/src -I. $(CPPFLAGS) $(MAINBOARD)/auto.c -o $@" end makerule ./auto.inc depends "$(MAINBOARD)/auto.c option_table.h ./romcc" action "./romcc -mcpu=c3 -O -I$(TOP)/src -I. $(CPPFLAGS) $(MAINBOARD)/auto.c -o $@" end
## ## Build our 16 bit and 32 bit linuxBIOS entry code ## mainboardinit cpu/x86/16bit/entry16.inc mainboardinit cpu/x86/32bit/entry32.inc ldscript /cpu/x86/16bit/entry16.lds ldscript /cpu/x86/32bit/entry32.lds
## ## Build our reset vector (This is where linuxBIOS is entered) ## if USE_FALLBACK_IMAGE mainboardinit cpu/x86/16bit/reset16.inc ldscript /cpu/x86/16bit/reset16.lds else mainboardinit cpu/x86/32bit/reset32.inc ldscript /cpu/x86/32bit/reset32.lds end
### Should this be in the northbridge code? mainboardinit arch/i386/lib/cpu_reset.inc
## ## Include an id string (For safe flashing) ## mainboardinit arch/i386/lib/id.inc ldscript /arch/i386/lib/id.lds
### ### This is the early phase of linuxBIOS startup ### Things are delicate and we test to see if we should ### failover to another image. ### if USE_FALLBACK_IMAGE ldscript /arch/i386/lib/failover.lds mainboardinit ./failover.inc end
### ### O.k. We aren't just an intermediary anymore! ###
## ## Setup RAM ## mainboardinit cpu/x86/fpu/enable_fpu.inc mainboardinit cpu/x86/mmx/enable_mmx.inc mainboardinit ./auto.inc mainboardinit cpu/x86/mmx/disable_mmx.inc
## ## Include the secondary Configuration files ## dir /pc80 config chip.h
chip northbridge/via/vt8601 device pci_domain 0 on device pci 0.0 on chip southbridge/via/vt8231 register "enable_usb" = "0" register "enable_native_ide" = "0" register "enable_com_ports" = "1" register "enable_keyboard" = "0" register "enable_nvram" = "1" device pci 11.0 on # Southbridge device pci 11.1 on end # Ide device pci 11.2 off end # Usb device pci 11.3 off end # Usb device pci 11.4 off end # ACPI device pci 11.5 off end # Audio device pci 11.6 on # Com chip superio/winbond/w83627hf device pnp 2e.0 on # Floppy io 0x60 = 0x3f0 irq 0x70 = 6 drq 0x74 = 2 end device pnp 2e.1 off # Parallel Port io 0x60 = 0x378 irq 0x70 = 7 end device pnp 2e.2 on # Com1 io 0x60 = 0x3f8 irq 0x70 = 4 end device pnp 2e.3 off # Com2 io 0x60 = 0x2f8 irq 0x70 = 3 end device pnp 2e.5 on # Keyboard io 0x60 = 0x60 io 0x62 = 0x64 irq 0x70 = 1 irq 0x72 = 12 end device pnp 2e.6 off end # CIR device pnp 2e.7 off end # GAME_MIDI_GIPO1 device pnp 2e.8 off end # GPIO2 device pnp 2e.9 off end # GPIO3 device pnp 2e.a off end # ACPI device pnp 2e.b on # HW Monitor io 0x60 = 0x290 end register "com1" = "{1}" end end device pci 12.0 on end # Ethernet end end end end chip cpu/via/model_centaur end end
-------target Config.lb-------- # Sample config file for EPIA # This will make a target directory of ./epia
target epia mainboard via/epia
# # Via Epia romimage "normal" option USE_FALLBACK_IMAGE=0 option ROM_IMAGE_SIZE=0x10000 option LINUXBIOS_EXTRA_VERSION=".0Normal" # payload /usr/share/etherboot/5.1.9pre2-lnxi-lb/tg3--ide_disk.zelf # payload ../../../../tg3--ide_disk.zelf # payload ../../../../../lnxieepro100.ebi # payload ../../../../../../filo.elf payload ../../../../../../filo-0.4.2/filo.elf end
romimage "fallback" option USE_FALLBACK_IMAGE=1 option ROM_IMAGE_SIZE=0x10000 option LINUXBIOS_EXTRA_VERSION=".0Fallback" # payload /usr/share/etherboot/5.1.9pre2-lnxi-lb/tg3--ide_disk.zelf # payload ../../../../tg3--ide_disk.zelf # payload ../../../../../lnxieepro100.ebi # payload ../../../../../../filo.elf payload ../../../../../../filo-0.4.2/filo.elf end
buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback"
-------mainboard Options.lb-------- uses HAVE_MP_TABLE uses HAVE_PIRQ_TABLE uses USE_FALLBACK_IMAGE uses HAVE_FALLBACK_BOOT uses HAVE_HARD_RESET uses HAVE_OPTION_TABLE uses USE_OPTION_TABLE uses CONFIG_ROM_STREAM uses IRQ_SLOT_COUNT uses MAINBOARD uses MAINBOARD_VENDOR uses MAINBOARD_PART_NUMBER uses LINUXBIOS_EXTRA_VERSION uses ARCH uses FALLBACK_SIZE uses STACK_SIZE uses HEAP_SIZE uses ROM_SIZE uses ROM_SECTION_SIZE uses ROM_IMAGE_SIZE uses ROM_SECTION_SIZE uses ROM_SECTION_OFFSET uses CONFIG_ROM_STREAM_START uses PAYLOAD_SIZE uses _ROMBASE uses _RAMBASE uses XIP_ROM_SIZE uses XIP_ROM_BASE uses HAVE_MP_TABLE uses CROSS_COMPILE uses CC uses HOSTCC uses OBJCOPY
## ARH 01/19/05 uses CONFIG_CONSOLE_SERIAL8250 uses DEFAULT_CONSOLE_LOGLEVEL
default CONFIG_CONSOLE_SERIAL8250=1 default DEFAULT_CONSOLE_LOGLEVEL=8 ## ARH 01/19/05
## ROM_SIZE is the size of boot ROM that this board will use. default ROM_SIZE = 256*1024
### ### Build options ###
## ## Build code for the fallback boot ## default HAVE_FALLBACK_BOOT=1
## ## no MP table ## default HAVE_MP_TABLE=0
## ## Build code to reset the motherboard from linuxBIOS ## default HAVE_HARD_RESET=1
## ## Build code to export a programmable irq routing table ## default HAVE_PIRQ_TABLE=1 default IRQ_SLOT_COUNT=5 #object irq_tables.o
## ## Build code to export a CMOS option table ## default HAVE_OPTION_TABLE=1
### ### LinuxBIOS layout values ###
## ROM_IMAGE_SIZE is the amount of space to allow linuxBIOS to occupy. default ROM_IMAGE_SIZE = 65536 default FALLBACK_SIZE = 131072
## ## Use a small 8K stack ## default STACK_SIZE=0x2000
## ## Use a small 16K heap ## default HEAP_SIZE=0x4000
## ## Only use the option table in a normal image ## #default USE_OPTION_TABLE = !USE_FALLBACK_IMAGE default USE_OPTION_TABLE = 0
default _RAMBASE = 0x00004000
default CONFIG_ROM_STREAM = 1
## ## The default compiler ## default CROSS_COMPILE="" default CC="$(CROSS_COMPILE)gcc -m32" default HOSTCC="gcc"
end