On 8/5/21 4:37 PM, David Hildenbrand wrote:
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 <pa...@linux.ibm.com>
Cc: Cornelia Huck <coh...@redhat.com>
Cc: Christian Borntraeger <borntrae...@de.ibm.com>
Cc: Richard Henderson <richard.hender...@linaro.org>
Cc: Thomas Huth <th...@redhat.com>
Cc: Pierre Morel <pmo...@linux.ibm.com>
Cc: qemu-s3...@nongnu.org
Signed-off-by: David Hildenbrand <da...@redhat.com>
---
  target/s390x/ioinst.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

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;
      }


It is obviously a 32bit.

Reviewed-by: Pierre Morel <pmo...@linux.ibm.com>


--
Pierre Morel
IBM Lab Boeblingen

Reply via email to