Lines Matching +full:s390 +full:- +full:ccw
2 * virtio ccw machine
10 * your option) any later version. See the COPYING file in the top-level
17 #include "system/confidential-guest-support.h"
21 #include "virtio-ccw.h"
22 #include "qemu/config-file.h"
24 #include "qemu/error-report.h"
26 #include "qemu/qemu-print.h"
28 #include "hw/s390x/s390-pci-bus.h"
30 #include "hw/s390x/storage-keys.h"
31 #include "hw/s390x/storage-attributes.h"
32 #include "hw/s390x/event-facility.h"
34 #include "hw/s390x/s390-virtio-ccw.h"
35 #include "hw/s390x/css-bridge.h"
36 #include "hw/s390x/ap-bridge.h"
40 #include "hw/qdev-properties.h"
48 #include "hw/s390x/cpu-topology.h"
50 #include "hw/virtio/virtio-md-pci.h"
51 #include "hw/s390x/virtio-ccw-md.h"
63 if (!object_property_set_int(OBJECT(cpu), "core-id", core_id, errp)) { in s390x_new_cpu()
82 if (machine->smp.threads > s390mc->max_threads) { in s390_init_cpus()
83 error_report("S390 does not support more than %d threads.", in s390_init_cpus()
84 s390mc->max_threads); in s390_init_cpus()
89 mc->possible_cpu_arch_ids(machine); in s390_init_cpus()
91 for (i = 0; i < machine->smp.cpus; i++) { in s390_init_cpus()
92 s390x_new_cpu(machine->cpu_type, i, &error_fatal); in s390_init_cpus()
98 "s390-sclp-event-facility",
99 "s390-flic",
112 * occur during reset of the vfio-pci device (unmap of entire aperture). in subsystem_reset()
114 * but before vfio-pci cleanup occurs. in subsystem_reset()
135 assert(!s390ms->memory_limit && new_limit); in s390_set_memory_limit()
139 if (ret == -E2BIG) { in s390_set_memory_limit()
147 s390ms->memory_limit = new_limit; in s390_set_memory_limit()
153 assert(!s390ms->max_pagesize && pagesize); in s390_set_max_pagesize()
157 s390ms->max_pagesize = pagesize; in s390_set_max_pagesize()
164 MemoryRegion *ram = machine->ram; in s390_memory_init()
172 * region size directly corresponds to machine->ram_size, and the region in s390_memory_init()
182 if (machine->ram_size < machine->maxram_size) { in s390_memory_init()
189 devmem_size = machine->maxram_size - machine->ram_size; in s390_memory_init()
253 SCLPEventFacility *ef = sclp->event_facility; in s390_create_sclpconsole()
265 SCLPEventFacility *ef = sclp->event_facility; in s390_create_sclpcpi()
283 ms->sclp = SCLP(object_new(TYPE_SCLP)); in ccw_init()
284 object_property_add_child(OBJECT(machine), TYPE_SCLP, OBJECT(ms->sclp)); in ccw_init()
285 qdev_realize_and_unref(DEVICE(ms->sclp), NULL, &error_fatal); in ccw_init()
294 if (machine->cgs) { in ccw_init()
295 confidential_guest_kvm_init(machine->cgs, &error_fatal); in ccw_init()
308 s390_init_ipl_dev(machine->kernel_filename, machine->kernel_cmdline, in ccw_init()
309 machine->initrd_filename, in ccw_init()
310 machine->firmware ?: "s390-ccw.img", in ccw_init()
326 s390_create_virtio_net(BUS(css_bus), mc->default_nic); in ccw_init()
330 s390_create_sclpconsole(ms->sclp, "sclpconsole", serial_hd(0)); in ccw_init()
333 s390_create_sclpconsole(ms->sclp, "sclplmconsole", serial_hd(1)); in ccw_init()
339 /* init SCLP event Control-Program Identification */ in ccw_init()
340 if (s390mc->use_cpi) { in ccw_init()
341 s390_create_sclpcpi(ms->sclp); in ccw_init()
353 g_assert(!ms->possible_cpus->cpus[cpu->env.core_id].cpu); in s390_cpu_plug()
354 ms->possible_cpus->cpus[cpu->env.core_id].cpu = CPU(dev); in s390_cpu_plug()
363 if (dev->hotplugged) { in s390_cpu_plug()
381 ms->pv = false; in s390_machine_unprotect()
396 * guests either support it (e.g., virtio-balloon) or fail gracefully. in s390_machine_protect()
421 ms->pv = true; in s390_machine_protect()
483 * - All CPU threads are not running, either because the machine is being in s390_machine_reset()
486 * - A snapshot is about to be loaded. The record/replay state consistency in s390_machine_reset()
586 * Re-take the record/replay mutex, temporarily dropping the BQL in order in s390_machine_reset()
621 if (qemu_maxrampagesize() != s390ms->max_pagesize) { in s390_machine_device_plug()
662 const CPUArchIdList *possible_cpus = mc->possible_cpu_arch_ids(ms); in s390_cpu_index_to_props()
664 assert(cpu_index < possible_cpus->len); in s390_cpu_index_to_props()
665 return possible_cpus->cpus[cpu_index].props; in s390_cpu_index_to_props()
671 unsigned int max_cpus = ms->smp.max_cpus; in s390_possible_cpu_arch_ids()
673 if (ms->possible_cpus) { in s390_possible_cpu_arch_ids()
674 g_assert(ms->possible_cpus && ms->possible_cpus->len == max_cpus); in s390_possible_cpu_arch_ids()
675 return ms->possible_cpus; in s390_possible_cpu_arch_ids()
678 ms->possible_cpus = g_malloc0(sizeof(CPUArchIdList) + in s390_possible_cpu_arch_ids()
680 ms->possible_cpus->len = max_cpus; in s390_possible_cpu_arch_ids()
681 for (i = 0; i < ms->possible_cpus->len; i++) { in s390_possible_cpu_arch_ids()
682 CpuInstanceProperties *props = &ms->possible_cpus->cpus[i].props; in s390_possible_cpu_arch_ids()
684 ms->possible_cpus->cpus[i].type = ms->cpu_type; in s390_possible_cpu_arch_ids()
685 ms->possible_cpus->cpus[i].vcpus_count = 1; in s390_possible_cpu_arch_ids()
686 ms->possible_cpus->cpus[i].arch_id = i; in s390_possible_cpu_arch_ids()
688 props->has_core_id = true; in s390_possible_cpu_arch_ids()
689 props->core_id = i; in s390_possible_cpu_arch_ids()
690 props->has_socket_id = true; in s390_possible_cpu_arch_ids()
691 props->socket_id = s390_std_socket(i, &ms->smp); in s390_possible_cpu_arch_ids()
692 props->has_book_id = true; in s390_possible_cpu_arch_ids()
693 props->book_id = s390_std_book(i, &ms->smp); in s390_possible_cpu_arch_ids()
694 props->has_drawer_id = true; in s390_possible_cpu_arch_ids()
695 props->drawer_id = s390_std_drawer(i, &ms->smp); in s390_possible_cpu_arch_ids()
698 return ms->possible_cpus; in s390_possible_cpu_arch_ids()
743 return ms->aes_key_wrap; in machine_get_aes_key_wrap()
751 ms->aes_key_wrap = value; in machine_set_aes_key_wrap()
758 return ms->dea_key_wrap; in machine_get_dea_key_wrap()
766 ms->dea_key_wrap = value; in machine_set_dea_key_wrap()
774 char *str = g_strndup((char *) ms->loadparm, sizeof(ms->loadparm)); in machine_get_loadparm()
791 s390_ipl_fmt_loadparm(ms->loadparm, val, errp); in machine_set_loadparm()
803 s390mc->max_threads = 1; in ccw_machine_class_init()
804 s390mc->use_cpi = true; in ccw_machine_class_init()
805 mc->reset = s390_machine_reset; in ccw_machine_class_init()
806 mc->block_default_type = IF_VIRTIO; in ccw_machine_class_init()
807 mc->no_cdrom = 1; in ccw_machine_class_init()
808 mc->no_floppy = 1; in ccw_machine_class_init()
809 mc->no_parallel = 1; in ccw_machine_class_init()
810 mc->max_cpus = S390_MAX_CPUS; in ccw_machine_class_init()
811 mc->has_hotpluggable_cpus = true; in ccw_machine_class_init()
812 mc->smp_props.books_supported = true; in ccw_machine_class_init()
813 mc->smp_props.drawers_supported = true; in ccw_machine_class_init()
814 assert(!mc->get_hotplug_handler); in ccw_machine_class_init()
815 mc->get_hotplug_handler = s390_get_hotplug_handler; in ccw_machine_class_init()
816 mc->cpu_index_to_instance_props = s390_cpu_index_to_props; in ccw_machine_class_init()
817 mc->possible_cpu_arch_ids = s390_possible_cpu_arch_ids; in ccw_machine_class_init()
819 mc->default_cpu_type = S390_CPU_TYPE_NAME("qemu"); in ccw_machine_class_init()
820 hc->pre_plug = s390_machine_device_pre_plug; in ccw_machine_class_init()
821 hc->plug = s390_machine_device_plug; in ccw_machine_class_init()
822 hc->unplug_request = s390_machine_device_unplug_request; in ccw_machine_class_init()
823 hc->unplug = s390_machine_device_unplug; in ccw_machine_class_init()
824 nc->nmi_monitor_handler = s390_nmi; in ccw_machine_class_init()
825 mc->default_ram_id = "s390.ram"; in ccw_machine_class_init()
826 mc->default_nic = "virtio-net-ccw"; in ccw_machine_class_init()
827 dsi->qmp_dump_skeys = s390_qmp_dump_skeys; in ccw_machine_class_init()
829 object_class_property_add_bool(oc, "aes-key-wrap", in ccw_machine_class_init()
832 object_class_property_set_description(oc, "aes-key-wrap", in ccw_machine_class_init()
835 object_class_property_add_bool(oc, "dea-key-wrap", in ccw_machine_class_init()
838 object_class_property_set_description(oc, "dea-key-wrap", in ccw_machine_class_init()
845 "Up to 8 chars in set of [A-Za-z0-9. ] (lower case chars converted" in ccw_machine_class_init()
854 ms->aes_key_wrap = true; in s390_machine_initfn()
855 ms->dea_key_wrap = true; in s390_machine_initfn()
875 static void MACHINE_VER_SYM(mach_init, ccw, __VA_ARGS__)(MachineState *mach) \
877 MACHINE_VER_SYM(instance_options, ccw, __VA_ARGS__)(mach); \
880 static void MACHINE_VER_SYM(class_init, ccw, __VA_ARGS__)( \
885 MACHINE_VER_SYM(class_options, ccw, __VA_ARGS__)(mc); \
886 mc->desc = "Virtual s390x machine (version " MACHINE_VER_STR(__VA_ARGS__) ")"; \
887 mc->init = MACHINE_VER_SYM(mach_init, ccw, __VA_ARGS__); \
890 mc->alias = "s390-ccw-virtio"; \
891 mc->is_default = true; \
894 static const TypeInfo MACHINE_VER_SYM(info, ccw, __VA_ARGS__) = \
896 .name = MACHINE_VER_TYPE_NAME("s390-ccw-virtio", __VA_ARGS__), \
898 .class_init = MACHINE_VER_SYM(class_init, ccw, __VA_ARGS__), \
900 static void MACHINE_VER_SYM(register, ccw, __VA_ARGS__)(void) \
903 type_register_static(&MACHINE_VER_SYM(info, ccw, __VA_ARGS__)); \
905 type_init(MACHINE_VER_SYM(register, ccw, __VA_ARGS__))
931 s390mc->use_cpi = false; in ccw_machine_10_0_class_options()
934 compat_props_add(mc->compat_props, hw_compat_10_0, hw_compat_10_0_len); in ccw_machine_10_0_class_options()
946 { TYPE_S390_PCI_DEVICE, "relaxed-translation", "off", }, in ccw_machine_9_2_class_options()
950 compat_props_add(mc->compat_props, hw_compat_9_2, hw_compat_9_2_len); in ccw_machine_9_2_class_options()
951 compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat)); in ccw_machine_9_2_class_options()
963 compat_props_add(mc->compat_props, hw_compat_9_1, hw_compat_9_1_len); in ccw_machine_9_1_class_options()
975 { TYPE_QEMU_S390_FLIC, "migrate-all-state", "off", }, in ccw_machine_9_0_class_options()
979 compat_props_add(mc->compat_props, hw_compat_9_0, hw_compat_9_0_len); in ccw_machine_9_0_class_options()
980 compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat)); in ccw_machine_9_0_class_options()
992 compat_props_add(mc->compat_props, hw_compat_8_2, hw_compat_8_2_len); in ccw_machine_8_2_class_options()
1004 compat_props_add(mc->compat_props, hw_compat_8_1, hw_compat_8_1_len); in ccw_machine_8_1_class_options()
1005 mc->smp_props.drawers_supported = false; in ccw_machine_8_1_class_options()
1006 mc->smp_props.books_supported = false; in ccw_machine_8_1_class_options()
1018 compat_props_add(mc->compat_props, hw_compat_8_0, hw_compat_8_0_len); in ccw_machine_8_0_class_options()
1030 compat_props_add(mc->compat_props, hw_compat_7_2, hw_compat_7_2_len); in ccw_machine_7_2_class_options()
1048 { TYPE_S390_PCI_DEVICE, "forwarding-assist", "off", }, in ccw_machine_7_1_class_options()
1052 compat_props_add(mc->compat_props, hw_compat_7_1, hw_compat_7_1_len); in ccw_machine_7_1_class_options()
1053 compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat)); in ccw_machine_7_1_class_options()
1054 s390mc->max_threads = S390_MAX_CPUS; in ccw_machine_7_1_class_options()
1069 compat_props_add(mc->compat_props, hw_compat_7_0, hw_compat_7_0_len); in ccw_machine_7_0_class_options()
1084 compat_props_add(mc->compat_props, hw_compat_6_2, hw_compat_6_2_len); in ccw_machine_6_2_class_options()
1101 compat_props_add(mc->compat_props, hw_compat_6_1, hw_compat_6_1_len); in ccw_machine_6_1_class_options()
1102 mc->smp_props.prefer_sockets = true; in ccw_machine_6_1_class_options()
1117 compat_props_add(mc->compat_props, hw_compat_6_0, hw_compat_6_0_len); in ccw_machine_6_0_class_options()
1129 compat_props_add(mc->compat_props, hw_compat_5_2, hw_compat_5_2_len); in ccw_machine_5_2_class_options()
1141 compat_props_add(mc->compat_props, hw_compat_5_1, hw_compat_5_1_len); in ccw_machine_5_1_class_options()
1153 compat_props_add(mc->compat_props, hw_compat_5_0, hw_compat_5_0_len); in ccw_machine_5_0_class_options()
1165 mc->fixup_ram_size = s390_fixup_ram_size; in ccw_machine_4_2_class_options()
1166 compat_props_add(mc->compat_props, hw_compat_4_2, hw_compat_4_2_len); in ccw_machine_4_2_class_options()