Discussion:
[hercules-390] LOADPARM option of the IPL command
Aaron Finerman arfinerman@gmail.com [hercules-390]
2018-02-15 23:40:19 UTC
Permalink
Hi,
One of the nice features of Hyperion is the LOADPARM option of the IPL
command. However, there seems to be a problem in its implementation. The
LOADPARM (Load Parameter) option and PARM (IPL Parameters) option are not
mutually exclusive and both can be specified on a real HMC. LOADPARM is
passed to the operating system through the Read Configuration Command and
PARM is loaded as initial contents of general registers. As it is shown in
the documentation, Hyperion allows only one or the other, and if both are
specified, it will ignore LOADPARM.
Best regards,
Ivan Warren ivan@vmfacility.fr [hercules-390]
2018-02-16 00:00:44 UTC
Permalink
LOADPARM and PARM are not the same !

LOADPARM is accessible through the SCP while PARM are accessible through
the GPRS as loaded during IPL

--Ivan
Post by Aaron Finerman ***@gmail.com [hercules-390]
Hi,
One of the nice features of Hyperion is the LOADPARM option of the IPL
command. However, there seems to be a problem in its implementation.
The LOADPARM (Load Parameter) option and PARM (IPL Parameters) option
are not mutually exclusive and both can be specified on a real HMC.
LOADPARM is passed to the operating system through the Read
Configuration Command and PARM is loaded as initial contents of
general registers.. As it is shown in the documentation, Hyperion
allows only one or the other, and if both are specified, it will
ignore LOADPARM.
Best regards,
[Non-text portions of this message have been removed]
Aaron Finerman arfinerman@gmail.com [hercules-390]
2018-02-16 00:18:51 UTC
Permalink
Exactly my point. As you can see from the documentation, it allows for
LOADPARM 'or' PARM.

This: IPL {devnum |filename} [ LOADPARM iplparm | PARM
parmstring ] [CLEAR]

Should be: IPL {devnum | filename } {LOADPARM iplparm} {CLEAR} {PARM
parmstring}

Best regards,
Post by Ivan Warren ***@vmfacility.fr [hercules-390]
LOADPARM and PARM are not the same !
LOADPARM is accessible through the SCP while PARM are accessible through
the GPRS as loaded during IPL
--Ivan
Post by Aaron Finerman ***@gmail.com [hercules-390]
Hi,
One of the nice features of Hyperion is the LOADPARM option of the IPL
command. However, there seems to be a problem in its implementation.
The LOADPARM (Load Parameter) option and PARM (IPL Parameters) option
are not mutually exclusive and both can be specified on a real HMC.
LOADPARM is passed to the operating system through the Read
Configuration Command and PARM is loaded as initial contents of
general registers.. As it is shown in the documentation, Hyperion
allows only one or the other, and if both are specified, it will
ignore LOADPARM.
Best regards,
[Non-text portions of this message have been removed]
'\'Fish\' (David B. Trout)' david.b.trout@gmail.com [hercules-390]
2018-02-19 20:11:53 UTC
Permalink
Post by Aaron Finerman ***@gmail.com [hercules-390]
Post by Ivan Warren ***@vmfacility.fr [hercules-390]
LOADPARM and PARM are not the same !
LOADPARM is accessible through the SCP while PARM are
accessible through the GPRS as loaded during IPL
Exactly my point. As you can see from the documentation, it
IPL {devnum |filename} [ LOADPARM iplparm | PARM parmstring ] [CLEAR]
IPL {devnum | filename } {LOADPARM iplparm} {CLEAR} {PARM parmstring}
Actually, it should be:


IPL {devnum | filename } [LOADPARM iplparm] [CLEAR] [PARM parmstring]


(All arguments after the devnum/filename are OPTIONAL, not required.)

Can anyone provide me with a concise definition of what exactly a LOADPARM is? I know what an IPL parameter (PARM) string is: data automatically loaded into GR0 - GR15, but what is the proper definition of a LOADPARM?

"The LOADPARM is ... " (what?)

Thanks!

