User manual

Interprocessor Synchronization Window
53
While native mode is expected to offer performance and scalability benefits for workloads generating
high rate of BBSSI and BBCCI instructions, the use of native mode may destabilize some user-mode
application and third-party privileged components compared to the use of portable interlock mode.
Applications and components may fail to work properly under native-mode interlock under any of the
following five conditions:
If the component contains preemptable code (user-mode code or privileged mode code
executing at IPL < 3) that uses retry loop count on interlocked queue instructions (INSQHI,
INSQTI, REMQHI, REMQTI) smaller than min(900000, LOCKRETRY).
1
If preemptable code uses finite retry count on interlocked queue instructions and queue header
also gets locked with BBSSI instruction.
If preemptable code tries to lock interlocked queue header with BBSSI instruction and uses finite
retry count for this BBSSI.
If non-preemptable code (kernel-mode code executing at IPL >= 3) uses smaller retry count for
interlocked queue instructions than is hardwired in VMS macros $REMQHI, $REMQTI, $INSQHI
or $INSQTI, i.e. 900,000 times, or set by SYSGEN parameter LOCKRETRY, whichever is less, i.e.
smaller than min(900000, LOCKRETRY).
If non-preemptable code tries to lock interlocked queue header with BBSSI instruction and uses
retry count yielding total number of instructions executed in retry loop lesser than
3 * min(900000, LOCKRETRY).
Conversely, to execute properly under native-mode interlock, application should:
Preemptable code running at IPL < 3 should use retry loop count of min(900000, LOCKRETRY) for
interlocked queue instructions (INSQHI, INSQTI, REMQHI, REMQTI) executed at IPL < 3.
Preemptable code should use infinite retry loop for any interlocked queue instructions if this
queue header also gets locked with BBSSI instruction.
Preemptable code should use infinite retry loop count when trying to lock interlocked queue
header with BBSSI instruction.
Non-preemptable code running at IPL >= 3 should use retry loop count of min(900000,
LOCKRETRY) or more for interlocked queue instructions executed at executed at IPL >= 3.
1
VSMP LOAD command normally elevates SYSGEN parameter LOCKRETRY to 900000 too, unless prohibited from
doing so with command option NOPATCH=LOCKRETRY.