Phone: +1.978.451.0110

While many tend to fixate on OpenVMS' First Boot on Intel x86-64, there are actually a number of key milestones, or proof points, before we achieve First Boot.

We want to share our excitement about the significant engineering progress we have made to date, by listing the status of some of the significant Proof Points on the way to the First Boot of OpenVMS on Intel x86-64.

This page replaces the "State of the Port" powerpoint slides that we used to release on a quarterly basis in the past. Archival links to these "State of the Port" presentations are also listed in the Side Bar below.

After First Boot, we will provide the status of Proof Points for our next major porting milestone: the first Early Adapters Kit (EAK 1). We look forward to inviting select customers to provide input on the architecture and field tests for this EAK 1 release.

Proof Points to x86-64 First Boot

Proof Point Snapshot


•  Proof Point 1 - ACHIEVED

   Stop at end-of-SYSBOOT breakpoint & issue “;L” to XDELTA


•  Proof Point 2 - ACHIEVED

   Transition to the Runtime Environment      

•  Proof Point 3 - ACHIEVED

   Execute first system service call      

•  Proof Point 4 - ACHIEVED

   Display early loaded image list      

•  Proof Point 5 - ACHIEVED

   Display VSI welcome banner      

•  Proof Point 6 - ACHIEVED

   Create PFN database and allocate pool      

•  Proof Point 7 - ACHIEVED

   Transfer to runtime interrupt dispatching      

•  Proof Point 8 - ACHIEVED

   System Service transfer vectors in place      

•  Proof Point 9 - ACHIEVED

   Initialization for primary CPU      

•  Proof Point 10 - ACHIEVED

   Load remaining execlets      

•  Proof Point 11 - ACHIEVED

   Reach End of INIT breakpoint      

•  Proof Point 12 - ACHIEVED

   Display complete loaded image list      

•  Proof Point 13 - ACHIEVED

   Lower IPL      

•  Proof Point 14 - ACHIEVED

   Schedule SWAPPER process      

•  Proof Point 15 - ACHIEVED

   Enter SWAPPER main loop      

•  Proof Point 16 - ACHIEVED

   $CREPRC; process appears on COMO queue      

•  Proof Point 17 - PENDING

 
   Create I/O database      

 


History of the Port

The following are links to past State of the Port PDF downloads of quarterly State of the Port reports.

•     October 2017

•     July 2017

•     April 2017

•     January 2017

•     March 2016

Proof Point 17

PENDING

Create I/O database


Proof Point 16

ACHIEVED: $CREPRC;

BRK - END OF INIT BREAKPOINT
VSI VMS X86 XDELTA Debugger [SYSTEM_DEBUG], XEWO, Dec 17 2018 19:02:11

Brk 0 at FFFF8300.10200756

FFFF8300.10200756!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
%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


Proof Point 11

ACHIEVED: End of INIT Break Point

BOOTMGR> B

%VMS_BOOTMGR-I-TRANSFER: Starting VSI OpenVMS...

%%%%%%% VSI OpenVMS (tm) x86-64 XDELTA Console %%%%%%%

XDELTA on COM1 port
Taking 1st SYSBOOT breakpoint
VSI VMS X86 XDELTA Debugger [SYSBOOT], XEWF, Dec 13 2018 13:37:32

Brk 0 at 00000000.004A92E1

00000000.004A92E1!movq $00000042,%rax ;P

%SYSBOOT-W-TSCNOTINVARIANT, This CPU does not have an invariant TSC
SYSBOOT-W-NOFIXEDMTRRS, This CPU does not support Fixed Range MTRRs
Taking 2nd SYSBOOT breakpoint
VSI VMS X86 XDELTA Debugger [SYSBOOT], XEWF, Dec 13 2018 13:37:32

Brk 0 at 00000000.004A92E1

00000000.004A92E1!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
XDELTA on COM1 port
%LOADER-I-INIT, initializing SYS$OPDRIVER

VMS Software, Inc. OpenVMS (TM) x86_64 Operating System, XEWF-N4A
Copyright 2018 VMS Software, Inc.

VSI VMS X86 XDELTA Debugger [SYSTEM_DEBUG], XEWF, Dec 13 2018 13:37:32

Brk 0 at FFFF8300.10200756

FFFF8300.10200756!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-E-LOADERR, error loading [SYS$LDR]VMS$SYSTEM_IMAGES.DATA status = 00000910
%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


Proof Point 6

ACHIEVED: Create PFN database and allocate pool

Create PFN database and allocate pool


Proof Point 5

ACHIEVED: September 14, 2018. Display the system identification banner, while processing through the initialization code.


;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_DEBUG
%LOADER-I-INIT, initializing SYS$OPDRIVER

          VMS Software, Inc. OpenVMS (TM) x86_64 Operating System, XERN-N4A
                                        Copyright 2018 VMS Software, Inc.

%EXECINIT-I-PFNDB, building PFN database


Proof Point 4

ACHIEVED: September 14, 2018. Display early loaded image list

Stop in the debugger and list the images, including their address space layouts loaded by SYSBOOT, after transitioning execution from the boot environment to the operating system environment.

Click here to display a PDF of the image list.


Proof Point 3

ACHIEVED: August 4, 2018. Executed the first system service call

Calling a system service involves proper setup of dispatch tables, initializing the x86 SYSCALL mechanism, and successfully returning from the call. Much of this operation is new code for x86 integrated with the existing VMS system service interface.


Proof Point 2

ACHIEVED: June 29, 2018. Successfully Transitioned to the Runtime Environment

We achieved our second Proof Point on June 29, 2018, by successfully making the transition from executing in the boot environment to executing a routine running in the runtime environment. This requires successfully switching to system context.

This proof point represents work in the compiler, the linker, the loader, and the executive code which manages context switching. Also, the XDELTA debugger was a necessary component for verifying the result. An underlying facilitator of this accomplishment is the calling of a routine in another image which, in and of itself, is a significant milestone.


Proof Point 1

ACHIEVED: May 29, 2018. Demonstrated ";L" at the end of SYSBOOT

Proof Point #1 is defined as – stopping at the end-of-SYSBOOT breakpoint and issuing “;L” to XDELTA to get the list of images, including their image sections, SYSBOOT has loaded.

On 29-May-2018 we demonstrated ";L" at the end of SYSBOOT. Its output is at the end of this posting. Everything is not perfect yet but the current result is as expected. It shows many things have been accomplished and the overall underpinnings for the next step are in place.

The following work remains in order to make things complete at this point in the boot process.

  • There are four more exec images to be loaded: ERRORLOG.EXE, SYSTEM_SYNCHRONIZATION.EXE, SYS$PLATFORM_SUPPORT.EXE, and SYSTEM_PRIMITIVES_0.EXE. The first two will be picked up within the next week. The latter two require more compiler and memory management work.
  • We need to read the parameter file X86_64VMSSYS.PAR and populate system data cells with the appropriate values.
  • XDELTA needs to update its “;L” output formatting as some values are 64b that are 32b on Alpha and IA64.

Boot Path Output

Click here to see the full boot path from BOOTMGR> BOOT to ;L. The linked PDF is the output from a captured terminal session from a network boot of the memory disk file, which was created on our development cluster.