From: Cornelia Huck <cohuck@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-s390x@nongnu.org,
Christoph Schlameuss <schlameuss@linux.ibm.com>,
Nina Schoetterl-Glausch <nsg@linux.ibm.com>,
Cornelia Huck <cohuck@redhat.com>
Subject: [PULL 08/15] s390x/kvm: Add ASTFLE facility 2 for nested virtualization
Date: Tue, 7 Jul 2026 14:58:40 +0200 [thread overview]
Message-ID: <20260707125847.1785168-9-cohuck@redhat.com> (raw)
In-Reply-To: <20260707125847.1785168-1-cohuck@redhat.com>
From: Christoph Schlameuss <schlameuss@linux.ibm.com>
Allow propagation of the ASTFLEIE2 feature bit.
If the host does have the ASTFLE Interpretive Execution Facility 2 the
guest can enable the ASTFLE format 2 for its guests.
Signed-off-by: Christoph Schlameuss <schlameuss@linux.ibm.com>
Reviewed-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
Message-ID: <20260701-astfleie2-v3-2-f692dc7f4f24@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
hw/s390x/sclp.c | 2 ++
include/hw/s390x/sclp.h | 4 +++-
target/s390x/cpu_features.c | 3 +++
target/s390x/cpu_features.h | 1 +
target/s390x/cpu_features_def.h.inc | 3 +++
target/s390x/cpu_models.c | 2 ++
target/s390x/gen-features.c | 1 +
target/s390x/kvm/kvm.c | 1 +
8 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c
index b9c3983df195..2d2cde7803ff 100644
--- a/hw/s390x/sclp.c
+++ b/hw/s390x/sclp.c
@@ -146,6 +146,8 @@ static void read_SCP_info(SCLPDevice *sclp, SCCB *sccb)
if (s390_has_feat(S390_FEAT_EXTENDED_LENGTH_SCCB)) {
s390_get_feat_block(S390_FEAT_TYPE_SCLP_FAC134,
&read_info->fac134);
+ s390_get_feat_block(S390_FEAT_TYPE_SCLP_FAC139,
+ &read_info->fac139);
}
read_info->facilities = cpu_to_be64(SCLP_HAS_CPU_INFO |
diff --git a/include/hw/s390x/sclp.h b/include/hw/s390x/sclp.h
index ddc61f1c2148..e1f9b0f6bc10 100644
--- a/include/hw/s390x/sclp.h
+++ b/include/hw/s390x/sclp.h
@@ -136,7 +136,9 @@ typedef struct ReadInfo {
uint32_t hmfai;
uint8_t _reserved7[134 - 128]; /* 128-133 */
uint8_t fac134;
- uint8_t _reserved8[144 - 135]; /* 135-143 */
+ uint8_t _reserved8[139 - 135]; /* 135-138 */
+ uint8_t fac139;
+ uint8_t _reserved9[144 - 140]; /* 140-143 */
struct CPUEntry entries[];
/*
* When the Extended-Length SCCB (ELS) feature is enabled the
diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
index 4b5be6798ef5..896914888aa9 100644
--- a/target/s390x/cpu_features.c
+++ b/target/s390x/cpu_features.c
@@ -148,6 +148,9 @@ void s390_fill_feat_block(const S390FeatBitmap features, S390FeatType type,
case S390_FEAT_TYPE_SCLP_FAC134:
clear_be_bit(s390_feat_def(S390_FEAT_DIAG_318)->bit, data);
break;
+ case S390_FEAT_TYPE_SCLP_FAC139:
+ clear_be_bit(s390_feat_def(S390_FEAT_SIE_ASTFLEIE2)->bit, data);
+ break;
default:
return;
}
diff --git a/target/s390x/cpu_features.h b/target/s390x/cpu_features.h
index 5635839d0329..52a82da751ec 100644
--- a/target/s390x/cpu_features.h
+++ b/target/s390x/cpu_features.h
@@ -24,6 +24,7 @@ typedef enum {
S390_FEAT_TYPE_SCLP_CONF_CHAR,
S390_FEAT_TYPE_SCLP_CONF_CHAR_EXT,
S390_FEAT_TYPE_SCLP_FAC134,
+ S390_FEAT_TYPE_SCLP_FAC139,
S390_FEAT_TYPE_SCLP_CPU,
S390_FEAT_TYPE_MISC,
S390_FEAT_TYPE_PLO,
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
index c017bffcdc4d..a822f0f2fe99 100644
--- a/target/s390x/cpu_features_def.h.inc
+++ b/target/s390x/cpu_features_def.h.inc
@@ -139,6 +139,9 @@ DEF_FEAT(SIE_IBS, "ibs", SCLP_CONF_CHAR_EXT, 10, "SIE: Interlock-and-broadcast-s
/* Features exposed via SCLP SCCB Facilities byte 134 (bit numbers relative to byte-134) */
DEF_FEAT(DIAG_318, "diag318", SCLP_FAC134, 0, "Control program name and version codes")
+/* Features exposed via SCLP SCCB Facilities byte 139 (bit numbers relative to byte-139) */
+DEF_FEAT(SIE_ASTFLEIE2, "astfleie2", SCLP_FAC139, 1, "SIE: ASTFLE interpretation execution facility 2")
+
/* Features exposed via SCLP CPU info. */
DEF_FEAT(SIE_F2, "sief2", SCLP_CPU, 4, "SIE: interception format 2 (Virtual SIE)")
DEF_FEAT(SIE_SKEY, "skey", SCLP_CPU, 5, "SIE: Storage-key facility")
diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
index 0b88868289bf..2dd9aac8078c 100644
--- a/target/s390x/cpu_models.c
+++ b/target/s390x/cpu_models.c
@@ -263,6 +263,7 @@ bool s390_has_feat(S390Feat feat)
case S390_FEAT_SIE_PFMFI:
case S390_FEAT_SIE_IBS:
case S390_FEAT_CONFIGURATION_TOPOLOGY:
+ case S390_FEAT_SIE_ASTFLEIE2:
return false;
break;
default:
@@ -553,6 +554,7 @@ static void check_consistency(const S390CPUModel *model)
{ S390_FEAT_PLO_QSTG, S390_FEAT_PLO_EXT },
{ S390_FEAT_PLO_QSTX, S390_FEAT_PLO_EXT },
{ S390_FEAT_PLO_QSTO, S390_FEAT_PLO_EXT },
+ { S390_FEAT_SIE_ASTFLEIE2, S390_FEAT_STFLE },
};
int i;
diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c
index 8218e6470ec9..a309dc2c09ab 100644
--- a/target/s390x/gen-features.c
+++ b/target/s390x/gen-features.c
@@ -720,6 +720,7 @@ static uint16_t full_GEN16_GA1[] = {
S390_FEAT_PAIE,
S390_FEAT_UV_FEAT_AP,
S390_FEAT_UV_FEAT_AP_INTR,
+ S390_FEAT_SIE_ASTFLEIE2,
};
static uint16_t full_GEN17_GA1[] = {
diff --git a/target/s390x/kvm/kvm.c b/target/s390x/kvm/kvm.c
index fdef8f9e8acc..9af2a397f5a2 100644
--- a/target/s390x/kvm/kvm.c
+++ b/target/s390x/kvm/kvm.c
@@ -2288,6 +2288,7 @@ static int kvm_to_feat[][2] = {
{ KVM_S390_VM_CPU_FEAT_PFMFI, S390_FEAT_SIE_PFMFI},
{ KVM_S390_VM_CPU_FEAT_SIGPIF, S390_FEAT_SIE_SIGPIF},
{ KVM_S390_VM_CPU_FEAT_KSS, S390_FEAT_SIE_KSS},
+ { KVM_S390_VM_CPU_FEAT_ASTFLEIE2, S390_FEAT_SIE_ASTFLEIE2 },
};
static int query_cpu_feat(S390FeatBitmap features)
--
2.54.0
next prev parent reply other threads:[~2026-07-07 13:01 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
2026-07-07 12:58 ` [PULL 01/15] pc-bios/s390-ccw: Refactor byte swapping Cornelia Huck
2026-07-07 12:58 ` [PULL 02/15] pc-bios/s390-ccw/virtio.c: Fix missing break for PCI notifications Cornelia Huck
2026-07-07 12:58 ` [PULL 03/15] pc-bios/s390-ccw: Add per-queue notification offset for multi-queue virtio configurations Cornelia Huck
2026-07-07 12:58 ` [PULL 04/15] pc-bios/s390-ccw: Verify virtio support when booting from virtio PCI device on s390x Cornelia Huck
2026-07-07 12:58 ` [PULL 05/15] pc-bios/s390-ccw: write IPLB location for non-net virtio devices Cornelia Huck
2026-07-07 12:58 ` [PULL 06/15] s390x: Enable boot menu for virtio pci device Cornelia Huck
2026-07-07 12:58 ` [PULL 07/15] linux-headers: Update to Linux v7.2-rc1 with KVM_S390_VM_CPU_FEAT_ASTFLEIE2 Cornelia Huck
2026-07-07 12:58 ` Cornelia Huck [this message]
2026-07-07 12:58 ` [PULL 09/15] target/s390x: Fix wrong address handling in address loops Cornelia Huck
2026-07-07 12:58 ` [PULL 10/15] s390x/sclp: reject invalid write event data headers Cornelia Huck
2026-07-07 12:58 ` [PULL 11/15] s390x/pci: Tighten region detection for BAR read/write Cornelia Huck
2026-07-07 12:58 ` [PULL 12/15] s390x/pci: Shrink RPCIT ranges to registered window Cornelia Huck
2026-07-07 12:58 ` [PULL 13/15] s390x/ioinst: Require strict length and format for SEI CHSC handler Cornelia Huck
2026-07-07 12:58 ` [PULL 14/15] s390x/css: limit number of CHPIDs in description Cornelia Huck
2026-07-07 12:58 ` [PULL 15/15] pc-bios/s390-ccw.img: update s390x bios Cornelia Huck
2026-07-08 5:54 ` [PULL 00/15] s390x updates (contains Linux headers update) Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260707125847.1785168-9-cohuck@redhat.com \
--to=cohuck@redhat.com \
--cc=nsg@linux.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=schlameuss@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.