[OpenBIOS] OpenSolaris starts to live on SPARC64

Blue Swirl blauwirbel at gmail.com
Sat Apr 3 12:03:32 CEST 2010


On 4/3/10, Mark Cave-Ayland <mark.cave-ayland at siriusit.co.uk> wrote:
> Mark Cave-Ayland wrote:
>
>
> > So looks like its possibly related to the MMU? What I do find interesting
> aswell is that the getprop CIF calls seem to throw argument count errors
> too...
> >
>
>  On closer inspection, the key turned out to be the argument count errors.
> It seems that the client interface code for returning arguments back to the
> caller was broken (off by one error) :(
>
>  I believe I've fixed this in r732 and now get this:
>
>
>  0 > go
>  Jumping to entry point 00000000010071d8 for type 0000000000000001...
>  switching to new context: entry point 0x10071d8 stack 0x00000000ffe02a91
>  krtld: load_exec: fail to expand cpu/$CPU
>  krtld: error during initial load/link phase
>
>  krtld could neither locate nor resolve symbols for:
>     /platform/sun4u/kernel/sparcv9/unix
>  in the boot archive. Please verify that this file
>  matches what is found in the boot archive.
>  You may need to boot using the Solaris failsafe to fix this.
>  panic - kernel: Unable to boot
>  EXIT
>  0 >
>
>
>  Which is an improvement ;)  Incidentally, it may be worth someone trying a
> Linux boot again to see if my last CIF fix enables things to get a bit
> further there too.

Unfortunately some Linux images break, for example like this:
OpenBIOS for Sparc64
Configuration device id QEMU version 1 machine id 0
kernel addr 404000 size 404d61
kernel cmdline root=/dev/ram -p console=prom init=/sbin/init
of_debug=3 ofpci_debug=1
CPUs: 1 x SUNW,UltraSPARC-II
UUID: 00000000-0000-0000-0000-000000000000
Welcome to OpenBIOS v1.0 built on Apr 2 2010 14:10
  Type 'help' for detailed information

[sparc64] Kernel already loaded
Unhandled Exception 0x0000000000000010
PC = 0x0000000000404380 NPC = 0x0000000000404384
Stopping execution

With r731 I get:

OpenBIOS for Sparc64
Configuration device id QEMU version 1 machine id 0
kernel addr 404000 size 404d61
kernel cmdline root=/dev/ram -p console=prom init=/sbin/init
of_debug=3 ofpci_debug=1
CPUs: 1 x SUNW,UltraSPARC-II
UUID: 00000000-0000-0000-0000-000000000000
Welcome to OpenBIOS v1.0 built on Apr 2 2010 14:10
  Type 'help' for detailed information

[sparc64] Kernel already loaded

PROMLIB: Sun IEEE Boot Prom 'OBP 3.10.24 1999/01/01 01:01'
PROMLIB: Root node compatible: sun4u
Linux version 2.6.32 (test at host) (gcc version 4.2.4) #20 SMP Wed Jan
27 21:44:29 UTC 2010
bootconsole [earlyprom0] enabled
ARCH: SUN4U
Ethernet address: 52:54:00:12:34:56
Kernel: Using 2 locked TLB entries for main kernel image.
Remapping the kernel... done.
OF stdout device is: /pci at 1fe,0/pci at 1/pci at 1,1/ebus at 3/su at 1fe
PROM: Built device tree with 32987 bytes of memory.
Top of RAM: 0x7e80000, Total RAM: 0x7e80000
Memory hole size: 0MB
Zone PFN ranges:
  Normal   0x00000000 -> 0x00003f40
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
    0: 0x00000000 -> 0x00003f40
