s390x: initialize virtio dev region
When running the s390x virtio machine we can potentially use uninitialized memory for the virtio device backing ram. That can lead to weird breakge. So let's better initialize it to 0 properly. Reported-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Alexander Graf <agraf@suse.de> --- v1 -> v2: - use target_phys_addr_t
This commit is contained in:
parent
2a534aff30
commit
326384d5b6
@ -165,6 +165,9 @@ static void s390_init(ram_addr_t my_ram_size,
|
|||||||
ram_addr_t initrd_size = 0;
|
ram_addr_t initrd_size = 0;
|
||||||
int shift = 0;
|
int shift = 0;
|
||||||
uint8_t *storage_keys;
|
uint8_t *storage_keys;
|
||||||
|
void *virtio_region;
|
||||||
|
target_phys_addr_t virtio_region_len;
|
||||||
|
target_phys_addr_t virtio_region_start;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* s390x ram size detection needs a 16bit multiplier + an increment. So
|
/* s390x ram size detection needs a 16bit multiplier + an increment. So
|
||||||
@ -184,6 +187,15 @@ static void s390_init(ram_addr_t my_ram_size,
|
|||||||
memory_region_init_ram(ram, NULL, "s390.ram", my_ram_size);
|
memory_region_init_ram(ram, NULL, "s390.ram", my_ram_size);
|
||||||
memory_region_add_subregion(sysmem, 0, ram);
|
memory_region_add_subregion(sysmem, 0, ram);
|
||||||
|
|
||||||
|
/* clear virtio region */
|
||||||
|
virtio_region_len = my_ram_size - ram_size;
|
||||||
|
virtio_region_start = ram_size;
|
||||||
|
virtio_region = cpu_physical_memory_map(virtio_region_start,
|
||||||
|
&virtio_region_len, true);
|
||||||
|
memset(virtio_region, 0, virtio_region_len);
|
||||||
|
cpu_physical_memory_unmap(virtio_region, virtio_region_len, 1,
|
||||||
|
virtio_region_len);
|
||||||
|
|
||||||
/* allocate storage keys */
|
/* allocate storage keys */
|
||||||
storage_keys = g_malloc0(my_ram_size / TARGET_PAGE_SIZE);
|
storage_keys = g_malloc0(my_ram_size / TARGET_PAGE_SIZE);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user