Following the advice given in this forum regarding bop_alloc etc. I've made
further progress with the port. I thought it'd be useful to summarize where I'm
at.
Below is the console log of OpenSolaris booting on a System z box (z990). It's
very early days still and there is a lot more work to do but it's still
progress.
Here are some of the assumptions/design points that I've made for this port:
- 64-bit only
- Will require System z9 hardware
- Uses same ABI and ELF format as Linux on System z
- Running under z/VM so nearly all the I/O error recovery and machine check
stuff can be ignored as the hypervisor will take care of it
- I/O to traditional disk will be DIAG 250 based (hypervisor interface).
- Other hypervisor facilities are used when appropriate
- 3 levels of region table to support a virtual 64-bit address space
- Kernel lives in its own address space
- Will support "hotplug" of devices
OpenSolaris on System z - Startup commenced [b]{1}[/b]
Memory size: 128MB Chunks: 1 [b]{2}[/b]
0. 0000000000000000 08000000 0
Discovering CPUs [b]{3}[/b]
Boot CPU logical address: 0 hardware address: 0
1 CPUs detected
Initializing timers
Initializing memory [b]{4}[/b]
../../s390x/os/startup.c:686: 'physinstalled' is 0x8000000
../../s390x/os/startup.c:687: 'physmax' is 0x7fff
../../s390x/os/startup.c:708: 'moddata' is 0x600000
../../s390x/os/startup.c:709: 'nalloc_base' is 0x640000
../../s390x/os/startup.c:710: 'nalloc_end' is 0x1700000
../../s390x/os/startup.c:711: 'sdata' is 0x300000
../../s390x/os/startup.c:716: 'e_text' is 0x23227a
../../s390x/os/startup.c:720: 'modtext' is 0x233000
../../s390x/os/startup.c:721: 'modtext_sz' is 0xcd000
../../s390x/os/startup.c:741: 'extra_etpg' is 0x0
../../s390x/os/startup.c:742: 'modtext_sz' is 0xcd000
../../s390x/os/startup.c:743: 'extra_etva' is 0x300000
../../s390x/os/startup.c:749: 'nalloc_base' is 0x640000
../../s390x/os/startup.c:750: 'nalloc_end' is 0x1700000
DAT Enabled using RTO 640000 (using 327680 bytes) [b]{5}[/b]
../../s390x/os/startup.c:801: 'kmem64_base' is 0x70000000000
../../s390x/os/startup.c:839: 'ndata_remain_sz' is 0x847000
../../s390x/os/startup.c:996: 'page_hash' is 0x129b000
../../s390x/os/startup.c:997: 'memseg_base' is 0x130c000
../../s390x/os/startup.c:998: 'kpm_pp_base' is 0x130d000
../../s390x/os/startup.c:999: 'kpm_pp_sz' is 0x42458
../../s390x/os/startup.c:1000: 'pp_base' is 0xeb9000
../../s390x/os/startup.c:1001: 'pp_sz' is 0x3e1f48
../../s390x/os/startup.c:1002: 'alloc_base' is 0x70000000000
../../s390x/os/startup.c:1010: 'kmem64_base' is 0x70000000000
../../s390x/os/startup.c:1011: 'kmem64_end' is 0x70000000000
../../s390x/os/startup.c:1025: 'memlist' is 0x1350000
../../s390x/os/startup.c:1026: 'memlist_end' is 0x1563000
../../s390x/os/startup.c:1027: 'sysbase' is 0x30000000000
../../s390x/os/startup.c:1028: 'syslimit' is 0x70000000000
../../s390x/vm/s390xmmu.c:368: 'wasteage' is 0x0
../../s390x/os/startup.c:1072: 'memlist' is 0x1350000
../../s390x/os/startup.c:1073: 'memlist_sz' is 0x213000
../../s390x/os/startup.c:1074: 'memspace' is 0x1350000
../../s390x/os/startup.c:1079: 'pp_base' is 0xeb9000
../../s390x/os/startup.c:1080: 'memseg_base' is 0x130c000
../../s390x/os/startup.c:1081: 'npages' is 0x8487
../../s390x/os/startup.c:1082: 'phys_avail' is 0x1350000
../../s390x/os/startup.c:1090: 'availrmem' is 0x19d
panic[cpu0]/thread=b300: boot_mapin(): No pp for pfnum = 790 [b]{6}[/b]
skipping system dump - no dump device configured
[u]Notes:[/u]
1. Messages are written using virtual HMC interface
2. Supports discontiguous real memory
3. Uses sigp to sense the other CPUs
4. Memory initialization involves setting up tables and other structures for
the kernel
5. This includes setting up a kernel address space before full virtual memory
support is turned on
6. There's still work to do with memory initialization! While I'm able to map
addresses above sysbase I've not initialized some tables to account for the
real address it's mapped to. I still need to study the initialization code in
the sun4 base.
[u]Virtual Machine Size[/u]
CP Q V STOR
STORAGE = 128M
[u]PSW - DAT On, Home space mode[/u]
PSW = 0400E001 80000000 00000000 000415DE
[u]Virtual Address Space[/u]
CP D 8000000.
V0000000008000000 to 000000007FFFFFFF non-addressable storage - segment
translation exception
V0000000080000000 to 000002FFFFFFFFFF non-addressable storage -
Region-Third-Translation exception
V0000030000000000 to 0000030000000FFF non-addressable storage - page
translation exception
V0000030000001000 00000000 00000000 00000000 00000000 04 R00790000
V0000030000001010 to 0000030000001FFF suppressed line(s) same as above ....
V0000030000002000 to 00000300000FFFFF non-addressable storage - page
translation exception
V0000030000100000 to 000003007FFFFFFF non-addressable storage - segment
translation exception
V0000030080000000 to 000003FFFFFFFFFF non-addressable storage -
Region-Third-Translation exception
V0000040000000000 to 001FFFFFFFFFFFFF non-addressable storage -
Region-Second-Translation exception
V0020000000000000 to FFFFFFFFFFFFFFFF non-addressable storage -
Region-First-Translation exception
[u]Home Space Control Register[/u]
CRG 13 = 000000000064000F
[u]Region First Level Table[/u]
V00640000 00000000 0064400F 00000000 00000020 06 R00640000
V00640010 00000000 00000020 00000000 00000020
V00640020 to 00643FFF suppressed line(s) same as above ....
[u]Region Second Level Table[/u]
V00644000 00000000 0064800B 00000000 00000020 06 R00644000
V00644010 00000000 00000020 00000000 00000020
V00644020 to 00647FFF suppressed line(s) same as above ....
[u]Region Third Level Table[/u]
V00648000 00000000 0064C007 00000000 00000020 06 R00648000
V00648010 00000000 00000020 00000000 00000020
V00648020 to 0064AFFF suppressed line(s) same as above ....
V0064B000 00000000 00791007 00000000 00000020 06 R0064B000
V0064B010 00000000 00000020 00000000 00000020
V0064B020 to 0064BFFF suppressed line(s) same as above ....
[u]Segment Table for Region 0[/u]
V0064C000 00000000 00650000 00000000 00650800 06 R0064C000
V0064C010 00000000 00651000 00000000 00651800
[u]Segment Table for Region 0x600[/u]
V00791000 00000000 00795000 00000000 00000020 06 R00791000
V00791010 00000000 00000020 00000000 00000020
[u]Page Table for Region 0x0 Segment 0[/u]
V00650000 00000000 00000000 00000000 00001000 06 R00650000
V00650010 00000000 00002000 00000000 00003000
[u]Page Table for Region 0x0600 Segment 0[/u]
V00795000 00000000 00000400 00000000 00790000 06 R00795000
V00795010 00000000 00000400 00000000 00000400
[u]Mapping of virtual address 0x3000001000[/u]
V0000030000001000 00000000 04 R00790000
This message posted from opensolaris.org
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code