Quoting Michael Roth (2018-07-23 15:16:14) > From: Cornelia Huck <coh...@redhat.com> > > We currently pass an integer as the subcode parameter. However, > the upper bits of the register containing the subcode need to > be 0, which is not guaranteed unless we explicitly specify the > subcode to be an unsigned long value. > > Fixes: d046c51dad3 ("pc-bios/s390-ccw: Get device address via diag 308/6") > Cc: qemu-sta...@nongnu.org > Signed-off-by: Cornelia Huck <coh...@redhat.com> > Acked-by: Christian Borntraeger <borntrae...@de.ibm.com> > Tested-by: Thomas Huth <th...@redhat.com> > Signed-off-by: Thomas Huth <th...@redhat.com> > (cherry picked from commit 63d8b5ace31c1e1f3996fe4cd551d6d377594d5a) > Signed-off-by: Michael Roth <mdr...@linux.vnet.ibm.com>
Hi Cornelia, Would you be able to do an s390 BIOS build for this one as well? > --- > pc-bios/s390-ccw/iplb.h | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/pc-bios/s390-ccw/iplb.h b/pc-bios/s390-ccw/iplb.h > index 5357a36d51..ded20c834e 100644 > --- a/pc-bios/s390-ccw/iplb.h > +++ b/pc-bios/s390-ccw/iplb.h > @@ -101,10 +101,11 @@ static inline bool manage_iplb(IplParameterBlock *iplb, > bool store) > { > register unsigned long addr asm("0") = (unsigned long) iplb; > register unsigned long rc asm("1") = 0; > + unsigned long subcode = store ? 6 : 5; > > asm volatile ("diag %0,%2,0x308\n" > : "+d" (addr), "+d" (rc) > - : "d" (store ? 6 : 5) > + : "d" (subcode) > : "memory", "cc"); > return rc == 0x01; > } > -- > 2.17.1 >