Re: [PATCH v4 19/27] s390: Introduce Start Arm Execution instruction
From: Steffen Eiden <seiden@linux.ibm.com>
Date: 2026-07-06 11:54:01
Also in:
kvm, kvmarm, linux-s390, lkml
On Mon, Jul 06, 2026 at 01:17:02PM +0200, Janosch Frank wrote:
On 7/6/26 10:52, Steffen Eiden wrote:quoted
The Start Arm Execution (SAE) instruction is the centerpiece for executing arm64 (KVM) guests on s390. Its purpose is, similar to SIE, to enable accelerated execution of arm64 virtual machines. SAE expects the physical address of a control block as the only argument. The host is responsible to save & restore - GPRs 0-13 - access register 0-15 - breaking event register (BEAR) - vector/floating point registers between SAE executions to guarantee host consistency. GPRs and BEAR are save and restores in the asm functions. The other register are handled in within C code. Access registers are handled in a later patch and SVEs will be handled when they are introduced in a future series. Most arm64 registers are handled by a satellite block called save_area. Some registers, frequently used by hypervisors, are placed into the SAE control block itself. Enlighten asm/kvm_host_types.h for the new header variant. The new header is chosen instead of asm/kvm_host_s390_types.h if KVM_S390_ARM64 is defined.[...]quoted
+ u64 gpr[31]; /* 0x0300 */ + u64 _03f8; /* 0x03f8 */ + + union { + u64 icptd[8]; /* 0x0400 */ + /* validity-interception reason; icptr 0x01 */ +#define SAE_VIR_UNKNOWN 0x00 +#define SAE_VIR_UNSUPP_FORMAT 0x01 +#define SAE_VIR_MSO_BOUNDS 0x02 +#define SAE_VIR_MSLA 0x03 +#define SAE_VIR_MGPAS 0x04 +#define SAE_VIR_INVAL_SYSREG 0x05 +#define SAE_VIR_HOST_CONTROL 0x06 +#define SAE_VIR_SCA 0x07 +#define SAE_VIR_MSO_ALIGN 0x08 +#define SAE_VIR_HLC 0x09 +#define SAE_VIR_IRPTC 0x0aWill these ever be used for something?
I'll remove them.