s390-virtio: Apply same memory boundaries as virtio-ccw

Although s390-virtio won't support memory hotplug, it should
enforce the same memory boundaries so that it can use shared codepaths
(like read_SCP_info).

Signed-off-by: Matthew Rosato <mjrosato@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
This commit is contained in:
Matthew Rosato 2014-08-28 11:25:34 -04:00 committed by Christian Borntraeger
parent b6fe01248e
commit e7f1314f97
1 changed files with 9 additions and 6 deletions

View File

@ -230,18 +230,21 @@ static void s390_init(MachineState *machine)
ram_addr_t my_ram_size = machine->ram_size; ram_addr_t my_ram_size = machine->ram_size;
MemoryRegion *sysmem = get_system_memory(); MemoryRegion *sysmem = get_system_memory();
MemoryRegion *ram = g_new(MemoryRegion, 1); MemoryRegion *ram = g_new(MemoryRegion, 1);
int shift = 0; int increment_size = 20;
uint8_t *storage_keys; uint8_t *storage_keys;
void *virtio_region; void *virtio_region;
hwaddr virtio_region_len; hwaddr virtio_region_len;
hwaddr virtio_region_start; hwaddr virtio_region_start;
/* s390x ram size detection needs a 16bit multiplier + an increment. So /*
guests > 64GB can be specified in 2MB steps etc. */ * The storage increment size is a multiple of 1M and is a power of 2.
while ((my_ram_size >> (20 + shift)) > 65535) { * The number of storage increments must be MAX_STORAGE_INCREMENTS or
shift++; * fewer.
*/
while ((my_ram_size >> increment_size) > MAX_STORAGE_INCREMENTS) {
increment_size++;
} }
my_ram_size = my_ram_size >> (20 + shift) << (20 + shift); my_ram_size = my_ram_size >> increment_size << increment_size;
/* let's propagate the changed ram size into the global variable. */ /* let's propagate the changed ram size into the global variable. */
ram_size = my_ram_size; ram_size = my_ram_size;