(p.s. to Aaron: I will be fixing the IPL command in my repository to support BOTH optional arguments as it was originally intended and documented, but it will be a while before it appears as I'm currently still working on something else. Thanks for reporting it though! Much appreciated!)
--
"Fish" (David B. Trout)
Software Development Laboratories
http://www.softdevlabs.com
mail: ***@softdevlabs.com
Aaron Finerman arfinerman@gmail.com [hercules-390]
2018-02-19 22:09:40 UTC
Permalink
Hi Fish,
Loadparm is returned at offset +18 of a Read Configuration Data of a
Service Call (B220) instruction. It's use is Operating System dependent.
The syntax should be processed is a way that 'any' string after PARM be
treated as IPL Parameters, including words like CLEAR and LOADPARM. This
would allow such keywords be passed to the Operating system. IPL 1234 PARM
12345678 CLEAR should perform a normal IPL and '12345678 CLEAR' be loaded
into general registers.
Best regards,

On Mon, Feb 19, 2018 at 3:11 PM, ''Fish' (David B. Trout)'
Post by '\'Fish\' (David B. Trout)' ***@gmail.com [hercules-390]
Post by Aaron Finerman ***@gmail.com [hercules-390]
Post by Ivan Warren ***@vmfacility.fr [hercules-390]
LOADPARM and PARM are not the same !
LOADPARM is accessible through the SCP while PARM are
accessible through the GPRS as loaded during IPL
Exactly my point. As you can see from the documentation, it
IPL {devnum |filename} [ LOADPARM iplparm | PARM parmstring ] [CLEAR]
IPL {devnum | filename } {LOADPARM iplparm} {CLEAR} {PARM parmstring}
IPL {devnum | filename } [LOADPARM iplparm] [CLEAR] [PARM parmstring]
(All arguments after the devnum/filename are OPTIONAL, not required.)
Can anyone provide me with a concise definition of what exactly a LOADPARM
is? I know what an IPL parameter (PARM) string is: data automatically
loaded into GR0 - GR15, but what is the proper definition of a LOADPARM?
"The LOADPARM is ... " (what?)
Thanks!
(p.s. to Aaron: I will be fixing the IPL command in my repository to
support BOTH optional arguments as it was originally intended and
documented, but it will be a while before it appears as I'm currently still
working on something else. Thanks for reporting it though! Much
appreciated!)
--
"Fish" (David B. Trout)
Software Development Laboratories
http://www.softdevlabs.com
'\'Fish\' (David B. Trout)' david.b.trout@gmail.com [hercules-390]
2018-02-20 00:18:16 UTC
Permalink
Aaron Finerman wrote:

[...]
Post by Aaron Finerman ***@gmail.com [hercules-390]
The syntax should be processed is a way that 'any' string
after PARM be treated as IPL Parameters, including words
like CLEAR and LOADPARM.
<snip>

<grumble> (I hate Yahoo) <grumble>

Yahoo appears to having trouble delivering its Group email in a timely fashion since each of our postings seem to be flying right past each other in mid-flight. I already pointed out that very thing (what you just mentioned) in a subsequent follow-up posting of mine! :)

The code has already been changed (fixed) to work correctly now, and the "help ipl" information has been updated appropriately as well, to make that fact clear.

