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
> 

Reply via email to