* [PULL 00/15] s390x updates (contains Linux headers update)
@ 2026-07-07 12:58 Cornelia Huck
2026-07-07 12:58 ` [PULL 01/15] pc-bios/s390-ccw: Refactor byte swapping Cornelia Huck
` (15 more replies)
0 siblings, 16 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-s390x, Cornelia Huck
The following changes since commit 4ee536fac748b70e6f3d8568ddd20cfbaa9cf7bf:
Merge tag 'firmware-20260704-pull-request' of https://gitlab.com/kraxel/qemu into staging (2026-07-05 08:42:47 +0200)
are available in the Git repository at:
https://gitlab.com/cohuck/qemu tags/s390x-20260707
for you to fetch changes up to f4b7ae0a9ee41baad3b6c1e2b55611793de013cc:
pc-bios/s390-ccw.img: update s390x bios (2026-07-07 06:05:41 -0400)
----------------------------------------------------------------
s390x updates:
- fix some errors when IPLing from PCI devices
- a number of fixes for guest->host error handling
- add ASTFLE facility 2 support (with headers update)
- regenerate s390-ccw.img
----------------------------------------------------------------
Christian Borntraeger (1):
s390x/sclp: reject invalid write event data headers
Christoph Schlameuss (2):
linux-headers: Update to Linux v7.2-rc1 with
KVM_S390_VM_CPU_FEAT_ASTFLEIE2
s390x/kvm: Add ASTFLE facility 2 for nested virtualization
Cornelia Huck (1):
pc-bios/s390-ccw.img: update s390x bios
Eric Farman (1):
s390x/css: limit number of CHPIDs in description
Harald Freudenberger (1):
target/s390x: Fix wrong address handling in address loops
Jared Rossi (3):
pc-bios/s390-ccw/virtio.c: Fix missing break for PCI notifications
pc-bios/s390-ccw: Verify virtio support when booting from virtio PCI
device on s390x
pc-bios/s390-ccw: write IPLB location for non-net virtio devices
Matthew Rosato (3):
s390x/pci: Tighten region detection for BAR read/write
s390x/pci: Shrink RPCIT ranges to registered window
s390x/ioinst: Require strict length and format for SEI CHSC handler
Zhuoying Cai (3):
pc-bios/s390-ccw: Refactor byte swapping
pc-bios/s390-ccw: Add per-queue notification offset for multi-queue
virtio configurations
s390x: Enable boot menu for virtio pci device
hw/s390x/css.c | 17 ++++
hw/s390x/event-facility.c | 6 ++
hw/s390x/ipl.c | 1 +
hw/s390x/s390-pci-inst.c | 32 ++++++-
hw/s390x/sclp.c | 2 +
include/hw/s390x/sclp.h | 4 +-
include/standard-headers/drm/drm_fourcc.h | 54 +++++++-----
include/standard-headers/linux/ethtool.h | 3 +
include/standard-headers/linux/pci_regs.h | 2 +
include/standard-headers/linux/virtio_can.h | 78 ++++++++++++++++++
.../standard-headers/linux/virtio_console.h | 2 +-
include/standard-headers/linux/virtio_gpu.h | 9 ++
linux-headers/asm-s390/kvm.h | 1 +
linux-headers/asm-x86/kvm.h | 2 +
linux-headers/linux/iommufd.h | 12 ++-
linux-headers/linux/kvm.h | 1 +
pc-bios/s390-ccw.img | Bin 95992 -> 104136 bytes
pc-bios/s390-ccw/main.c | 5 +-
pc-bios/s390-ccw/virtio-pci.c | 57 +++++++++----
pc-bios/s390-ccw/virtio-pci.h | 5 +-
pc-bios/s390-ccw/virtio.c | 29 ++++---
pc-bios/s390-ccw/virtio.h | 2 +
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/ioinst.c | 20 +++++
target/s390x/kvm/kvm.c | 1 +
target/s390x/tcg/crypto_helper.c | 12 +--
30 files changed, 299 insertions(+), 68 deletions(-)
create mode 100644 include/standard-headers/linux/virtio_can.h
--
2.54.0
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PULL 01/15] pc-bios/s390-ccw: Refactor byte swapping
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
@ 2026-07-07 12:58 ` Cornelia Huck
2026-07-07 12:58 ` [PULL 02/15] pc-bios/s390-ccw/virtio.c: Fix missing break for PCI notifications Cornelia Huck
` (14 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, Zhuoying Cai, Eric Farman, Jared Rossi,
Matthew Rosato, Cornelia Huck
From: Zhuoying Cai <zycai@linux.ibm.com>
Introduce local variables to cache the byte-swapped values eliminating
some redundant byte swap operations. Additionally, do byte swap when
polling to avoid a special case where endianness is preserved.
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Signed-off-by: Zhuoying Cai <zycai@linux.ibm.com>
Signed-off-by: Jared Rossi <jrossi@linux.ibm.com>
Tested-by: Matthew Rosato <mjrosato@linux.ibm.com>
Message-ID: <20260630141917.673995-2-jrossi@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
pc-bios/s390-ccw/virtio.c | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c
index 390b55c7b924..a448dc96e269 100644
--- a/pc-bios/s390-ccw/virtio.c
+++ b/pc-bios/s390-ccw/virtio.c
@@ -153,14 +153,14 @@ static void vr_bswap_descriptor(VRingDesc *desc)
void vring_send_buf(VRing *vr, void *p, int len, int flags)
{
- if (!be_ipl()) {
- vr->avail->idx = bswap16(vr->avail->idx);
- }
+ uint16_t avail_idx;
+
+ avail_idx = be_ipl() ? vr->avail->idx : bswap16(vr->avail->idx);
/* For follow-up chains we need to keep the first entry point */
if (!(flags & VRING_HIDDEN_IS_CHAIN)) {
- vr->avail->ring[vr->avail->idx % vr->num] = be_ipl() ? vr->next_idx :
- bswap16(vr->next_idx);
+ vr->avail->ring[avail_idx % vr->num] = be_ipl() ? vr->next_idx :
+ bswap16(vr->next_idx);
}
vr->desc[vr->next_idx].addr = (unsigned long)p;
@@ -177,23 +177,23 @@ void vring_send_buf(VRing *vr, void *p, int len, int flags)
/* Chains only have a single ID */
if (!(flags & VRING_DESC_F_NEXT)) {
- vr->avail->idx++;
- }
-
- if (!be_ipl()) {
- vr->avail->idx = bswap16(vr->avail->idx);
+ avail_idx++;
+ vr->avail->idx = be_ipl() ? avail_idx : bswap16(avail_idx);
}
}
int vr_poll(VRing *vr)
{
- if (vr->used->idx == vr->used_idx) {
+ uint16_t used_idx;
+
+ used_idx = be_ipl() ? vr->used->idx : bswap16(vr->used->idx);
+ if (used_idx == vr->used_idx) {
vring_notify(vr);
yield();
return 0;
}
- vr->used_idx = vr->used->idx; /* Endianness is preserved */
+ vr->used_idx = used_idx;
vr->next_idx = 0;
vr->desc[0].len = 0;
vr->desc[0].flags = 0;
--
2.54.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PULL 02/15] pc-bios/s390-ccw/virtio.c: Fix missing break for PCI notifications
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 ` 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
` (13 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, Jared Rossi, Matthew Rosato, Eric Farman,
Cornelia Huck
From: Jared Rossi <jrossi@linux.ibm.com>
Add a break after calling the PCI specific notification function instead of
falling through to the default case.
Signed-off-by: Jared Rossi <jrossi@linux.ibm.com>
Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
Fixes: d72fb5e6b2 ("pc-bios/s390-ccw: Add support for virtio-blk-pci IPL")
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Tested-by: Matthew Rosato <mjrosato@linux.ibm.com>
Message-ID: <20260630141917.673995-3-jrossi@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
pc-bios/s390-ccw/virtio.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c
index a448dc96e269..7883871033c4 100644
--- a/pc-bios/s390-ccw/virtio.c
+++ b/pc-bios/s390-ccw/virtio.c
@@ -115,6 +115,7 @@ bool vring_notify(VRing *vr)
break;
case S390_IPL_TYPE_PCI:
vr->cookie = virtio_pci_notify(vr->id);
+ break;
default:
return 1;
}
--
2.54.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PULL 03/15] pc-bios/s390-ccw: Add per-queue notification offset for multi-queue virtio configurations
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 ` 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
` (12 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, Zhuoying Cai, Jared Rossi, Eric Farman,
Matthew Rosato, Cornelia Huck
From: Zhuoying Cai <zycai@linux.ibm.com>
The initial support for virtio-blk-pci IPL devices used a single virt-queue, but
other device types require multiple queues, and for PCI device types this also
requires a per-queue notification offset.
Add a PCI notify field to the VRing struct so that each queue has a unique
notify offset as defined in the virtio spec.
Signed-off-by: Zhuoying Cai <zycai@linux.ibm.com>
Signed-off-by: Jared Rossi <jrossi@linux.ibm.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Tested-by: Matthew Rosato <mjrosato@linux.ibm.com>
Message-ID: <20260630141917.673995-4-jrossi@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
pc-bios/s390-ccw/virtio-pci.c | 38 +++++++++++++++++++++--------------
pc-bios/s390-ccw/virtio-pci.h | 2 +-
pc-bios/s390-ccw/virtio.c | 2 +-
pc-bios/s390-ccw/virtio.h | 1 +
4 files changed, 26 insertions(+), 17 deletions(-)
diff --git a/pc-bios/s390-ccw/virtio-pci.c b/pc-bios/s390-ccw/virtio-pci.c
index 53bdb52e76ab..2c83ec4f1316 100644
--- a/pc-bios/s390-ccw/virtio-pci.c
+++ b/pc-bios/s390-ccw/virtio-pci.c
@@ -21,7 +21,6 @@ VirtioPciCap c_cap; /* Common capabilities */
VirtioPciCap d_cap; /* Device capabilities */
VirtioPciCap n_cap; /* Notify capabilities */
uint32_t notify_mult;
-uint16_t q_notify_offset;
static int virtio_pci_set_status(uint8_t status)
{
@@ -74,10 +73,10 @@ int virtio_pci_reset(VDev *vdev)
return 0;
}
-long virtio_pci_notify(int vq_id)
+long virtio_pci_notify(VRing *vr)
{
- uint32_t offset = n_cap.off + notify_mult * q_notify_offset;
- return vpci_bswap16_write(offset, n_cap.bar, (uint16_t) vq_id);
+ uint32_t offset = n_cap.off + notify_mult * vr->pci_notify;
+ return vpci_bswap16_write(offset, n_cap.bar, (uint16_t) vr->id);
}
/*
@@ -301,8 +300,7 @@ static int virtio_pci_read_pci_cap_config(void)
}
rc = vpci_read_bswap32(pos + VPCI_N_CAP_MULT, PCI_CFGBAR, ¬ify_mult);
- if (rc || vpci_read_bswap16(c_cap.off + VPCI_C_OFFSET_Q_NOFF, c_cap.bar,
- &q_notify_offset)) {
+ if (rc) {
puts("Failed to read notification queue configuration");
return -EIO;
}
@@ -332,7 +330,6 @@ int virtio_pci_setup(VDev *vdev)
VRing *vr;
int rc;
uint8_t status;
- uint16_t vq_size;
int i = 0;
vdev->guessed_disk_nature = VIRTIO_GDN_NONE;
@@ -380,28 +377,39 @@ int virtio_pci_setup(VDev *vdev)
return -EIO;
}
- if (vpci_read_bswap16(VPCI_C_OFFSET_Q_SIZE, c_cap.bar, &vq_size)) {
- puts("Failed to read virt-queue configuration");
- return -EIO;
- }
-
/* Configure virt-queues for pci */
for (i = 0; i < vdev->nr_vqs; i++) {
+ uint16_t vq_size;
+ uint16_t vq_notify;
VqInfo info = {
.queue = (unsigned long long) virtio_get_ring_area(i),
.align = KVM_S390_VIRTIO_RING_ALIGN,
.index = i,
- .num = vq_size,
+ .num = 0,
};
vr = &vdev->vrings[i];
- vring_init(vr, &info);
- if (vpci_set_selected_vq(vr->id)) {
+ if (vpci_set_selected_vq(i)) {
puts("Failed to set selected virt-queue");
return -EIO;
}
+ if (vpci_read_bswap16(c_cap.off + VPCI_C_OFFSET_Q_SIZE, c_cap.bar, &vq_size)) {
+ printf("Failed to read virt-queue %d size\n", i);
+ return -EIO;
+ }
+
+ info.num = vq_size;
+
+ if (vpci_read_bswap16(c_cap.off + VPCI_C_OFFSET_Q_NOFF, c_cap.bar, &vq_notify)) {
+ printf("Failed to read virt-queue %d notify offset\n", i);
+ return -EIO;
+ }
+
+ vr->pci_notify = vq_notify;
+ vring_init(vr, &info);
+
rc = set_pci_vq_addr(VPCI_C_OFFSET_Q_DESCLO, vr->desc);
rc |= set_pci_vq_addr(VPCI_C_OFFSET_Q_AVAILLO, vr->avail);
rc |= set_pci_vq_addr(VPCI_C_OFFSET_Q_USEDLO, vr->used);
diff --git a/pc-bios/s390-ccw/virtio-pci.h b/pc-bios/s390-ccw/virtio-pci.h
index 90d07cb9a76a..2494df161988 100644
--- a/pc-bios/s390-ccw/virtio-pci.h
+++ b/pc-bios/s390-ccw/virtio-pci.h
@@ -64,7 +64,7 @@ typedef struct VirtioPciCap VirtioPciCap;
void virtio_pci_id2type(VDev *vdev, uint16_t device_id);
int virtio_pci_reset(VDev *vdev);
-long virtio_pci_notify(int vq_id);
+long virtio_pci_notify(VRing *vr);
int virtio_pci_setup(VDev *vdev);
int virtio_pci_setup_device(void);
diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c
index 7883871033c4..df04479aa69c 100644
--- a/pc-bios/s390-ccw/virtio.c
+++ b/pc-bios/s390-ccw/virtio.c
@@ -114,7 +114,7 @@ bool vring_notify(VRing *vr)
vr->cookie = virtio_ccw_notify(vdev.schid, vr->id, vr->cookie);
break;
case S390_IPL_TYPE_PCI:
- vr->cookie = virtio_pci_notify(vr->id);
+ vr->cookie = virtio_pci_notify(vr);
break;
default:
return 1;
diff --git a/pc-bios/s390-ccw/virtio.h b/pc-bios/s390-ccw/virtio.h
index d32a4830cad1..75ae5bdbc229 100644
--- a/pc-bios/s390-ccw/virtio.h
+++ b/pc-bios/s390-ccw/virtio.h
@@ -107,6 +107,7 @@ struct VRing {
VRingUsed *used;
long cookie;
int id;
+ uint16_t pci_notify;
};
typedef struct VRing VRing;
--
2.54.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PULL 04/15] pc-bios/s390-ccw: Verify virtio support when booting from virtio PCI device on s390x
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
` (2 preceding siblings ...)
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 ` Cornelia Huck
2026-07-07 12:58 ` [PULL 05/15] pc-bios/s390-ccw: write IPLB location for non-net virtio devices Cornelia Huck
` (11 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, Jared Rossi, Eric Farman, Matthew Rosato,
Cornelia Huck
From: Jared Rossi <jrossi@linux.ibm.com>
The virtio specification requires that each PCI device has a vendor ID of
0x1af4. Verify this value before continuing with boot process.
Signed-off-by: Jared Rossi <jrossi@linux.ibm.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Tested-by: Matthew Rosato <mjrosato@linux.ibm.com>
Message-ID: <20260630141917.673995-5-jrossi@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
pc-bios/s390-ccw/main.c | 1 +
pc-bios/s390-ccw/virtio-pci.c | 19 +++++++++++++++++++
pc-bios/s390-ccw/virtio-pci.h | 3 +++
pc-bios/s390-ccw/virtio.c | 2 ++
pc-bios/s390-ccw/virtio.h | 1 +
5 files changed, 26 insertions(+)
diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c
index 26287cfd8112..fb47d29bb1f2 100644
--- a/pc-bios/s390-ccw/main.c
+++ b/pc-bios/s390-ccw/main.c
@@ -163,6 +163,7 @@ static bool find_fid(uint32_t fid)
}
vdev->pci_fh = entry.fh;
+ vdev->vendor_id = entry.vendor_id;
virtio_pci_id2type(vdev, entry.device_id);
return vdev->dev_type != 0;
diff --git a/pc-bios/s390-ccw/virtio-pci.c b/pc-bios/s390-ccw/virtio-pci.c
index 2c83ec4f1316..f501252c8199 100644
--- a/pc-bios/s390-ccw/virtio-pci.c
+++ b/pc-bios/s390-ccw/virtio-pci.c
@@ -325,6 +325,20 @@ static int enable_pci_bus_master(void)
return 0;
}
+bool virtio_pci_is_supported(VDev *vdev)
+{
+ if (vdev->vendor_id == PCI_VENDOR_VIRTIO) {
+ switch (vdev->dev_type) {
+ case VIRTIO_ID_BLOCK:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ return false;
+}
+
int virtio_pci_setup(VDev *vdev)
{
VRing *vr;
@@ -335,6 +349,11 @@ int virtio_pci_setup(VDev *vdev)
vdev->guessed_disk_nature = VIRTIO_GDN_NONE;
vdev->cmd_vr_idx = 0;
+ if (!virtio_pci_is_supported(vdev)) {
+ puts("Virtio PCI unsupported for this device ID");
+ return -ENODEV;
+ }
+
if (virtio_pci_read_pci_cap_config()) {
puts("Invalid virtio PCI capabilities");
return -EIO;
diff --git a/pc-bios/s390-ccw/virtio-pci.h b/pc-bios/s390-ccw/virtio-pci.h
index 2494df161988..33b683bd922c 100644
--- a/pc-bios/s390-ccw/virtio-pci.h
+++ b/pc-bios/s390-ccw/virtio-pci.h
@@ -56,6 +56,8 @@
#define VIRTIO_F_VERSION_1 1 /* Feature bit 32 */
+#define PCI_VENDOR_VIRTIO 0x1af4
+
struct VirtioPciCap {
uint8_t bar; /* Which PCIAS it's in */
uint32_t off; /* Offset within bar */
@@ -65,6 +67,7 @@ typedef struct VirtioPciCap VirtioPciCap;
void virtio_pci_id2type(VDev *vdev, uint16_t device_id);
int virtio_pci_reset(VDev *vdev);
long virtio_pci_notify(VRing *vr);
+bool virtio_pci_is_supported(VDev *vdev);
int virtio_pci_setup(VDev *vdev);
int virtio_pci_setup_device(void);
diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c
index df04479aa69c..a0d249db2408 100644
--- a/pc-bios/s390-ccw/virtio.c
+++ b/pc-bios/s390-ccw/virtio.c
@@ -247,6 +247,8 @@ bool virtio_is_supported(VDev *vdev)
case S390_IPL_TYPE_QEMU_SCSI:
case S390_IPL_TYPE_CCW:
return virtio_ccw_is_supported(vdev);
+ case S390_IPL_TYPE_PCI:
+ return virtio_pci_is_supported(vdev);
default:
return false;
}
diff --git a/pc-bios/s390-ccw/virtio.h b/pc-bios/s390-ccw/virtio.h
index 75ae5bdbc229..aa307025e0f5 100644
--- a/pc-bios/s390-ccw/virtio.h
+++ b/pc-bios/s390-ccw/virtio.h
@@ -259,6 +259,7 @@ struct VDev {
bool scsi_device_selected;
ScsiDevice selected_scsi_device;
uint32_t pci_fh;
+ uint16_t vendor_id;
uint32_t max_transfer;
uint32_t guest_features[2];
};
--
2.54.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PULL 05/15] pc-bios/s390-ccw: write IPLB location for non-net virtio devices
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
` (3 preceding siblings ...)
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 ` Cornelia Huck
2026-07-07 12:58 ` [PULL 06/15] s390x: Enable boot menu for virtio pci device Cornelia Huck
` (10 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, Jared Rossi, Eric Farman, Matthew Rosato,
Cornelia Huck
From: Jared Rossi <jrossi@linux.ibm.com>
When IPL type is PCI, cutype is unknown, so the IPLB location does not
get written to lowcore. Instead of checking cutype, check if the device
is virtio generically, which covers both CCW and PCI variants. Net devices
are excluded.
Signed-off-by: Jared Rossi <jrossi@linux.ibm.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Tested-by: Matthew Rosato <mjrosato@linux.ibm.com>
Message-ID: <20260630141917.673995-6-jrossi@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
pc-bios/s390-ccw/main.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c
index fb47d29bb1f2..9c147ac5fa55 100644
--- a/pc-bios/s390-ccw/main.c
+++ b/pc-bios/s390-ccw/main.c
@@ -52,7 +52,8 @@ void write_subsystem_identification(void)
void write_iplb_location(void)
{
- if (cutype == CU_TYPE_VIRTIO && virtio_get_device_type() != VIRTIO_ID_NET) {
+ if (virtio_is_supported(virtio_get_device()) &&
+ virtio_get_device_type() != VIRTIO_ID_NET) {
lowcore->ptr_iplb = ptr2u32(&iplb);
}
}
--
2.54.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PULL 06/15] s390x: Enable boot menu for virtio pci device
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
` (4 preceding siblings ...)
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 ` 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
` (9 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, Zhuoying Cai, Eric Farman, Jared Rossi,
Matthew Rosato, Cornelia Huck
From: Zhuoying Cai <zycai@linux.ibm.com>
Add S390_IPL_TYPE_PCI to the boot menu handling logic to enable
interactive boot menu support for virtio PCI devices on s390x.
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Signed-off-by: Zhuoying Cai <zycai@linux.ibm.com>
Signed-off-by: Jared Rossi <jrossi@linux.ibm.com>
Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
Tested-by: Matthew Rosato <mjrosato@linux.ibm.com>
Message-ID: <20260630141917.673995-7-jrossi@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
hw/s390x/ipl.c | 1 +
pc-bios/s390-ccw/main.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c
index 4cca21c62175..d5fdc3ea0ff4 100644
--- a/hw/s390x/ipl.c
+++ b/hw/s390x/ipl.c
@@ -315,6 +315,7 @@ static void s390_ipl_set_boot_menu(S390IPLState *ipl)
return;
}
break;
+ case S390_IPL_TYPE_PCI:
case S390_IPL_TYPE_QEMU_SCSI:
break;
default:
diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c
index 9c147ac5fa55..8bc6e8eaa3e3 100644
--- a/pc-bios/s390-ccw/main.c
+++ b/pc-bios/s390-ccw/main.c
@@ -185,6 +185,7 @@ static void menu_setup(VDev *vdev)
switch (vdev->ipl_type) {
case S390_IPL_TYPE_CCW:
+ case S390_IPL_TYPE_PCI:
case S390_IPL_TYPE_QEMU_SCSI:
menu_set_parms(qipl.qipl_flags & BOOT_MENU_FLAG_MASK,
qipl.boot_menu_timeout);
--
2.54.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PULL 07/15] linux-headers: Update to Linux v7.2-rc1 with KVM_S390_VM_CPU_FEAT_ASTFLEIE2
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
` (5 preceding siblings ...)
2026-07-07 12:58 ` [PULL 06/15] s390x: Enable boot menu for virtio pci device Cornelia Huck
@ 2026-07-07 12:58 ` Cornelia Huck
2026-07-07 12:58 ` [PULL 08/15] s390x/kvm: Add ASTFLE facility 2 for nested virtualization Cornelia Huck
` (8 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-s390x, Christoph Schlameuss, Cornelia Huck
From: Christoph Schlameuss <schlameuss@linux.ibm.com>
Update headers to retrieve new architecture feature definitions.
KVM_S390_VM_CPU_FEAT_ASTFLEIE2 is specifically needed here.
Signed-off-by: Christoph Schlameuss <schlameuss@linux.ibm.com>
Message-ID: <20260701-astfleie2-v3-1-f692dc7f4f24@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
include/standard-headers/drm/drm_fourcc.h | 54 +++++++------
include/standard-headers/linux/ethtool.h | 3 +
include/standard-headers/linux/pci_regs.h | 2 +
include/standard-headers/linux/virtio_can.h | 78 +++++++++++++++++++
.../standard-headers/linux/virtio_console.h | 2 +-
include/standard-headers/linux/virtio_gpu.h | 9 +++
| 1 +
| 2 +
| 12 ++-
| 1 +
10 files changed, 137 insertions(+), 27 deletions(-)
create mode 100644 include/standard-headers/linux/virtio_can.h
diff --git a/include/standard-headers/drm/drm_fourcc.h b/include/standard-headers/drm/drm_fourcc.h
index 4bad457cc2d1..2ba0b5c92502 100644
--- a/include/standard-headers/drm/drm_fourcc.h
+++ b/include/standard-headers/drm/drm_fourcc.h
@@ -1,24 +1,6 @@
+/* SPDX-License-Identifier: MIT */
/*
* Copyright 2011 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
*/
#ifndef DRM_FOURCC_H
@@ -241,9 +223,9 @@ extern "C" {
* [31:0] sign:exponent:mantissa 1:8:23
*/
#define DRM_FORMAT_R32F fourcc_code('R', ' ', ' ', 'F') /* [31:0] R 32 little endian */
-#define DRM_FORMAT_GR3232F fourcc_code('G', 'R', ' ', 'F') /* [63:0] R:G 32:32 little endian */
-#define DRM_FORMAT_BGR323232F fourcc_code('B', 'G', 'R', 'F') /* [95:0] R:G:B 32:32:32 little endian */
-#define DRM_FORMAT_ABGR32323232F fourcc_code('A', 'B', '8', 'F') /* [127:0] R:G:B:A 32:32:32:32 little endian */
+#define DRM_FORMAT_GR3232F fourcc_code('G', 'R', ' ', 'F') /* [63:0] G:R 32:32 little endian */
+#define DRM_FORMAT_BGR323232F fourcc_code('B', 'G', 'R', 'F') /* [95:0] B:G:R 32:32:32 little endian */
+#define DRM_FORMAT_ABGR32323232F fourcc_code('A', 'B', '8', 'F') /* [127:0] A:B:G:R 32:32:32:32 little endian */
/*
* RGBA format with 10-bit components packed in 64-bit per pixel, with 6 bits
@@ -263,6 +245,7 @@ extern "C" {
#define DRM_FORMAT_XVUY8888 fourcc_code('X', 'V', 'U', 'Y') /* [31:0] X:Cr:Cb:Y 8:8:8:8 little endian */
#define DRM_FORMAT_VUY888 fourcc_code('V', 'U', '2', '4') /* [23:0] Cr:Cb:Y 8:8:8 little endian */
#define DRM_FORMAT_VUY101010 fourcc_code('V', 'U', '3', '0') /* Y followed by U then V, 10:10:10. Non-linear modifier only */
+#define DRM_FORMAT_XVUY2101010 fourcc_code('X', 'Y', '3', '0') /* [31:0] x:Cr:Cb:Y 2:10:10:10 little endian */
/*
* packed Y2xx indicate for each component, xx valid data occupy msb
@@ -378,6 +361,14 @@ extern "C" {
*/
#define DRM_FORMAT_P030 fourcc_code('P', '0', '3', '0') /* 2x2 subsampled Cr:Cb plane 10 bits per channel packed */
+/*
+ * 2 plane YCbCr422.
+ * 3 10 bit components and 2 padding bits packed into 4 bytes.
+ * index 0 = Y plane, [31:0] x:Y2:Y1:Y0 2:10:10:10 little endian
+ * index 1 = Cr:Cb plane, [63:0] x:Cr2:Cb2:Cr1:x:Cb1:Cr0:Cb0 [2:10:10:10:2:10:10:10] little endian
+ */
+#define DRM_FORMAT_P230 fourcc_code('P', '2', '3', '0') /* 2x1 subsampled Cr:Cb plane 10 bits per channel packed */
+
/* 3 plane non-subsampled (444) YCbCr
* 16 bits per component, but only 10 bits are used and 6 bits are padded
* index 0: Y plane, [15:0] Y:x [10:6] little endian
@@ -394,6 +385,15 @@ extern "C" {
*/
#define DRM_FORMAT_Q401 fourcc_code('Q', '4', '0', '1')
+/*
+ * 3 plane non-subsampled (444) YCbCr LSB aligned
+ * 10 bpc, 30 bits per sample image data in a single contiguous buffer.
+ * index 0: Y plane, [31:0] x:Y2:Y1:Y0 [2:10:10:10] little endian
+ * index 1: Cb plane, [31:0] x:Cb2:Cb1:Cb0 [2:10:10:10] little endian
+ * index 2: Cr plane, [31:0] x:Cr2:Cr1:Cr0 [2:10:10:10] little endian
+ */
+#define DRM_FORMAT_T430 fourcc_code('T', '4', '3', '0')
+
/*
* 3 plane YCbCr LSB aligned
* In order to use these formats in a similar fashion to MSB aligned ones
@@ -450,6 +450,16 @@ extern "C" {
#define DRM_FORMAT_YUV444 fourcc_code('Y', 'U', '2', '4') /* non-subsampled Cb (1) and Cr (2) planes */
#define DRM_FORMAT_YVU444 fourcc_code('Y', 'V', '2', '4') /* non-subsampled Cr (1) and Cb (2) planes */
+/*
+ * Y-only (greyscale) formats
+ *
+ * The Y-only formats are handled similarly to the YCbCr formats in the display
+ * pipeline, with the Cb and Cr implicitly neutral (0.0 in nominal values). This
+ * also means that COLOR_RANGE property applies to the Y-only formats.
+ */
+
+#define DRM_FORMAT_Y8 fourcc_code('G', 'R', 'E', 'Y') /* 8-bit Y-only */
+#define DRM_FORMAT_XYYY2101010 fourcc_code('Y', 'P', 'A', '4') /* [31:0] x:Y2:Y1:Y0 2:10:10:10 little endian */
/*
* Format Modifiers:
diff --git a/include/standard-headers/linux/ethtool.h b/include/standard-headers/linux/ethtool.h
index 5d82126cd7e8..55f608c3a792 100644
--- a/include/standard-headers/linux/ethtool.h
+++ b/include/standard-headers/linux/ethtool.h
@@ -293,6 +293,9 @@ enum phy_tunable_id {
ETHTOOL_PHY_DOWNSHIFT,
ETHTOOL_PHY_FAST_LINK_DOWN,
ETHTOOL_PHY_EDPD,
+ ETHTOOL_PHY_SHORT_CABLE_PRESET,
+ ETHTOOL_PHY_LPF_BW,
+ ETHTOOL_PHY_DSP_EQ_INIT_VALUE,
/*
* Add your fresh new phy tunable attribute above and remember to update
* phy_tunable_strings[] in net/ethtool/common.c
diff --git a/include/standard-headers/linux/pci_regs.h b/include/standard-headers/linux/pci_regs.h
index 14f634ab9350..facaa324bd86 100644
--- a/include/standard-headers/linux/pci_regs.h
+++ b/include/standard-headers/linux/pci_regs.h
@@ -1349,6 +1349,7 @@
/* CXL r4.0, 8.1.3: PCIe DVSEC for CXL Device */
#define PCI_DVSEC_CXL_DEVICE 0
#define PCI_DVSEC_CXL_CAP 0xA
+#define PCI_DVSEC_CXL_CACHE_CAPABLE _BITUL(0)
#define PCI_DVSEC_CXL_MEM_CAPABLE _BITUL(2)
#define PCI_DVSEC_CXL_HDM_COUNT __GENMASK(5, 4)
#define PCI_DVSEC_CXL_CTRL 0xC
@@ -1357,6 +1358,7 @@
#define PCI_DVSEC_CXL_RANGE_SIZE_LOW(i) (0x1C + (i * 0x10))
#define PCI_DVSEC_CXL_MEM_INFO_VALID _BITUL(0)
#define PCI_DVSEC_CXL_MEM_ACTIVE _BITUL(1)
+#define PCI_DVSEC_CXL_MEM_ACTIVE_TIMEOUT __GENMASK(15, 13)
#define PCI_DVSEC_CXL_MEM_SIZE_LOW __GENMASK(31, 28)
#define PCI_DVSEC_CXL_RANGE_BASE_HIGH(i) (0x20 + (i * 0x10))
#define PCI_DVSEC_CXL_RANGE_BASE_LOW(i) (0x24 + (i * 0x10))
diff --git a/include/standard-headers/linux/virtio_can.h b/include/standard-headers/linux/virtio_can.h
new file mode 100644
index 000000000000..df7f460d1f96
--- /dev/null
+++ b/include/standard-headers/linux/virtio_can.h
@@ -0,0 +1,78 @@
+/* SPDX-License-Identifier: BSD-3-Clause */
+/*
+ * Copyright (C) 2021-2023 OpenSynergy GmbH
+ * Copyright Red Hat, Inc. 2025
+ */
+#ifndef _LINUX_VIRTIO_VIRTIO_CAN_H
+#define _LINUX_VIRTIO_VIRTIO_CAN_H
+
+#include "standard-headers/linux/types.h"
+#include "standard-headers/linux/virtio_types.h"
+#include "standard-headers/linux/virtio_ids.h"
+#include "standard-headers/linux/virtio_config.h"
+
+/* Feature bit numbers */
+#define VIRTIO_CAN_F_CAN_CLASSIC 0
+#define VIRTIO_CAN_F_CAN_FD 1
+#define VIRTIO_CAN_F_RTR_FRAMES 2
+#define VIRTIO_CAN_F_LATE_TX_ACK 3
+
+/* CAN Result Types */
+#define VIRTIO_CAN_RESULT_OK 0
+#define VIRTIO_CAN_RESULT_NOT_OK 1
+
+/* CAN flags to determine type of CAN Id */
+#define VIRTIO_CAN_FLAGS_EXTENDED 0x8000
+#define VIRTIO_CAN_FLAGS_FD 0x4000
+#define VIRTIO_CAN_FLAGS_RTR 0x2000
+
+#define VIRTIO_CAN_MAX_DLEN 64 /* this is like CANFD_MAX_DLEN */
+
+struct virtio_can_config {
+#define VIRTIO_CAN_S_CTRL_BUSOFF (1u << 0) /* Controller BusOff */
+ /* CAN controller status */
+ uint16_t status;
+};
+
+/* TX queue message types */
+struct virtio_can_tx_out {
+#define VIRTIO_CAN_TX 0x0001
+ uint16_t msg_type;
+ uint16_t length; /* 0..8 CC, 0..64 CAN-FD, 0..2048 CAN-XL, 12 bits */
+ uint8_t reserved_classic_dlc; /* If CAN classic length = 8 then DLC can be 8..15 */
+ uint8_t padding;
+ uint16_t reserved_xl_priority; /* May be needed for CAN XL priority */
+ uint32_t flags;
+ uint32_t can_id;
+ uint8_t sdu[] __counted_by_le(length);
+};
+
+struct virtio_can_tx_in {
+ uint8_t result;
+};
+
+/* RX queue message types */
+struct virtio_can_rx {
+#define VIRTIO_CAN_RX 0x0101
+ uint16_t msg_type;
+ uint16_t length; /* 0..8 CC, 0..64 CAN-FD, 0..2048 CAN-XL, 12 bits */
+ uint8_t reserved_classic_dlc; /* If CAN classic length = 8 then DLC can be 8..15 */
+ uint8_t padding;
+ uint16_t reserved_xl_priority; /* May be needed for CAN XL priority */
+ uint32_t flags;
+ uint32_t can_id;
+ uint8_t sdu[] __counted_by_le(length);
+};
+
+/* Control queue message types */
+struct virtio_can_control_out {
+#define VIRTIO_CAN_SET_CTRL_MODE_START 0x0201
+#define VIRTIO_CAN_SET_CTRL_MODE_STOP 0x0202
+ uint16_t msg_type;
+};
+
+struct virtio_can_control_in {
+ uint8_t result;
+};
+
+#endif /* #ifndef _LINUX_VIRTIO_VIRTIO_CAN_H */
diff --git a/include/standard-headers/linux/virtio_console.h b/include/standard-headers/linux/virtio_console.h
index 71f5f648e3ce..8cba52198a15 100644
--- a/include/standard-headers/linux/virtio_console.h
+++ b/include/standard-headers/linux/virtio_console.h
@@ -44,7 +44,7 @@
#define VIRTIO_CONSOLE_BAD_ID (~(uint32_t)0)
struct virtio_console_config {
- /* colums of the screens */
+ /* columns of the screens */
__virtio16 cols;
/* rows of the screens */
__virtio16 rows;
diff --git a/include/standard-headers/linux/virtio_gpu.h b/include/standard-headers/linux/virtio_gpu.h
index 00cd3f04af94..c67f50f56cd1 100644
--- a/include/standard-headers/linux/virtio_gpu.h
+++ b/include/standard-headers/linux/virtio_gpu.h
@@ -64,6 +64,14 @@
* context_init and multiple timelines
*/
#define VIRTIO_GPU_F_CONTEXT_INIT 4
+/*
+ * The device provides a valid blob_alignment
+ * field in its configuration and both
+ * VIRTIO_GPU_CMD_RESOURCE_CREATE_BLOB and
+ * VIRTIO_GPU_CMD_RESOURCE_MAP_BLOB requests
+ * must be aligned to that value.
+ */
+#define VIRTIO_GPU_F_BLOB_ALIGNMENT 5
enum virtio_gpu_ctrl_type {
VIRTIO_GPU_UNDEFINED = 0,
@@ -365,6 +373,7 @@ struct virtio_gpu_config {
uint32_t events_clear;
uint32_t num_scanouts;
uint32_t num_capsets;
+ uint32_t blob_alignment;
};
/* simple formats for fbcon/X use */
--git a/linux-headers/asm-s390/kvm.h b/linux-headers/asm-s390/kvm.h
index ab5a6bce590c..45a6d0a7406a 100644
--- a/linux-headers/asm-s390/kvm.h
+++ b/linux-headers/asm-s390/kvm.h
@@ -444,6 +444,7 @@ struct kvm_s390_vm_cpu_machine {
#define KVM_S390_VM_CPU_FEAT_PFMFI 11
#define KVM_S390_VM_CPU_FEAT_SIGPIF 12
#define KVM_S390_VM_CPU_FEAT_KSS 13
+#define KVM_S390_VM_CPU_FEAT_ASTFLEIE2 14
struct kvm_s390_vm_cpu_feat {
__u64 feat[16];
};
--git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h
index 01d46e29294f..a8a2558abaaa 100644
--- a/linux-headers/asm-x86/kvm.h
+++ b/linux-headers/asm-x86/kvm.h
@@ -475,6 +475,7 @@ struct kvm_sync_regs {
#define KVM_X86_QUIRK_STUFF_FEATURE_MSRS (1 << 8)
#define KVM_X86_QUIRK_IGNORE_GUEST_PAT (1 << 9)
#define KVM_X86_QUIRK_VMCS12_ALLOW_FREEZE_IN_SMM (1 << 10)
+#define KVM_X86_QUIRK_NESTED_SVM_SHARED_PAT (1 << 11)
#define KVM_STATE_NESTED_FORMAT_VMX 0
#define KVM_STATE_NESTED_FORMAT_SVM 1
@@ -530,6 +531,7 @@ struct kvm_svm_nested_state_data {
struct kvm_svm_nested_state_hdr {
__u64 vmcb_pa;
+ __u64 gpat;
};
/* for KVM_CAP_NESTED_STATE */
--git a/linux-headers/linux/iommufd.h b/linux-headers/linux/iommufd.h
index 82587c7d625a..10c600d71e42 100644
--- a/linux-headers/linux/iommufd.h
+++ b/linux-headers/linux/iommufd.h
@@ -224,13 +224,17 @@ struct iommu_ioas_map {
* @size: sizeof(struct iommu_ioas_map_file)
* @flags: same as for iommu_ioas_map
* @ioas_id: same as for iommu_ioas_map
- * @fd: the memfd to map
- * @start: byte offset from start of file to map from
+ * @fd: the memfd or supported dma-buf file to map
+ * @start: byte offset from start of the file to map from
* @length: same as for iommu_ioas_map
* @iova: same as for iommu_ioas_map
*
- * Set an IOVA mapping from a memfd file. All other arguments and semantics
- * match those of IOMMU_IOAS_MAP.
+ * Set an IOVA mapping from a memfd file. On kernels with dma-buf support,
+ * supported dma-buf files may also be accepted. This is not a generic
+ * dma-buf import path; currently supported dma-bufs include single-range
+ * VFIO PCI dma-bufs exported through VFIO_DEVICE_FEATURE_DMA_BUF, and
+ * other dma-bufs may be rejected. All other arguments and semantics match
+ * those of IOMMU_IOAS_MAP.
*/
struct iommu_ioas_map_file {
__u32 size;
--git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
index 50e87ed72c20..dd52e2a65bfd 100644
--- a/linux-headers/linux/kvm.h
+++ b/linux-headers/linux/kvm.h
@@ -985,6 +985,7 @@ struct kvm_enable_cap {
#define KVM_CAP_S390_USER_OPEREXEC 246
#define KVM_CAP_S390_KEYOP 247
#define KVM_CAP_S390_VSIE_ESAMODE 248
+#define KVM_CAP_S390_HPAGE_2G 249
struct kvm_irq_routing_irqchip {
__u32 irqchip;
--
2.54.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PULL 08/15] s390x/kvm: Add ASTFLE facility 2 for nested virtualization
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
` (6 preceding siblings ...)
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
2026-07-07 12:58 ` [PULL 09/15] target/s390x: Fix wrong address handling in address loops Cornelia Huck
` (7 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, Christoph Schlameuss, Nina Schoetterl-Glausch,
Cornelia Huck
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
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PULL 09/15] target/s390x: Fix wrong address handling in address loops
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
` (7 preceding siblings ...)
2026-07-07 12:58 ` [PULL 08/15] s390x/kvm: Add ASTFLE facility 2 for nested virtualization Cornelia Huck
@ 2026-07-07 12:58 ` Cornelia Huck
2026-07-07 12:58 ` [PULL 10/15] s390x/sclp: reject invalid write event data headers Cornelia Huck
` (6 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, Harald Freudenberger, Holger Dengler, Cornelia Huck
From: Harald Freudenberger <freude@linux.ibm.com>
The loop increments addr by the element stride (+= 4) before calling
wrap_address, but then overwrites the loop addr with the wrapped
value. On the next iteration the stride is applied to the wrapped
address of the previous element, not to the original unwrapped
address. This results in every element after the first is read from a
wrong (wrapped) address.
Fixes: 9f17bfdab4 ("target/s390x: support SHA-512 extensions")
Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
Reviewed-by: Holger Dengler <dengler@linux.ibm.com>
Message-ID: <20260706094317.17032-2-freude@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
target/s390x/tcg/crypto_helper.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/target/s390x/tcg/crypto_helper.c b/target/s390x/tcg/crypto_helper.c
index ae392bce0e73..8fe0a222198a 100644
--- a/target/s390x/tcg/crypto_helper.c
+++ b/target/s390x/tcg/crypto_helper.c
@@ -126,8 +126,7 @@ static void sha512_read_icv(CPUS390XState *env, const int mmu_idx,
const MemOpIdx oi = make_memop_idx(MO_BE | MO_64 | MO_UNALN, mmu_idx);
for (int i = 0; i < 8; i++, addr += 8) {
- addr = wrap_address(env, addr);
- a[i] = cpu_ldq_mmu(env, addr, oi, ra);
+ a[i] = cpu_ldq_mmu(env, wrap_address(env, addr), oi, ra);
}
}
@@ -137,8 +136,7 @@ static void sha512_write_ocv(CPUS390XState *env, const int mmu_idx,
const MemOpIdx oi = make_memop_idx(MO_BE | MO_64 | MO_UNALN, mmu_idx);
for (int i = 0; i < 8; i++, addr += 8) {
- addr = wrap_address(env, addr);
- cpu_stq_mmu(env, addr, a[i], oi, ra);
+ cpu_stq_mmu(env, wrap_address(env, addr), a[i], oi, ra);
}
}
@@ -148,8 +146,7 @@ static void sha512_read_block(CPUS390XState *env, const int mmu_idx,
const MemOpIdx oi = make_memop_idx(MO_BE | MO_64 | MO_UNALN, mmu_idx);
for (int i = 0; i < 16; i++, addr += 8) {
- addr = wrap_address(env, addr);
- a[i] = cpu_ldq_mmu(env, addr, oi, ra);
+ a[i] = cpu_ldq_mmu(env, wrap_address(env, addr), oi, ra);
}
}
@@ -159,8 +156,7 @@ static void sha512_read_mbl_be64(CPUS390XState *env, const int mmu_idx,
const MemOpIdx oi = make_memop_idx(MO_8, mmu_idx);
for (int i = 0; i < 16; i++, addr += 1) {
- addr = wrap_address(env, addr);
- a[i] = cpu_ldb_mmu(env, addr, oi, ra);
+ a[i] = cpu_ldb_mmu(env, wrap_address(env, addr), oi, ra);
}
}
--
2.54.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PULL 10/15] s390x/sclp: reject invalid write event data headers
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
` (8 preceding siblings ...)
2026-07-07 12:58 ` [PULL 09/15] target/s390x: Fix wrong address handling in address loops Cornelia Huck
@ 2026-07-07 12:58 ` Cornelia Huck
2026-07-07 12:58 ` [PULL 11/15] s390x/pci: Tighten region detection for BAR read/write Cornelia Huck
` (5 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, Christian Borntraeger, qemu-stable, Hendrik Brueckner,
Matthew Rosato, Eric Farman, Philippe Mathieu-Daudé,
Cornelia Huck
From: Christian Borntraeger <borntraeger@linux.ibm.com>
If a guest submits an sccb with a tiny header length but a large number
of event mask entries, the write_event_mask handler will
1. return the wrong RC (ok instead of error)
2. write to memory after the allocated sccb in qemu host memory.
Add the necessary checks.
Cc: qemu-stable@nongnu.org
Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com>
Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Signed-off-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Message-ID: <20260707070728.147203-2-borntraeger@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
hw/s390x/event-facility.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/hw/s390x/event-facility.c b/hw/s390x/event-facility.c
index fee286ea639a..184c469bd394 100644
--- a/hw/s390x/event-facility.c
+++ b/hw/s390x/event-facility.c
@@ -286,6 +286,7 @@ static void read_event_data(SCLPEventFacility *ef, SCCB *sccb)
static void write_event_mask(SCLPEventFacility *ef, SCCB *sccb)
{
WriteEventMask *we_mask = (WriteEventMask *) sccb;
+ uint16_t sccb_length = be16_to_cpu(sccb->h.length);
uint16_t mask_length = be16_to_cpu(we_mask->mask_length);
sccb_mask_t tmp_mask;
@@ -294,6 +295,11 @@ static void write_event_mask(SCLPEventFacility *ef, SCCB *sccb)
return;
}
+ if (sccb_length < sizeof(WriteEventMask) + 4 * mask_length) {
+ sccb->h.response_code = cpu_to_be16(SCLP_RC_INSUFFICIENT_SCCB_LENGTH);
+ return;
+ }
+
/*
* Note: We currently only support masks up to 8 byte length;
* the remainder is filled up with zeroes. Older Linux
--
2.54.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PULL 11/15] s390x/pci: Tighten region detection for BAR read/write
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
` (9 preceding siblings ...)
2026-07-07 12:58 ` [PULL 10/15] s390x/sclp: reject invalid write event data headers Cornelia Huck
@ 2026-07-07 12:58 ` Cornelia Huck
2026-07-07 12:58 ` [PULL 12/15] s390x/pci: Shrink RPCIT ranges to registered window Cornelia Huck
` (4 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, Matthew Rosato, qemu-stable, Christian Borntraeger,
Farhan Ali, Cornelia Huck
From: Matthew Rosato <mjrosato@linux.ibm.com>
For PCISTG/PCISTB/PCILG instruction emulation, ensure that the offset
and length provided by the guest does not overflow, and only return
a memory region when the specified offset+length combination matches
an existing subregion or the parent region.
Cc: qemu-stable@nongnu.org
Fixes: 4f6482bfe3 ("s390x/pci: search for subregion inside the BARs")
Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Reviewed-by: Farhan Ali <alifm@linux.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Message-ID: <20260707070728.147203-3-borntraeger@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
hw/s390x/s390-pci-inst.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c
index 10066ca6180a..ef20f7645eb4 100644
--- a/hw/s390x/s390-pci-inst.c
+++ b/hw/s390x/s390-pci-inst.c
@@ -392,13 +392,22 @@ static int zpci_endian_swap(uint64_t *ptr, uint8_t len)
static MemoryRegion *s390_get_subregion(MemoryRegion *mr, uint64_t offset,
uint8_t len)
{
+ uint64_t last = offset + len;
MemoryRegion *subregion;
uint64_t subregion_size;
+ /*
+ * Ensure the region is valid, the calculated address cannot wrap and that
+ * it falls within this region.
+ */
+ if (!mr || offset > last || last > memory_region_size(mr)) {
+ return NULL;
+ }
+
QTAILQ_FOREACH(subregion, &mr->subregions, subregions_link) {
subregion_size = memory_region_size(subregion);
if ((offset >= subregion->addr) &&
- (offset + len) <= (subregion->addr + subregion_size)) {
+ (last) <= (subregion->addr + subregion_size)) {
mr = subregion;
break;
}
@@ -413,6 +422,10 @@ static MemTxResult zpci_read_bar(S390PCIBusDevice *pbdev, uint8_t pcias,
mr = pbdev->pdev->io_regions[pcias].memory;
mr = s390_get_subregion(mr, offset, len);
+ if (!mr) {
+ return MEMTX_ERROR;
+ }
+
offset -= mr->addr;
return memory_region_dispatch_read(mr, offset, data,
size_memop(len) | MO_BE,
@@ -513,6 +526,10 @@ static MemTxResult zpci_write_bar(S390PCIBusDevice *pbdev, uint8_t pcias,
mr = pbdev->pdev->io_regions[pcias].memory;
mr = s390_get_subregion(mr, offset, len);
+ if (!mr) {
+ return MEMTX_ERROR;
+ }
+
offset -= mr->addr;
return memory_region_dispatch_write(mr, offset, data,
size_memop(len) | MO_BE,
@@ -900,6 +917,11 @@ int pcistb_service_call(S390CPU *cpu, uint8_t r1, uint8_t r3, uint64_t gaddr,
mr = pbdev->pdev->io_regions[pcias].memory;
mr = s390_get_subregion(mr, offset, len);
+ if (!mr) {
+ s390_program_interrupt(env, PGM_OPERAND, ra);
+ return 0;
+ }
+
offset -= mr->addr;
for (i = 0; i < len; i += 8) {
--
2.54.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PULL 12/15] s390x/pci: Shrink RPCIT ranges to registered window
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
` (10 preceding siblings ...)
2026-07-07 12:58 ` [PULL 11/15] s390x/pci: Tighten region detection for BAR read/write Cornelia Huck
@ 2026-07-07 12:58 ` Cornelia Huck
2026-07-07 12:58 ` [PULL 13/15] s390x/ioinst: Require strict length and format for SEI CHSC handler Cornelia Huck
` (3 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, Matthew Rosato, qemu-stable, Christian Borntraeger,
Farhan Ali, Cornelia Huck
From: Matthew Rosato <mjrosato@linux.ibm.com>
Today, if a RPCIT instruction is presented from the guest whose range
exceeds the previously-registered IOAT, QEMU will process the range
so long as 1) the specified range at least partially overlaps with
what was previously registered and 2) the guest has valid IOAT entries
in its table. If the entries are not present (invalid), then the
RPCIT will unnecessarily spend time reporting the invalid
region/segment entries.
Optimize this path by exiting immediately if the requested range falls
completely outside of the previously-registered range or if the
requested range ends before it starts (which would only occur if the
guest-specified address + length would overflow a u64). Otherwise,
clamp the request to only the portion of the range that overlaps with
what was previously registered, effectively ignoring the portion
outside of the registered range.
Cc: qemu-stable@nongnu.org
Fixes: 5d1abf2344 ("s390x/pci: enforce zPCI state checking")
Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Reviewed-by: Farhan Ali <alifm@linux.ibm.com>
Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Message-ID: <20260707070728.147203-4-borntraeger@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
hw/s390x/s390-pci-inst.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c
index ef20f7645eb4..b7de23c7d2c1 100644
--- a/hw/s390x/s390-pci-inst.c
+++ b/hw/s390x/s390-pci-inst.c
@@ -770,10 +770,16 @@ int rpcit_service_call(S390CPU *cpu, uint8_t r1, uint8_t r2, uintptr_t ra)
goto err;
}
- if (end < iommu->pba || start > iommu->pal) {
+ if (end < start || end < iommu->pba || start > iommu->pal) {
error = ERR_EVENT_OORANGE;
goto err;
}
+ /*
+ * If the specified range at least partially overlaps the registered
+ * aperture, clamp the request to the aperture and ignore the rest.
+ */
+ sstart = MAX(start, iommu->pba);
+ end = MIN(end, iommu->pal + 1);
retry:
start = sstart;
--
2.54.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PULL 13/15] s390x/ioinst: Require strict length and format for SEI CHSC handler
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
` (11 preceding siblings ...)
2026-07-07 12:58 ` [PULL 12/15] s390x/pci: Shrink RPCIT ranges to registered window Cornelia Huck
@ 2026-07-07 12:58 ` Cornelia Huck
2026-07-07 12:58 ` [PULL 14/15] s390x/css: limit number of CHPIDs in description Cornelia Huck
` (2 subsequent siblings)
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, Matthew Rosato, qemu-stable, Christian Borntraeger,
Farhan Ali, Eric Farman, Cornelia Huck
From: Matthew Rosato <mjrosato@linux.ibm.com>
Ensure SEI commands that are received are of the appropriate length and
format before handling.
Cc: qemu-stable@nongnu.org
Fixes: 8cba80c3a0 ("s390: Add PCI bus support")
Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Reviewed-by: Farhan Ali <alifm@linux.ibm.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Message-ID: <20260707070728.147203-5-borntraeger@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
target/s390x/ioinst.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/target/s390x/ioinst.c b/target/s390x/ioinst.c
index 2320dd4c1224..94619f92155c 100644
--- a/target/s390x/ioinst.c
+++ b/target/s390x/ioinst.c
@@ -609,13 +609,27 @@ static int chsc_sei_nt2_have_event(void)
#define CHSC_SEI_NT0 (1ULL << 63)
#define CHSC_SEI_NT2 (1ULL << 61)
+#define CHSC_SEI_0_FMT 0x0f000000
static void ioinst_handle_chsc_sei(ChscReq *req, ChscResp *res)
{
uint64_t selection_mask = ldq_be_p(&req->param1);
+ uint32_t param0 = be32_to_cpu(req->param0);
uint8_t *res_flags = (uint8_t *)res->data;
+ uint16_t len = be16_to_cpu(req->len);
+ uint16_t resp_code;
int have_event = 0;
int have_more = 0;
+ if (len != 0x0010) {
+ resp_code = 0x0003;
+ goto out_err;
+ }
+
+ if (param0 & CHSC_SEI_0_FMT) {
+ resp_code = 0x0007;
+ goto out_err;
+ }
+
/* regarding architecture nt0 can not be masked */
have_event = !chsc_sei_nt0_get_event(res);
have_more = chsc_sei_nt0_have_event();
@@ -642,6 +656,12 @@ static void ioinst_handle_chsc_sei(ChscReq *req, ChscResp *res)
res->code = cpu_to_be16(0x0005);
res->len = cpu_to_be16(CHSC_MIN_RESP_LEN);
}
+ return;
+
+ out_err:
+ res->code = cpu_to_be16(resp_code);
+ res->len = cpu_to_be16(CHSC_MIN_RESP_LEN);
+ res->param = 0;
}
static void ioinst_handle_chsc_unimplemented(ChscResp *res)
--
2.54.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PULL 14/15] s390x/css: limit number of CHPIDs in description
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
` (12 preceding siblings ...)
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 ` 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
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-s390x, Eric Farman, qemu-stable, Christian Borntraeger,
Matthew Rosato, Cornelia Huck
From: Eric Farman <farman@linux.ibm.com>
virtio-ccw uses a single virtual CHPID for all devices and
device-types, but vfio-ccw (passthrough) shares real CHPID
information with the guest. A sufficiently large passthrough
configuration would exceed the defined response payload.
Fix this by limiting the number of CHPID descriptions that
are returned based on the given response format.
Cc: qemu-stable@nongnu.org
Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
Signed-off-by: Eric Farman <farman@linux.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Message-ID: <20260707070728.147203-6-borntraeger@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
hw/s390x/css.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/hw/s390x/css.c b/hw/s390x/css.c
index 96d5378f3c18..29ba39f79ea1 100644
--- a/hw/s390x/css.c
+++ b/hw/s390x/css.c
@@ -1872,6 +1872,7 @@ int css_collect_chp_desc(int m, uint8_t cssid, uint8_t f_chpid, uint8_t l_chpid,
int i, desc_size;
uint32_t words[8];
uint32_t chpid_type_word;
+ uint32_t max_chpids, chpid_count = 0;
CssImage *css;
if (!m && !cssid) {
@@ -1882,9 +1883,25 @@ int css_collect_chp_desc(int m, uint8_t cssid, uint8_t f_chpid, uint8_t l_chpid,
if (!css) {
return 0;
}
+
+ if (rfmt == 0) {
+ max_chpids = 256;
+ } else if (rfmt == 1) {
+ max_chpids = 127;
+ } else {
+ /* Should be rejected by caller */
+ return 0;
+ }
+
desc_size = 0;
for (i = f_chpid; i <= l_chpid; i++) {
if (css->chpids[i].in_use) {
+ /* Limit number of CHPIDs sent back */
+ if (chpid_count == max_chpids) {
+ break;
+ }
+
+ chpid_count++;
chpid_type_word = 0x80000000 | (css->chpids[i].type << 8) | i;
if (rfmt == 0) {
words[0] = cpu_to_be32(chpid_type_word);
--
2.54.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PULL 15/15] pc-bios/s390-ccw.img: update s390x bios
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
` (13 preceding siblings ...)
2026-07-07 12:58 ` [PULL 14/15] s390x/css: limit number of CHPIDs in description Cornelia Huck
@ 2026-07-07 12:58 ` Cornelia Huck
2026-07-08 5:54 ` [PULL 00/15] s390x updates (contains Linux headers update) Stefan Hajnoczi
15 siblings, 0 replies; 17+ messages in thread
From: Cornelia Huck @ 2026-07-07 12:58 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-s390x, Cornelia Huck
Update the s390x bios with fixes for intermittent errors when IPLing
from PCI devices.
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
pc-bios/s390-ccw.img | Bin 95992 -> 104136 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/pc-bios/s390-ccw.img b/pc-bios/s390-ccw.img
index 48ac78c894592b655062fcf9513acc39d917f176..e24a93e14a880aa3a5d498fc84c7bdd1a0964d7c 100644
GIT binary patch
literal 104136
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
literal 95992
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
P{y^P4+6Ge6_2K^mU6)D|
--
2.54.0
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PULL 00/15] s390x updates (contains Linux headers update)
2026-07-07 12:58 [PULL 00/15] s390x updates (contains Linux headers update) Cornelia Huck
` (14 preceding siblings ...)
2026-07-07 12:58 ` [PULL 15/15] pc-bios/s390-ccw.img: update s390x bios Cornelia Huck
@ 2026-07-08 5:54 ` Stefan Hajnoczi
15 siblings, 0 replies; 17+ messages in thread
From: Stefan Hajnoczi @ 2026-07-08 5:54 UTC (permalink / raw)
To: Cornelia Huck; +Cc: qemu-devel, qemu-s390x, Cornelia Huck
[-- Attachment #1: Type: text/plain, Size: 116 bytes --]
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/11.1 for any user-visible changes.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2026-07-08 8:15 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 ` [PULL 08/15] s390x/kvm: Add ASTFLE facility 2 for nested virtualization Cornelia Huck
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
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.