You won't see the fix yet though, as I haven't committed it yet to my repository. (But when I do it'll be there!)

Thanks again for reporting this and my apologies for any confusion it has caused. I didn't write that part of Hercules.
--
"Fish" (David B. Trout)
Software Development Laboratories
http://www.softdevlabs.com
mail: ***@softdevlabs.com
s skip@monobath.com [hercules-390]
2018-02-19 20:47:58 UTC
Permalink
On 02/19/2018 02:11 PM, ''Fish' (David B. Trout)'
Post by '\'Fish\' (David B. Trout)' ***@gmail.com [hercules-390]
 
Post by Aaron Finerman ***@gmail.com [hercules-390]
Post by Ivan Warren ***@vmfacility.fr [hercules-390]
LOADPARM and PARM are not the same !
LOADPARM is accessible through the SCP while PARM are
accessible through the GPRS as loaded during IPL
Exactly my point. As you can see from the documentation, it
IPL {devnum |filename} [ LOADPARM iplparm | PARM parmstring ] [CLEAR]
IPL {devnum | filename } {LOADPARM iplparm} {CLEAR} {PARM parmstring}
IPL {devnum | filename } [LOADPARM iplparm] [CLEAR] [PARM parmstring]
(All arguments after the devnum/filename are OPTIONAL, not required.)
Can anyone provide me with a concise definition of what exactly a
LOADPARM is? I know what an IPL parameter (PARM) string is: data
automatically loaded into GR0 - GR15, but what is the proper
definition of a LOADPARM?
"The LOADPARM is ... " (what?)
Thanks!
(p.s. to Aaron: I will be fixing the IPL command in my repository to
support BOTH optional arguments as it was originally intended and
documented, but it will be a while before it appears as I'm currently
still working on something else. Thanks for reporting it though! Much
appreciated!)
--
"Fish" (David B. Trout)
Software Development Laboratories
http://www.softdevlabs.com
The most complete documentation for LOADPARM is in the z/OS MVS System
Commands manual.  In the z/OS v2r1 version of the manual, it is in the
"Loading the System Software" section. 

The first four bytes are the device number of the volume that contains
the IODF.  The next two are the suffix of the LOADxx member of
SYSx.IPLPARM or SYS1.PARMLIB.  The next byte is the IMSI character (aka
Prompt option), and the last is the alternate nucleus number.
'\'Fish\' (David B. Trout)' david.b.trout@gmail.com [hercules-390]
2018-02-21 11:25:44 UTC
Permalink
[...]
Post by s ***@monobath.com [hercules-390]
Post by '\'Fish\' (David B. Trout)' ***@gmail.com [hercules-390]
Can anyone provide me with a concise definition of what
exactly a LOADPARM is? I know what an IPL parameter (PARM)
string is: data automatically loaded into GR0 - GR15,
but what is the proper definition of a LOADPARM?
"The LOADPARM is ... " (what?)
<snip>
Post by s ***@monobath.com [hercules-390]
The most complete documentation for LOADPARM is in the z/OS MVS
System Commands manual. In the z/OS v2r1 version of the manual,
it is in the "Loading the System Software" section.
The first four bytes are the device number of the volume that
contains the IODF. The next two are the suffix of the LOADxx
member of SYSx.IPLPARM or SYS1.PARMLIB. The next byte is the
IMSI character (aka Prompt option), and the last is the alternate
nucleus number.
Thank you, Skip, but that's more of an explanation, not a definition. What I'm looking for is something more along the lines of what you'd find in a dictionary somewhere, such as:

LOADPARM (noun): 1. an 8-character string defining
optional operating system initialization parameters.


Currently, the following is what is displayed by Hercules in response to the "help loadparm" command:

"Specifies the eight-character IPL 'LOADPARM' parameter which is used"
"by some operating systems to select certain initialization options."


What I'm asking is whether the above is a good enough definition or is there a better one somewhere? Can someone find a more proper definition for it in some manual somewhere? (or come up with a better one on their own) Or is what Hercules currently displays good enough?

Thanks!
--
"Fish" (David B. Trout)
Software Development Laboratories
http://www.softdevlabs.com
mail: ***@softdevlabs.com
Ivan Warren ivan@vmfacility.fr [hercules-390]
2018-02-21 13:06:10 UTC
Permalink
Post by Aaron Finerman ***@gmail.com [hercules-390]
Hi Fish,
What LOADPARM is used for *is* depending on the operating system that is
to be IPL-ed.
True...

the LOADPARM is just an arbitrary 8 byte EBCDIC string that can be
interpreted by the loaded program for whatever purpose it is intended for.

--Ivan



[Non-text portions of this message have been removed]
Tony Harminc tharminc@gmail.com [hercules-390]
2018-02-21 22:26:13 UTC
Permalink
On 19 February 2018 at 15:11, ''Fish' (David B. Trout)'
Post by '\'Fish\' (David B. Trout)' ***@gmail.com [hercules-390]
IPL {devnum | filename } [LOADPARM iplparm] [CLEAR] [PARM parmstring]
Can anyone provide me with a concise definition of what exactly a LOADPARM is? I know what an IPL parameter (PARM) string is: data automatically loaded into GR0 - GR15, but what is the proper definition of a LOADPARM?
This is how z/VM's IPL command treats it. Presumably they know what
they're doing...

(from https://www.ibm.com/support/knowledgecenter/en/SSB27U_6.4.0/com.ibm.zvm.v640.hcpb7/iplcommd.htm)

"specifies a 1- to 8-character load parameter. If fewer than eight
characters are specified, the load parameter is left-justified and
padded with blanks; it may be necessary to enclose the load parameter
in single quotation marks (see Usage Note 11). If LOADPARM is not
specified, a load parameter of eight EBCDIC blanks is formed.

The load parameter is converted to upper case and may include only the
upper case alphabetic characters (A-Z), digits 0-9, the period, and
the blank.

The load parameter may be retrieved by the guest operating system
during its IPL sequence. Its use is determined by the guest operating
system, such as indicating the nucleus to be loaded during the IPL
sequence.

Usage note 11: If you do not want leading blanks or embedded blanks in
the load parameter, you may specify the load parameter as a single
blank-delimited token. Specifying the load parameter within single
quotation marks enables you to specify leading blanks or embedded
blanks."

Tony H.

'\'Fish\' (David B. Trout)' david.b.trout@gmail.com [hercules-390]
2018-02-20 02:23:33 UTC
Permalink
(Originally sent Mon 2/19/2018 1:54 PM; I am
re-sending since Yahoo seems to have lost it)


Fish wrote:

[...]
Post by '\'Fish\' (David B. Trout)' ***@gmail.com [hercules-390]
IPL {devnum | filename } [LOADPARM iplparm] [CLEAR] [PARM
parmstring]
(All arguments after the devnum/filename are OPTIONAL, not required.)
Additional info: the PARM option, if specified, must be specified as the command's LAST option since everything following the 'PARM' keyword is treated as the actual parm data to be loaded into the registers. Specifying, for example:

IPL devnum PARM abc LOADPARM xyz

will NOT behave as expected. Instead, the parm data "abc LOADPARM xyz" will be loaded into the registers and the LOADPARM string will remain unmodified. The following is the proper format:

IPL devnum LOADPARM xyz PARM abc

This will set the LOADPARM to "xyz" and load the parm data "abc" into the registers, which is what was actually intended. The requirement for the PARM option being specified last on the command line is to support multiple blank-separated tokens for the PARM string, e.g:

IPL devnum LOADPARM xyz PARM abc 123 foo bar ...

I'll update the documentation to try and make that a bit more clear.

FYI to Aaron: the usual method for specifying a LOADPARM is to specify it via the "LOADPARM" command rather than specifying it as an option on the IPL command. That is to say, you use two separate commands rather than just one, e.g:

LOADPARM xyz
IPL devnum PARM abc

I'll get the documentation fixed. Thanks for reporting this.
--
"Fish" (David B. Trout)
Software Development Laboratories
http://www.softdevlabs.com
mail: ***@softdevlabs.com
Aaron Finerman arfinerman@gmail.com [hercules-390]
2018-02-20 04:08:09 UTC
Permalink
Hi Fish, Thank you so much for fixing. this.
Best regards,

On Mon, Feb 19, 2018 at 9:23 PM, ''Fish' (David B. Trout)'
Post by '\'Fish\' (David B. Trout)' ***@gmail.com [hercules-390]
(Originally sent Mon 2/19/2018 1:54 PM; I am
re-sending since Yahoo seems to have lost it)
[...]
Post by '\'Fish\' (David B. Trout)' ***@gmail.com [hercules-390]
IPL {devnum | filename } [LOADPARM iplparm] [CLEAR] [PARM
parmstring]
(All arguments after the devnum/filename are OPTIONAL, not required.)
Additional info: the PARM option, if specified, must be specified as the
command's LAST option since everything following the 'PARM' keyword is
treated as the actual parm data to be loaded into the registers.
IPL devnum PARM abc LOADPARM xyz
will NOT behave as expected. Instead, the parm data "abc LOADPARM xyz"
will be loaded into the registers and the LOADPARM string will remain
IPL devnum LOADPARM xyz PARM abc
This will set the LOADPARM to "xyz" and load the parm data "abc" into the
registers, which is what was actually intended. The requirement for the
PARM option being specified last on the command line is to support multiple
IPL devnum LOADPARM xyz PARM abc 123 foo bar ...
I'll update the documentation to try and make that a bit more clear.
FYI to Aaron: the usual method for specifying a LOADPARM is to specify it
via the "LOADPARM" command rather than specifying it as an option on the
IPL command. That is to say, you use two separate commands rather than just
LOADPARM xyz
IPL devnum PARM abc
I'll get the documentation fixed. Thanks for reporting this.
--
"Fish" (David B. Trout)
Software Development Laboratories
http://www.softdevlabs.com
Ivan Warren ivan@vmfacility.fr [hercules-390]
2018-02-20 04:43:36 UTC
Permalink
Post by Aaron Finerman ***@gmail.com [hercules-390]
Hi Fish, Thank you so much for fixing. this.
Best regards,
Was the fix applied to "hyperion" ?

It doesn't affect me since I always use the "LOADPARM" statement outside
the "IPL" statement (Hit me - I used to operate 4381s where they were
LOADPARM always applied seperatly from the IPL process)...

But I'll gladly port this to hyperion... (since it makes VERY much sense)

--Ivan


[Non-text portions of this message have been removed]
Aaron Finerman arfinerman@gmail.com [hercules-390]
2018-02-20 13:54:51 UTC
Permalink
Hi Ivan, I think Fish mentioned that the fix is not yet committed. And my
understanding was he only does Hyperion.
Best regards,
Post by Ivan Warren ***@vmfacility.fr [hercules-390]
Post by Aaron Finerman ***@gmail.com [hercules-390]
Hi Fish, Thank you so much for fixing. this.
Best regards,
Was the fix applied to "hyperion" ?
It doesn't affect me since I always use the "LOADPARM" statement outside
the "IPL" statement (Hit me - I used to operate 4381s where they were
LOADPARM always applied seperatly from the IPL process)...
But I'll gladly port this to hyperion... (since it makes VERY much sense)
--Ivan
[Non-text portions of this message have been removed]
'\'Fish\' (David B. Trout)' david.b.trout@gmail.com [hercules-390]
2018-02-20 05:55:03 UTC
Permalink
(CC: Ivan)
Post by Ivan Warren ***@vmfacility.fr [hercules-390]
Post by Aaron Finerman ***@gmail.com [hercules-390]
Hi Fish, Thank you so much for fixing. this.
Best regards,
Was the fix applied to "hyperion" ?
If by "hyperion" you mean hercules-390/hyperion, then no, of course not. I'm no longer a member of that repository's development team, remember? John kicked me out.

The only "hyperion" it has been committed to at the moment is to my own private hyperion development repository on Bitbucket.

Once I'm done farqing with all the many changes I'm still working on (and there have been HUNDREDS of them made over the past several months!), I will then commit them ALL in one fell swoop to my public SDL fish-git/hyperion on GitHub and then build a new set of pre-built Windows binaries for everyone.
Post by Ivan Warren ***@vmfacility.fr [hercules-390]
It doesn't affect me since I always use the "LOADPARM"
statement outside the "IPL" statement (Hit me - I used to
operate 4381s where they were LOADPARM always applied
seperatly from the IPL process)...
But I'll gladly port this to hyperion... (since it makes
VERY much sense)
Patch attached.(*)

I have no idea whether it'll apply cleanly to hercules-390 hyperion or not (I'm kind of doubting it since my Hyperion has over the past 15 months diverged quite a bit from the original), but in case it doesn't I've also attached copies of the affected source files as well. Together they should provide enough information for you to make the same (or similar) change to [your?(**)] hercules-390/hyperion. Feel free to contact me if you have any questions or concerns with it.
--
"Fish" (David B. Trout)
Software Development Laboratories
http://www.softdevlabs.com
mail: ***@softdevlabs.com

