From: David Hildenbrand Date: Thu, 5 Aug 2021 14:37:53 +0000 (+0200) Subject: s390x/ioinst: Fix wrong MSCH alignment check on little endian X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=0dd05d0606c880200d1683364c5eb558898e50de;p=qemu.git s390x/ioinst: Fix wrong MSCH alignment check on little endian schib->pmcw.chars is 32bit, not 16bit. This fixes the kvm-unit-tests "css" test, which fails with: FAIL: Channel Subsystem: measurement block format1: Unaligned MB origin: Program interrupt: expected(21) == received(0) Because we end up not injecting an operand program exception. Fixes: a54b8ac340c2 ("css: SCHIB measurement block origin must be aligned") Cc: Halil Pasic Cc: Cornelia Huck Cc: Christian Borntraeger Cc: Richard Henderson Cc: Thomas Huth Cc: Pierre Morel Cc: qemu-s390x@nongnu.org Signed-off-by: David Hildenbrand Reviewed-by: Halil Pasic Reviewed-by: Thomas Huth Reviewed-by: Pierre Morel Message-Id: <20210805143753.86520-1-david@redhat.com> Signed-off-by: Cornelia Huck Signed-off-by: Thomas Huth --- diff --git a/target/s390x/ioinst.c b/target/s390x/ioinst.c index 4eb0a7a9f8..bdae5090bc 100644 --- a/target/s390x/ioinst.c +++ b/target/s390x/ioinst.c @@ -123,7 +123,7 @@ static int ioinst_schib_valid(SCHIB *schib) } /* for MB format 1 bits 26-31 of word 11 must be 0 */ /* MBA uses words 10 and 11, it means align on 2**6 */ - if ((be16_to_cpu(schib->pmcw.chars) & PMCW_CHARS_MASK_MBFC) && + if ((be32_to_cpu(schib->pmcw.chars) & PMCW_CHARS_MASK_MBFC) && (be64_to_cpu(schib->mba) & 0x03fUL)) { return 0; }