Booting Linux...
PERCPU: Embedded 5 pages/cpu @fffff80001400000 s16000 r0 d24960 u4194304
pcpu-alloc: s16000 r0 d24960 u4194304 alloc=1*4194304
pcpu-alloc: [0] 0
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16065
Kernel command line: root=/dev/ram -p console=prom init=/sbin/init
of_debug=3 ofpci_debug=1
PID hash table entries: 512 (order: -1, 4096 bytes)
Dentry cache hash table entries: 16384 (order: 4, 131072 bytes)
Inode-cache hash table entries: 8192 (order: 3, 65536 bytes)
Memory: 116272k available (2656k kernel code, 784k data, 216k init)
[fffff80000000000,0000000007e80000]
SLUB: Genslabs=14, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Hierarchical RCU implementation.
NR_IRQS:255
clocksource: mult[a0000] shift[16]
clockevent: mult[19999999] shift[32]
Console: colour dummy device 80x25
Calibrating delay using timer specific routine.. 247.67 BogoMIPS (lpj=495348)
Mount-cache hash table entries: 512
Brought up 1 CPUs
NET: Registered protocol family 16
/memory reg[0] -> 0
/pci reg[0] -> 1fe00000000
/pci reg[1] -> 1fe01000000
/pci: direct translate 7f0 --> 1
/pci: direct translate 7ee --> 1
/pci: direct translate 7ef --> 1
/pci: direct translate 7e5 --> 1
/pci/pci at 1/pci at 1,1/QEMU,VGA at 2 reg[0] -> 1ff00800000
/pci/pci at 1/pci at 1,1/ebus at 3 reg[0] -> 1ff01000000
/pci/pci at 1/pci at 1,1/ebus at 3 reg[1] -> 1ff02000000
/pci/pci at 1/pci at 1,1/NE2000 at 4 reg[0] -> 1fe02000400
/pci/pci at 1/pci at 1,1/NE2000 at 4: PCI swizzle [/pci/pci at 1/pci at 1,1] 1 --> 1
/pci/pci at 1/pci at 1,1/NE2000 at 4: PCI swizzle [/pci/pci at 1] 1 --> 2
/pci/pci at 1/pci at 1,1/NE2000 at 4: PCI swizzle [/pci] 2 --> fffffffd
/pci/pci at 1/pci at 1,1/NE2000 at 4: Apply IRQ trans [/pci] 1 --> 1
/pci/pci at 1/pci at 1,1/pci-ata at 5 reg[0] -> 1fe02000500
/pci/pci at 1/pci at 1,1/pci-ata at 5 reg[1] -> 1fe02000580
/pci/pci at 1/pci at 1,1/pci-ata at 5 reg[2] -> 1fe02000600
/pci/pci at 1/pci at 1,1/pci-ata at 5 reg[3] -> 1fe02000680
/pci/pci at 1/pci at 1,1/pci-ata at 5 reg[4] -> 1fe02000700
/pci/pci at 1/pci at 1,1/pci-ata at 5: PCI swizzle [/pci/pci at 1/pci at 1,1] 1 --> 2
/pci/pci at 1/pci at 1,1/pci-ata at 5: PCI swizzle [/pci/pci at 1] 2 --> 3
/pci/pci at 1/pci at 1,1/pci-ata at 5: PCI swizzle [/pci] 3 --> fffffffe
/pci/pci at 1/pci at 1,1/pci-ata at 5: Apply IRQ trans [/pci] 1 --> 1
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500 reg[0] -> 50000000000
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500 reg[1] -> 582
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: PCI swizzle
[/pci/pci at 1/pci at 1,1] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: PCI swizzle [/pci/pci at 1] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: PCI swizzle [/pci] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: Apply IRQ trans [/pci] 0 --> 2
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: PCI swizzle
[/pci/pci at 1/pci at 1,1] e --> e
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: PCI swizzle [/pci/pci at 1] e --> e
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: PCI swizzle [/pci] e --> e
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: Apply IRQ trans [/pci] e --> 3
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: PCI swizzle
[/pci/pci at 1/pci at 1,1] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: PCI swizzle [/pci/pci at 1] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: PCI swizzle [/pci] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: Apply IRQ trans [/pci] 0 --> 2
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: PCI swizzle
[/pci/pci at 1/pci at 1,1] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: PCI swizzle [/pci/pci at 1] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: PCI swizzle [/pci] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500: Apply IRQ trans [/pci] 0 --> 2
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide0 at 0,500/disk at 0,0 reg[0] -> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600 reg[0] -> 60000000000
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600 reg[1] -> 682
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: PCI swizzle
[/pci/pci at 1/pci at 1,1] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: PCI swizzle [/pci/pci at 1] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: PCI swizzle [/pci] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: Apply IRQ trans [/pci] 0 --> 2
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: PCI swizzle
[/pci/pci at 1/pci at 1,1] e --> e
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: PCI swizzle [/pci/pci at 1] e --> e
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: PCI swizzle [/pci] e --> e
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: Apply IRQ trans [/pci] e --> 3
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: PCI swizzle
[/pci/pci at 1/pci at 1,1] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: PCI swizzle [/pci/pci at 1] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: PCI swizzle [/pci] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: Apply IRQ trans [/pci] 0 --> 2
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: PCI swizzle
[/pci/pci at 1/pci at 1,1] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: PCI swizzle [/pci/pci at 1] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: PCI swizzle [/pci] 0 --> 0
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600: Apply IRQ trans [/pci] 0 --> 2
/pci/pci at 1/pci at 1,1/pci-ata at 5/ide1 at 0,600/cdrom at 0,0 reg[0] -> 0
/pci: PCI IO[1fe02000000] MEM[1ff00000000]
/pci: SABRE PCI Bus Module ver[0:0]
PCI: Scanning PBM /pci
PCI: scan_bus[/pci] bus no 0
  * /pci/pci at 1
    create device, devfn: 8, type: pci
    class: 0x60400 device name: 0000:00:01.0
    adding to system ...