(*) Yes, I know attachments aren't allowed to the hercules-390 Yahoo group. The attachment is for Ivan. Since I directly 'CC'ed him in my reply, HE, at least, SHOULD receive it. No one else might, but at least HE will (should).




[Non-text portions of this message have been removed]
'\'Fish\' (David B. Trout)' david.b.trout@gmail.com [hercules-390]
2018-02-19 21:54:18 UTC
Permalink
Fish wrote:

[...]
Post by '\'Fish\' (David B. Trout)' ***@gmail.com [hercules-390]
IPL {devnum | filename } [LOADPARM iplparm] [CLEAR] [PARM
parmstring]
(All arguments after the devnum/filename are OPTIONAL, not required.)
Additional info: the PARM option, if specified, must be specified as the command's LAST option since everything following the 'PARM' keyword is treated as the actual parm data to be loaded into the registers. Specifying, for example:

IPL devnum PARM abc LOADPARM xyz

will NOT behave as expected. Instead, the parm data "abc LOADPARM xyz" will be loaded into the registers and the LOADPARM string will remain unmodified. The following is the proper format:

IPL devnum LOADPARM xyz PARM abc

This will set the LOADPARM to "xyz" and load the parm data "abc" into the registers, which is what was actually intended. The requirement for the PARM option being specified last on the command line is to support multiple blank-separated tokens for the PARM string, e.g:

