diff options
Diffstat (limited to 'hw/s390x')
-rw-r--r-- | hw/s390x/ipl.c | 19 | ||||
-rw-r--r-- | hw/s390x/s390-skeys.c | 6 | ||||
-rw-r--r-- | hw/s390x/s390-virtio-ccw.c | 7 |
3 files changed, 18 insertions, 14 deletions
diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c index 3d2652d..ff6b55e 100644 --- a/hw/s390x/ipl.c +++ b/hw/s390x/ipl.c @@ -14,6 +14,7 @@ #include "qemu/osdep.h" #include "qemu-common.h" +#include "qemu/datadir.h" #include "qapi/error.h" #include "sysemu/reset.h" #include "sysemu/runstate.h" @@ -112,6 +113,7 @@ static uint64_t bios_translate_addr(void *opaque, uint64_t srcaddr) static void s390_ipl_realize(DeviceState *dev, Error **errp) { + MachineState *ms = MACHINE(qdev_get_machine()); S390IPLState *ipl = S390_IPL(dev); uint32_t *ipl_psw; uint64_t pentry; @@ -126,13 +128,9 @@ static void s390_ipl_realize(DeviceState *dev, Error **errp) * even if an external kernel has been defined. */ if (!ipl->kernel || ipl->enforce_bios) { - uint64_t fwbase = (MIN(ram_size, 0x80000000U) - 0x200000) & ~0xffffUL; + uint64_t fwbase = (MIN(ms->ram_size, 0x80000000U) - 0x200000) & ~0xffffUL; - if (bios_name == NULL) { - bios_name = ipl->firmware; - } - - bios_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); + bios_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, ipl->firmware); if (bios_filename == NULL) { error_setg(errp, "could not find stage1 bootloader"); return; @@ -154,7 +152,7 @@ static void s390_ipl_realize(DeviceState *dev, Error **errp) g_free(bios_filename); if (bios_size == -1) { - error_setg(errp, "could not load bootloader '%s'", bios_name); + error_setg(errp, "could not load bootloader '%s'", ipl->firmware); return; } @@ -167,7 +165,7 @@ static void s390_ipl_realize(DeviceState *dev, Error **errp) &pentry, NULL, NULL, NULL, 1, EM_S390, 0, 0); if (kernel_size < 0) { - kernel_size = load_image_targphys(ipl->kernel, 0, ram_size); + kernel_size = load_image_targphys(ipl->kernel, 0, ms->ram_size); if (kernel_size < 0) { error_setg(errp, "could not load kernel '%s'", ipl->kernel); return; @@ -214,7 +212,7 @@ static void s390_ipl_realize(DeviceState *dev, Error **errp) initrd_offset += 0x100000; } initrd_size = load_image_targphys(ipl->initrd, initrd_offset, - ram_size - initrd_offset); + ms->ram_size - initrd_offset); if (initrd_size == -1) { error_setg(errp, "could not load initrd '%s'", ipl->initrd); return; @@ -452,6 +450,7 @@ int s390_ipl_set_loadparm(uint8_t *loadparm) static int load_netboot_image(Error **errp) { + MachineState *ms = MACHINE(qdev_get_machine()); S390IPLState *ipl = get_ipl_device(); char *netboot_filename; MemoryRegion *sysmem = get_system_memory(); @@ -484,7 +483,7 @@ static int load_netboot_image(Error **errp) false); if (img_size < 0) { - img_size = load_image_size(netboot_filename, ram_ptr, ram_size); + img_size = load_image_size(netboot_filename, ram_ptr, ms->ram_size); ipl->start_addr = KERN_IMAGE_START; } diff --git a/hw/s390x/s390-skeys.c b/hw/s390x/s390-skeys.c index 5cc559f..9a8d60d 100644 --- a/hw/s390x/s390-skeys.c +++ b/hw/s390x/s390-skeys.c @@ -109,7 +109,8 @@ void qmp_dump_skeys(const char *filename, Error **errp) { S390SKeysState *ss = s390_get_skeys_device(); S390SKeysClass *skeyclass = S390_SKEYS_GET_CLASS(ss); - const uint64_t total_count = ram_size / TARGET_PAGE_SIZE; + MachineState *ms = MACHINE(qdev_get_machine()); + const uint64_t total_count = ms->ram_size / TARGET_PAGE_SIZE; uint64_t handled_count = 0, cur_count; Error *lerr = NULL; vaddr cur_gfn = 0; @@ -256,7 +257,8 @@ static void s390_storage_keys_save(QEMUFile *f, void *opaque) { S390SKeysState *ss = S390_SKEYS(opaque); S390SKeysClass *skeyclass = S390_SKEYS_GET_CLASS(ss); - uint64_t pages_left = ram_size / TARGET_PAGE_SIZE; + MachineState *ms = MACHINE(qdev_get_machine()); + uint64_t pages_left = ms->ram_size / TARGET_PAGE_SIZE; uint64_t read_count, eos = S390_SKEYS_SAVE_FLAG_EOS; vaddr cur_gfn = 0; int error = 0; diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index f0ee8da..a2d9a79 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -17,6 +17,7 @@ #include "hw/boards.h" #include "exec/address-spaces.h" #include "exec/ram_addr.h" +#include "hw/boards.h" #include "hw/s390x/s390-virtio-hcall.h" #include "hw/s390x/sclp.h" #include "hw/s390x/s390_flic.h" @@ -142,8 +143,9 @@ static int virtio_ccw_hcall_notify(const uint64_t *args) static int virtio_ccw_hcall_early_printk(const uint64_t *args) { uint64_t mem = args[0]; + MachineState *ms = MACHINE(qdev_get_machine()); - if (mem < ram_size) { + if (mem < ms->ram_size) { /* Early printk */ return 0; } @@ -259,7 +261,8 @@ static void ccw_init(MachineState *machine) /* get a BUS */ css_bus = virtual_css_bus_init(); s390_init_ipl_dev(machine->kernel_filename, machine->kernel_cmdline, - machine->initrd_filename, "s390-ccw.img", + machine->initrd_filename, + machine->firmware ?: "s390-ccw.img", "s390-netboot.img", true); dev = qdev_new(TYPE_S390_PCI_HOST_BRIDGE); |