[Info-vax] x86 Update 4/22/19
clair.grant@vmssoftware.com
clairgrant71 at gmail.com
Thu Apr 25 08:23:18 EDT 2019
On Wednesday, April 24, 2019 at 7:33:36 PM UTC-4, Jon Pinkley wrote:
> On Wednesday, April 24, 2019 at 7:12:08 AM UTC-4, clair... at vmssoftware.com wrote:
> > On Tuesday, April 23, 2019 at 9:52:05 PM UTC-4, Jon Pinkley wrote:
> > > On Tuesday, April 23, 2019 at 5:55:24 AM UTC-4, clair... at vmssoftware.com wrote:
> > > > On Monday, April 22, 2019 at 9:30:33 PM UTC-4, terry-... at glaver.org wrote:
> > > > > On Monday, April 22, 2019 at 7:48:26 PM UTC-4, Jon Pinkley wrote:
> > > > > > Isn't there supposed to be a Login as well?
> > > > >
> > > > > Maybe this was done with the equivalent of "SET/STARTUP OPA0:"?
> > > >
> > > > There are number of ways to look at "login". Yes, we did force OPA0: to be our First Boot path.
> > >
> > > Anyone that understands software development understands the magnitude of the task being done by the small team at VSI, so don't take this as me throwing brickbats.
> >
> > <<<CG: Brickbats readily accepted, some even deserved. Taking the heat comes with the territory.
> > >>>
> >
> > >
> > > I think everyone is looking forward to the completed DIRECTORY command, but the path through login for an interactive process is quite a bit more complex than directory, since it involves SYSTEM context (terminal driver and mailbox driver), Job Controller Context and Newly created Process context. It tests a lot more of the system, and would indicate that much more of the VMS foundation is in place. LOGINOUT is a complex program; the OpenVMS Alpha Internals 7.0 Manual has almost 10 pages devoted just to the Interactive process case (439,440,443-450).
> > >
> >
> > <<<CG: For First Boot we are loading LOGINOUT as an execlet rather than as a loadable image. That allows us to cut a few corners, but not that many.
> > >>>
> >
> > > In my opinion, leaving this out is a significant "lowering of the bar" to what constitutes "first boot", assuming that first boot did include an interactive login from the console in previous ports.
> > >
> >
> > <<<CG: Even though I defined the terms, I can't remember what we did for IA64 without going to look. I often describe First Boot as a photo op, sometimes a marketing message. It gives non-geeks something identifiable that they can somewhat relate to. We know there are a tons of things that have to be working to get to executing a DIRECTORY command but what is in that ton doesn't really matter much. So, if we lowered the bar for x86, so be it; it's trivia when looking at the big picture. BTW: The next step after First Boot is Real Boot, that is getting to the DIRECTORY command while booting the system in its normal flow.
> > >>>
> >
> > > The vast majority of the people that follow comp.os.vms are "hard core VMS supporters", so we are interested in any technical details that can be provided.
> > >
> > > The recent milestones have no content other than "ACHIEVED" (milestones 16 and below had examples of console output, which at least I found interesting).
> > >
> >
> > <<<CG: I'll take the blame for that.
> > >>>
> >
> > > I understand that writing progress reports takes time away from the real work being done. But it shouldn't take an inordinate amount of time to copy/paste some console output into the updates page. You should be doing this for internal documentation anyway.
> > >
> > > For example, what does the output of show system look like at this point in time?
> >
> > <<<CG: SHOW SYSTEM is not part of First Boot. The only DCL command being processed is DIRECTORY. After that we move on Real Boot.
> > >>>
> >
> > Recent system boot, minus a whole bunch of developer debugging messages.
> >
> >
> > VSI VMS X86 XDELTA Debugger [SYSBOOT], XF3Q, Apr 24 2019 06:46:41
> >
> > Brk 0 at 00000000.004AEE3D
> > 00000000.004AEE3D!movq $00000042,%rax ;P
> >
> > VSI VMS X86 XDELTA Debugger [SYSBOOT], XF2Q, Apr 5 2019 20:46:41
> >
> > Brk 0 at 00000000.004AEE3D
> > 00000000.004AEE3D!movq $00000042,%rax ;P
> >
> > %EXECINIT-I-PERCPU, initializing per-CPU database
> >
> > %EXECINIT-I-INITS, calling initialization routines
> > %LOADER-I-INIT, initializing SYS$BASE_IMAGE
> > %LOADER-I-INIT, initializing SYS$PLATFORM_SUPPORT
> > %LOADER-I-INIT, initializing ERRORLOG
> > %LOADER-I-INIT, initializing SYS$ACPI
> > %LOADER-I-INIT, initializing SYSTEM_PRIMITIVES_0
> > %LOADER-I-INIT, initializing SYSTEM_SYNCHRONIZATION_UNI
> > %LOADER-I-INIT, initializing SYSTEM_DEBUG
> > %LOADER-I-INIT, initializing SYS$OPDRIVER
> >
> > VMS Software, Inc. OpenVMS (TM) x86_64 Operating System, XF2Q-N4A
> > Copyright 2019 VMS Software, Inc.
> >
> > VSI VMS X86 XDELTA Debugger [SYSTEM_DEBUG], XF2Q, Apr 5 2019 20:46:41
> >
> > Brk 0 at FFFF8300.10600790
> > FFFF8300.10600790!retq ;P
> >
> > %EXECINIT-I-PFNDB, building PFN database
> > %EXECINIT-I-SWIS_PRIM, initializing SWIS on primary CPU
> >
> > %EXECINIT-I-INITS, calling initialization routines
> > %LOADER-I-INIT, initializing SYSTEM_PRIMITIVES_0
> > %LOADER-I-INIT, initializing SYSTEM_SYNCHRONIZATION_UNI
> > %LOADER-I-INIT, initializing SYSTEM_PRIMITIVES_0
> >
> > %EXECINIT-I-EPB, defining erase pattern buffer
> > %EXECINIT-I-SHELLF, building SHELL filespec
> > %EXECINIT-I-BTINIT, initializing boot driver
> > %EXECINIT-I-RESMEMLIS, building reserved memory registry list
> >
> > %EXECINIT-I-LDIMGS, loading exec images
> > %EXECINIT-I-LOADING, loading EXCEPTION.EXE
> > %LOADER-I-INIT, initializing EXCEPTION_MON
> > %EXECINIT-I-SYSTEM_CHECK, loaded _MON image
> > %EXECINIT-I-LOADING, loading IO_ROUTINES.EXE
> > %LOADER-I-INIT, initializing IO_ROUTINES_MON
> > %EXECINIT-I-SYSTEM_CHECK, loaded _MON image
> > %EXECINIT-I-LOADING, loading SYSDEVICE.EXE
> > %LOADER-I-INIT, initializing SYSDEVICE
> > %EXECINIT-I-LOADING, loading PROCESS_MANAGEMENT.EXE
> > %LOADER-I-INIT, initializing PROCESS_MANAGEMENT_MON
> > %EXECINIT-I-SYSTEM_CHECK, loaded _MON image
> > %EXECINIT-I-LOADING, loading LOCKING.EXE
> > %LOADER-I-INIT, initializing LOCKING
> > %EXECINIT-I-LOADING, loading SHELL8K.EXE
> > %LOADER-I-INIT, initializing SHELL8K
> > %EXECINIT-I-LOADING, loading LOGICAL_NAMES.EXE
> > %LOADER-I-INIT, initializing LOGICAL_NAMES
> > %EXECINIT-I-LOADING, loading F11BXQP.EXE
> > %LOADER-I-INIT, initializing F11BXQP
> > %EXECINIT-I-LOADING, loading RMS.EXE
> > %LOADER-I-INIT, initializing RMS
> > %EXECINIT-I-LOADING, loading IMAGE_MANAGEMENT.EXE
> > %LOADER-I-INIT, initializing IMAGE_MANAGEMENT
> > %EXECINIT-I-LOADING, loading SECURITY.EXE
> > %LOADER-I-INIT, initializing SECURITY_MON
> > %EXECINIT-I-SYSTEM_CHECK, loaded _MON image
> > %EXECINIT-I-LOADING, loading SYSGETSYI.EXE
> > %LOADER-I-INIT, initializing SYSGETSYI
> > %EXECINIT-I-LOADING, loading SYS$VM.EXE
> > %LOADER-I-INIT, initializing SYS$VM
> > %EXECINIT-I-LOADING, loading MESSAGE_ROUTINES.EXE
> > %LOADER-I-INIT, initializing MESSAGE_ROUTINES
> > %EXECINIT-I-LOADING, loading SYSLDR_DYN.EXE
> > %LOADER-I-INIT, initializing SYSLDR_DYN
> > %LOADER-I-INIT, initializing <SYS$LDR>VMS_EXTENSION
> > %EXECINIT-I-IOCONFIG, configuring the I/O database
> > %LOADER-I-INIT, initializing SYS$PCI_SUPPORT
> > %LOADER-I-INIT, initializing SYS$ISA_SUPPORT
> >
> > %EXECINIT-I-HWCLOCK, reading the HW clock
> >
> > %INITIODB-I-BEGIN, Executing INIT_IO_DB.
> > %LOADER-I-INIT, initializing SYS$TTDRIVER
> > %INITIODB-I-DRIVER_LOADED, SYS$TTDRIVER.EXE load successful.
> > %INITIODB-I-DMDRIVER, Loading SYS$DMDRIVER for memory disk access
> > %INITIODB-I-LRD_SYSDEV, SYS$LOAD_DRIVER will assign the System UCB to this device.
> > %LOADER-I-INIT, initializing SYS$DMDRIVER
> > %INITIODB-I-GOPAC, Calling IOC$GOPAC.
> > %IOC$DISC_BOOT-I-ENTER_ROUTINE, Entered routine.
> > %IOC$DISC_BOOT-I-DISC_PBD, Disconnecting from primary boot device
> > %IOC$DISC_BOOT-I-EXIT_ROUTINE, Exiting routine.
> > %INITIODB-I-INIT_BRIDGE, Init any IO bridge.
> > %INITIODB-I-DEVICE_POWERUP, Drivers have been initialized.
> > %INITIODB-I-END, Returning to EXEC_INIT.
> >
> > %EXECINIT-I-INITSMP, initializing SMP environment
> > %EXECINIT-I-PBM, building process bitmap
> > %EXECINIT-I-PSTATE, setting process states
> > %EXECINIT-I-PHV, filling process header vector
> > %EXECINIT-I-PAGSWPVEC, filling page/swap file vector
> >
> > %EXECINIT-I-INITS, calling initialization routines
> > %LOADER-I-INIT, initializing SYSTEM_PRIMITIVES_0
> > %LOADER-I-INIT, initializing EXCEPTION_MON
> > %LOADER-I-INIT, initializing IO_ROUTINES_MON
> > %LOADER-I-INIT, initializing PROCESS_MANAGEMENT_MON
> > %LOADER-I-INIT, initializing LOCKING
> > %LOADER-I-INIT, initializing LOGICAL_NAMES
> > %LOADER-I-INIT, initializing SECURITY_MON
> > %LOADER-I-INIT, initializing SYS$VM
> > %LOADER-I-INIT, initializing MESSAGE_ROUTINES
> >
> > %EXECINIT-I-TMVPTES, setting TMV up with its PTEs
> > %EXECINIT-I-SVAPTE, setting up EXE$GL_SVAPTE
> > %EXECINIT-I-BLD_LOCKID, building the lock id table
> > %EXECINIT-I-BLD_RESHASH, building the resource hash table
> > %EXECINIT-I-RESMEMALC, performing reserved memory allocation
> > %EXECINIT-I-CLRWARM, clearing warm-start flag
> > %EXECINIT-I-CLRCOLD, clearing cold-start flag
> >
> > BRK - END OF INIT BREAKPOINT
> > VSI VMS X86 XDELTA Debugger [SYSTEM_DEBUG], XF2Q, Apr 5 2019 20:46:41
> >
> > Brk 0 at FFFF8300.10600790
> > FFFF8300.10600790!retq ;P
> >
> > %EXECINIT-I-ACTIVESET, joining ACTIVE set
> > %EXECINIT-S-CIAO, transferring to the scheduler
> >
> > %SWAPPER-I-SHUFFLE, executing SWAPPER initialization code
> > %SWAPPER-I-POOL, initializing paged pool
> >
> > %SWAPPER-I-INIT, calling initialization routines
> > %LOADER-I-INIT, initializing EXCEPTION_MON
> > %LOADER-I-INIT, initializing IO_ROUTINES_MON
> > %LOADER-I-INIT, initializing PROCESS_MANAGEMENT_MON
> > %LOADER-I-INIT, initializing LOCKING
> > %LOADER-I-INIT, initializing LOGICAL_NAMES
> > %LOADER-I-INIT, initializing SECURITY_MON
> > %LOADER-I-INIT, initializing SYS$VM
> > %LOADER-I-INIT, initializing MESSAGE_ROUTINES
> > %LOADER-I-INIT, initializing <SYS$LDR>SYS$LOGINOUT
> > %LOADER-I-INIT, initializing <SYS$LDR>SYSINITX
> > %LOADER-I-INIT, initializing IO_ROUTINES_MON
> > %LOADER-I-INIT, initializing PROCESS_MANAGEMENT_MON
> > %LOADER-I-INIT, initializing LOCKING
> > %LOADER-I-INIT, initializing LOGICAL_NAMES
> > %LOADER-I-INIT, initializing IO_ROUTINES_MON
> >
> > %SWAPPER-I-RSDM, joining system resource domain
> > %SWAPPER-I-P1, initializing SWAPPER P1 cells
> > %SWAPPER-I-PAGED, paged system initialization
> > %SWAPPER-I-HASH, creating the logical name hash tables
> > %SWAPPER-I-DEFINE, defining the system logical names
> >
> > %SWAPPER-I-CREPRC, creating the SYSINIT process
> > %SWAPPER-I-MAINLOOP, entering SWAPPER main loop
> > %SWAPPER-I-INSWAP, inswapped process EPID: 00000022 PID: 00010002 PCB: FFFFFFFF81678340
> >
> > %PROCSTRT-I-SYSINITX, Calling loaded SYSINITX execlet
> >
> > %SYSINIT-I-START, SYSINIT process execution begins
> > %SYSINIT-I-AUDIT, initializing security auditing
> >
> > Loaded Image List:
> > Seq Image Name Base End Link Base GP
> > 40 SYS$DMDRIVER FFFF8300.1120AB00 FFFF8300.1120CA10 00000000.80002000
> > 3E SYS$TTDRIVER FFFF8300.111DFA00 FFFF8300.11206978 00000000.80002000
> > 3C SYS$ISA_SUPPORT FFFF8300.111D9800 FFFF8300.111DC0E8 00000000.80002000
> > 3A SYS$PCI_SUPPORT FFFF8300.111C4B00 FFFF8300.111D5648 00000000.80002000
> > 38 <SYS$LDR>VMS_EXTENSION FFFF8300.111C0A00 FFFF8300.111C4070 00000000.80002000
> > 36 <SYS$LDR>SYSINITX FFFF8300.11162400 FFFF8300.111B4F28 00000000.80006000
> > 34 <SYS$LDR>SYS$LOGINOUT FFFF8300.11098000 FFFF8300.1114C8F1 00000000.80006000
> > 32 <SYS$LDR>SYS$DIRECTORY FFFF8300.10F8EC00 FFFF8300.110003F1 00000000.80002000
> > 30 SYSLDR_DYN FFFF8300.10F6BF00 FFFF8300.10F893B8 00000000.80004000
> > 2E MESSAGE_ROUTINES FFFF8300.10F41200 FFFF8300.10F66708 00000000.80002000
> > 2C SYS$VM FFFF8300.10E31D00 FFFF8300.10F2BF61 00000000.8000E000
> > 2A SYSGETSYI FFFF8300.10E0CE00 FFFF8300.10E219F8 00000000.80002000
> > 28 SECURITY_MON FFFF8300.10DAE000 FFFF8300.10E02088 00000000.80004000
> > 26 IMAGE_MANAGEMENT FFFF8300.10D72000 FFFF8300.10DA4FD0 00000000.80004000
> > 24 RMS FFFF8300.10BE0600 FFFF8300.10D3EDF0 00000000.80002000
> > 22 F11BXQP FFFF8300.10B28E00 FFFF8300.10BC97F8 00000000.80006000
> > 20 LOGICAL_NAMES FFFF8300.10B06600 FFFF8300.10B215F8 00000000.80002000
> > 1E SHELL8K FFFF8300.10AFD200 FFFF8300.10B03640 00000000.80002000
> > 1C LOCKING FFFF8300.10AC0000 FFFF8300.10AF6F38 00000000.80004000
> > 1A PROCESS_MANAGEMENT_MON FFFF8300.109EB200 FFFF8300.10AAA631 00000000.8000A000
> > 18 SYSDEVICE FFFF8300.109D3900 FFFF8300.109DF410 00000000.80002000
> > 16 IO_ROUTINES_MON FFFF8300.10914D00 FFFF8300.109C0628 00000000.8000E000
> > 14 EXCEPTION_MON FFFF8300.108F1800 FFFF8300.10904341 00000000.80002000
> > 12 EXEC_INIT FFFF8300.10892100 FFFF8300.108E5468 00000000.80006000
> > 10 SYS$OPDRIVER FFFF8300.10883700 FFFF8300.1088B500 00000000.80002000
> > 0E SYSTEM_DEBUG FFFF8300.10809A00 FFFF8300.108752C1 00000000.80004000
> > 0C SYSTEM_SYNCHRONIZATION_UNI FFFF8300.107D9500 FFFF8300.10800028 00000000.80004000
> > 0A SYSTEM_PRIMITIVES_0 FFFF8300.1071D800 FFFF8300.107C55A1 00000000.8000E000
> > 08 SYS$ACPI FFFF8300.10673A00 FFFF8300.106F6120 00000000.8000E000
> > 06 ERRORLOG FFFF8300.1065E100 FFFF8300.10663820 00000000.80002000
> > 04 SYS$PLATFORM_SUPPORT FFFF8300.10611B00 FFFF8300.10654358 00000000.80008000
> > 02 SYS$BASE_IMAGE FFFF8300.10600200 FFFF8300.1060B100 00000000.80000000
> > 00 SYS$PUBLIC_VECTORS FFFF8300.10600000 FFFF8300.10600048 00000000.80000000
> >
> > %SYSINIT-I-TIME, setting the system time
> > %SYSINIT-I-INIT, initializing the XQP
> > %SYSINIT-I-CLUSTER, cluster/lock manager initialization
> > %SYSINIT-I-SHADOW, shadow driver initialization
> > %SYSINIT-I-DEFINE, defining system logical names
> > %SYSINIT-I-MOUNT, mounting the system disk
> > %SYSINIT-I-TIME, setting the system time
> > %SYSINIT-I-FILCACHE, deallocating the primitive file cache
> > %SYSINIT-I-DEFINE, defining SYS$TOPSYS
> >
> > %SYSINIT Entering CREPRC_STARTUP
> > %SYSINIT-I-CREPRC, creating the STARTUP process
> >
> > %PROCSTRT-I-SYS$LOGINOUT, Calling loaded SYS$LOGINOUT execlet
> > SYS$LOGINOUT::
> > Transfering Control to DCL$STARTUP
> >
> > VSI VMS X86 XDELTA Debugger [SYSTEM_DEBUG], XF2Q, Apr 5 2019 20:46:41
> > Brk 0 at FFFF8300.10600790
> >
> > FFFF8300.10600790!retq ;P
> >
> > %SYSINIT-I-FINISH, SYSINIT process execution completed
> > %PROCSTRT-I-SYSINITX_DONE, SYSINITX has completed, $HIBERnating the process
> >
> > %DCL Calling into SYS$DIRECTORY at NET$VEC_RESERVE30
> > SYS$DIRECTORY::
> > VSI VMS X86 XDELTA Debugger [SYSTEM_DEBUG], XF3Q, Apr 22 2019 17:56:26
> >
> > Brk 0 at FFFF8300.10600790
> >
> > FFFF8300.10600790!retq
>
> Thanks Clair, it looks like for the first boot of IA64, the execution of the directory command was the defining item that constituted first boot.
<<<CG: That much I did know. What I do not remember are the details of how we got there. We are probably taking a slightly different route this time. Some of what we did 15 years ago was checked in so we dredged that but some was not and a little invention has been required especially with the addition of booting from the memory disk.
>>>
Found this slashdot post from 2003 https://developers.slashdot.org/story/03/02/01/1814211/first-openvms-boot-on-ia64
>
> "Posted by chrisd on Saturday February 01, 2003 @11:08PM from the hp-isn't-so-bad-I-guess dept.
> vaxzilla writes
> "At 3:31pm EST on Friday, January 31st, 2003, OpenVMS for the Intel IA64 architecture successfully booted and ran a DIR command. The Intel Itanium family of processors is the third architecture supported by OpenVMS in its 25 year history. Originally it ran on Digital Equipment Corporation VAX systems; in the early 1990s, support was added for the DEC Alpha processors. Following the acquisition of DEC by Compaq, and more recently Compaq by HP, the Itanium and Itanium2 port of OpenVMS is now being undertaken by HP. Congratulations on a job well done to the folks at ZK03 in Nashua, NH!"
>
> Which references this post:
>
> https://groups.google.com/d/msg/comp.os.vms/alWtue7YLUw/x1_GVv1eFfEJ
>
> And thanks for the console output too!
More information about the Info-vax
mailing list