IPL devnum LOADPARM xyz PARM abc 123 foo bar ...

I'll update the documentation to try and make that a bit more clear.

FYI to Aaron: the usual method for specifying a LOADPARM is to specify it via the "LOADPARM" command rather than specifying it as an option on the IPL command. That is to say, you use two separate commands rather than just one, e.g:

LOADPARM xyz
IPL devnum PARM abc

I'll get the documentation fixed. Thanks for reporting this.
--
"Fish" (David B. Trout)
Software Development Laboratories
http://www.softdevlabs.com
mail: ***@softdevlabs.com
Aaron Finerman arfinerman@gmail.com [hercules-390]
2018-02-21 03:53:03 UTC
Permalink
Fish's missing post arrived (24 hours later). Better late, than never.

On Mon, Feb 19, 2018 at 4:54 PM, ''Fish' (David B. Trout)'
Post by '\'Fish\' (David B. Trout)' ***@gmail.com [hercules-390]
[...]
Post by '\'Fish\' (David B. Trout)' ***@gmail.com [hercules-390]
IPL {devnum | filename } [LOADPARM iplparm] [CLEAR] [PARM
parmstring]
(All arguments after the devnum/filename are OPTIONAL, not required.)
Additional info: the PARM option, if specified, must be specified as the
command's LAST option since everything following the 'PARM' keyword is
treated as the actual parm data to be loaded into the registers.
IPL devnum PARM abc LOADPARM xyz
will NOT behave as expected. Instead, the parm data "abc LOADPARM xyz"
will be loaded into the registers and the LOADPARM string will remain
IPL devnum LOADPARM xyz PARM abc
This will set the LOADPARM to "xyz" and load the parm data "abc" into the
registers, which is what was actually intended. The requirement for the
PARM option being specified last on the command line is to support multiple
IPL devnum LOADPARM xyz PARM abc 123 foo bar ...
I'll update the documentation to try and make that a bit more clear.
FYI to Aaron: the usual method for specifying a LOADPARM is to specify it
via the "LOADPARM" command rather than specifying it as an option on the
IPL command. That is to say, you use two separate commands rather than just
LOADPARM xyz
IPL devnum PARM abc
I'll get the documentation fixed. Thanks for reporting this.
--
"Fish" (David B. Trout)
Software Development Laboratories
http://www.softdevlabs.com
Loading...