Hello, Stefan
First, the GSOC mid term evaluation comes. Please submit the mentor midterm survey for this "SCSI booting in coreboot" project. The timeline is July 7th to July 14th at 19:00 UTC. Refer to "Survey Information for Mentors with Students Assigned to Them" on http://groups.google.com/group/google-summer-of-code-announce/web/midterm-su... Thanks.
Second, my process and problems:
2008/7/6 Zhang Rui zrfail@gmail.com:
Hello Stefan,
2008/6/25, Zhang Rui zrfail@gmail.com:
- Where is the entrance call of util/x86emu in coreboot v3?
There are several x86EMU_XXX function exported in e86emu.h. But they are called only in run_bios() in biosemu.c. I placed a printk at the beginning of run_bios() but it seems not executed. How does the codes in util/x86emu used? Where is the entrance call of util/x86emu in coreboot v3? Where should I place the code to extract LegacyBIOS to the memory? Should I write a new function and export it?
Stefan, could you help me with this question? Thanks.
I finally find that in arch/x86/, function pci_dev_init() called run_bios() in util/x86emu. The order is : pci_dev_init -->pci_rom_probe -->run_bios(vm86.c/biosemu.c)
my problem is: in pci_rom_probe, most rom_address is 0 and return NULL; only one rom_address is 0x c0000 but the rom_header->signature is 0 so it also return NULL.
So no run_bios is running.
How can I get run_bios() running and test my code in it?
Best regards.
Zhang Rui
Here is the output of qemu: [...]
Now I find that there is something wrong with my vgabios-cirrus. I download it from www.coreboot.org by a browser and unzip it to "vgabios-cirrus". But actually it is only 14k. I added ".zip" to the file "vgabios-cirrus" and unzip it to "vgabios-cirrus.bin". And it works now.
But new problem comes up: "Device or Vendor ID mismatch Vendor 0846, Device ec89" So run_bios() is not executed.
Here is related source code: in device/pci_device.c, in function pci_dev_init() rom = pci_rom_probe(dev); if (rom == NULL) return; ram = pci_rom_load(dev, rom); if (ram == NULL) return; run_bios(dev, (unsigned long)ram);
run_bios is called here. But before it is called, there are two "return" statement. And:
in device/pci_rom.c, line 111~116, in function pci_rom_probe() if (dev->id.u.pci.vendor != rom_data->vendor || dev->id.u.pci.device != rom_data->device) { printk(BIOS_ERR, "Device or Vendor ID mismatch Vendor %04x, Device %04x\n", rom_data->vendor, rom_data->device); return NULL; }
it returns NULL here.
Maybe I should clear the code in pci_dev_init() and call modified run_bios() (or another function run_seabios() written by myself) directly? And then I could test my codes in the run_bios().
Best regards. Zhang Rui
Here is the serial output by qemu:
coreboot-3.0. Thu Jun 19 10:21:30 CST 2008 starting... Choosing fallback boot. LAR: Attempting to open 'fallback/initram/segment0'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: seen member normal/stage2/segment1 LAR: seen member normal/stage2/segment2 LAR: seen member normal/payload/segment0 LAR: seen member bootblock LAR: File not found! LAR: Run file fallback/initram/segment0 failed: No such file. Fallback failed. Try normal boot LAR: Attempting to open 'normal/initram/segment0'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: CHECK normal/initram/segment0 @ 0xfffc0400 start 0xfffc0450 len 432 reallen 432 compression 0 entry 0x00000042 loadaddress 0x00000000 Entry point is 0xfffc0492 RAM init code started. Nothing to do. printktest1: If the immediately preceding line does not say "Nothing to do.", then execution did not start at main() Trying absolute call from non-_MAINOBJECT XIP code. Absolute call successful. Done. run_file returns with 0 Done RAM init code LAR: Attempting to open 'normal/stage2/segment0'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: CHECK normal/stage2/segment0 @ 0xfffc0600 start 0xfffc0650 len 1 reallen 191792 compression 3 entry 0x00002000 loadaddress 0x0000a5c0 LAR: Compression algorithm #3 (zeroes) used LAR: Attempting to open 'normal/stage2/segment1'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: seen member normal/stage2/segment1 LAR: CHECK normal/stage2/segment1 @ 0xfffc0660 start 0xfffc06b0 len 15235 reallen 28424 compression 1 entry 0x00002000 loadaddress 0x00002000 LAR: Compression algorithm #1 (lzma) used LAR: Attempting to open 'normal/stage2/segment2'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: seen member normal/stage2/segment1 LAR: seen member normal/stage2/segment2 LAR: CHECK normal/stage2/segment2 @ 0xfffc4240 start 0xfffc4290 len 334 reallen 5548 compression 1 entry 0x00002000 loadaddress 0x00009000 LAR: Compression algorithm #1 (lzma) used LAR: Attempting to open 'normal/stage2/segment3'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: seen member normal/stage2/segment1 LAR: seen member normal/stage2/segment2 LAR: seen member normal/payload/segment0 LAR: seen member bootblock LAR: File not found! LAR: load_file: No such file 'normal/stage2/segment3' LAR: load_file_segments: All loaded, entry 0x00002000 Phase 1: Very early setup... Phase 1: done Show all devs... root(Root Device): enabled 1 have_resources 0 initialized 0 cpus: Unknown device path type: 0 cpus(): enabled 1 have_resources 0 initialized 0 pci_0_0(PCI: 00:00.0): enabled 1 have_resources 0 initialized 0 pci_1_0(PCI: 00:01.0): enabled 1 have_resources 0 initialized 0 bus_0(PCI_BUS: 0000): enabled 1 have_resources 0 initialized 0 domain_0(PCI_DOMAIN: 0000): enabled 1 have_resources 0 initialized 0 Phase 2: Early setup... dev_phase2: dev root: ops 0x00009020 ops->phase2_setup_scan_bus 0x00000000 dev_phase2: dev cpus: ops 0x00000000 ops->phase2_setup_scan_bus 0x00000000 dev_phase2: dev pci_0_0: ops 0x00000000 ops->phase2_setup_scan_bus 0x00000000 dev_phase2: dev pci_1_0: ops 0x0000a500 ops->phase2_setup_scan_bus 0x00000000 dev_phase2: dev bus_0: ops 0x00000000 ops->phase2_setup_scan_bus 0x00000000 dev_phase2: dev domain_0: ops 0x0000a440 ops->phase2_setup_scan_bus 0x00000000 Phase 2: Done. Show all devs... root(Root Device): enabled 1 have_resources 0 initialized 0 cpus: Unknown device path type: 0 cpus(): enabled 1 have_resources 0 initialized 0 pci_0_0(PCI: 00:00.0): enabled 1 have_resources 0 initialized 0 pci_1_0(PCI: 00:01.0): enabled 1 have_resources 0 initialized 0 bus_0(PCI_BUS: 0000): enabled 1 have_resources 0 initialized 0 domain_0(PCI_DOMAIN: 0000): enabled 1 have_resources 0 initialized 0 Phase 3: Enumerating buses... dev_phase3_scan: scanning root(Root Device) scan_static_bus for root (Root Device) cpus: Unknown device path type: 0 cpus() enabled dev_phase5: bus_0(PCI_BUS: 0000) missing ops domain_0(PCI_DOMAIN: 0000) enabled domain_0(PCI_DOMAIN: 0000) scanning... dev_phase3_scan: scanning domain_0(PCI_DOMAIN: 0000) pci_scan_bus start bus 0x00009a80, bus->dev 0x00009840 PCI: pci_scan_bus for bus 00 pci_scan_bus: old_devices 0x00009b40, dev for this bus 0x00009840 (domain_0) PCI: scan devfn 0x0 to 0xff PCI: devfn 0x0 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) new_device: devcnt 1 find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 constructor: constructor is 0x00000000 No ops found and no constructor called for PCI: 8086:1237. find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 set_pci_ops: dev 0x0000a8ec(dynamic PCI: 00:00.0) set ops to 0x000090a0 PCI: 00:00.0 [PCI: 8086:1237] enabled PCI: pci_scan_bus pci_probe_dev returns dev 0x0000a8ec(dynamic PCI: 00:00.0) PCI: devfn 0x8 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) new_device: devcnt 2 find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 constructor: constructor is 0x00000000 No ops found and no constructor called for PCI: 8086:7000. find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 set_pci_ops: dev 0x0000abd8(dynamic PCI: 00:01.0) set ops to 0x000090a0 PCI: 00:01.0 [PCI: 8086:7000] enabled PCI: pci_scan_bus pci_probe_dev returns dev 0x0000abd8(dynamic PCI: 00:01.0) PCI: devfn 0x9 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) new_device: devcnt 3 find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 find_device_operations: match constructor: constructor is 0x0000a500 default device constructor called set_pci_ops: dev 0x0000aec4(dynamic PCI: 00:01.1) already has ops 0x0000a500 PCI: 00:01.1 [PCI: 8086:7010] enabled PCI: pci_scan_bus pci_probe_dev returns dev 0x0000aec4(dynamic PCI: 00:01.1) PCI: devfn 0xa pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xa, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xb pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) new_device: devcnt 4 find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 constructor: constructor is 0x00000000 No ops found and no constructor called for PCI: 8086:7113. find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 set_pci_ops: dev 0x0000b1b0(dynamic PCI: 00:01.3) set ops to 0x000090a0 PCI: 00:01.3 [PCI: 8086:7113] enabled PCI: pci_scan_bus pci_probe_dev returns dev 0x0000b1b0(dynamic PCI: 00:01.3) PCI: devfn 0xc pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xc, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xd pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xd, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xe pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xe, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xf pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xf, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x10 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) new_device: devcnt 5 find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: match constructor: constructor is 0x000091c0 default device constructor called set_pci_ops: dev 0x0000b49c(dynamic PCI: 00:02.0) already has ops 0x000091c0 Init VGA device PCI: 00:02.0 [PCI: 1013:00b8] enabled PCI: pci_scan_bus pci_probe_dev returns dev 0x0000b49c(dynamic PCI: 00:02.0) PCI: devfn 0x18 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) new_device: devcnt 6 find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 constructor: constructor is 0x00000000 No ops found and no constructor called for PCI: 10ec:8029. find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 set_pci_ops: dev 0x0000b788(dynamic PCI: 00:03.0) set ops to 0x000090a0 PCI: 00:03.0 [PCI: 10ec:8029] enabled PCI: pci_scan_bus pci_probe_dev returns dev 0x0000b788(dynamic PCI: 00:03.0) PCI: devfn 0x20 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x20, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x28 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x28, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x30 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x30, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x38 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x38, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x40 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x40, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x48 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x48, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x50 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x50, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x58 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x58, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x60 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x60, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x68 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x68, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x70 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x70, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x78 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x78, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x80 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x80, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x88 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x88, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x90 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x90, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x98 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x98, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xa0 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xa0, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xa8 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xa8, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xb0 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xb0, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xb8 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xb8, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xc0 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xc0, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xc8 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xc8, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xd0 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xd0, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xd8 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xd8, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xe0 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xe0, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xe8 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xe8, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xf0 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xf0, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xf8 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xf8, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: Done for loop bus_0 ========== PCI: Left over static devices. ===================================== dev_phase3_scan: dynamic PCI: 00:00.0: busdevice 0x0000a8ec enabled 1 ops 0x000090a0 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:01.0: busdevice 0x0000abd8 enabled 1 ops 0x000090a0 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:01.1: busdevice 0x0000aec4 enabled 1 ops 0x0000a500 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:01.3: busdevice 0x0000b1b0 enabled 1 ops 0x000090a0 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:02.0: busdevice 0x0000b49c enabled 1 ops 0x000091c0 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:03.0: busdevice 0x0000b788 enabled 1 ops 0x000090a0 dev_phase3_scan: can not scan from here, returning 0 PCI: pci_scan_bus returning with max=000 dev_phase3_scan: returning 0 scan_static_bus for root(Root Device) done dev_phase3_scan: returning 0 Phase 3: Done. Show all devs... root(Root Device): enabled 1 have_resources 0 initialized 0 cpus: Unknown device path type: 0 cpus(): enabled 1 have_resources 0 initialized 0 pci_0_0(PCI: 00:00.0): enabled 1 have_resources 0 initialized 0 pci_1_0(PCI: 00:01.0): enabled 1 have_resources 0 initialized 0 bus_0(PCI_BUS: 0000): enabled 1 have_resources 0 initialized 0 domain_0(PCI_DOMAIN: 0000): enabled 1 have_resources 0 initialized 0 dynamic PCI: 00:00.0(PCI: 00:00.0): enabled 1 have_resources 0 initialized 0 dynamic PCI: 00:01.0(PCI: 00:01.0): enabled 1 have_resources 0 initialized 0 dynamic PCI: 00:01.1(PCI: 00:01.1): enabled 1 have_resources 0 initialized 0 dynamic PCI: 00:01.3(PCI: 00:01.3): enabled 1 have_resources 0 initialized 0 dynamic PCI: 00:02.0(PCI: 00:02.0): enabled 1 have_resources 0 initialized 0 dynamic PCI: 00:03.0(PCI: 00:03.0): enabled 1 have_resources 0 initialized 0 Phase 4: Allocating resources... Phase 4: Reading resources... Root Device compute_allocate_io: base: 00000400 size: 00000000 align: 0 gran: 0 read_resources: root(Root Device) read_resources bus 0 link: 0 read_resources: root(Root Device) dtsname cpus have_resources 0 enabled 1 cpus: Unknown device path type: 0 read_resources: cpus() missing phase4_read_resources read_resources: root(Root Device) dtsname domain_0 have_resources 0 enabled 1 read_resources: domain_0(PCI_DOMAIN: 0000) read_resources bus 0 link: 0 read_resources: domain_0(PCI_DOMAIN: 0000) dtsname dynamic PCI: 00:00.0 have_resources 0 enabled 1 read_resources: domain_0(PCI_DOMAIN: 0000) dtsname dynamic PCI: 00:01.0 have_resources 0 enabled 1 read_resources: domain_0(PCI_DOMAIN: 0000) dtsname dynamic PCI: 00:01.1 have_resources 0 enabled 1 read_resources: domain_0(PCI_DOMAIN: 0000) dtsname dynamic PCI: 00:01.3 have_resources 0 enabled 1 read_resources: domain_0(PCI_DOMAIN: 0000) dtsname dynamic PCI: 00:02.0 have_resources 0 enabled 1 read_resources: domain_0(PCI_DOMAIN: 0000) dtsname dynamic PCI: 00:03.0 have_resources 0 enabled 1 read_resources: domain_0(PCI_DOMAIN: 0000) read_resources bus 0 link: 0 done read_resources: root(Root Device) read_resources bus 0 link: 0 done PCI: 00:03.0 10 * [0x00000400 - 0x000004ff] io PCI: 00:01.1 20 * [0x00000800 - 0x0000080f] io Root Device compute_allocate_io: base: 00000810 size: 00000410 align: 8 gran: 0 done Root Device compute_allocate_mem: base: 00000000 size: 00000000 align: 0 gran: 0 read_resources: root(Root Device) read_resources bus 0 link: 0 read_resources: root(Root Device) dtsname cpus have_resources 0 enabled 1 cpus: Unknown device path type: 0 read_resources: cpus() missing phase4_read_resources read_resources: root(Root Device) dtsname domain_0 have_resources 1 enabled 1 read_resources: root(Root Device) read_resources bus 0 link: 0 done PCI: 00:02.0 10 * [0x00000000 - 0x01ffffff] prefmem PCI: 00:02.0 14 * [0x02000000 - 0x02000fff] mem Root Device compute_allocate_mem: base: 02001000 size: 02001000 align: 25 gran: 0 done Phase 4: Done reading resources. Allocating VGA resource PCI: 00:02.0 Setting PCI_BRIDGE_CTL_VGA for bridge PCI_DOMAIN: 0000 Setting PCI_BRIDGE_CTL_VGA for bridge Root Device Phase 4: Setting resources... Root Device compute_allocate_io: base: 00001000 size: 00000410 align: 8 gran: 0 read_resources: root(Root Device) read_resources bus 0 link: 0 read_resources: root(Root Device) dtsname cpus have_resources 0 enabled 1 cpus: Unknown device path type: 0 read_resources: cpus() missing phase4_read_resources read_resources: root(Root Device) dtsname domain_0 have_resources 1 enabled 1 read_resources: root(Root Device) read_resources bus 0 link: 0 done PCI: 00:03.0 10 * [0x00001000 - 0x000010ff] io PCI: 00:01.1 20 * [0x00001400 - 0x0000140f] io Root Device compute_allocate_io: base: 00001410 size: 00000410 align: 8 gran: 0 done Root Device compute_allocate_mem: base: fc000000 size: 02001000 align: 25 gran: 0 read_resources: root(Root Device) read_resources bus 0 link: 0 read_resources: root(Root Device) dtsname cpus have_resources 0 enabled 1 cpus: Unknown device path type: 0 read_resources: cpus() missing phase4_read_resources read_resources: root(Root Device) dtsname domain_0 have_resources 1 enabled 1 read_resources: root(Root Device) read_resources bus 0 link: 0 done PCI: 00:02.0 10 * [0xfc000000 - 0xfdffffff] prefmem PCI: 00:02.0 14 * [0xfe000000 - 0xfe000fff] mem Root Device compute_allocate_mem: base: fe001000 size: 02001000 align: 25 gran: 0 done root(Root Device) assign_resources, bus 0 link: 0 Adding RAM resource (134217728 bytes) domain_0(PCI_DOMAIN: 0000) assign_resources, bus 0 link: 0 PCI: 00:01.1 20 <- [0x0000001400 - 0x000000140f] size 0x00000010 gran 0x04 io PCI: 00:02.0 10 <- [0x00fc000000 - 0x00fdffffff] size 0x02000000 gran 0x19 prefmem PCI: 00:02.0 14 <- [0x00fe000000 - 0x00fe000fff] size 0x00001000 gran 0x0c mem PCI: 00:03.0 10 <- [0x0000001000 - 0x00000010ff] size 0x00000100 gran 0x08 io domain_0(PCI_DOMAIN: 0000) assign_resources, bus 0 link: 0 root(Root Device) assign_resources, bus 0 link: 0 Phase 4: Done setting resources. Phase 4: Done allocating resources. Show all devs... root(Root Device): enabled 1 have_resources 0 initialized 0 cpus: Unknown device path type: 0 cpus(): enabled 1 have_resources 0 initialized 0 pci_0_0(PCI: 00:00.0): enabled 1 have_resources 0 initialized 0 pci_1_0(PCI: 00:01.0): enabled 1 have_resources 0 initialized 0 bus_0(PCI_BUS: 0000): enabled 1 have_resources 0 initialized 0 domain_0(PCI_DOMAIN: 0000): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:00.0(PCI: 00:00.0): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:01.0(PCI: 00:01.0): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:01.1(PCI: 00:01.1): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:01.3(PCI: 00:01.3): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:02.0(PCI: 00:02.0): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:03.0(PCI: 00:03.0): enabled 1 have_resources 1 initialized 0 Phase 5: Enabling resources... cpus: Unknown device path type: 0 dev_phase5: cpus() missing ops pci_dev_enable_resources: dynamic PCI: 00:00.0 (PCI: 00:00.0) cmd <- 140 pci_dev_enable_resources: dynamic PCI: 00:01.0 (PCI: 00:01.0) cmd <- 147 pci_dev_enable_resources: dynamic PCI: 00:01.1 (PCI: 00:01.1) cmd <- 141 pci_dev_enable_resources: dynamic PCI: 00:01.3 (PCI: 00:01.3) cmd <- 140 pci_dev_enable_resources: dynamic PCI: 00:02.0 (PCI: 00:02.0) cmd <- 143 pci_dev_enable_resources: dynamic PCI: 00:03.0 (PCI: 00:03.0) cmd <- 141 Phase 5: Done. Show all devs... root(Root Device): enabled 1 have_resources 0 initialized 0 cpus: Unknown device path type: 0 cpus(): enabled 1 have_resources 0 initialized 0 pci_0_0(PCI: 00:00.0): enabled 1 have_resources 0 initialized 0 pci_1_0(PCI: 00:01.0): enabled 1 have_resources 0 initialized 0 bus_0(PCI_BUS: 0000): enabled 1 have_resources 0 initialized 0 domain_0(PCI_DOMAIN: 0000): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:00.0(PCI: 00:00.0): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:01.0(PCI: 00:01.0): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:01.1(PCI: 00:01.1): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:01.3(PCI: 00:01.3): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:02.0(PCI: 00:02.0): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:03.0(PCI: 00:03.0): enabled 1 have_resources 1 initialized 0 Phase 6: Initializing devices... Phase 6: Root Device init. Phase 6: PCI: 00:01.0 init. Enabling IDE channel 1 Enabling IDE channel 2 Enabling Legacy IDE Phase 6: PCI: 00:00.0 init. PCI: pci_dev_init Probing for option ROM Phase 6: PCI: 00:01.0 init. PCI: pci_dev_init Probing for option ROM Phase 6: PCI: 00:01.1 init. Enabling IDE channel 1 Enabling IDE channel 2 Enabling Legacy IDE Phase 6: PCI: 00:01.3 init. PCI: pci_dev_init Probing for option ROM Phase 6: PCI: 00:02.0 init. PCI: pci_dev_init Probing for option ROM ROM address for PCI: 00:02.0 = c0000 PCI Expansion ROM, signature 0xaa55, INIT size 0x8a00, data ptr 0x736f PCI ROM Image, Vendor 0846, Device ec89, Device or Vendor ID mismatch Vendor 0846, Device ec89 Phase 6: PCI: 00:03.0 init. PCI: pci_dev_init Probing for option ROM Phase 6: Devices initialized. Show all devs... root(Root Device): enabled 1 have_resources 0 initialized 1 cpus: Unknown device path type: 0 cpus(): enabled 1 have_resources 0 initialized 0 pci_0_0(PCI: 00:00.0): enabled 1 have_resources 0 initialized 0 pci_1_0(PCI: 00:01.0): enabled 1 have_resources 0 initialized 1 bus_0(PCI_BUS: 0000): enabled 1 have_resources 0 initialized 0 domain_0(PCI_DOMAIN: 0000): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:00.0(PCI: 00:00.0): enabled 1 have_resources 1 initialized 1 dynamic PCI: 00:01.0(PCI: 00:01.0): enabled 1 have_resources 1 initialized 1 dynamic PCI: 00:01.1(PCI: 00:01.1): enabled 1 have_resources 1 initialized 1 dynamic PCI: 00:01.3(PCI: 00:01.3): enabled 1 have_resources 1 initialized 1 dynamic PCI: 00:02.0(PCI: 00:02.0): enabled 1 have_resources 1 initialized 1 dynamic PCI: 00:03.0(PCI: 00:03.0): enabled 1 have_resources 1 initialized 1 LAR: Attempting to open 'normal/option_table'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: CHECK normal/option_table @ 0xfffc0000 start 0xfffc0050 len 932 reallen 932 compression 0 entry 0x00000000 loadaddress 0x00000000 search_global_resources: mask 4200 type 4200 search_global_resources: dev root, have_resources 0 #resources 2 search_global_resources: dev cpus, have_resources 0 #resources 0 search_global_resources: dev pci_0_0, have_resources 0 #resources 0 search_global_resources: dev pci_1_0, have_resources 0 #resources 0 search_global_resources: dev bus_0, have_resources 0 #resources 0 search_global_resources: dev domain_0, have_resources 1 #resources 3 search_global_resources: dev domain_0, resource 0, flags 40040100 base 0x0 size 0x0 search_global_resources: dev domain_0, resource 1, flags 40040200 base 0x0 size 0x0 search_global_resources: dev domain_0, resource 2, flags e0004200 base 0x0 size 0x8000000 lb_memory_range: start 0x0 size 0x8000000 search_global_resources: dev dynamic PCI: 00:00.0, have_resources 1 #resources 0 search_global_resources: dev dynamic PCI: 00:01.0, have_resources 1 #resources 0 search_global_resources: dev dynamic PCI: 00:01.1, have_resources 1 #resources 1 search_global_resources: dev dynamic PCI: 00:01.1, resource 0, flags 60000100 base 0x1400 size 0x10 search_global_resources: dev dynamic PCI: 00:01.3, have_resources 1 #resources 0 search_global_resources: dev dynamic PCI: 00:02.0, have_resources 1 #resources 2 search_global_resources: dev dynamic PCI: 00:02.0, resource 0, flags 60001200 base 0xfc000000 size 0x2000000 search_global_resources: dev dynamic PCI: 00:02.0, resource 1, flags 60000200 base 0xfe000000 size 0x1000 search_global_resources: dev dynamic PCI: 00:03.0, have_resources 1 #resources 1 search_global_resources: dev dynamic PCI: 00:03.0, resource 0, flags 60000100 base 0x1000 size 0x100 lb_cleanup_memory_ranges: # entries 1 #0: base 0x00000000 size 0x8000000 lb_memory_range: start 0x0 size 0x500 lb_cleanup_memory_ranges: # entries 2 #0: base 0x00000500 size 0x7fffb00 #1: base 0x00000000 size 0x500 lb_memory_range: start 0xf0000 size 0x0 lb_cleanup_memory_ranges: # entries 4 #0: base 0x00000000 size 0x500 #1: base 0x00000500 size 0xefb00 #2: base 0x000f0000 size 0x7f10000 #3: base 0x000f0000 size 0x0 Wrote coreboot table at: 0x00000500 - 0x00000a74 checksum 8380 Show all devs... root(Root Device): enabled 1 have_resources 0 initialized 1 cpus: Unknown device path type: 0 cpus(): enabled 1 have_resources 0 initialized 0 pci_0_0(PCI: 00:00.0): enabled 1 have_resources 0 initialized 0 pci_1_0(PCI: 00:01.0): enabled 1 have_resources 0 initialized 1 bus_0(PCI_BUS: 0000): enabled 1 have_resources 0 initialized 0 domain_0(PCI_DOMAIN: 0000): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:00.0(PCI: 00:00.0): enabled 1 have_resources 1 initialized 1 dynamic PCI: 00:01.0(PCI: 00:01.0): enabled 1 have_resources 1 initialized 1 dynamic PCI: 00:01.1(PCI: 00:01.1): enabled 1 have_resources 1 initialized 1 dynamic PCI: 00:01.3(PCI: 00:01.3): enabled 1 have_resources 1 initialized 1 dynamic PCI: 00:02.0(PCI: 00:02.0): enabled 1 have_resources 1 initialized 1 dynamic PCI: 00:03.0(PCI: 00:03.0): enabled 1 have_resources 1 initialized 1 Stage2 code done. LAR: Attempting to open 'normal/payload/segment0'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: seen member normal/stage2/segment1 LAR: seen member normal/stage2/segment2 LAR: seen member normal/payload/segment0 LAR: CHECK normal/payload/segment0 @ 0xfffc43e0 start 0xfffc4430 len 20753 reallen 65536 compression 1 entry 0x000f66e0 loadaddress 0x000f0000 LAR: Compression algorithm #1 (lzma) used LAR: Attempting to open 'normal/payload/segment1'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: seen member normal/stage2/segment1 LAR: seen member normal/stage2/segment2 LAR: seen member normal/payload/segment0 LAR: seen member bootblock LAR: File not found! LAR: load_file: No such file 'normal/payload/segment1' LAR: load_file_segments: All loaded, entry 0x000f66e0 Start bios post address:000f7ad7bios_table_addr: 0x000ff0a5 end=0x000ff841 ram_size=0x08000000 Scan for VGA option rom Running option rom at 000c0003 BIOS - begin
e820 map has 5 items: 0: 0000000000000000 - 000000000009fc00 = 1 1: 000000000009fc00 - 00000000000a0000 = 2 2: 00000000000a0000 - 00000000000f0000 = 1 3: 00000000000f0000 - 0000000000100000 = 2 4: 0000000000100000 - 0000000008000000 = 1 ata0-0: PCHS=203/16/63 translation=none LCHS=203/16/63 ata0 master: QEMU HARDDISK ATA-7 Hard-Disk (100 MBytes) IDE time out ata1 master: QEMU CD-ROM ATAPI-4 CD-Rom/DVD-Rom IDE time out
Scan for option roms post address:000f7ad7Press F12 for boot menu.
enter handle_19: NULL Booting from Floppy... fail floppy_fail: a=00000201 b=00000000 c=00000001 d=00000000 si=00000000 di=00000000 ds=00000000 es=000007c0 ip=0000e81b cs=0000f000 f=00000002 r=0000f6dc Boot failed: could not read the boot disk
enter handle_18: NULL Booting from CD-Rom... ata_is_ready returned 65535 CDROM boot failure code : 00000003 Boot failed: could not read the boot disk
enter handle_18: NULL Booting from Hard Disk... Booting from 00000000:00007c00 fail floppy_1300: a=00000000 b=00000e70 c=00000000 d=00000300 si=000001c2 di=00002a20 ds=00009b00 es=00007000 ip=000007da cs=00009b00 f=00000246 r=0000afda fail get_device: a=00001500 b=00000e70 c=00000000 d=00000381 si=000001c2 di=00002a20 ds=00009000 es=00009000 ip=00000033 cs=00009020 f=00000246 r=0000afda fail get_device: a=00001500 b=00010008 c=00000000 d=534d1881 si=0000ff63 di=000000a0 ds=00009fc0 es=00009000 ip=000001c7 cs=00009020 f=00000246 r=0000afda enter handle_11: a=00009000 b=0001e6f5 c=00000000 d=534d1881 si=0000e6ff di=000000aa ds=00009000 es=00009000 ip=00000223 cs=00009020 f=00000286 r=0000afda
Hello, Stefan
2008/7/10, Zhang Rui zrfail@gmail.com:
Hello, Stefan
First, the GSOC mid term evaluation comes. Please submit the mentor midterm survey for this "SCSI booting in coreboot" project. The timeline is July 7th to July 14th at 19:00 UTC. Refer to "Survey Information for Mentors with Students Assigned to Them" on http://groups.google.com/group/google-summer-of-code-announce/web/midterm-su... Thanks.
Second, my process and problems:
2008/7/6 Zhang Rui zrfail@gmail.com:
Hello Stefan,
2008/6/25, Zhang Rui zrfail@gmail.com:
[...]
I finally find that in arch/x86/, function pci_dev_init() called run_bios() in util/x86emu. The order is : pci_dev_init -->pci_rom_probe -->run_bios(vm86.c/biosemu.c)
my problem is: in pci_rom_probe, most rom_address is 0 and return NULL; only one rom_address is 0x c0000 but the rom_header->signature is 0 so it also return NULL.
So no run_bios is running.
How can I get run_bios() running and test my code in it?
Best regards.
Zhang Rui
Here is the output of qemu: [...]
Now I find that there is something wrong with my vgabios-cirrus. I download it from www.coreboot.org by a browser and unzip it to "vgabios-cirrus". But actually it is only 14k. I added ".zip" to the file "vgabios-cirrus" and unzip it to "vgabios-cirrus.bin". And it works now.
But new problem comes up: "Device or Vendor ID mismatch Vendor 0846, Device ec89" So run_bios() is not executed.
Here is related source code: in device/pci_device.c, in function pci_dev_init() rom = pci_rom_probe(dev); if (rom == NULL) return; ram = pci_rom_load(dev, rom); if (ram == NULL) return; run_bios(dev, (unsigned long)ram);
run_bios is called here. But before it is called, there are two "return" statement. And:
in device/pci_rom.c, line 111~116, in function pci_rom_probe() if (dev->id.u.pci.vendor != rom_data->vendor || dev->id.u.pci.device != rom_data->device) { printk(BIOS_ERR, "Device or Vendor ID mismatch Vendor %04x, Device %04x\n", rom_data->vendor, rom_data->device); return NULL; }
it returns NULL here.
Maybe I should clear the code in pci_dev_init() and call modified run_bios() (or another function run_seabios() written by myself) directly? And then I could test my codes in the run_bios().
I wrote run_seabios() in vm86.c to copy Legacybios to 0xf0000
modify pci_dev_init() in device/pci_device.c to call run_seabios() in vm86.c
Then, at line 224 in arch/x86/stage1.c, before "die("FATAL: No usable payload found.\n");" 1. call run_address(0x000f7ad7); //0x000f7ad7 is the address of post() in LegacyBIOS qemu dies and can not close the qemu window.
2. call run_address(0x000f66e0); //0x000f66e0 is the entry address of LegacyBIOS payload. And I find that 0x000f66e0 is the address of post32() defined in out/rom32.offset.auto.h LegacyBIOS runs correct as if it is the payload.
The difference of post32() and post() is that post32() sets up special idt, gdt and stack. And post32() would call init_dma() before post(). I will try these work manually. I will write another entry in LegacyBIOS which will initialize the LegacyBIOS and then return to coreboot.
By the way, please submit the midterm survay in time. ^_^
Best regards. Zhang Rui
Hello, Stefan
2008/7/12, Zhang Rui zrfail@gmail.com:
First, the GSOC mid term evaluation comes. Please submit the mentor midterm survey for this "SCSI booting in coreboot" project. The timeline is July 7th to July 14th at 19:00 UTC. Refer to "Survey Information for Mentors with Students Assigned to Them" on http://groups.google.com/group/google-summer-of-code-announce/web/midterm-su... Thanks.
Second, my process and problems:
[...]
I wrote run_seabios() in vm86.c to copy Legacybios to 0xf0000
I will write another entry in LegacyBIOS which will initialize the LegacyBIOS and then return to coreboot.
In LegacyBIOS(SeaBIOS), I inserted some code in post.c
void VISIBLE32 post_coreboot() { init_dma(); post(); dprintf(1, "post_coreboot return\n"); }
asm( ".global start_coreboot\n" "start_coreboot:\n" "cli\n" "cld\n" "lidtl " __stringify(0xf0000 | OFFSET_pmode_IDT_info) "\n" "lgdtl " __stringify(0xf0000 | OFFSET_rombios32_gdt_48) "\n" "movl $" __stringify(BUILD_STACK_ADDR) ", %esp\n" "ljmp $0x10, $post_coreboot\n" );
In coreboot, I modified my function in vm86.c printk(BIOS_INFO, "Legacy BIOS copied.\n"); run_address(0x000f66fc); printk(BIOS_INFO, "Legacy BIOS VGA finish.\n");
where 0x000f66fc is the address of start_coreboot() in LegacyBIOS.
The VGA can be initialized by LegacyBIOS(SeaBIOS), but it can not return to coreboot. The qemu meets a fatal error when the post_coreboot() returns.
I think the return address in the stack is wrong. I am trying to figure it out.
Here is the output:
coreboot-3.0. Thu Jun 19 10:21:30 CST 2008 starting... Choosing fallback boot. LAR: Attempting to open 'fallback/initram/segment0'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: seen member normal/stage2/segment1 LAR: seen member normal/stage2/segment2 LAR: seen member legacybios.rom LAR: seen member bootblock LAR: File not found! LAR: Run file fallback/initram/segment0 failed: No such file. Fallback failed. Try normal boot LAR: Attempting to open 'normal/initram/segment0'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: CHECK normal/initram/segment0 @ 0xfffc0400 start 0xfffc0450 len 432 reallen 432 compression 0 entry 0x00000042 loadaddress 0x00000000 Entry point is 0xfffc0492 RAM init code started. Nothing to do. printktest1: If the immediately preceding line does not say "Nothing to do.", then execution did not start at main() Trying absolute call from non-_MAINOBJECT XIP code. Absolute call successful. Done. run_file returns with 0 Done RAM init code LAR: Attempting to open 'normal/stage2/segment0'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: CHECK normal/stage2/segment0 @ 0xfffc0600 start 0xfffc0650 len 1 reallen 191792 compression 3 entry 0x00002000 loadaddress 0x0000a5c0 LAR: Compression algorithm #3 (zeroes) used LAR: Attempting to open 'normal/stage2/segment1'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: seen member normal/stage2/segment1 LAR: CHECK normal/stage2/segment1 @ 0xfffc0660 start 0xfffc06b0 len 15277 reallen 28488 compression 1 entry 0x00002000 loadaddress 0x00002000 LAR: Compression algorithm #1 (lzma) used LAR: Attempting to open 'normal/stage2/segment2'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: seen member normal/stage2/segment1 LAR: seen member normal/stage2/segment2 LAR: CHECK normal/stage2/segment2 @ 0xfffc4260 start 0xfffc42b0 len 334 reallen 5548 compression 1 entry 0x00002000 loadaddress 0x00009000 LAR: Compression algorithm #1 (lzma) used LAR: Attempting to open 'normal/stage2/segment3'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: seen member normal/stage2/segment1 LAR: seen member normal/stage2/segment2 LAR: seen member legacybios.rom LAR: seen member bootblock LAR: File not found! LAR: load_file: No such file 'normal/stage2/segment3' LAR: load_file_segments: All loaded, entry 0x00002000 Phase 1: Very early setup... Phase 1: done Show all devs... root(Root Device): enabled 1 have_resources 0 initialized 0 cpus: Unknown device path type: 0 cpus(): enabled 1 have_resources 0 initialized 0 pci_0_0(PCI: 00:00.0): enabled 1 have_resources 0 initialized 0 pci_1_0(PCI: 00:01.0): enabled 1 have_resources 0 initialized 0 bus_0(PCI_BUS: 0000): enabled 1 have_resources 0 initialized 0 domain_0(PCI_DOMAIN: 0000): enabled 1 have_resources 0 initialized 0 Phase 2: Early setup... dev_phase2: dev root: ops 0x00009020 ops->phase2_setup_scan_bus 0x00000000 dev_phase2: dev cpus: ops 0x00000000 ops->phase2_setup_scan_bus 0x00000000 dev_phase2: dev pci_0_0: ops 0x00000000 ops->phase2_setup_scan_bus 0x00000000 dev_phase2: dev pci_1_0: ops 0x0000a500 ops->phase2_setup_scan_bus 0x00000000 dev_phase2: dev bus_0: ops 0x00000000 ops->phase2_setup_scan_bus 0x00000000 dev_phase2: dev domain_0: ops 0x0000a440 ops->phase2_setup_scan_bus 0x00000000 Phase 2: Done. Show all devs... root(Root Device): enabled 1 have_resources 0 initialized 0 cpus: Unknown device path type: 0 cpus(): enabled 1 have_resources 0 initialized 0 pci_0_0(PCI: 00:00.0): enabled 1 have_resources 0 initialized 0 pci_1_0(PCI: 00:01.0): enabled 1 have_resources 0 initialized 0 bus_0(PCI_BUS: 0000): enabled 1 have_resources 0 initialized 0 domain_0(PCI_DOMAIN: 0000): enabled 1 have_resources 0 initialized 0 Phase 3: Enumerating buses... dev_phase3_scan: scanning root(Root Device) scan_static_bus for root (Root Device) cpus: Unknown device path type: 0 cpus() enabled dev_phase5: bus_0(PCI_BUS: 0000) missing ops domain_0(PCI_DOMAIN: 0000) enabled domain_0(PCI_DOMAIN: 0000) scanning... dev_phase3_scan: scanning domain_0(PCI_DOMAIN: 0000) pci_scan_bus start bus 0x00009a80, bus->dev 0x00009840 PCI: pci_scan_bus for bus 00 pci_scan_bus: old_devices 0x00009b40, dev for this bus 0x00009840 (domain_0) PCI: scan devfn 0x0 to 0xff PCI: devfn 0x0 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) new_device: devcnt 1 find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 constructor: constructor is 0x00000000 No ops found and no constructor called for PCI: 8086:1237. find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 set_pci_ops: dev 0x0000a8ec(dynamic PCI: 00:00.0) set ops to 0x000090a0 PCI: 00:00.0 [PCI: 8086:1237] enabled PCI: pci_scan_bus pci_probe_dev returns dev 0x0000a8ec(dynamic PCI: 00:00.0) PCI: devfn 0x8 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) new_device: devcnt 2 find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 constructor: constructor is 0x00000000 No ops found and no constructor called for PCI: 8086:7000. find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 set_pci_ops: dev 0x0000abd8(dynamic PCI: 00:01.0) set ops to 0x000090a0 PCI: 00:01.0 [PCI: 8086:7000] enabled PCI: pci_scan_bus pci_probe_dev returns dev 0x0000abd8(dynamic PCI: 00:01.0) PCI: devfn 0x9 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) new_device: devcnt 3 find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 find_device_operations: match constructor: constructor is 0x0000a500 default device constructor called set_pci_ops: dev 0x0000aec4(dynamic PCI: 00:01.1) already has ops 0x0000a500 PCI: 00:01.1 [PCI: 8086:7010] enabled PCI: pci_scan_bus pci_probe_dev returns dev 0x0000aec4(dynamic PCI: 00:01.1) PCI: devfn 0xa pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xa, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xb pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) new_device: devcnt 4 find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 constructor: constructor is 0x00000000 No ops found and no constructor called for PCI: 8086:7113. find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 set_pci_ops: dev 0x0000b1b0(dynamic PCI: 00:01.3) set ops to 0x000090a0 PCI: 00:01.3 [PCI: 8086:7113] enabled PCI: pci_scan_bus pci_probe_dev returns dev 0x0000b1b0(dynamic PCI: 00:01.3) PCI: devfn 0xc pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xc, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xd pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xd, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xe pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xe, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xf pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xf, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x10 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) new_device: devcnt 5 find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: match constructor: constructor is 0x000091c0 default device constructor called set_pci_ops: dev 0x0000b49c(dynamic PCI: 00:02.0) already has ops 0x000091c0 Init VGA device PCI: 00:02.0 [PCI: 1013:00b8] enabled PCI: pci_scan_bus pci_probe_dev returns dev 0x0000b49c(dynamic PCI: 00:02.0) PCI: devfn 0x18 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) new_device: devcnt 6 find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 constructor: constructor is 0x00000000 No ops found and no constructor called for PCI: 10ec:8029. find_device_operations: check all_device_operations[i] 0x000091c0 find_device_operations: cons 0x000091c0, cons id PCI: 1013:00b8 find_device_operations: check all_device_operations[i] 0x0000a440 find_device_operations: cons 0x0000a440, cons id PCI_DOMAIN: 8086:7190 find_device_operations: check all_device_operations[i] 0x0000a500 find_device_operations: cons 0x0000a500, cons id PCI: 8086:7010 set_pci_ops: dev 0x0000b788(dynamic PCI: 00:03.0) set ops to 0x000090a0 PCI: 00:03.0 [PCI: 10ec:8029] enabled PCI: pci_scan_bus pci_probe_dev returns dev 0x0000b788(dynamic PCI: 00:03.0) PCI: devfn 0x20 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x20, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x28 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x28, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x30 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x30, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x38 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x38, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x40 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x40, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x48 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x48, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x50 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x50, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x58 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x58, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x60 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x60, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x68 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x68, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x70 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x70, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x78 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x78, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x80 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x80, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x88 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x88, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x90 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x90, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0x98 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0x98, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xa0 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xa0, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xa8 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xa8, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xb0 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xb0, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xb8 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xb8, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xc0 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xc0, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xc8 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xc8, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xd0 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xd0, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xd8 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xd8, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xe0 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xe0, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xe8 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xe8, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xf0 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xf0, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: devfn 0xf8 pci_scan_get_dev: list is 0x0008fecc, *list is 0x00009b40 pci_scan_get_dev: check dev bus_0 pci_scan_get_dev: child bus_0(PCI_BUS: 0000) not a pci device: it's type 3 PCI: pci_scan_bus pci_scan_get_dev returns dev None (no dev in tree yet) PCI: devfn 0xf8, bad id 0xffffffff PCI: pci_scan_bus pci_probe_dev returns dev 0x00000000(None (not found)) PCI: Done for loop bus_0 ========== PCI: Left over static devices. ===================================== dev_phase3_scan: dynamic PCI: 00:00.0: busdevice 0x0000a8ec enabled 1 ops 0x000090a0 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:01.0: busdevice 0x0000abd8 enabled 1 ops 0x000090a0 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:01.1: busdevice 0x0000aec4 enabled 1 ops 0x0000a500 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:01.3: busdevice 0x0000b1b0 enabled 1 ops 0x000090a0 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:02.0: busdevice 0x0000b49c enabled 1 ops 0x000091c0 dev_phase3_scan: can not scan from here, returning 0 dev_phase3_scan: dynamic PCI: 00:03.0: busdevice 0x0000b788 enabled 1 ops 0x000090a0 dev_phase3_scan: can not scan from here, returning 0 PCI: pci_scan_bus returning with max=000 dev_phase3_scan: returning 0 scan_static_bus for root(Root Device) done dev_phase3_scan: returning 0 Phase 3: Done. Show all devs... root(Root Device): enabled 1 have_resources 0 initialized 0 cpus: Unknown device path type: 0 cpus(): enabled 1 have_resources 0 initialized 0 pci_0_0(PCI: 00:00.0): enabled 1 have_resources 0 initialized 0 pci_1_0(PCI: 00:01.0): enabled 1 have_resources 0 initialized 0 bus_0(PCI_BUS: 0000): enabled 1 have_resources 0 initialized 0 domain_0(PCI_DOMAIN: 0000): enabled 1 have_resources 0 initialized 0 dynamic PCI: 00:00.0(PCI: 00:00.0): enabled 1 have_resources 0 initialized 0 dynamic PCI: 00:01.0(PCI: 00:01.0): enabled 1 have_resources 0 initialized 0 dynamic PCI: 00:01.1(PCI: 00:01.1): enabled 1 have_resources 0 initialized 0 dynamic PCI: 00:01.3(PCI: 00:01.3): enabled 1 have_resources 0 initialized 0 dynamic PCI: 00:02.0(PCI: 00:02.0): enabled 1 have_resources 0 initialized 0 dynamic PCI: 00:03.0(PCI: 00:03.0): enabled 1 have_resources 0 initialized 0 Phase 4: Allocating resources... Phase 4: Reading resources... Root Device compute_allocate_io: base: 00000400 size: 00000000 align: 0 gran: 0 read_resources: root(Root Device) read_resources bus 0 link: 0 read_resources: root(Root Device) dtsname cpus have_resources 0 enabled 1 cpus: Unknown device path type: 0 read_resources: cpus() missing phase4_read_resources read_resources: root(Root Device) dtsname domain_0 have_resources 0 enabled 1 read_resources: domain_0(PCI_DOMAIN: 0000) read_resources bus 0 link: 0 read_resources: domain_0(PCI_DOMAIN: 0000) dtsname dynamic PCI: 00:00.0 have_resources 0 enabled 1 read_resources: domain_0(PCI_DOMAIN: 0000) dtsname dynamic PCI: 00:01.0 have_resources 0 enabled 1 read_resources: domain_0(PCI_DOMAIN: 0000) dtsname dynamic PCI: 00:01.1 have_resources 0 enabled 1 read_resources: domain_0(PCI_DOMAIN: 0000) dtsname dynamic PCI: 00:01.3 have_resources 0 enabled 1 read_resources: domain_0(PCI_DOMAIN: 0000) dtsname dynamic PCI: 00:02.0 have_resources 0 enabled 1 read_resources: domain_0(PCI_DOMAIN: 0000) dtsname dynamic PCI: 00:03.0 have_resources 0 enabled 1 read_resources: domain_0(PCI_DOMAIN: 0000) read_resources bus 0 link: 0 done read_resources: root(Root Device) read_resources bus 0 link: 0 done PCI: 00:03.0 10 * [0x00000400 - 0x000004ff] io PCI: 00:01.1 20 * [0x00000800 - 0x0000080f] io Root Device compute_allocate_io: base: 00000810 size: 00000410 align: 8 gran: 0 done Root Device compute_allocate_mem: base: 00000000 size: 00000000 align: 0 gran: 0 read_resources: root(Root Device) read_resources bus 0 link: 0 read_resources: root(Root Device) dtsname cpus have_resources 0 enabled 1 cpus: Unknown device path type: 0 read_resources: cpus() missing phase4_read_resources read_resources: root(Root Device) dtsname domain_0 have_resources 1 enabled 1 read_resources: root(Root Device) read_resources bus 0 link: 0 done PCI: 00:02.0 10 * [0x00000000 - 0x01ffffff] prefmem PCI: 00:02.0 14 * [0x02000000 - 0x02000fff] mem Root Device compute_allocate_mem: base: 02001000 size: 02001000 align: 25 gran: 0 done Phase 4: Done reading resources. Allocating VGA resource PCI: 00:02.0 Setting PCI_BRIDGE_CTL_VGA for bridge PCI_DOMAIN: 0000 Setting PCI_BRIDGE_CTL_VGA for bridge Root Device Phase 4: Setting resources... Root Device compute_allocate_io: base: 00001000 size: 00000410 align: 8 gran: 0 read_resources: root(Root Device) read_resources bus 0 link: 0 read_resources: root(Root Device) dtsname cpus have_resources 0 enabled 1 cpus: Unknown device path type: 0 read_resources: cpus() missing phase4_read_resources read_resources: root(Root Device) dtsname domain_0 have_resources 1 enabled 1 read_resources: root(Root Device) read_resources bus 0 link: 0 done PCI: 00:03.0 10 * [0x00001000 - 0x000010ff] io PCI: 00:01.1 20 * [0x00001400 - 0x0000140f] io Root Device compute_allocate_io: base: 00001410 size: 00000410 align: 8 gran: 0 done Root Device compute_allocate_mem: base: fc000000 size: 02001000 align: 25 gran: 0 read_resources: root(Root Device) read_resources bus 0 link: 0 read_resources: root(Root Device) dtsname cpus have_resources 0 enabled 1 cpus: Unknown device path type: 0 read_resources: cpus() missing phase4_read_resources read_resources: root(Root Device) dtsname domain_0 have_resources 1 enabled 1 read_resources: root(Root Device) read_resources bus 0 link: 0 done PCI: 00:02.0 10 * [0xfc000000 - 0xfdffffff] prefmem PCI: 00:02.0 14 * [0xfe000000 - 0xfe000fff] mem Root Device compute_allocate_mem: base: fe001000 size: 02001000 align: 25 gran: 0 done root(Root Device) assign_resources, bus 0 link: 0 Adding RAM resource (134217728 bytes) domain_0(PCI_DOMAIN: 0000) assign_resources, bus 0 link: 0 PCI: 00:01.1 20 <- [0x0000001400 - 0x000000140f] size 0x00000010 gran 0x04 io PCI: 00:02.0 10 <- [0x00fc000000 - 0x00fdffffff] size 0x02000000 gran 0x19 prefmem PCI: 00:02.0 14 <- [0x00fe000000 - 0x00fe000fff] size 0x00001000 gran 0x0c mem PCI: 00:03.0 10 <- [0x0000001000 - 0x00000010ff] size 0x00000100 gran 0x08 io domain_0(PCI_DOMAIN: 0000) assign_resources, bus 0 link: 0 root(Root Device) assign_resources, bus 0 link: 0 Phase 4: Done setting resources. Phase 4: Done allocating resources. Show all devs... root(Root Device): enabled 1 have_resources 0 initialized 0 cpus: Unknown device path type: 0 cpus(): enabled 1 have_resources 0 initialized 0 pci_0_0(PCI: 00:00.0): enabled 1 have_resources 0 initialized 0 pci_1_0(PCI: 00:01.0): enabled 1 have_resources 0 initialized 0 bus_0(PCI_BUS: 0000): enabled 1 have_resources 0 initialized 0 domain_0(PCI_DOMAIN: 0000): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:00.0(PCI: 00:00.0): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:01.0(PCI: 00:01.0): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:01.1(PCI: 00:01.1): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:01.3(PCI: 00:01.3): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:02.0(PCI: 00:02.0): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:03.0(PCI: 00:03.0): enabled 1 have_resources 1 initialized 0 Phase 5: Enabling resources... cpus: Unknown device path type: 0 dev_phase5: cpus() missing ops pci_dev_enable_resources: dynamic PCI: 00:00.0 (PCI: 00:00.0) cmd <- 140 pci_dev_enable_resources: dynamic PCI: 00:01.0 (PCI: 00:01.0) cmd <- 147 pci_dev_enable_resources: dynamic PCI: 00:01.1 (PCI: 00:01.1) cmd <- 141 pci_dev_enable_resources: dynamic PCI: 00:01.3 (PCI: 00:01.3) cmd <- 140 pci_dev_enable_resources: dynamic PCI: 00:02.0 (PCI: 00:02.0) cmd <- 143 pci_dev_enable_resources: dynamic PCI: 00:03.0 (PCI: 00:03.0) cmd <- 141 Phase 5: Done. Show all devs... root(Root Device): enabled 1 have_resources 0 initialized 0 cpus: Unknown device path type: 0 cpus(): enabled 1 have_resources 0 initialized 0 pci_0_0(PCI: 00:00.0): enabled 1 have_resources 0 initialized 0 pci_1_0(PCI: 00:01.0): enabled 1 have_resources 0 initialized 0 bus_0(PCI_BUS: 0000): enabled 1 have_resources 0 initialized 0 domain_0(PCI_DOMAIN: 0000): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:00.0(PCI: 00:00.0): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:01.0(PCI: 00:01.0): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:01.1(PCI: 00:01.1): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:01.3(PCI: 00:01.3): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:02.0(PCI: 00:02.0): enabled 1 have_resources 1 initialized 0 dynamic PCI: 00:03.0(PCI: 00:03.0): enabled 1 have_resources 1 initialized 0 Phase 6: Initializing devices... Phase 6: Root Device init. Phase 6: PCI: 00:01.0 init. Enabling IDE channel 1 Enabling IDE channel 2 Enabling Legacy IDE Phase 6: PCI: 00:00.0 init. PCI: pci_dev_init LAR: Attempting to open 'legacybios.rom'. LAR: Start 0xfffc0000 len 0x40000 LAR: seen member normal/option_table LAR: seen member normal/initram/segment0 LAR: seen member normal/stage2/segment0 LAR: seen member normal/stage2/segment1 LAR: seen member normal/stage2/segment2 LAR: seen member legacybios.rom LAR: CHECK legacybios.rom @ 0xfffc4400 start 0xfffc4440 len 20758 reallen 65536 compression 1 entry 0x00000000 loadaddress 0x00000000 LAR: Compression algorithm #1 (lzma) used Legacy BIOS copied. bios_table_addr: 0x000ff0a5 end=0x000ff841 Unable to find coreboot table! ram_size=0x01000000 Scan for VGA option rom Running option rom at 000c0003 BIOS - begin
e820 map has 5 items: 0: 0000000000000000 - 000000000009fc00 = 1 1: 000000000009fc00 - 00000000000a0000 = 2 2: 00000000000a0000 - 00000000000f0000 = 1 3: 00000000000f0000 - 0000000000100000 = 2 4: 0000000000100000 - 0000000001000000 = 1 ata0-0: PCHS=203/16/63 translation=none LCHS=203/16/63 ata0 master: QEMU HARDDISK ATA-7 Hard-Disk (100 MBytes) IDE time out ata1 master: QEMU CD-ROM ATAPI-4 CD-Rom/DVD-Rom IDE time out
Scan for option roms post_coreboot return
and then qemu quit with these messages:
qemu: fatal: Trying to execute code outside RAM or ROM at 0x39f00133
EAX=000c8000 EBX=0008ff4c ECX=0008fff8 EDX=000e0000 ESI=0000a8f0 EDI=00090004 EBP=0000fd9e ESP=0000ffc2 EIP=39f00133 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0 ES =0018 00000000 ffffffff 00cf9300 CS =0010 00000000 ffffffff 00cf9b00 SS =0018 00000000 ffffffff 00cf9300 DS =0018 00000000 ffffffff 00cf9300 FS =0000 00000000 00000000 00000000 GS =0000 00000000 00000000 00000000 LDT=0000 00000000 0000ffff 00008000 TR =0000 00000000 0000ffff 00008000 GDT= 000fe1f0 00000030 IDT= 000f0000 00000000 CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000 CCS=00000e00 CCD=000c8e00 CCO=ADDB FCW=037f FSW=0000 [ST=0] FTW=00 MXCSR=00001f80 FPR0=0000000000000000 0000 FPR1=0000000000000000 0000 FPR2=0000000000000000 0000 FPR3=0000000000000000 0000 FPR4=0000000000000000 0000 FPR5=0000000000000000 0000 FPR6=0000000000000000 0000 FPR7=0000000000000000 0000 XMM00=00000000000000000000000000000000 XMM01=00000000000000000000000000000000 XMM02=00000000000000000000000000000000 XMM03=00000000000000000000000000000000 XMM04=00000000000000000000000000000000 XMM05=00000000000000000000000000000000 XMM06=00000000000000000000000000000000 XMM07=00000000000000000000000000000000 abort
On Sun, Jul 13, 2008 at 11:02:42PM +0800, Zhang Rui wrote:
In LegacyBIOS(SeaBIOS), I inserted some code in post.c
[...]
"movl $" __stringify(BUILD_STACK_ADDR) ", %esp\n"
[...]
I think the return address in the stack is wrong. I am trying to figure it out.
You moved the stack (by assigning a new value to %esp). So, the return address is not on the stack - it's on the previous stack.
-Kevin
2008/7/13, Kevin O'Connor kevin@koconnor.net:
In LegacyBIOS(SeaBIOS), I inserted some code in post.c
[...]
"movl $" __stringify(BUILD_STACK_ADDR) ", %esp\n"
[...]
I think the return address in the stack is wrong. I am trying to figure it out.
You moved the stack (by assigning a new value to %esp). So, the return address is not on the stack - it's on the previous stack.
But I tried without "movl $" __stringify(BUILD_STACK_ADDR) ", %esp\n", post_coreboot in LegacyBIOS(SeaBIOS) can not run correctly. I think I should manually set the return address?
On Mon, Jul 14, 2008 at 12:05:18AM +0800, Zhang Rui wrote:
2008/7/13, Kevin O'Connor kevin@koconnor.net:
In LegacyBIOS(SeaBIOS), I inserted some code in post.c
[...]
"movl $" __stringify(BUILD_STACK_ADDR) ", %esp\n"
[...]
I think the return address in the stack is wrong. I am trying to figure it out.
You moved the stack (by assigning a new value to %esp). So, the return address is not on the stack - it's on the previous stack.
But I tried without "movl $" __stringify(BUILD_STACK_ADDR) ", %esp\n", post_coreboot in LegacyBIOS(SeaBIOS) can not run correctly. I think I should manually set the return address?
Right - seabios needs to be using its stack in order to call 16bit functions. You probably need to save and restore the stack. Completely untested, but something like:
movl %esp, %esi movl $BUILD_STACK_ADDR, %esp ljmp 0x10, $1f
1: calll post_coreboot
movl %esi, %esp retl
However, note that the above wont save/restore the idt/gdt. And again, I'm not sure if coreboot puts its stack/idt/gdt somewhere where seabios may overwrite it.
-Kevin
2008/7/14, Kevin O'Connor kevin@koconnor.net:
[...] Right - seabios needs to be using its stack in order to call 16bit functions. You probably need to save and restore the stack. Completely untested, but something like:
movl %esp, %esi movl $BUILD_STACK_ADDR, %esp ljmp 0x10, $1f
1: calll post_coreboot
movl %esi, %esp retl
I used this: "movl %esp, %esi\n" "movl $" __stringify(BUILD_STACK_ADDR) ", %esp\n" "ljmp $0x10, $post_coreboot\n"
and added this at the end of post_coreboot() function: asm( "movl %esi, %esp\n" "retl" );
Then it can return to coreboot correctly. Till the payload(I used no payload here)
But pci_dev_init() is executed more than one time so vga is initialized more than one time in SeaBIOS. A flag variable would be used to run SeaBIOS only once.
However, note that the above wont save/restore the idt/gdt. And again, I'm not sure if coreboot puts its stack/idt/gdt somewhere where seabios may overwrite it.
I am supprised that it just run correctly when return address is set. I supposed to restore the gdt. Maybe the gdt of SeaBIOS and coreboot are the same.
And I want to know where will SeaBIOS write in the memory. Such as the range of bda and ebda?
I think it is time to int SCSI controller, and set the int 13 for it.
Best regards. Zhang Rui
On Mon, Jul 14, 2008 at 11:21:47PM +0800, Zhang Rui wrote:
2008/7/14, Kevin O'Connor kevin@koconnor.net:
movl %esp, %esi movl $BUILD_STACK_ADDR, %esp ljmp 0x10, $1f
1: calll post_coreboot
movl %esi, %esp retl
I used this: "movl %esp, %esi\n" "movl $" __stringify(BUILD_STACK_ADDR) ", %esp\n" "ljmp $0x10, $post_coreboot\n"
and added this at the end of post_coreboot() function: asm( "movl %esi, %esp\n" "retl" );
That's dangerous because the compiler might use %esi in the post_coreboot() function. If you really want to do this, you should move %esp to %eax and declare the stack pointer as an argument to post_coreboot() and then pass the argument to the inline asm.
-Kevin
2008/7/16, Kevin O'Connor kevin@koconnor.net:
and added this at the end of post_coreboot() function: asm( "movl %esi, %esp\n" "retl" );
That's dangerous because the compiler might use %esi in the post_coreboot() function. If you really want to do this, you should move %esp to %eax and declare the stack pointer as an argument to post_coreboot() and then pass the argument to the inline asm.
I see. I will change this.
Zhang Rui