I circumvented the problem I described in the "Ramdisk layout" thread by moving 
the device drivers location down to within 2GB of the kernel. I'll look at 
GOT/PLT support in the near future. I'm now loading the modules and getting 
through startup. It's now crashing in hment_put_reserve as part of the VM 
subsystem startup. 

One thing I had to change was the assumption made in 'load_linker()' in kobj.c 
was that the kernel code was located before the krtld code. This assumption 
could lead to negative kmp->text_size/kmp->data_size values. 

So here's a log of what the startup of OpenSolaris on System z looks like:

Installed physical memory:
(0x00, 0x08000000)
Booter occupied memory (including modules):
(0x0c00000, 0x0380000)
Ramdisk memory:
(0x0400000, 0x0800000)
Available physical memory:
(0x0200000, 0x0200000)(0x01800000, 0x06800000)
Available virtual memory:
(0x00, 0x0400000)(0x01800000, 0xfffffffffe7fffff)
DAT Enabled using RTO 200000
Relocating the UNIX executable
Loaded section at 0x50000 for 0xc1d88 bytes
Loaded section at 0x112000 for 0x47d88 bytes
Section  is located at 0xd00000
Section .interp relocated from 0xd00190 to 0x50190 (11 bytes)
Section .hash relocated from 0xd001a0 to 0x501a0 (41344 bytes)
Section .dynsym relocated from 0xd0a320 to 0x5a320 (74712 bytes)
Section .dynstr relocated from 0xd1c6f8 to 0x6c6f8 (54177 bytes)
Section .rela.dyn relocated from 0xd29aa0 to 0x79aa0 (27024 bytes)
Section .rela.text relocated from 0xd30430 to 0x80430 (74736 bytes)
Section .rela.rodata relocated from 0xd42820 to 0x92820 (9720 bytes)
Section .rela.data relocated from 0xd44e18 to 0x94e18 (47088 bytes)
Section .text relocated from 0xd50640 to 0xa0640 (364944 bytes)
Section .rodata relocated from 0xda97d0 to 0xf97d0 (50594 bytes)
Section .eh_frame relocated from 0xdb5d78 to 0x105d78 (49168 bytes)
Section .dynamic relocated from 0xdc2000 to 0x112000 (304 bytes)
Section .got relocated from 0xdc2130 to 0x112130 (24 bytes)
Section .data relocated from 0xdc3000 to 0x113000 (83344 bytes)
Section .bss relocated from 0xdd7590 to 0x127590 (206840 bytes)
Section .comment is located at 0xdd7590
Section .note is located at 0xdd7ab0
Section .shstrtab is located at 0xdd7ac8
Section .symtab is located at 0xdd7b70
Section .strtab is located at 0xdf0530
Section .SUNW_ctf is located at 0xe028b4
Relocating the KRTLD executable
Section  is located at 0xf00000
Section .text relocated from 0xf00190 to 0xa400 (49196 bytes)
Section .rela.text is located at 0xf42780
Section .rodata relocated from 0xf0c1c0 to 0x16430 (9304 bytes)
Section .rela.rodata is located at 0xf4aa60
Section .data relocated from 0xf0e618 to 0x19000 (1216 bytes)
Section .rela.data is located at 0xf4b678
Section .eh_frame relocated from 0xf0ead8 to 0x194c0 (7472 bytes)
Section .rela.eh_frame is located at 0xf4c218
Section .bss relocated from 0xf10808 to 0x1b200 (864 bytes)
Section .comment relocated from 0xf10808 to 0x4da57 (252 bytes)
Section .shstrtab is located at 0xf10904
Section .symtab is located at 0xf10978
Section .strtab is located at 0xf14968
Section .SUNW_ctf is located at 0xf15e38
Processing .text
Processing .rela.text
        Relocating: .text
        Symbols: .symtab
Processing .rodata
Processing .rela.rodata
        Relocating: .rodata
        Symbols: .symtab
Processing .data
Processing .rela.data
        Relocating: .data
        Symbols: .symtab
Processing .eh_frame
Processing .rela.eh_frame
        Relocating: .eh_frame
        Symbols: .symtab
Processing .bss
Processing .comment
Processing .shstrtab
Processing .symtab
Processing .strtab
Processing .SUNW_ctf
ramdisk range: 0x400000-c00000
krtld: file=/platform/s390x/unix
        text: 0x50000 size: 0x0
        data: 0x112000 dsize: 0x0
krtld: file=misc/krtld
        text:0xa400 size: 0x107988
        data:0x19000 dsize: 0x14496a
/kernel/s390x/genunix symbol getfsname multiply defined
/kernel/s390x/genunix symbol rootconf multiply defined
krtld: file=/kernel/s390x/genunix
        text:0x15e028 size: 0x238db0
        data:0x396dd8 dsize: 0x561b8
OpenSolaris on System z - Startup commenced
Memory size: 128MB Chunks: 1
0. 0000000000000000 08000000 0
Discovering CPUs
Boot CPU logical address: 0 hardware address: 0
1 CPUs detected
Initializing I/O structures
Console address = 0009
Highest subchannel address encountered: 001f
I/O Device List starts at 1a3a000 for 5904 bytes
SunOS Release 5.11 Version sirius 64-bit
Copyright 1983-2006 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
DEBUG enabled
krtld: file=/kernel/fs/specfs
        text:0x40af2000 size: 0x6a18
        data:0x3f9c9e dsize: 0xa8
krtld: file=/kernel/fs/devfs
        text:0x40b07000 size: 0x7f70
        data:0x3fa632 dsize: 0x248
krtld: file=/kernel/misc/swapgeneric
        text:0x40b3f000 size: 0x1f18
        data:0x3fa8a2 dsize: 0x198
krtld: file=/kernel/sched/TS
        text:0x40b4a000 size: 0x4608
        data:0x3faa3a dsize: 0x738
krtld: file=/kernel/sched/TS_DPTBL
        text:0x40af8a18 size: 0x178
        data:0x3fb192 dsize: 0x830

 -> 00000000000BD2D0"  LG    E30020000004    4E445F5052495002
*** 00000000000BD2D0"    PROG    0039 -> 00000000000A08B0
              REGION FIRST TRANS

- This is where it breaks in hment_put_reserve.
 
 
This message posted from opensolaris.org
_______________________________________________
opensolaris-code mailing list
opensolaris-code@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to