Re: [PATCH v1 4/4] KVM: s390: Add KVM capability for ESA mode guests

Janosch Frank
2026-04-01T11:52:43Z

On 4/1/26 04:09, Eric Farman wrote:
> From: Hendrik Brueckner <brueckner@linux.ibm.com>
>
> Now that all the bits are properly addressed, provide a mechanism
> for testing ESA mode guests in nested configurations.
>
> Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
> [EF: Update commit message]

Should be:
[farman@linux.ibm.com: Updated commit message]

> Signed-off-by: Eric Farman <farman@linux.ibm.com>

Reviewed-by: Janosch Frank <frankja@linux.ibm.com>

> ---
> Documentation/virt/kvm/api.rst | 8 ++++++++
> arch/s390/kvm/kvm-s390.c | 6 ++++++
> include/uapi/linux/kvm.h | 1 +
> 3 files changed, 15 insertions(+)
>
> diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst
> index 032516783e96..feabfee0f714 100644
> --- a/Documentation/virt/kvm/api.rst
> +++ b/Documentation/virt/kvm/api.rst
> @@ -9436,6 +9436,14 @@ KVM exits with the register state of either the L1 or L2 guest
> depending on which executed at the time of an exit. Userspace must
> take care to differentiate between these cases.
>
> +8.47 KVM_CAP_S390_VSIE_ESAMODE
> +------------------------------
> +
> +:Architectures: s390
> +
> +The presence of this capability indicates that the nested KVM guest can
> +start in ESA mode.
> +
> 9. Known KVM API problems
> =========================
>
> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
> index d7838334a338..3856af54b6fe 100644
> --- a/arch/s390/kvm/kvm-s390.c
> +++ b/arch/s390/kvm/kvm-s390.c
> @@ -629,6 +629,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
> case KVM_CAP_IRQFD_RESAMPLE:
> case KVM_CAP_S390_USER_OPEREXEC:
> case KVM_CAP_S390_KEYOP:
> + case KVM_CAP_S390_VSIE_ESAMODE:
> r = 1;
> break;
> case KVM_CAP_SET_GUEST_DEBUG2:
> @@ -926,6 +927,11 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm, struct kvm_enable_cap *cap)
> icpt_operexc_on_all_vcpus(kvm);
> r = 0;
> break;
> + case KVM_CAP_S390_VSIE_ESAMODE:
> + VM_EVENT(kvm, 3, "%s", "ENABLE: CAP_S390_VSIE_ESAMODE");
> + kvm->arch.allow_vsie_esamode = 1;
> + r = 0;
> + break;
> default:
> r = -EINVAL;
> break;
> diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
> index 80364d4dbebb..9710184d883d 100644
> --- a/include/uapi/linux/kvm.h
> +++ b/include/uapi/linux/kvm.h
> @@ -989,6 +989,7 @@ struct kvm_enable_cap {
> #define KVM_CAP_ARM_SEA_TO_USER 245
> #define KVM_CAP_S390_USER_OPEREXEC 246
> #define KVM_CAP_S390_KEYOP 247
> +#define KVM_CAP_S390_VSIE_ESAMODE 248
>
> struct kvm_irq_routing_irqchip {
> __u32 irqchip;