On 8/24/26 1:53 PM, Zhuoying Cai wrote:
On 8/11/26 10:46 AM, [email protected] wrote:
From: Jared Rossi <[email protected]>

The IplBlockPci struct is 336 bytes in length.


The commit message is slightly misleading because IplBlockPci itself is
312 bytes in length.

Maybe reword it to something like:
"IplBlockPci is 312 bytes, so the minimum PCI IPLB length is 336 bytes."


Given that, should the #define be sizeof(IplBlockPci) + 24?

And does the patch itself need to be cc'd to stable?

Otherwise:
Reviewed-by: Zhuoying Cai <[email protected]>

Fix the S390_IPLB_MIN_PCI_LEN to reflect this, and assign a valid blk0_len
while we are at it.

Signed-off-by: Jared Rossi <[email protected]>
---
  hw/s390x/ipl.c | 2 ++
  hw/s390x/ipl.h | 2 +-
  2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c
index d5fdc3ea0f..fd6e9100f9 100644
--- a/hw/s390x/ipl.c
+++ b/hw/s390x/ipl.c
@@ -526,6 +526,8 @@ static bool s390_build_iplb(DeviceState *dev_st, 
IplParameterBlock *iplb)
          switch (devtype) {
          case PCI_DEVTYPE_VIRTIO:
              iplb->len = cpu_to_be32(S390_IPLB_MIN_PCI_LEN);
+            iplb->blk0_len =
+                cpu_to_be32(S390_IPLB_MIN_PCI_LEN - S390_IPLB_HEADER_LEN);
              iplb->pbt = S390_IPL_TYPE_PCI;
              iplb->pci.fid = cpu_to_be32(pbdev->fid);
              break;
diff --git a/hw/s390x/ipl.h b/hw/s390x/ipl.h
index fac30763df..b4d93054a7 100644
--- a/hw/s390x/ipl.h
+++ b/hw/s390x/ipl.h
@@ -107,7 +107,7 @@ QEMU_BUILD_BUG_MSG(offsetof(S390IPLState, iplb) & 3, "alignment 
of iplb wrong");
  #define S390_IPLB_MIN_PV_LEN 148
  #define S390_IPLB_MIN_CCW_LEN 200
  #define S390_IPLB_MIN_FCP_LEN 384
-#define S390_IPLB_MIN_PCI_LEN 376
+#define S390_IPLB_MIN_PCI_LEN 336
  #define S390_IPLB_MIN_QEMU_SCSI_LEN 200
static inline bool iplb_valid_len(IplParameterBlock *iplb)



Reply via email to