Diagnostic instructions, methods, and systems for restoring machine status and associated memory keys.
A diagnostic instruction addresses inefficiencies in data restoration by restoring machine state and memory keys, enabling seamless post-error operation in computing environments.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-02-02
- Publication Date
- 2026-03-17
Smart Images

Figure 2026509045000001_ABST
Abstract
Description
Background Art
[0001] One or more aspects generally relate to facilitating processing within a computing environment, particularly to improving data restoration processing within a computing environment.
[0002] There are situations where data needs to be saved so that it can be retrieved later. As an example, during an initial program load of a program, a bootloader is loaded into memory and used to perform the initial program load before passing control to the program. Based on the program receiving control from the bootloader, the program can freely use the memory previously occupied and used by the bootloader for its own purposes.
[0003] If an error is encountered later, a dump program is loaded to save selected data (e.g., overlaid data) of the program's memory to a storage device and can be used later during debugging. To load the dump program, an initial program load is executed. As part of the initial program load of the dump program, the selected data is saved before loading the bootloader that loads the dump program. This makes it easier to retrieve and restore this data.
Summary of the Invention
[0004] The shortcomings of prior art are overcome, and further advantages are provided through the provision of computer program products that facilitate processing within a computing environment. The computer program product includes one or more computer-readable storage media and program instructions collectively stored on the one or more computer-readable storage media to execute a method. The method includes the step of obtaining instructions to be executed within a computing environment. The instructions include operation codes indicating diagnostic operations. The instructions are executed. The execution step includes the steps of retrieving selected data from a dump storage area to be used to restore the machine state, and restoring the machine state. The restoration step includes the step of storing the selected data in a selected location. One or more storage keys used to protect access to the selected data are restored. Here, machine state refers to the state of a system or program, for example, the set of data and information that a system or program holds at a particular point in time.
[0005] This specification also describes and claims computer implementation methods and systems in one or more embodiments. Furthermore, this specification also describes and may claim services in one or more embodiments.
[0006] Further features and advantages are realized through the techniques described herein. Other embodiments and aspects are described in detail herein and are considered to be part of the claimed embodiments. [Brief explanation of the drawing]
[0007] The claims at the end of this specification specifically mention and explicitly claim one or more embodiments as examples. The above, as well as the purposes, features, and advantages of one or more embodiments, will become apparent from the following detailed description, to be read in conjunction with the accompanying drawings. [Figure 1A]An example of a computing environment for incorporating and using one or more aspects of the present invention is shown. [Figure 1B] Another example of a computing environment for incorporating and using one or more aspects of the present invention is shown. [Figure 2] An example of further details of a processor or processor unit according to one or more aspects of the present invention is shown. [Figure 3] Figure 3A shows an example of a submodule of the diagnostic processing module in Figure 1A, for example, according to one or more aspects of the present invention; Figure 3B shows an example of a submodule of the execution instruction submodule in Figure 3A, according to one or more aspects of the present invention. [Figure 4] Figure 4A shows an example of the format of a diagnostic instruction according to one or more aspects of the present invention; Figures 4B-4C show examples of register pair fields used in one exemplary execution of the diagnostic instruction in Figure 4A according to one or more aspects of the present invention; Figure 4D shows examples of register fields used in one exemplary execution of the diagnostic instruction in Figure 4A according to one or more aspects of the present invention; Figures 4E-4F show examples of register pair fields used in another exemplary execution of the diagnostic instruction in Figure 4A according to one or more aspects of the present invention; Figure 4G shows examples of register fields used in another exemplary execution of the diagnostic instruction in Figure 4A according to one or more aspects of the present invention. [Figure 5A] An example of diagnostic command processing according to one or more aspects of the present invention is shown. [Figure 5B] Further details of performing the operation shown in Figure 5A according to one or more embodiments of the present invention are shown below. [Figure 5C] Further details of performing the operation shown in Figure 5A according to one or more aspects of the present invention are shown. [Figure 6] An example of using the diagnostic command shown in Figure 4A according to one or more aspects of the present invention is shown. [Figure 7] Figures 7A-7B show another example of a computing environment for incorporating and using one or more aspects of the present invention. [Modes for carrying out the invention]
[0008] According to one or more aspects of the present invention, the ability to facilitate processing within a computing environment is provided. In one aspect, this ability includes facilitating processing relating to restoring a machine state (e.g., original data) based on selected conditions (e.g., an error). In one example, this ability includes using an instruction (e.g., a single designed instruction) to retrieve data from a selected area, use the retrieved data to restore a machine state, and restore a storage key associated with the retrieved data.
[0009] In one or more embodiments, an instruction is issued by an entity (e.g., a dump program, a boot loader, etc.) to retrieve a selected portion of data (e.g., an operating system, a logical partition, etc.) from a selected area (e.g., a dump storage area). The retrieved data is used to restore the machine state (e.g., the original data stored in the dump storage area) and to restore the memory keys associated with the selected portion of data.
[0010] In one or more aspects, an instruction is used (for example, in a single execution) to perform one or more other functions, including, but not limited to, freeing up a selected area for other use, creating an inactive standby program status word (PSW), and / or terminating an currently running initial program load (IPL). A program status word (PSW) is important information indicating the state of a computer's processor at a given time. This information includes many things, such as the type of instruction the processor is executing, the current execution mode, interrupts enabled, and error conditions.
[0011] In one or more embodiments, an instruction is configured to include multiple subcodes, and a specific subcode is selected for a particular execution of the instruction. Based on the selected subcode, one or more functions are executed in a particular execution of the instruction. Instructions may be issued by one or more components of a computing environment, including, but not limited to, programs such as dump programs and boot loaders. Many options and / or variations are possible.
[0012] In one or more embodiments, an instruction is referred to as a diagnostic instruction, and any processing associated with an instruction, including restoration processing, is referred to as a diagnostic processing. Instructions may be used by other programs and / or entities and / or for other purposes. Many variations and options are possible.
[0013] One or more aspects of the present invention are incorporated into a computing environment and executed and / or used by the computing environment. For example, the computing environment may be a variety of architectures and various types, including, but not limited to, personal computing, client-server, distributed, virtual, emulated, partitioned, unpartitioned, cloud-based, quantum mechanical, grid, time-sharing, cluster, peer-to-peer, wearable, mobile, having one or more nodes, having one or more processors, and / or any other type of environment and / or configuration capable of executing one or more processes that perform, for example, the diagnostic processing of the present invention (including the execution of selected subcodes of diagnostic instructions) and / or one or more other aspects. The aspects of the present invention are not limited to a particular architecture or environment.
[0014] Various aspects of this disclosure are illustrated by explanatory text, flowcharts, block diagrams of computer systems, and / or block diagrams of machine logic included in embodiments of computer program products (CPPs). With respect to any flowchart, operations may be performed in a different order than those shown in a given flowchart, depending on the technology involved. For example, again, depending on the technology involved, two operations shown in consecutive flowchart blocks may be performed in reverse order, as a single integrated step, simultaneously, or at least partially overlapping in time.
[0015] In this disclosure, the term "inheritance of a computer program product" ("CPP embodiment" or "CPP") is used to describe any set of one or more storage media (also called "mediums") that collectively comprises a set of one or more storage devices that collectively contain machine-readable code corresponding to instructions and / or data for performing computer operations specified in a given CPP claim. "Storage device" is any tangible device capable of holding and storing instructions for use by a computer processor. Without limitation, computer-readable storage media may be electronic storage media, magnetic storage media, optical storage media, electromagnetic storage media, semiconductor storage media, mechanical storage media, or any preferred combination thereof. Some known types of storage devices that include these media include: diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanically encoded devices (such as punch cards or pits / lands formed on the main surface of a disk), or any suitable combination of the foregoing. When the term computer-readable storage medium is used in this disclosure, it should not be interpreted as a storage device in the form of a transient signal itself, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides, optical pulses passing through optical fiber cables, electrical signals transmitted through wires, and / or other transmission media.As those skilled in the art will understand, data is typically moved at several irregular points during the normal operation of a storage device, for example, during access, defragmentation, or garbage collection, but this does not make the storage device transient, because data is not transient while it is stored.
[0016] Referring to Figure 1A, an example of a computing environment for performing, incorporating, and / or using one or more aspects of the present invention is described. In one example, the computing environment 100 includes an example of an environment for executing at least a portion of the computer code involved in performing the method of the present invention, such as diagnostic processing code or module 150. In addition to block 150, the computing environment 100 includes, for example, a computer 101, a wide area network (WAN) 102, an end-user device (EUD) 103, a remote server 104, a public cloud 105, and a private cloud 106. In this embodiment, the computer 101 includes a processor set 110 (including a processing circuit configuration 120 and a cache 121), a communication fabric 111, volatile memory 112, persistent storage 113 (including the block 150 and operating system 122 as described above), a peripheral device set 114 (including a user interface (UI) device set 123, storage 124, and an Internet of Things (IoT) sensor set 125), and a network module 115. The remote server 104 includes a remote database 130. The public cloud 105 includes a gateway 140, a cloud orchestration module 141, a host physical machine set 142, a virtual machine set 143, and a container set 144.
[0017] Computer 101 may take the form of a desktop computer, laptop computer, tablet computer, smartphone, smartwatch or other wearable computer, mainframe computer, quantum computer, or any other form of computer or mobile device currently known or to be developed in the future that is capable of running programs, accessing networks, or querying databases such as remote database 130. As is well understood in the field of computer technology, and depending on the technology, the execution of the computer implementation method may be distributed among multiple computers and / or multiple locations. On the other hand, in this presentation of the computing environment 100, in order to keep the presentation as simple as possible, a single computer, specifically computer 101, is the focus of the detailed discussion. Computer 101 may be located in the cloud, although it is not shown in the cloud in Figure 1A. On the other hand, computer 101 does not need to be in the cloud, except to any extent that can be definitively shown.
[0018] The processor set 110 includes one or more computer processors of any type currently known or to be developed in the future. The processing circuit configuration 120 may be distributed across multiple packages, for example, multiple coordinated integrated circuit chips. The processing circuit configuration 120 may implement multiple processor threads and / or multiple processor cores. The cache 121 is memory located within the processor chip package and is typically used for data or code that should be available for high-speed access by threads or cores running on the processor set 110. The cache memory is typically organized into multiple levels depending on its relative proximity to the processing circuit configuration. Alternatively, some or all of the cache for the processor set may be located "off-chip". In some computing environments, the processor set 110 may operate using qubits and be designed to perform quantum computing.
[0019] Computer-readable program instructions typically cause a series of operational steps to be executed by a processor set 110 of a computer 101, thereby implementing a computer-implemented method that is loaded onto the computer 101 so that the instructions thus executed instantiate the method specified in the flowchart and / or description of the computer-implemented method (collectively referred to as "the method of the present invention") included herein. These computer-readable program instructions are stored in various types of computer-readable storage media such as cache 121 and other storage media discussed below. The program instructions and associated data are accessed by the processor set 110 to control and direct the execution of the method of the present invention. In the computing environment 100, at least some of the instructions for executing the method of the present invention may be stored in a block 150 within the persistent storage device 113.
[0020] The communication fabric 111 is a signal conduction path that enables various components of the computer 101 to communicate with each other. Typically, this fabric is made up of switches and conductive paths such as buses, bridges, physical input / output ports, and switches and conductive paths that make up the same, etc. Other types of signal communication paths such as optical fiber communication paths and / or wireless communication paths may be used.
[0021] The volatile memory 112 is any type of volatile memory known currently or developed in the future. Examples include dynamic random access memory (RAM) or static RAM. Typically, volatile memory is characterized by random access, although this is not necessary without a definitive indication. In the computer 101, the volatile memory 112 is positioned within a single package and is internal to the computer 101, but alternatively or additionally, the volatile memory may be distributed across multiple packages and / or positioned external to the computer 101.
[0022] The persistent memory device 113 is any form of non-volatile memory device for a computer that is currently known or will be developed in the future. The non-volatility of this memory device means that the stored data is maintained regardless of whether power is being supplied to the computer 101 and / or directly to the persistent memory device 113. The persistent memory device 113 may be a read-only memory (ROM), but typically, at least a portion of the persistent memory device enables writing, deleting, and rewriting of data. Some well-known forms of persistent memory devices include magnetic disks and solid-state memory devices. The operating system 122 may take several forms, such as various known proprietary operating systems that employ a kernel or open-source portable operating system interface type operating systems. The code included in block 150 typically includes at least a portion of the computer code involved in executing the method of the present invention.
[0023] The peripheral device set 114 includes a set of peripheral devices for the computer 101. Data communication connections between the peripheral devices and other components of the computer 101 may be implemented in various ways, such as Bluetooth connections, near-field communication (NFC) connections, connections made by cables (such as Universal Serial Bus (USB) type cables), insertable connections (e.g., Secure Digital (SD) cards), connections made through local area communication networks, and even connections made through wide area networks such as the Internet. In various embodiments, the UI device set 123 may include components such as display screens, speakers, microphones, wearable devices (such as goggles and smartwatches), keyboards, mice, printers, touchpads, game controllers, and haptic devices. The storage device 124 is an external storage device such as an external hard drive, or an insertable storage device such as an SD card. The storage device 124 may be persistent and / or volatile. In some embodiments, the storage device 124 may take the form of a quantum computing storage device for storing data in the form of qubits. In embodiments where computer 101 needs to have a large amount of storage (for example, computer 101 locally stores and manages a large database), this storage may be provided by peripheral storage devices designed to store very large amounts of data, such as a storage area network (SAN) shared by multiple geographically distributed computers. The IoT sensor set 125 consists of sensors that can be used in an Internet of Things application. For example, one sensor may be a thermometer and another may be a motion detector.
[0024] The network module 115 is a collection of computer software, hardware, and firmware that enables computer 101 to communicate with other computers through the WAN 102. The network module 115 may include hardware such as a modem or Wi-Fi signal transceiver, software for packetizing and / or depacketizing data for communication network transmission, and / or web browser software for transmitting data over the internet. In some embodiments, the network control and network forwarding functions of the network module 115 are performed on the same physical hardware device. In other embodiments (e.g., embodiments utilizing Software-Defined Networking (SDN)), the control and forwarding functions of the network module 115 are performed on physically separate devices, such that the control function manages several different network hardware devices. Computer-readable program instructions for performing the method of the present invention can typically be downloaded from an external computer or external storage device to computer 101 through a network adapter card or network interface included in the network module 115.
[0025] WAN102 is any wide area network (e.g., the Internet) capable of transmitting computer data over non-local distances using any currently known or future-developed technology for transmitting computer data. In some embodiments, WAN102 may be replaced and / or complemented by a local area network (LAN), such as a Wi-Fi network, designed to transmit data between devices located in a local area. WANs and / or LANs typically include computer hardware such as copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, and edge servers.
[0026] The end-user device (EUD) 103 is any computer system used and controlled by an end-user (e.g., a customer of the company operating computer 101), and may take any of the forms discussed above in relation to computer 101. The EUD 103 typically receives useful and valuable data from the operation of computer 101. For example, in a hypothetical case where computer 101 is designed to provide recommendations to the end-user, these recommendations would typically be transmitted from computer 101's network module 115 to the EUD 103 via the WAN 102. Thus, the EUD 103 can display or otherwise present recommendations to the end-user. In some embodiments, the EUD 103 may be a client device such as a thin client, heavy client, mainframe computer, or desktop computer.
[0027] The remote server 104 is any computer system that provides at least some data and / or functionality as a service to computer 101. The remote server 104 may be controlled and used by the same entity that operates computer 101. The remote server 104 represents a machine that collects and stores useful and valuable data for use by other computers, such as computer 101. For example, in a hypothetical case where computer 101 is designed and programmed to provide recommendations based on historical data, this historical data may be provided to computer 101 from the remote database 130 of the remote server 104.
[0028] The public cloud 105 is any computer system available for use by multiple entities, providing on-demand availability of computer system resources and / or other computing capabilities, particularly data storage (cloud storage) and computing power, without direct active management by the user. Cloud computing typically leverages resource sharing to achieve coherence and economies of scale. Direct and active management of the computing resources of the public cloud 105 is performed by the computer hardware and / or software of the cloud orchestration module 141. The computing resources provided by the public cloud 105 are typically implemented by virtual computing environments running on various computers that make up the computers of the host physical machine set 142, which is a universe of physical computers that reside within and / or are available to the public cloud 105. The virtual computing environment (VCE) typically takes the form of virtual machines from the virtual machine set 143 and / or containers from the container set 144. These VCEs may be stored as images and may be transferred between hosts of various physical machines, either as images or after instantiation of the VCEs. The cloud orchestration module 141 manages the transfer and storage of images, deploys new instances of VCE, and manages active instances of VCE deployments. The gateway 140 is a collection of computer software, hardware, and firmware that enables the public cloud 105 to communicate through the WAN 102.
[0029] Here, we provide some further explanation of virtualized computing environments (VCEs). A VCE can be stored as an "image." A new active instance of a VCE can be instantiated from an image. Two well-known types of VCEs are virtual machines and containers. A container is a VCE that uses operating system-level virtualization. This refers to an operating system feature where the kernel enables the existence of multiple isolated user-space instances called containers. These isolated user-space instances typically function as real computers from the perspective of the programs running within them. Computer programs running on a normal operating system can utilize all of that computer's resources, such as connected devices, files and folders, network shares, CPU power, and quantifiable hardware capabilities. However, programs running inside a container can only use the contents of the container and the devices allocated to the container; this feature is known as containerization.
[0030] The private cloud 106 is similar to the public cloud 105, except that computing resources are available for use only by a single enterprise. While the private cloud 106 is shown as being in communication with the WAN 102, in other embodiments, the private cloud may be completely isolated from the internet and accessible only through a local / private network. A hybrid cloud is a combination of multiple clouds of different types (e.g., private, community, or public cloud types), often implemented by different vendors. Each of the multiple clouds remains a separate discrete entity, but a larger hybrid cloud architecture is bound together by standardized or proprietary technologies that enable orchestration, management, and / or data / application portability between the multiple configuration clouds. In this embodiment, both the public cloud 105 and the private cloud 106 are part of a larger hybrid cloud.
[0031] The computing environment described above is merely one example of a computing environment for incorporating, executing, and / or using one or more aspects of the present invention. Other examples are possible. For example, in one or more embodiments, one or more of the components / modules in Figure 1A are not included in the computing environment and / or are not used in one or more aspects of the present invention. Furthermore, in one or more embodiments, further and / or other components / modules may be used. Other variations are also possible.
[0032] Referring to Figure 1B, another example of a computing environment for incorporating, using, and / or running one or more aspects of the present invention will be described. In one example, the computing environment 160 supports logical partitioning and includes, for example, memory 165 (also known as system memory, main memory, primary memory, central memory, storage device; for example, persistent storage device such as persistent storage device 113; other storage devices; etc.) coupled to one or more processor units 190 (e.g., central processing unit: CPU, other types of processors, etc.) of a processor set (e.g., processor set 110).
[0033] Memory 165 includes, for example, one or more logical partitions 170, a logical partition manager such as a hypervisor 172, and firmware 174. An example of a hypervisor 172 is the IBM® PR / SM® (Processor Resource / System Manager) logical partition manager offered by International Business Machines Corporation in Armonk, New York. IBM and PR / SM are trademarks or registered trademarks of International Business Machines Corporation in at least one jurisdiction.
[0034] The support for logical partitioning provides the ability to operate on a large number of logical partitions 170, each of which can run multiple different programs 180 and execute a guest operating system 182. Each logical partition 170 can function as a separate system; that is, each logical partition can be reset independently, run a guest operating system, and operate on multiple different programs. An operating system or application program running on a logical partition may appear to have access to a full and complete system, but in reality, only a portion of it is available.
[0035] In one example, logical partition 170 includes one or more logical processors, each logical processor representing all or a portion of the physical processor resources (e.g., processor unit 190) that can be dynamically allocated to the logical partition.
[0036] Firmware 174 includes, for example, processor and / or system microcode. It includes, for example, hardware-level instructions and / or data structures used in higher-level machine code implementations. In one embodiment, it includes, for example, proprietary code that is typically delivered as microcode containing trusted software or microcode specific to the underlying hardware and controls operating system access to system hardware.
[0037] In one example, firmware 174 includes a bootloader 176 used in the initial program load (IPL) of a selected program, such as an operating system, or, according to one or more aspects of the present invention, a dump program used to capture the machine state at a specific point in time (e.g., data in a selected data area, such as the data area of a program (e.g., an operating system)). The initial program load provides a mechanism for causing a program (e.g., an operating system, a dump program) to be read from a selected device and for initiating the execution of that program. In one or more embodiments, bootloader code (also called a bootloader, e.g., bootloader 176) is loaded into the firmware, copied, or otherwise present and is used when performing the initial program load of a program (e.g., an operating system, a dump program). One particular type of initial program load is a list-instructed initial program load, which allows a program (e.g., an operating system, a dump program) to be loaded from various types of input / output devices.
[0038] A program loaded by initial program loading or otherwise started executes instructions for performing operations within the computing environment. To execute instructions, for example, a functional component of a processor unit or processor (e.g., a processor set 110) is used. Referring to Figure 2, an example of a functional component used to execute instructions is described. For example, a functional component used to execute instructions includes, for example, an instruction fetch component 200 that fetches the instruction to be executed; an instruction decode / operand fetch component 202 that decodes the fetched instruction and retrieves the operands of the decoded instruction; one or more instruction execution components 204 that execute the decoded instruction; a memory access component 206 that accesses memory as needed for instruction execution; and a write-back component 208 that provides the results of the executed instruction. One or more of these components may access and / or use one or more registers 210 in instruction processing. Furthermore, one or more of these components may access and / or use a diagnostic processing module 150. In one or more aspects of the present invention, further, fewer, and / or other components may be used.
[0039] A diagnostic processing module (e.g., diagnostic processing module 150) includes code or instructions used to perform a diagnostic process according to one or more aspects of the present invention. In one example, the diagnostic processing module (e.g., diagnostic processing module 150) includes various submodules to be used to perform the process. The submodules are, for example, computer-readable program code (e.g., instructions) in a computer-readable medium, such as a storage device (e.g., storage device 124, persistent storage device 113, cache 121, other storage devices). The computer-readable medium may be part of a computer program product, and the computer-readable program code may be executed by and / or using one or more computing devices (e.g., one or more computers such as computer 101; one or more servers such as remote server 104; one or more processors such as processor units or processors of processor set 110; and / or processing circuit configurations such as processing circuit configuration 120 of processor set 110; other computing devices, etc.). Additional, fewer, and / or other computers, servers, processors, processing circuit configurations, and / or computing devices may be used to run one or more and / or parts of these submodules. Many examples are possible.
[0040] Referring to Figure 3A, an example of the diagnostic processing module 150 is described. In this example, the diagnostic processing module 150 includes an acquisition command submodule 300 that acquires (e.g., receive, provide, pull, retrieve, fetch, issue, etc.) the diagnostic instructions to be executed, and an execution command submodule 310 that is to be used to execute the diagnostic instructions.
[0041] For example, referring to Figure 3B, the execution instruction submodule 310 includes, for example, an acquisition operand submodule 312 for acquiring one or more operands of a diagnostic instruction; a determination operation submodule 314 for determining the operation to be performed by the diagnostic instruction; and an execution operation submodule 316 for performing the determined operation. Further, fewer, and / or other submodules may be used to implement the diagnostic process, which includes the execution of the diagnostic instruction and / or other processing associated therewith.
[0042] An example of a diagnostic instruction is described with reference to Figure 4A. In one embodiment, a diagnostic instruction such as diagnostic instruction 400 (also called diagnostic "0308" in one particular architecture) is a single designed hardware machine instruction in the hardware / software interface. It is configured to include multiple subcodes, with a particular subcode indicated in the instruction call. The execution of each subcode involves performing one or more functions as part of the execution of the diagnostic instruction that specifies the subcode.
[0043] For example, in one implementation, diagnostic instructions are part of the instruction set architecture. An example of an instruction set architecture for incorporating and / or using aspects of the present invention and / or diagnostic instructions is the IBM® Z / ARCHITECTURE® instruction set architecture offered by International Business Machines Corporation in Armonk, New York. One embodiment of the z / Architecture instruction set architecture is described in the publication entitled "z / Architecture Principles of Operation" (IBM Publication No. SA22-7832-12, Thirteenth Edition, September 2019), which is incorporated herein by reference in its entirety. However, the z / Architecture instruction set architecture is merely one exemplary architecture; other architectures and / or other types of computing environments of International Business Machines Corporation and / or other entities / companies may include and / or use one or more aspects of the present invention. z / Architecture is a trademark or registered trademark of International Business Machines Corporation in at least one jurisdiction.
[0044] In one example, the diagnostic instruction 400 has a format called register and storage operand format, for example, 32 bits. In this particular example, the diagnostic instruction 400 has an operation code (e.g., opcode) field 402 (e.g., bits 0-7) that specifies the diagnostic operation; a register (e.g., R1) field 404 (e.g., bits 8-11) that specifies at least one general-purpose register to be used in the execution of the diagnostic instruction; another register (e.g., R3) field 406 (e.g., bits 12-15) that specifies at least one general-purpose register to be used in the execution of the diagnostic instruction; a base register field (e.g., B2) 408 (e.g., bits 16-19) that specifies the base register; and a displacement (e.g., D2) field 410 (e.g., bits 20-31) that specifies a displacement value to be added to the value in the base register specified in the base register field 408 in order to provide a value to be used as an operation code extension for the diagnostic instruction 400. Each of these fields will be described further below.
[0045] In one embodiment, the fields of an instruction are separate and independent of each other, but in other embodiments, more than one field may be combined. Furthermore, a field may be extended to more than one location. For example, a field may be in one bit set and extend to another bit set separate from that one bit set (e.g., at the beginning and end of the instruction form; and / or variations thereof). Exemplary types of registers are specified, but other types of registers may also be used. Also, exemplary locations in the instruction form are provided, but other locations may be used for one or more of these instruction fields. Diagnostic instructions, such as diagnostic instruction 400, may have further, fewer, and / or other fields. Other examples are also possible.
[0046] Furthermore, in the description herein of diagnostic instructions such as diagnostic instruction 400, a specific location, a specific field, and / or a specific size of that field may be indicated (e.g., a specific byte and / or bit). However, other locations, fields, and / or sizes may be provided. Furthermore, a specific value, for example, setting a bit to 1 or zero, may be specified, but this is merely an example. In other examples, a bit may be set to a different value, such as the opposite value, or to another value, if it is set. Many variations are possible.
[0047] If a subscript is associated with a field, that subscript indicates the operand to which the field applies. For example, the subscript 1 associated with register R1 indicates that the register specified using R1 contains the first operand, the subscript 2 associated with base registers B2 and D2 indicates the second operand, and so on.
[0048] In one example of diagnostic instruction 400, the contents of field D2 410 are added to the contents of the general-purpose register specified by B2408. The result is not used to address data; instead, selected bits (e.g., bits 0-47) are ignored, and other selected bits (e.g., bits 48-63) are used as operation code extensions. If the operation code extension is a selected operation code (e.g., "0308" in hexadecimal), then initial program load-related functions are performed.
[0049] For example, a diagnostic instruction (e.g., a diagnostic instruction 400 with a selected operation code extension (e.g., "0308" in hexadecimal)) provides various functions associated with the initial program load (IPL). For example, it provides a reset function used during the IPL process, a function to initiate the IPL, and a function to set and store IPL parameters.
[0050] As shown, in one embodiment, a diagnostic command implements several subcodes according to one or more aspects of the present invention, two of which are provided. These subcodes are referred to as subcodes 11 and 12, but may be referred to in other ways.
[0051] In one or more embodiments, the use of the R1 field 404 depends on the subcode specified in the general-purpose register R3 of the R3 field 406, as described herein. For example, selected positions in the general-purpose register R3 (e.g., bit positions 48-63) contain an unsigned binary integer (e.g., 16 bits) specifying the subcode. This subcode in R3 is verified against the call to diagnostic "0308". Furthermore, in one example, selected positions in the general-purpose register R3 (e.g., bit positions 0-47) change based on the subcode value. In one example, for subcodes 11 and 12, bit 47 of the general-purpose register R3 is reserved and should be zero. Other variations and / or options are also possible.
[0052] For example, subcode 11 is, for instance, a load operation of a dump page from a list-instructed IPL dump storage area, and subcode 12 is, for example, a restore operation of a dump page from a list-instructed dump storage area and an IPL termination operation. In one embodiment, subcodes 11 and 12 may be issued from any central processing unit. Each of these subcodes will be described further below.
[0053] (Subcode 11 - List Instructions: Loading Dump Pages from IPL Dump Storage Area)
[0054] In one embodiment, if subcode 11 is specified, the R1 field 404 selects the even register of the even-odd pair of general-purpose registers; otherwise, in one example, a specified exception is recognized. The R1+1 field is the odd register of the even-odd pair. In one example, referring to Figure 4B, the contents 404a of general-purpose register R1 select the starting address 420 (e.g., the starting absolute address) of the storage area where, for example, a specified range of storage pages and their associated storage keys should be restored from the dump storage area. The address should be selected, for example, on a 4k byte boundary; otherwise, in one example, a specified exception is recognized.
[0055] Furthermore, as shown in Figure 4C, an example illustrates the contents 430a of general-purpose register R1+1. In this example, a selected position in general-purpose register R1+1 (e.g., bit positions 0-31) contains an unsigned binary integer (e.g., 32 bits) specifying the count of pages in the dump storage area to be restored, starting from the starting page number of the dump storage area (specified by R3). A response code 436 is returned, for example, to a selected position in general-purpose register R1+1 (e.g., bit positions 48-63). A specific position in general-purpose register R1+1 (e.g., bit positions 32-47) is set to, for example, zero 434 or another value. A selected response code 436 (e.g., 0001 hexadecimal) indicates that the operation was completed successfully. Another selected response code 436 (e.g., 0002 hexadecimal) indicates that the operation was partially successful.
[0056] Referring to Figure 4D, one example illustrates the contents 406a of general-purpose register R3. In this example, if subcode 11 is specified, the selected position in general-purpose register R3 (e.g., bit positions 0-31) contains an unsigned binary integer (e.g., 32 bits) specifying the starting page number 440 (0-N) of the dump storage area from which the dump data and associated memory keys should be restored; as shown, the selected position in general-purpose register R1+1 (e.g., bit positions 0-31) specifies the page count 432 of the dump storage area to be restored, starting from the starting page number of the dump storage area. If the starting page number is greater than, for example, the number of pages available in the dump storage area, or if the sum of the page count and the current page number is greater than the number of pages available in the dump storage area, the selected response code 436 (e.g., 0203 hexadecimal) is returned, for example, to the selected position in general-purpose register R1+1, and the data or memory keys are not stored. A memory access to the memory area where the specified range of memory pages and their associated memory keys, as pointed to by the contents of general-purpose register R1, should be restored, is, in one example, not subject to low-address protection and key control protection.
[0057] During operation, in one example, subcode 11 (i.e., execution of diagnostic instruction 400, where subcode 442 is set to 11) stores a specified range of memory pages from a dump storage area owned by the configuration (e.g., a logical partition, operating system, etc.) to a specified memory area pointed to, for example, logical address 420 in general-purpose register R1. The memory key associated with the restored main memory in the configuration is set to the memory key of the main memory that existed when the main memory was stored in the dump storage area.
[0058] If the issuing configuration does not have a dump storage area, the selected response code 436 (e.g., 0304 in hexadecimal) is returned to the selected position (e.g., bit positions 48-63) of the general-purpose register R1+1, and no data or storage key is stored.
[0059] If the page count 432 specified in general-purpose register R1+1 is set to, for example, zero, and the issue configuration owns a dump storage area, the selected response code 436 (e.g., 0001 in hexadecimal) is returned to, for example, a selected position in general-purpose register R1+1 (e.g., bit positions 48-63), and no data or storage key is stored.
[0060] If an error is encountered while restoring one or more memory pages within a specified memory range, a selected response code 436 (e.g., 0002 hexadecimal) is returned to a selected location (e.g., bit positions 48-63) in a general-purpose register R1+1. The contents of any such memory page are unpredictable. In one example, no indication is given as to which pages within the specified memory range are affected. In another example, if a memory page cannot be restored, an error message is displayed in multiple formats, for example. For example, a zero page with an identifier string is stored in that location. The identifier string is stored in multiple formats (e.g., Extended Binary Coded Decimal Interchange Code (EBCDIC), American Standard Code for Information Interchange (ASCII), etc.) so that the error message is readable regardless of the format used to view the data in the memory device.
[0061] If an error is encountered while restoring a memory key for any memory page within the specified memory range, the selected response code 436 (e.g., 0002 in hexadecimal) is returned, for example, to a selected position in general-purpose register R1+1 (e.g., bit positions 48-63). The contents of such any memory key are unpredictable. In one example, no indication is given as to which memory pages within the specified memory range are affected.
[0062] According to one or more aspects of the present invention, a diagnostic process, including the execution of a diagnostic instruction such as a diagnostic instruction 400, is performed using a diagnostic process. An example of such a process will be described with reference to Figures 5A to 5C. In one example, the diagnostic process (e.g., diagnostic process 500) may be implemented using one or more submodules (e.g., one or more submodules 300 to 316) and is performed by one or more computing devices (e.g., one or more computers (e.g., computer 101, other computers, etc.), one or more servers (e.g., server 104, other servers, etc.), one or more processors (e.g., processor set 110 or other processor sets) that are processors, processor units, nodes, and / or processing circuit configurations, etc., and / or other computing devices, etc.). Exemplary computing devices, computers, servers, processors, processor units, nodes, and / or processing circuit configurations are provided, but further, fewer, and / or other computers, servers, processors, processor units, nodes, processing circuit configurations, and / or computing devices may be used for the diagnostic process and / or other processes. Several options are possible.
[0063] Referring to Figure 5A, in one example, the diagnostic process 500 obtains (502) a diagnostic instruction such as a diagnostic instruction 400 (e.g., receive, retrieve, fetch, provide, pull out, issue, etc.) and executes (510) that instruction. Execution includes, for example, obtaining one or more operands of the instruction (512). For example, the process 500 obtains one or more of the following: an operation code using the opcode field 402, a subcode 442 using the R3 field 406, a logical address 420 of the dump page area using the R1 field 404, a starting page number 440 using the R3 field 406, and a page count 432 using the R1 field 404. In one or more embodiments, further, fewer, and / or other operands may be used. Many variations are possible.
[0064] Based on obtaining the operand, in one example, process 500 determines the operation to be performed (as specified by, for example, subcode 442, etc.) (514). In one example, the operation is the operation of loading a dump page from the list instruction IPL dump storage area, as specified by subcode 11. However, further, fewer, and / or other operations may be specified. Furthermore, in other embodiments, no subcode is specified, and instead, the operation is determined from another field of the instruction, such as one or more opcode fields, one or more other fields, etc., or it is implied, etc. Many variations are possible.
[0065] In one example, based on determining an operation, process 500 executes the operation (516). Refer to Figure 5B for further details on an example of executing an operation (e.g., loading dump pages from the list instruction IPL dump storage area - subcode 11).
[0066] In one embodiment, process 516a performs verification on one or more of the acquired operands (530). For example, process 516a determines whether the starting page number 440 is greater than, for example, the number of pages available in the dump storage area, or whether the sum of page count 432 and the current page number is greater than the number of pages available in the dump storage area. If so, the selected response code 436 (e.g., 0203 in hexadecimal) is returned to, for example, the selected location in general-purpose register R1+1, and no data or storage key is stored. Storage access to the storage area where the specified range of storage pages and their associated storage keys, pointed to by the contents of general-purpose register R1, should be restored is, in one example, not subject to low-address protection and key control protection.
[0067] Process 516a, assuming the verification was successful, restores a specified range of memory pages from the dump storage area owned by the configuration (e.g., logical partitions, operating system) to the specified memory area pointed to, for example, logical address 420 in general register R1 (532). This restores the problematic mechanical state of the configuration by restoring a portion of the memory area overlaid by, for example, the boot loader and / or the dump program itself. Furthermore, process 516a restores the memory keys associated with the restored main memory in the configuration to the memory keys of the restored main memory that existed when the main memory was stored in the dump storage area (534).
[0068] Process 516a determines the response code to be returned based on the performance of storage and retrieval (536). For example, if the issuing configuration does not own a dump storage area, the selected response code 436 (e.g., 0304 in hexadecimal) is returned to a selected position (e.g., bit positions 48-63) in a general-purpose register R1+1, and no data or storage key is stored.
[0069] If the page count 432 specified in general-purpose register R1+1 is set to, for example, zero, and the issue configuration owns a dump storage area, the selected response code 436 (e.g., 0001 in hexadecimal) is returned to, for example, a selected position in general-purpose register R1+1 (e.g., bit positions 48-63), and no data or storage key is stored.
[0070] If an error is encountered while restoring one or more memory pages within a specified memory range, a selected response code 436 (e.g., 0002 in hexadecimal) is returned to a selected location (e.g., bit positions 48-63) in a general-purpose register R1+1. The contents of any such memory page are unpredictable. In one example, no indication is given as to which pages within the specified memory range are affected. In another example, if a memory page cannot be restored, an error message is displayed in multiple formats, for example. For example, a zero page with an identifier string is stored at that location. The identifier string is stored in multiple formats (e.g., EBCDIC, ASCII, etc.) so that the error message is readable regardless of the format used to view the data in the storage device.
[0071] If an error is encountered while restoring a memory key for any memory page within the specified memory range, the selected response code 436 (e.g., 0002 in hexadecimal) is returned, for example, to a selected position in general-purpose register R1+1 (e.g., bit positions 48-63). The contents of such any memory key are unpredictable. In one example, no indication is given as to which memory pages within the specified memory range are affected.
[0072] Process 516a returns the determined response code 436 (538). This completes the processing based on subcode 11.
[0073] In addition to subcode 11, the diagnostic instruction 400 may also specify other subcodes, including subcode 12, according to aspects of the present invention. Further details regarding subcode 12 will be described below.
[0074] (Subcode 12 - Restoring dump pages from the list instruction dump storage area and ending the IPL)
[0075] In one example, referring to Figure 4E, if subcode 12 is specified, the contents 404b of general-purpose register R1 are selected as the instruction address of an inactive standby program state word (PSW), which will be constructed and loaded after the storage device and associated memory key are restored, for example, the instruction address 450 (e.g., 64 bits), such as the problematic instruction address. The instruction address is not used to address data and, in one example, should conform to the format of the instruction address of the program state word based on the current addressing mode. The remainder of the program state word is provided, for example, by the hypervisor. In other embodiments, control other than the program state word may be used.
[0076] Storage access to the storage area where the dump storage area storage pages and their associated storage keys should be restored, starting from the selected location (e.g., absolute storage location 0), is not subject to low address protection and key control protection.
[0077] In one example, as described herein, in one or more defined situations, response code 454 (Figure 4F) is returned to a selected position (e.g., bit positions 48-63) in the contents 430b of general-purpose register R1+1. The selected position (e.g., bit positions 32-47) of general-purpose register R1+1 is set to a selected value (e.g., zero 452). The contents 406b (Figure 4G) of general-purpose register R3 contain subcode 458 (e.g., bit positions 48-63), the selected bit positions (e.g., bit positions 0-47) are ignored, and for future compatibility, should contain, for example, zero 456. Other variations are possible.
[0078] In one example, subcode 12 stores the entire range of memory pages from the dump storage area currently owned by the issuing configuration (e.g., logical partition, operating system, etc.) to a storage device (e.g., partition storage) starting from a selected location (e.g., absolute storage location 0). The storage key associated with the restored main memory in the configuration is set to the restored storage key of the main memory that existed when the main memory was stored in the dump storage area. In one example, the first page in the dump storage area is called the prefix page, and it contains dump storage area metadata instead of the first page of the main memory area that should be stored. This causes the stored main memory area to be shifted by, for example, one page. For example, a 4K byte main memory page located at location 0, etc., is stored on the second 4K byte page of the dump storage area because the first page of the dump storage area contains the prefix page. If the dump program requests that the entire dump storage area be loaded back into the same main memory area, for example starting from location 0, then, for example, the first page of the main memory area starting from location 0 would contain a prefix page instead of the actual content of the first page of the main memory area stored from location 0, and the actual content of the first page of the main memory area starting from location 0 would be loaded into main memory location 4K. To prevent such a shift of main memory area by a 4K byte storage page, for example, the prefix page would not be stored; instead, the data at location 4K would be treated as the beginning of the actual dump data (the first page of the dump data), and the data would be restored to location 0 of main memory, for example, starting from location 4K of the dump storage area.
[0079] If the issue configuration does not have a dump storage area, the selected response code 454 (e.g., hexadecimal response code 0304) is returned to a selected position (e.g., bit positions 48-63) in a general-purpose register R1+1, for example. No data is stored, no storage keys are set, and no unenabled standby program state words are loaded.
[0080] If an error is encountered while restoring or saving one or more memory pages within a specified memory range, the contents of any such memory page are unpredictable. In one example, no indication is given as to which pages within the specified memory range are affected. In another example, if a memory page cannot be restored, an error message is displayed in multiple formats, for example. For example, a zero page with an identifier string is stored in that location. The identifier string is stored in multiple formats (e.g., EBCDIC, ASCII, etc.) so that the error message is readable regardless of the format used to view the data in the storage device.
[0081] If an error occurs while restoring a memory key for any memory page within a specified memory range, or while saving it, the contents of such any memory key are unpredictable. For example, there is no indication of which memory pages within the specified memory range are affected.
[0082] Once the memory restoration and memory key restoration functions are complete, the dump storage area owned by the issuing configuration is released. For example, the hypervisor uses the problematic instruction address 450 (e.g., 64-bit) of the issuing configuration, provided by general-purpose register R1, to construct an inactive standby program state word, load it onto the issuing central processing unit, and terminate the list instruction IPL. The load mode memory status is then terminated.
[0083] Because the issuing central processing unit does not regain control, the message that the completion was successful (or partially successful) is not returned to the issuer via a response code.
[0084] For example, referring to Figure 5A, process 500 executes operation 514 of subcode 12 based on the determination that operation 514 should be performed (516). Referring to Figure 5C, further details regarding the operation of restoring the dump page from the list instruction dump storage area and terminating the IPL (subcode 12) are described.
[0085] In one embodiment, process 516b restores the entire range of memory pages from the dump storage area currently owned by the issuing configuration (e.g., the configuration that issues a diagnostic instruction in subcode 12) to a partitioned storage device starting from a selected location (e.g., absolute memory location 0) (550). Furthermore, process 516b restores the memory keys associated with the restored main memory in the configuration to the memory keys of the restored main memory that existed when the main memory was stored in the dump storage area (552).
[0086] Process 516a determines (if any) the response code to be returned based on the storage and setting (554) operations. For example, if the issue configuration does not own a dump storage area, the selected response code 454 (e.g., hexadecimal response code 0304) is returned to a selected position (e.g., bit positions 48-63) in a general-purpose register R1+1. No data is stored, no storage keys are set, and no unactivated standby program state words are loaded.
[0087] If an error is encountered while restoring or saving one or more memory pages within a specified memory range, the contents of any such memory page are unpredictable. In one example, no indication is given as to which pages within the specified memory range are affected. In another example, if a memory page cannot be restored, an error message is displayed in multiple formats, for example. For example, a zero page with an identifier string is stored in that location. The identifier string is stored in multiple formats (e.g., EBCDIC, ASCII, etc.) so that the error message is readable regardless of the format used to view the data in the storage device.
[0088] If an error occurs while restoring a memory key for any memory page within a specified memory range, or while saving it, the contents of such any memory key are unpredictable. For example, there is no indication of which memory pages within the specified memory range are affected.
[0089] Process 516a returns the determined response code (556).
[0090] Furthermore, in one embodiment, based on the completion of memory restoration and storage key restoration, process 516b releases the dump storage area owned by the issuing configuration (558). This makes the dump storage area available for reuse.
[0091] In another example, process 516b, using a hypervisor (e.g., hypervisor 172), constructs an inactive standby program state word (560) using, for example, the problematic instruction address 450 (e.g., 64 bits) of the issue configuration provided in register R1, and then terminates the list instruction initial program load (562) by, for example, loading the constructed inactive standby program state word onto the issue central processing unit. The storage status of the load mode is then terminated.
[0092] In one example, because the issuing central processing unit does not take control back, the message that completion was successful (or partially successful) is not sent back to the issuer via the response code. This completes the processing based on subcode 12.
[0093] In one example, response codes for subcode functions 11 and 12 are provided, as described herein. Illustrative response codes are provided below.
[0094] For example, a hexadecimal response code of 0001 indicates that the function was completed successfully and all data was returned. This is provided in subcode 11. For example, a hexadecimal response code of 0002 indicates that the function was partially successful and partial data was returned. This is provided in subcode 11. In one example, if subcode 11 is specified, but an error is encountered while restoring one or more memory pages or their associated memory keys within the specified memory range, a response code, for example, hexadecimal 0002, is provided.
[0095] Furthermore, for example, if subcode 11 is specified but the number of pages requested to be stored from the dump storage area is unavailable, a response code, e.g., 0203 in hexadecimal, is provided; if subcodes 11 and 12 are specified but the guest does not own a dump storage area, a response code, e.g., 0304 in hexadecimal, is provided.
[0096] Further, fewer, and / or other response codes may be provided. Furthermore, the exemplary values of the response codes are merely examples; other values may be provided.
[0097] In one or more instances, the diagnosis "0308" may encounter a program exception, which is listed below. Further, fewer, and / or other exceptions may be provided. In any case, instruction execution is suppressed.
[0098] • A privileged operation exception is recognized when the central processing unit is in a problematic state.
[0099] A specified exception is recognized if a diagnosis is provided but diagnosis "0308" is not provided, or if the specified subcode is not provided on the machine.
[0100] For example, a specified exception is recognized if subcode 11 or 12 is not specified and the selected position of general-purpose register R3 (e.g., bit positions 0-47) is not all zero.
[0101] A specified exception is recognized if subcode 11 is specified, the selected position in general-purpose register R3 (e.g., bits 0-47) is not zero, and a secure IPL from the selected device equipment is not installed, or if subcode 11 is specified, the selected position in general-purpose register R3 (e.g., bits 32-47) is not zero, and a secure IPL from the selected device equipment is installed.
[0102] A specified exception is recognized if the subcode field at a selected position in general-purpose register R3 (for example, bit positions 48-63) contains a reserved subcode value.
[0103] • A specified exception is recognized when the central processing complex is operating in basic mode and instructions are not executed under interpretable execution.
[0104] A specified exception is recognized if subcode 11 or 12 is specified and the R1 field does not select an even-numbered register.
[0105] A specified exception is recognized if subcode 11 is specified and the address specified by general-purpose register R1 is not selected on a 4k byte boundary.
[0106] If subcode 11 or 12 is specified, the condition code will not be changed.
[0107] Exemplary program exceptions include, for example, the following:
[0108] • Access (Memory - Subcode 11)
[0109] • Privileged operations
[0110] ·designation
[0111] Transaction constraints
[0112] Further, fewer, and / or other program exceptions may be specified.
[0113] This specification describes examples of diagnostic instructions used to retrieve data stored in a selected area, such as a dump storage area, and to use that data to restore the machine state (for example, by storing that data (e.g., data present during initial program loading and / or program (e.g., operating system, boot loader, etc.) failure) in a selected location), and to restore the associated storage key. An example of using diagnostic instructions is illustrated with reference to Figure 6. For example, diagnostic instructions are used by the initial program loading process. In one example, the initial program loading process (e.g., initial program loading process 600) may be implemented using a module having one or more submodules and is executed by one or more computing devices (e.g., one or more computers (e.g., computer 101, other computers, etc.), one or more servers (e.g., server 104, other servers, etc.), one or more processors (e.g., processor set 110 or other processor sets), processor units, nodes, and / or processing circuit configurations, etc., and / or other computing devices, etc.). Exemplary computing devices, computers, servers, processors, processor units, nodes, and / or processing circuit configurations are provided, but further, fewer, and / or other computers, servers, processors, processor units, nodes, processing circuit configurations, and / or computing devices may be used for the initial program loading process and / or other processing. Various options are possible.
[0114] Referring to Figure 6, in one example, the initial program load process 600 uses, for example, a hypervisor (e.g., hypervisor 172) to save the machine state (e.g., data to be overlaid) to a selected area (e.g., a dump storage area) (601). The process 600 uses, for example, a hypervisor to load a boot loader (e.g., boot loader 176) to a selected location (e.g., memory in a logical partition) (602). The process 600 uses the loaded boot loader to perform the initial program load of a program (e.g., an operating system (OS)) (604). Based on the initial program load, the program takes control (606) and can freely use the memory previously occupied by the boot loader.
[0115] Process 600 detects, for example, that a program error has occurred and that a dump should be initiated, for example, by a dump program (608). Based on the detection of the error, for example, a machine operator initiates the initial program loading of the dump program. Process 600 uses, for example, a hypervisor (e.g., hypervisor 172) to save the machine state (e.g., program data) to a selected area (e.g., a dump storage area) (610). Process 600 uses, for example, a hypervisor to load a boot loader (e.g., boot loader 176) into memory (e.g., a logical partition) (612). Using the boot loader, Process 600 initiates the initial program loading of the dump program (614), thereby providing a dump to be used for debugging, using the data stored in the dump storage area and, if applicable, other data stored in memory.
[0116] Process 600 determines whether the initial program load of the dump program was successful (616). For example, process 600 determines whether the initial program load of the dump program or the execution of the dump program failed. If the initial program load or execution of the dump program is successful, process 600, for example, issues diagnostic instruction subcode 11 via the dump program (618), passes control to the hypervisor, retrieves the specified range of memory pages, restores the machine state (for example, stores the specified range of memory pages in a selected location), retrieves the memory keys, and restores the memory keys. However, if a failure occurs that is not attributable to the dump program, process 600, for example, issues diagnostic instruction subcode 12 via the dump program or boot loader that detects the unsuccessful initial program load (620), passes control to the hypervisor (for example, hypervisor 172) to access the dump storage area, retrieves the data stored in the dump storage area, restores the machine state and memory keys, terminates the initial program load, and allows retrying the failed dump operation. Furthermore, in one example, the hypervisor uses guest error information to terminate the guest program (e.g., the guest operating system) on behalf of the guest program.
[0117] For example, if the initial program load fails due to an error in the dump program or boot loader, another initial program load process and / or other error handling will be executed. Other variations are also possible.
[0118] Examples of using diagnostic commands are provided, but further and / or other examples are possible. One or more aspects of the processes described herein may be used for purposes other than those described herein. Furthermore, various examples of one or more forms of commands are provided, but further and / or other forms may be used.
[0119] Other variations and embodiments are also possible.
[0120] Furthermore, while this specification describes one or more examples of computing environments for incorporating and using one or more aspects of the present invention, Figures 7A-7B show another embodiment of a computing environment for incorporating and using one or more aspects of the present invention.
[0121] Referring first to Figure 7A, in this example, the computing environment 36 includes, for example, one or more buses 40 and / or other connections, a native central processing unit (CPU) 37 based on one architecture having one instruction set architecture, memory 38, and, for example, one or more input / output devices and / or interfaces 39, all coupled to one another via one or more buses 40 and / or other connections.
[0122] The native central processing unit 37 includes one or more native registers 41, such as one or more general-purpose registers and / or one or more dedicated registers, which are used during processing within the environment. These registers contain information representing the state of the environment at any particular point in time.
[0123] Furthermore, the native central processing unit 37 executes instructions and code stored in memory 38. In one particular example, the central processing unit executes emulator code 42 stored in memory 38. This code allows a computing environment configured on one architecture to emulate another architecture (different from that one architecture) and execute software and instructions developed on that other architecture.
[0124] Refer to Figure 7B for further details regarding the emulator code 42. The guest instructions 43 stored in memory 38 include software instructions (e.g., those that interact with machine instructions) that have been developed to run on architectures other than that of the native CPU 37. For example, the guest instructions 43 may be designed to run on a processor based on another instruction set architecture, but instead are emulated on the native CPU 37, which may be that single instruction set architecture. In one example, the emulator code 42 includes an instruction fetch routine 44 for retrieving one or more guest instructions 43 from memory 38 and optionally providing local buffering for the retrieved instructions. It also includes an instruction translation routine 45 for determining the type of the retrieved guest instruction and translating that guest instruction into one or more corresponding native instructions 46. This translation includes, for example, identifying the function that the guest instruction should perform and selecting the native instruction to perform that function.
[0125] Furthermore, the emulator code 42 includes an emulation control routine 47 for executing native instructions. The emulation control routine 47 may cause the native CPU 37 to execute a native instruction routine that emulates one or more previously obtained guest instructions, and at the end of such execution, return control to an instruction fetch routine for emulating the acquisition of the next guest instruction or group of guest instructions. The execution of the native instruction 46 may include loading data from memory 38 into a register; returning data from the register to memory and storing it; or performing some type of arithmetic or logical operation as determined by the translation routine.
[0126] Each routine is implemented, for example, by software stored in memory and executed by the native central processing unit 37. In other examples, one or more of these routines or operations are implemented by firmware, hardware, software, or any combination thereof. The emulated processor registers may be emulated using the native CPU registers 41 or by using locations in memory 38. In embodiments, the guest instruction 43, the native instruction 46, and the emulator code 42 may reside in the same memory or be distributed across different memory devices.
[0127] Exemplary instructions that can be emulated include diagnostic instructions described herein, according to one or more aspects of the present invention.
[0128] The computing environments described herein are merely examples of computing environments that may be used. One or more embodiments of the present invention may be used with many types of environments. The computing environments provided herein are merely examples. Each computing environment may be configured to include one or more embodiments of the present invention. For example, each may be configured to implement diagnostic and / or initial program loading processes and / or perform one or more other embodiments of the present invention.
[0129] One or more aspects of the present invention relate to computer technology that facilitates and improves the performance of processing within a computer. For example, recovery processing is facilitated and processing within the computing environment is improved. Processing is streamlined and memory costs are reduced by using a single designed instruction to perform multiple functions for subcode related to recovery. Processing within the processor, computer system, and / or computing environment is improved.
[0130] In one or more embodiments, a program (e.g., a boot loader or dump program) is issued an instruction to specify the initial dump storage area page range (e.g., the first page of the dump storage area) to obtain the dump prefix page, based on the fact that the program (e.g., a boot loader or dump program) does not know the length of the dump storage area from which previously saved dump data is stored, and to extract the length of the dump storage area. In one or more embodiments, an instruction is issued to specify a storage range to restore data from a partial / complete dump storage area. For example, the hypervisor restores the contents of the dump storage area and associated storage keys to partition storage, for example, the specified dump storage area page. Based on the fact that the hypervisor cannot restore data from one of the specified dump storage area pages, an error is indicated, for example, by formatting the error storage page with a specific string in multiple different character formats, such that one of the string formats is displayed in a readable format, regardless of the data format used to view the stored data.
[0131] In one or more embodiments, the software can retrieve the contents of partial or all dump storage pages and their associated storage keys by specifying the starting dump storage page and page count (offset and length of the dump storage area). The recovered storage key for each dump storage page ensures that the original storage protection mechanism is still applied and is visible when viewing the dump data for storage access error analysis. The saved, visible dump data recovery error string allows the reader to easily identify the erroneous dump data page.
[0132] In one or more embodiments, the program also finds the length of the dump storage area itself using the same commands used to retrieve dump data from the dump storage area. The program specifies a storage range to retrieve selected portions of the program's data area from the dump storage area for later debugging purposes. The hypervisor restores the storage keys (e.g., access control, fetch protection, storage protection, storage key reference, and / or change indicators) for each specified dump storage area page to ensure that the original storage protection mechanisms are still in effect.
[0133] In one or more embodiments, the program can restore the original data (original machine state) overlaid by, for example, a boot loader, operating system, or dump program, by returning it from the dump storage area to its original storage location, and then, for example, complete the initial program load using a hypervisor. Furthermore, in one or more embodiments, the dump program can determine the size of the dump storage area and how it can retrieve selected portions of the program's data area from the dump storage area for the purpose of later debugging using the same commands.
[0134] In one or more embodiments, if the hypervisor is unable to perform the initial program load of a dump program due to an error not attributable to the program, it may terminate the initial program load on behalf of the program after restoring the contents of the dump storage area and associated memory keys to the original partition storage location. In one or more embodiments, an instruction having the problematic instruction address of an unactivated standby program state word is issued to the hypervisor (for example, by the bootloader, operating system, or dump program) to restore the dump storage area and associated memory keys to the original partition storage location. The hypervisor restores the contents of the dump storage area and associated memory keys to partition storage. The hypervisor frees the shared dump storage area (for example, for use by other partitions). The hypervisor creates an unactivated standby program state word using the problematic instruction address. The hypervisor terminates the initial program load by loading the unactivated standby program state word using the problematic instruction address.
[0135] In one or more embodiments, for example, using diagnostic subcode 12, the machine's original state may be restored after an error is detected but before the initial program load is completed, and as a result, the dump may be retried. This is not something that the dump program itself can perform using other diagnostic operations (e.g., diagnostic subcode 11), because the restored memory can perform other steps after the dump program has been erased.
[0136] For example, a program (e.g., a dump program or boot loader) and the hypervisor work together to restore the contents of the dump storage area and associated memory keys to their original partition storage locations (original machine state), enabling retries of failed dump operations and terminating the initial program load when an error not attributable to the program is detected. The program restores the dump storage area and associated memory keys to their original partition storage locations by, for example, providing the hypervisor with the problematic instruction address of an unactivated standby program state word, because it cannot do so on its own. In one example, the hypervisor restores the contents of the dump storage area of the associated memory key to its original partition storage location on behalf of the program. In another example, the hypervisor creates an unactivated standby program state word using the problematic instruction address provided by the program. The hypervisor terminates the initial program load on behalf of the program by loading the unactivated standby program state word.
[0137] Other embodiments, variations, and / or designs are also possible.
[0138] In addition to the above, a service provider offering to manage the customer environment may provide, offer, deploy, manage, or service one or more of the following: For example, a service provider may create, maintain, and support computer code and / or computer infrastructure that runs one or more of the following on behalf of one or more customers. In return, the service provider may receive payments from customers, for example, under subscription and / or fee agreements. Additionally or alternatively, a service provider may receive payments from the sale of advertising content to one or more third parties.
[0139] In one embodiment, the application may be deployed to perform one or more embodiments. For example, the deployment of the application may include providing a computer infrastructure capable of performing one or more embodiments.
[0140] In a further embodiment, a computing infrastructure may be deployed that includes integrating computer-readable code into a computing system, where the code combined with the computing system can perform one or more embodiments.
[0141] In yet another embodiment, a process for integrating a computing infrastructure is provided, which includes integrating computer-readable code into a computer system. The computer system includes a computer-readable medium, where the computer medium includes one or more embodiments. The code combined with the computer system can perform one or more embodiments.
[0142] While various embodiments have been described above, these are merely examples. For example, other instruction forms, operands, and / or registers may be used. Although pages of memory or storage are mentioned, one or more embodiments may be used for other units or sizes of memory or storage. Furthermore, although this specification describes a hypervisor performing certain embodiments in one or more embodiments, one or more of these embodiments may be performed by one or more further and / or other entities, components, etc. Many variations are possible.
[0143] Various aspects and embodiments are described herein. Furthermore, many variations are conceivable without departing from the spirit of the aspects of the present invention. Unless otherwise inconsistent, each aspect or feature described and / or claimed herein, and its variations thereof, may be combined with any other aspect or feature.
[0144] The technical terms used herein are intended to describe only specific embodiments and are not intended to limit them. Where used herein, the singular forms "a," "an," and "the" are intended to include the plural form unless otherwise explicitly indicated by the context. Where used in this specification, the terms "comprises" and / or "comprising" specify the presence of the described features, integers, steps, actions, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, actions, elements, components, and / or groups thereof.
[0145] All means or step-plus-function elements in the following claims are intended to include, if any, any structures, materials, or actions for performing a function in combination with other claimed elements, specifically as claimed. The descriptions of one or more embodiments are presented for illustrative and explanatory purposes, but are not intended to be exhaustive or limiting to the disclosed forms. Many modifications and variations will be apparent to those skilled in the art. The embodiments have been selected and described to best illustrate various aspects and practical applications, and to enable those skilled in the art to understand various embodiments with various modifications suitable for specific intended uses.
Claims
1. A computer program product for facilitating processing within a computing environment, wherein the computer program product is One or more computer-readable storage media, and program instructions collectively stored on the one or more computer-readable storage media for executing the method. The method comprises, The step of obtaining instructions to be executed within the computing environment, the instructions including operation codes indicating diagnostic operations; and The step of executing the aforementioned instruction, the step of executing the instruction, The step of retrieving selected data from the dump storage area that should be used to restore the machine's state; The steps include restoring the machine state, the restoration step including storing the selected data in a selected location; and A step of recovering one or more memory keys used to protect access to the selected data. including, Having, Computer program products.
2. The computer program product according to claim 1, wherein the selected location is a selected storage location specified using the field of the instruction.
3. The step of retrieving the selected data is, A step of determining the range of data to be retrieved from the dump storage area using one or more selected fields of the aforementioned instruction; and Steps to retrieve the range of data mentioned above from the dump storage area. A computer program product according to claim 1, including the above.
4. The computer program product according to claim 3, wherein the one or more selected fields include one field used to indicate the starting page number of the dump storage area, and another field used to specify the count of pages in the dump storage area to be retrieved.
5. The computer program product according to claim 1, further comprising the steps of: obtaining metadata of the dump storage area based on the issuance of the instruction and determining information relating to the dump storage area, the information being to be used in further issuance of the instruction to specify the selected data to be retrieved from the dump storage area.
6. The aforementioned method further, A step of determining that an error has occurred in a portion of the selected data being restored during the step of restoring the machine state; and A step of providing a display of the error based on the determination of the error, wherein the step of providing the display of the error includes arranging the error display in multiple formats on the portion of the selected data, and providing the display of the error in a readable format regardless of the data format used to view the portion of the selected data in the storage device. A computer program product according to claim 1, having the following characteristics.
7. The computer program product according to claim 1, wherein the selected location is the original storage location from which the selected data was retrieved and placed in the dump storage area.
8. The computer program product according to claim 1, wherein the instruction uses the fields of the instruction to select an instruction address to be used as an instruction address for an unactivated standby program state word to be loaded, based on the machine state and the restoration of the one or more memory keys.
9. The computer program product according to claim 1, further comprising the step of freeing the dump storage area for reuse.
10. The aforementioned instruction is issued based on an error during the initial program load of the program, and the method further, The step of creating an inactive wait program state word using the problematic instruction address provided using the fields of the aforementioned instruction; and The step of terminating the initial program load, the step of terminating the initial program load, includes the step of loading the unactivated standby program state word, A computer program product according to claim 1, having the following characteristics.
11. The computer program product according to claim 10, further comprising the step of terminating the guest program, wherein the selected data is data of the guest program.
12. A computer system for facilitating processing within a computing environment, wherein the computer system is memory; and The processor in communication with the aforementioned memory Equipped with, The computer system is configured to perform a method, and the method is The step of obtaining instructions to be executed within the computing environment, the instructions including operation codes indicating diagnostic operations; and The step of executing the aforementioned instruction, the step of executing the instruction, The step of retrieving selected data from the dump storage area that should be used to restore the machine's state; The steps include restoring the machine state, the restoration step including storing the selected data in a selected location; and A step of recovering one or more memory keys used to protect access to the selected data. including, Having, Computer system.
13. The step of retrieving the selected data is, A step of determining the range of data to be retrieved from the dump storage area using one or more selected fields of the aforementioned instruction; and Steps to retrieve the range of data mentioned above from the dump storage area. The computer system according to claim 12, including the above.
14. The computer system according to claim 12, wherein the selected location is the original storage location from which the selected data was retrieved and placed in the dump storage area.
15. The aforementioned instruction is issued based on an error during the initial program load of the program, and the method further, The step of creating an inactive wait program state word using the problematic instruction address provided using the fields of the aforementioned instruction; and The step of terminating the initial program load, the step of terminating the initial program load, includes the step of loading the unactivated standby program state word, The computer system according to claim 12, having the following features.
16. A computer implementation method that facilitates processing within a computing environment, wherein the computer implementation method is The step of obtaining instructions to be executed within the computing environment, the instructions including operation codes indicating diagnostic operations; and The step of executing the aforementioned instruction, the step of executing the instruction, The step of retrieving selected data from the dump storage area that should be used to restore the machine's state; The steps include restoring the machine state, the restoration step including storing the selected data in a selected location; and A step of recovering one or more memory keys used to protect access to the selected data. Having, A computer implementation method comprising the above.
17. The computer implementation method according to claim 16, wherein the selected location is a selected storage location specified using the field of the instruction.
18. The step of retrieving the selected data is, A step of determining the range of data to be retrieved from the dump storage area using one or more selected fields of the aforementioned instruction; and Steps to retrieve the range of data mentioned above from the dump storage area. The computer implementation method according to claim 16, including the method described in claim 16.
19. The computer implementation method according to claim 16, wherein the selected location is the original storage location from which the selected data was retrieved and placed in the dump storage area.
20. The aforementioned instruction is issued based on an error during the initial program load of the program. The step of creating an inactive wait program state word using the problematic instruction address provided using the fields of the aforementioned instruction; and The step of terminating the initial program load, the step of terminating the initial program load, includes the step of loading the unactivated standby program state word, The computer implementation method according to claim 16, further comprising the above.