On 15 December 2017 at 09:11, Cornelia Huck <coh...@redhat.com> wrote: > On Fri, 15 Dec 2017 09:35:10 +0100 > Christian Borntraeger <borntrae...@de.ibm.com> wrote: > >> On 12/14/2017 08:05 PM, Peter Maydell wrote: >> > (ram_addr_t can be a 32-bit type). > > This a 32 bit host, isn't it? I don't have regular access to one...
Yes. Win32 cross compiler also gives this error. >> >> gcc seems to be extra clever, even a cast does not work. >> Something like this seems to work. >> >> diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c >> index 80e753a5ef..9abb8de9f9 100644 >> --- a/hw/s390x/s390-virtio-ccw.c >> +++ b/hw/s390x/s390-virtio-ccw.c >> @@ -172,9 +172,10 @@ static void s390_memory_init(ram_addr_t mem_size) >> name = g_strdup_printf("s390.ram"); >> while (mem_size) { >> MemoryRegion *ram = g_new(MemoryRegion, 1); >> + unsigned long long size = mem_size; >> >> /* KVM does not allow memslots >= 8 TB */ >> - chunk = MIN(mem_size, KVM_SLOT_MAX_BYTES); >> + chunk = MIN(size, KVM_SLOT_MAX_BYTES); >> memory_region_allocate_system_memory(ram, NULL, name, chunk); >> memory_region_add_subregion(sysmem, offset, ram); >> mem_size -= chunk; >> > > Will see how I can test this and then merge it. I would suggest uint64_t rather than unsigned long long. thanks -- PMM