[...]
>> +int s390_ipl_prepare_pv_header(void)
>> +{
>> + IplParameterBlock *ipib = s390_ipl_get_iplb_pv();
>> + IPLBlockPV *ipib_pv = &ipib->pv;
>> + void *hdr = g_malloc(ipib_pv->pv_header_len);
>> + int rc;
>> +
>> + cpu_physical_memory_read(ipib_pv->pv_header_addr, hdr,
>> + ipib_pv->pv_header_len);
>> + rc = s390_pv_set_sec_parms((uint64_t)hdr,
>> + ipib_pv->pv_header_len);
> This causes a compiler issue when building for 32 bit x86 as follows:
>
> /home/abuild/rpmbuild/BUILD/qemu-4.2.0/hw/s390x/ipl.c: In function
> 's390_ipl_prepare_pv_header':
> /home/abuild/rpmbuild/BUILD/qemu-4.2.0/hw/s390x/ipl.c:659:32: error:
> cast from pointer to integer of different size [-Werror=pointer-to-int-
> cast]
> 659 | rc = s390_pv_set_sec_parms((uint64_t)hdr,
> | ^
Interesting. It seems that there is no travis-ci coverage for this
case.
I guess we need something like this.
diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c
index 1d04cd5..01bdf81 100644
--- a/hw/s390x/ipl.c
+++ b/hw/s390x/ipl.c
@@ -656,7 +656,7 @@ int s390_ipl_prepare_pv_header(void)
cpu_physical_memory_read(ipib_pv->pv_header_addr, hdr,
ipib_pv->pv_header_len);
- rc = s390_pv_set_sec_parms((uint64_t)hdr,
+ rc = s390_pv_set_sec_parms((uint64_t)(unsigned long) hdr,
ipib_pv->pv_header_len);
g_free(hdr);
return rc;