PCI: dev header type: 1
of_scan_pci_bridge(/pci/pci at 1)
    bus name: PCI Bus 0000:00
PCI: scan_bus[/pci/pci at 1] bus no 0
  * /pci/pci at 1/pci at 1,1
    create device, devfn: 9, type: pci
    class: 0x60400 device name: 0000:00:01.1
    adding to system ...
PCI: dev header type: 1
of_scan_pci_bridge(/pci/pci at 1/pci at 1,1)
    bus name: PCI Bus 0000:00
PCI: scan_bus[/pci/pci at 1/pci at 1,1] bus no 0
  * /pci/pci at 1/pci at 1,1/QEMU,VGA at 2
    create device, devfn: 10, type: display
    class: 0x30000 device name: 0000:00:02.0
    parse addresses (20 bytes) @ fffff80007e75ac0
  start: 1ff00800000, end: 1ff00ffffff, i: 10
    adding to system ...
PCI: dev header type: 0
  * /pci/pci at 1/pci at 1,1/ebus at 3
    create device, devfn: 18, type:
    class: 0x68000 device name: 0000:00:03.0
    parse addresses (40 bytes) @ fffff80007e74640
  start: 1ff01000000, end: 1ff01ffffff, i: 10
  start: 1ff02000000, end: 1ff027fffff, i: 14
    adding to system ...
PCI: dev header type: 0
  * /pci/pci at 1/pci at 1,1/NE2000 at 4
    create device, devfn: 20, type: network
    class: 0x20000 device name: 0000:00:04.0
    parse addresses (20 bytes) @ fffff80007e728c0
  start: 1fe02000400, end: 1fe020004ff, i: 10
    adding to system ...
PCI: dev header type: 0
  * /pci/pci at 1/pci at 1,1/pci-ata at 5
    create device, devfn: 28, type: pci-ide
    class: 0x1018f device name: 0000:00:05.0
    parse addresses (100 bytes) @ fffff80007e71780
  start: 1fe02000500, end: 1fe02000507, i: 10
  start: 1fe02000580, end: 1fe02000583, i: 14
  start: 1fe02000600, end: 1fe02000607, i: 18
  start: 1fe02000680, end: 1fe02000683, i: 1c
  start: 1fe02000700, end: 1fe0200070f, i: 20
    adding to system ...
PCI: dev header type: 0
------------[ cut here ]------------
WARNING: at /src/linux.git/fs/sysfs/dir.c:491 sysfs_add_one+0x8c/0xc0()
sysfs: cannot create duplicate filename '/class/pci_bus/0000:00'
Call Trace:
 [000000000045cd68] warn_slowpath_fmt+0x28/0x40
 [0000000000507bac] sysfs_add_one+0x8c/0xc0
 [0000000000508dbc] sysfs_do_create_link+0x9c/0x160
 [00000000005c3648] device_add+0x3c8/0x500
 [0000000000578494] pci_bus_add_child+0x14/0x80
 [00000000005786a4] pci_bus_add_devices+0x144/0x200
 [000000000057864c] pci_bus_add_devices+0xec/0x200
 [000000000069000c] pci_scan_one_pbm+0x6c/0xa0
 [0000000000690850] sabre_probe+0x2d0/0x5a0
 [000000000060e61c] of_platform_device_probe+0x3c/0x80
 [00000000005c60d0] driver_probe_device+0x70/0x160
 [00000000005c6238] __driver_attach+0x78/0xa0
 [00000000005c558c] bus_for_each_dev+0x4c/0x80
 [00000000005c5b9c] bus_add_driver+0x9c/0x240
 [00000000005c65f0] driver_register+0x50/0x160
 [0000000000426ab8] do_one_initcall+0x18/0x160
