mirror of
https://github.com/fail0verflow/switch-coreboot.git
synced 2025-05-04 01:39:18 -04:00
7 commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
|
446979be46 |
This set of changes:
- makes sprintf work, in a re-entrant way - gets rid of a lot of ugly debug stuff (thanks for the Kconfig log level stuff guys!) - boots like a bat out of hell on qemu :-) The changes are trivial, I am self-acking. To run this under qemu, I do this: cp LinuxBIOSv3/build/linuxbios.rom bios.bin ; qemu -nographic -L . -kernel linux-2.6.15-bochs/vmlinux -hdc hda -hda hda | tee out 2>&1 here is the output from a run. Note that cpu's still don't have a path of any kind, and that show_all_devs is not working right. But we're getting there. I think I'll next try to really boot a linux with a hard drive, and see how it goes. LinuxBIOS-3.0.0- Tue Mar 6 18:41:59 MST 2007 starting... Start search at 0xfffc0000, size 258048 filename is normal/initram start 0xfffc0000 len 0x3f000 fullname is normal/initram RAM init code started Nothing to do.Done ram init code filename is normal/stage2 start (qemu) 0xfffc0000 len 0x3f000 fullname is normal/initram fullname is normal/stage2 Phase 1: done show all devs.. cpus: Unknown device path type: 0 Phase 2: Early setup... Phase 2: Done. show all devs.. cpus: Unknown device path type: 0 Phase 3: Enumerating buses... qemu-x86 enable_dev done dev_phase3_scan: scanning root(Root Device) scan_static_bus for root(Root Device) cpus: Unknown device path type: 0 i440bxemulation_enable_dev: i440bxemulation_enable_dev: Done. dev_phase5: device0_0(PCI: 00:00.0) missing ops domain0(PCI_DOMAIN: 0000) scanning... dev_phase3_scan: scanning domain0(PCI_DOMAIN: 0000) set_pci_ops: dev 00007aa0(device0_0) set ops to 00007220 set_pci_ops: dev 00007d80(dynamic PCI: 00:01.0) set ops to 00007220 set_pci_ops: dev 00008040(dynamic PCI: 00:01.1) set ops to 00007220 set_pci_ops: dev 00008300(dynamic PCI: 00:01.3) set ops to 00007220 set_pci_ops: dev 000085c0(dynamic PCI: 00:02.0) set ops to 00007220 set_pci_ops: dev 00008880(dynamic PCI: 00:03.0) set ops to 00007220 dev_phase3_scan: device0_0: busdevice 00007aa0 enabled 1 ops 00007220 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:01.0: busdevice 00007d80 enabled 1 ops 00007220 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:01.1: busdevice 00008040 enabled 1 ops 00007220 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:01.3: busdevice 00008300 enabled 1 ops 00007220 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:02.0: busdevice 000085c0 enabled 1 ops 00007220 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:03.0: busdevice 00008880 enabled 1 ops 00007220 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: returning 0 scan_static_bus for root(Root Device) done dev_phase3_scan: returning 0 Phase 3: Done. show all devs.. cpus: Unknown device path type: 0 Phase 4: Allocating resources... Phase 4: Reading resources... cpus: Unknown device path type: 0 read_resources: cpus() missing phase4_read_resources cpus: Unknown device path type: 0 read_resources: cpus() missing phase4_read_resources Phase 4: Done reading resources. Phase 4: Setting resources... cpus: Unknown device path type: 0 read_resources: cpus() missing phase4_read_resources cpus: Unknown device path type: 0 read_resources: cpus() missing phase4_read_resources ram_resource: add ram resoource 33554432 bytes Phase 4: Done setting resources. Phase 4: Done allocating resources. show all devs.. cpus: Unknown device path type: 0 Phase 5: Enabling resources... cpus: Unknown device path type: 0 dev_phase5: cpus() missing ops Phase 5: Done. show all devs.. cpus: Unknown device path type: 0 Phase 6: Initializing devices... Phase 6: Devices initialized. show all devs.. cpus: Unknown device path type: 0 lb_memory_range: start 0x0 size 0x2000000 lb_cleanup_memory_ranges: # entries 1 #0: base 0x0 size 0x2000000 lb_memory_range: start 0x0 size 0x500 lb_cleanup_memory_ranges: # entries 2 #0: base 0x500 size 0x1fffb00 #1: base 0x0 size 0x500 lb_memory_range: start 0xf0000 size 0x0 lb_cleanup_memory_ranges: # entries 4 #0: base 0x0 size 0x500 #1: base 0x500 size 0xefb00 #2: base 0xf0000 size 0x1f10000 #3: base 0xf0000 size 0x0 show all devs.. cpus: Unknown device path type: 0 Done stage2 code filename is normal/payload start 0xfffc0000 len 0x3f000 fullname is normal/initram fullname is normal/stage2 fullname is normal/payload Elfboot set 00100000 to 0 for 137936 bytes Copy to 00100000 from fffc6ef4 for 30472 bytes set 00121ae0 to 0 for 72 bytes Copy to 00121ae0 from fffce614 for 72 bytes FILO version 0.5 (rminnich@q.ccstar.lanl.gov) Tue Mar 6 18:41:56 MST 2007 collect_sys_info: boot eax = 0xfe collect_sys_info: boot ebx = 0xffffd444 collect_sys_info: boot arg = 0x1049c0 collect_sys_info: info->memrange 00000000 collect_linuxbios_info: Searching for LinuxBIOS tables... find_lb_table: Found candidate at: 00000500 find_lb_table: header checksum o.k. find_lb_table: table checksum o.k. find_lb_table: record count o.k. collect_linuxbios_info: collect_linuxbios_info: yes collect_linuxbios_info: Found LinuxBIOS table at: 00000500 read_lbtable: read_lbtable begin read_lbtable: lbrec tag 1 LB_TAG_MEMORY 1 convert_memmap: info->memrange 0x107740 convert_memmap: 0x00000000000000 0x000000000005a4 16 convert_memmap: 0x000000000005a4 0x000000000efa5c 1 convert_memmap: 0x000000000f0000 0x00000001f10000 1 convert_memmap: 0x000000000f0000 0x00000000000000 16 read_lbtable: lbrec tag 3 LB_TAG_MEMORY 1 read_lbtable: lbrec tag 4 LB_TAG_MEMORY 1 read_lbtable: read_lbtable end collect_linuxbios_info: collect_linuxbios_info: done collect_sys_info: after collect info->memrange 00107740 collect_sys_info: 00000000000005a4-00000000000f0000 collect_sys_info: 00000000000f0000-0000000002000000 collect_sys_info: RAM 32 MB relocate: virt_offset is 0 relocate: Current location: 0x100000-0x121b27 relocate: Relocating to 0x1fde4d0-0x1fffff7... ok setup_timers: CPU 599 MHz Press <Enter> for default boot, or <Esc> for boot prompt... 2 1 timed out boot: hda:/bzImage console=ttyS0,115200 malloc_diag: alloc: 0 bytes (0 blocks), free: 16376 bytes (1 blocks) malloc_diag: alloc: 48 bytes (1 blocks), free: 16328 bytes (1 blocks) malloc_diag: alloc: 64 bytes (2 blocks), free: 16312 bytes (1 blocks) file_open: dev=hda, path=/bzImage ide_software_reset: Waiting for ide0 to become ready for reset... ok init_drive: Testing for hda init_drive: Probing for hda init_drive: LBA mode, sectors=32768 init_drive: LBA48 mode, sectors=32768 init_drive: Init device params... ok hda: LBA48 16MB: QEMU HARDDISK Mounted ext2fs malloc_diag: alloc: 48 bytes (1 blocks), free: 16328 bytes (1 blocks) elf_load: Not a bootable ELF image malloc_diag: alloc: 64 bytes (2 blocks), free: 16312 bytes (1 blocks) file_open: dev=hda, path=/bzImage devopen: already open malloc_diag: alloc: 48 bytes (1 blocks), free: 16328 bytes (1 blocks) Found Linux version 2.6.15-geode (rminnich@q.ccstar.lanl.gov) #36 Sun Mar 4 22:20:47 MST 2007 (protocol 0x204) (loadflags 0x1) bzImage. init_linux_params: Setting up paramters at 0x90000 set_memory_size: 00000000000005a4 - 00000000000f0000 set_memory_size: 00000000000f0000 - 0000000002000000 set_memory_size: ramtop=0x2000000 set_memory_size: ext_mem_k=31744, alt_mem_k=31744 parse_command_line: original command line: "console=ttyS0,115200" parse_command_line: kernel command line at 0x91000 parse_command_line: kernel command line (20 bytes): "console=ttyS0,115200" load_linux_kernel: offset=0x1600 addr=0x100000 size=0x1175e1 Loading kernel... ok start_linux: eip=0x100000 Jumping to entry point... Linux version 2.6.15-geode (rminnich@q.ccstar.lanl.gov) (gcc version 4.0.2 20051125 (Red Hat 4.0.2-8)) #36 Sun Mar 4 22:20:47 MST 2007 BIOS-provided physical RAM map: BIOS-e801: 0000000000000000 - 000000000009f000 (usable) BIOS-e801: 0000000000100000 - 0000000002000000 (usable) 32MB LOWMEM available. DMI not present. Allocating PCI resources starting at 10000000 (gap: 02000000:fe000000) Built 1 zonelists Kernel command line: console=ttyS0,115200 Initializing CPU#0 PID hash table entries: 256 (order: 8, 4096 bytes) Detected 1694.987 MHz processor. Using pit for high-res timesource Console: colour dummy device 80x25 Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) Memory: 29752k/32768k available (1500k kernel code, 2628k reserved, 502k data, 144k init, 0k highmem) Checking if this processor honours the WP bit even in supervisor mode... Ok. Mount-cache hash table entries: 512 CPU: L1 I cache: 8K CPU: L2 cache: 128K mtrr: v2.0 (20020519) CPU: Intel Pentium II (Klamath) stepping 03 Enabling fast FPU save and restore... done. Enabling unmasked SIMD FPU exception support... done. Checking 'hlt' instruction... OK. Checking for popad bug... OK. NET: Registered protocol family 16 PCI: Using configuration type 1 PCI: Probing PCI hardware PCI quirk: region b100-b10f claimed by PIIX4 SMB PCI: Ignore bogus resource 6 [0:0] of 0000:00:02.0 Initializing Cryptographic API io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered PCI: PIIX3: Enabling Passive Release on 0000:00:01.0 Limiting direct PCI/PCI transfers. Activating ISA DMA hang workarounds. serio: i8042 AUX port at 0x60,0x64 irq 12 serio: i8042 KBD port at 0x60,0x64 irq 1 Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16450 RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize loop: loaded (max 8 devices) e100: Intel(R) PRO/100 Network Driver, 3.4.14-k4-NAPI e100: Copyright(c) 1999-2005 Intel Corporation tun: Universal TUN/TAP device driver, 1.6 tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2 ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx PIIX3: IDE controller at PCI slot 0000:00:01.1 PIIX3: chipset revision 0 PIIX3: not 100% native mode: will probe irqs later PIIX3: neither IDE port enabled (BIOS) hda: QEMU HARDDISK, ATA DISK drive hdc: QEMU HARDDISK, ATA DISK drive ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 ide1 at 0x170-0x177,0x376 on irq 15 hda: max request size: 1024KiB hda: 32768 sectors (16 MB) w/256KiB Cache, CHS=32/255/63 hda: set_multmode: status=0x41 { DriveReady Error } hda: set_multmode: error=0x04 { DriveStatusError } ide: failed opcode was: 0xef hda: cache flushes supported hda: hda1 hdc: max request size: 1024KiB hdc: 32768 sectors (16 MB) w/256KiB Cache, CHS=32/255/63 hdc: set_multmode: status=0x41 { DriveReady Error } hdc: set_multmode: error=0x04 { DriveStatusError } ide: failed opcode was: 0xef hdc: cache flushes supported hdc: hdc1 mice: PS/2 mouse device common for all mice NET: Registered protocol family 2 input: AT Raw Set 2 keyboard as /class/input/input0 input: ImExPS/2 Generic Explorer Mouse as /class/input/input1 IP route cache hash table entries: 512 (order: -1, 2048 bytes) TCP established hash table entries: 2048 (order: 1, 8192 bytes) TCP bind hash table entries: 2048 (order: 1, 8192 bytes) TCP: Hash tables configured (established 2048 bind 2048) TCP reno registered TCP bic registered NET: Registered protocol family 1 NET: Registered protocol family 17 Using IPI Shortcut mode VFS: Cannot open root device "<NULL>" or unknown-block(3,2) Please append a correct "root=" boot option Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(3,2) Signed-off-by: Ronald G. Minnich <rminnich@gmail.com> Acked-by: Ronald G. Minnich <rminnich@gmail.com> git-svn-id: svn://coreboot.org/repository/LinuxBIOSv3@207 f3766cd6-281f-0410-b1cd-43a5c92072e9 |
||
|
44c092f57d |
With the current set of changes, bochs bios sees the right amount of
memory. qemu does not, which is odd. in bochs, we get this. find_lb_table: header test: L I I O find_lb_table: Found candidate at: 00000500 find_lb_table: header checksum o.k. find_lb_table: table checksum o.k. find_lb_table: record count o.k. collect_linuxbios_info: collect_linuxbios_info: yes collect_linuxbios_info: Found LinuxBIOS table at: 00000500 malloc_diag: alloc: 0 bytes (0 blocks), free: 16376 bytes (1 blocks) malloc_diag: alloc: 72 bytes (1 blocks), free: 16304 bytes (1 blocks) convert_memmap: 0x00000000000000 0x000000000005a4 16 convert_memmap: 0x000000000005a4 0x000000000efa5c 1 convert_memmap: 0x000000000f0000 0x00000001f10000 1 convert_memmap: 0x000000000f0000 0x00000000000000 16 collect_sys_info: after collect info->memrange 00119418 collect_sys_info: 00000000000005a4-00000000000f0000 collect_sys_info: 00000000000f0000-0000000002000000 collect_sys_info: RAM 32 MB Some further changes are coming, aimed at making it easier for people to understand how things fit together. Signed-off-by: Ronald G. Minnich <rminnich@gmail.com> Acked-by: Ronald G. Minnich <rminnich@gmail.com> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://coreboot.org/repository/LinuxBIOSv3@185 f3766cd6-281f-0410-b1cd-43a5c92072e9 |
||
|
53283b1e36 |
fix a stupid bug in malloc.
add debug printks. make dtc put 'root' as the first_node, instead of making the last node be the first node .... much happier in linuxbios. sprintf is broken ... dammit. I hope someone will fix it. I've got about another week of full-time I can spend on this and then I go back to part time. So I'm going to need some help soon. other fixups, and also, make the dts conform to the needs of the device tree. So we have a domain0 and a device (0,0) that is the north. Mostly things are working, but we're STILL not getting any memory in the LB tables from the north. The device tree is a bitch. Signed-off-by: Ronald G. Minnich <rminnich@gmail.com> Acked-by: Ronald G. Minnich <rminnich@gmail.com> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://coreboot.org/repository/LinuxBIOSv3@175 f3766cd6-281f-0410-b1cd-43a5c92072e9 |
||
|
7f949f70f5 |
This set of changes gets us here.
Phase 1: done Phase 2: early setup ... Phase 2: done Phase 3: Enumerating buses... qemu-x86 enable_dev done dev_phase3_scan: scanning Root Device scan_static_bus for root(Root Device) cpus: Unknown device path type: 0 cpus() enabled i440bxemulation_enable_dev: i440bxemulation_enable_dev: DONE northbridge_intel_i440bxemulation() enabled northbridge_intel_i440bxemulation() scanning... dev_phase3_scan: scanning pci_scan_bus start PCI: pci_scan_bus for bus 00 PCI: scan devfn 0x0 to 0xff PCI: devfn 0x0 PCI: pci_scan_bus pci_scan_get_dev returns dev <NULL> Change dts compiler to emit a new struct member, dtsname, for devices, so we can get actual useful names for things. Several mods and printks added. printk(BIOS_SPEW gives no output for reasons I don't understand. Next in line is bringing back v2 support for pci, but not doing it the way v2 does it. note the cpus() printk above. cpus don't have a valid path yet. We still need to work out the dts syntax for systems with multiple links (opteron) Signed-off-by: Ronald G. Minnich <rminnich@gmail.com> Acked-by: Ronald G. Minnich <rminnich@gmail.com> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://coreboot.org/repository/LinuxBIOSv3@163 f3766cd6-281f-0410-b1cd-43a5c92072e9 |
||
|
7513bfdb03 |
Lots of changes here, build broken, but people need to see this.
renamed the phase3 etc. to stuff like phase3_scan, so you can get a rought idea what it is. The names mean more. adding pci_device and, at the same time, showing how we can get rid of the really ugly stuff that crept in. note you can specify ops in the dts, which avoids the need for hideous stuff like this: static void enable_dev(struct device *dev) { /* Set the operations if it is a special bus type */ if (dev->path.type == DEVICE_PATH_PCI_DOMAIN) { dev->ops = &pci_domain_ops; pci_set_method(dev); } else if (dev->path.type == DEVICE_PATH_APIC_CLUSTER) { dev->ops = &cpu_bus_ops; } } So that foolishness is gone. added delay functions. Note that we have include/lib.h, and define all the functions in there, instead of in lots of fiddly includes. Brought back the enable op, once I understood it; renamed it to something that makes sense. I'll be on a plane soon, will continue to work, but at least you can see what's going on here. Signed-off-by: Ronald G. Minnich <rminnich@gmail.com> Acked-by: Ronald G. Minnich <rminnich@gmail.com> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://coreboot.org/repository/LinuxBIOSv3@139 f3766cd6-281f-0410-b1cd-43a5c92072e9 |
||
|
464f4cb19d |
* initial console entries in Kconfig
* small warnings fixes Signed-off-by: Stefan Reinauer <stepan@coresystems.de> Acked-by: Ronald G. Minnich <rminnich@gmail.com> git-svn-id: svn://coreboot.org/repository/LinuxBIOSv3@93 f3766cd6-281f-0410-b1cd-43a5c92072e9 |
||
|
791e590dea |
* rename devices to device for consistency
* fix malloc.c warnings * add PCI_BUS_SEGN_BITS to pci.h Signed-off-by: Stefan Reinauer <stepan@coresystems.de> Acked-by: Ronald G. Minnich <rminnich@gmail.com> git-svn-id: svn://coreboot.org/repository/LinuxBIOSv3@92 f3766cd6-281f-0410-b1cd-43a5c92072e9 |
Renamed from devices/device_util.c (Browse further)