On Fri, 15 Dec 2017 09:51:32 +0000 Peter Maydell <peter.mayd...@linaro.org> wrote:
> 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. Hm, my mingw build on Fedora did not catch this. Setting up a 32bit vm. > > >> > >> 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. Will try how that works.