---[ end trace 139ce121c98e96c9 ]---
pci 0000:00:01.1: Error adding bus, continuing
------------[ cut here ]------------
WARNING: at /src/linux.git/fs/sysfs/dir.c:491 sysfs_add_one+0x8c/0xc0()
sysfs: cannot create duplicate filename '/class/pci_bus/0000:00'
Call Trace:
 [000000000045cd68] warn_slowpath_fmt+0x28/0x40
 [0000000000507bac] sysfs_add_one+0x8c/0xc0
 [0000000000508dbc] sysfs_do_create_link+0x9c/0x160
 [00000000005c3648] device_add+0x3c8/0x500
 [0000000000578494] pci_bus_add_child+0x14/0x80
 [00000000005786a4] pci_bus_add_devices+0x144/0x200
 [000000000069000c] pci_scan_one_pbm+0x6c/0xa0
 [0000000000690850] sabre_probe+0x2d0/0x5a0
 [000000000060e61c] of_platform_device_probe+0x3c/0x80
 [00000000005c60d0] driver_probe_device+0x70/0x160
 [00000000005c6238] __driver_attach+0x78/0xa0
 [00000000005c558c] bus_for_each_dev+0x4c/0x80
 [00000000005c5b9c] bus_add_driver+0x9c/0x240
 [00000000005c65f0] driver_register+0x50/0x160
 [0000000000426ab8] do_one_initcall+0x18/0x160
 [00000000007683c8] kernel_init+0x1c8/0x240
---[ end trace 139ce121c98e96ca ]---
pci 0000:00:01.0: Error adding bus, continuing
bio: create slab <bio-0> at 0
vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=none,locks=none
vgaarb: loaded
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Switching to clocksource tick
CE: tick increasing min_delta_ns to 3000 nsec
CE: tick increasing min_delta_ns to 4500 nsec
CE: tick increasing min_delta_ns to 6750 nsec
CE: tick increasing min_delta_ns to 10124 nsec
CE: tick increasing min_delta_ns to 15186 nsec
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 8192 bytes)
TCP established hash table entries: 4096 (order: 3, 65536 bytes)
TCP bind hash table entries: 4096 (order: 3, 65536 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP reno registered
NET: Registered protocol family 1
Unpacking initramfs...
Freeing initrd memory: 392k freed
io scheduler noop registered (default)
------------[ cut here ]------------
WARNING: at /src/linux.git/fs/proc/generic.c:590 proc_register+0x108/0x200()
proc_dir_entry 'pci/0000:00' already registered
Call Trace:
 [000000000045cd68] warn_slowpath_fmt+0x28/0x40
 [0000000000500568] proc_register+0x108/0x200
 [0000000000500870] proc_mkdir_mode+0x30/0x60
 [0000000000581514] pci_proc_attach_device+0xb4/0xe0
 [000000000077d65c] pci_proc_init+0x5c/0xa0
 [0000000000426ab8] do_one_initcall+0x18/0x160
 [00000000007683c8] kernel_init+0x1c8/0x240
 [000000000042b3b0] kernel_thread+0x30/0x60
 [000000000068d0b8] rest_init+0x18/0x80
---[ end trace 139ce121c98e96cb ]---
------------[ cut here ]------------
WARNING: at /src/linux.git/fs/proc/generic.c:590 proc_register+0x108/0x200()
proc_dir_entry 'pci/0000:00' already registered
Call Trace:
 [000000000045cd68] warn_slowpath_fmt+0x28/0x40
 [0000000000500568] proc_register+0x108/0x200
 [0000000000500870] proc_mkdir_mode+0x30/0x60
 [0000000000581514] pci_proc_attach_device+0xb4/0xe0
 [000000000077d65c] pci_proc_init+0x5c/0xa0
 [0000000000426ab8] do_one_initcall+0x18/0x160
 [00000000007683c8] kernel_init+0x1c8/0x240
 [000000000042b3b0] kernel_thread+0x30/0x60
 [000000000068d0b8] rest_init+0x18/0x80
---[ end trace 139ce121c98e96cc ]---
su: probe of ffe2d750 failed with error -12
loop: module loaded
nbd: registered device at major 43
Uniform Multi-Platform E-IDE driver
cmd64x 0000:00:05.0: IDE controller (0x1095:0x0646 rev 0x07)
cmd64x 0000:00:05.0: 100% native mode on irq 1
    ide0: BM-DMA at 0x1fe02000700-0x1fe02000707
    ide1: BM-DMA at 0x1fe02000708-0x1fe0200070f
hda: QEMU HARDDISK, ATA DISK drive
hda: UDMA/33 mode selected
hdc: QEMU DVD-ROM, ATAPI CD/DVD-ROM drive
hdc: UDMA/33 mode selected
ide0 at 0x1fe02000500-0x1fe02000507,0x1fe02000582 on irq 1 (serialized)
ide1 at 0x1fe02000600-0x1fe02000607,0x1fe02000682 on irq 1 (serialized)
ide-gd driver 1.18
hda: max request size: 512KiB
hda: 20971520 sectors (10737 MB) w/256KiB Cache, CHS=16383/255/63
hda: lost interrupt
hda: lost interrupt



More information about the OpenBIOS mailing list