On Fri, 31 Aug 2018 12:51:16 -0400 Collin Walling <walling@xxxxxxxxxxxxx> wrote: > A new diagnose instruction, 318, allows the kernel to set an 8-byte "Control > Program Code" (CPC) that is composed of: > > 1-byte Control Program Name Code (CPNC) > 7-byte Control Program Version Code (CPVC) composed of: > 3-bytes for Linux Kernel version (determined at build-time) > 3-bytes for Distribution Identifier (referred to as distro_id; set by Kconfig option) > 1-byte trailing NULL Is this a new diagnose code, or is just the implementation in Linux new? > > Note about distro_id: > [ > The initial idea for the 3-byte distro_id is for each distribution to set > three characters that correspond to their distribution name (for a theoretical > distributor "ACME," they could set "ACM" as the distro_id). A registry file > could be included in the s390 kernel documentation to avoid name collisions. > ] Yes, I think we do want some kind of registry for this. > > This instruction call is executed once-and-only-once during Kernel setup. > The availability of this instruction depends on Read SCP Info byte 134, bit 0. > Diagnose318's functionality is also emulated by KVM, which means we can > enable this feature for a guest even if the host cannot support it. > > Also introduced with this patchset is a Host Program Identifier (HPID), which > denotes the underlying host environment. > > The CPC and HPID are used for problem diagnosis and allows IBM to identify > control program information by answering the following questions: > > "What environment is this guest running in?" (CPNC) > "What distribution is this guest running?" (CPVC) > "What underlying host environment is this guest running on?" (HPID) Is there also a way for people-who-are-not-IBM to find out what these values have been set to? :) (IOW, is that write-only from a Linux perspective?) I see that for the emulated instruction the values are logged into the debug feature, which seems useful.