diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2017-10-30 13:02:45 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2017-10-30 13:02:45 +0000 |
commit | abf6e752e55b2f5afb48303429dea2db7c3a62de (patch) | |
tree | 7b3e5988befbe144847239291fdd8104bdd06008 | |
parent | 21dab18b53f37664c2046c5bba91b416705ccdf1 (diff) | |
parent | 7a4ec18d117d74eedccdadca882331b928135465 (diff) |
Merge remote-tracking branch 'remotes/borntraeger/tags/s390x-20171030' into staging
s390x: fixups for 2.11
- missing \r in the BIOS console output
- CPU type name is now "s390x-cpu"
- fixup for the host-model on z14 and older machine versions
# gpg: Signature made Mon 30 Oct 2017 08:34:15 GMT
# gpg: using RSA key 0x117BBC80B5A61C7C
# gpg: Good signature from "Christian Borntraeger (IBM) <borntraeger@de.ibm.com>"
# Primary key fingerprint: F922 9381 A334 08F9 DBAB FBCA 117B BC80 B5A6 1C7C
* remotes/borntraeger/tags/s390x-20171030:
s390-*.img: update s390 bios with latest fixes
s390-ccw: print carriage return with new lines
s390x/kvm: use cpu model for gscb on compat machines
target/s390x: change CPU type name to "s390x-cpu"
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | hw/s390x/s390-virtio-ccw.c | 8 | ||||
-rw-r--r-- | include/hw/s390x/s390-virtio-ccw.h | 3 | ||||
-rw-r--r-- | pc-bios/s390-ccw.img | bin | 26416 -> 30520 bytes | |||
-rw-r--r-- | pc-bios/s390-ccw/sclp.c | 24 | ||||
-rwxr-xr-x | pc-bios/s390-netboot.img | bin | 83864 -> 83864 bytes | |||
-rw-r--r-- | qapi-schema.json | 4 | ||||
-rw-r--r-- | target/s390x/cpu-qom.h | 2 | ||||
-rw-r--r-- | target/s390x/cpu_models.c | 4 | ||||
-rw-r--r-- | target/s390x/kvm.c | 2 | ||||
-rw-r--r-- | target/s390x/machine.c | 2 |
10 files changed, 28 insertions, 21 deletions
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index baeafdcb1c..6a57f94197 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -432,7 +432,6 @@ static void ccw_machine_class_init(ObjectClass *oc, void *data) s390mc->ri_allowed = true; s390mc->cpu_model_allowed = true; s390mc->css_migration_enabled = true; - s390mc->gs_allowed = true; mc->init = ccw_init; mc->reset = s390_machine_reset; mc->hot_add_cpu = s390_hot_add_cpu; @@ -513,12 +512,6 @@ bool cpu_model_allowed(void) return get_machine_class()->cpu_model_allowed; } -bool gs_allowed(void) -{ - /* for "none" machine this results in true */ - return get_machine_class()->gs_allowed; -} - static char *machine_get_loadparm(Object *obj, Error **errp) { S390CcwMachineState *ms = S390_CCW_MACHINE(obj); @@ -758,7 +751,6 @@ static void ccw_machine_2_9_class_options(MachineClass *mc) { S390CcwMachineClass *s390mc = S390_MACHINE_CLASS(mc); - s390mc->gs_allowed = false; ccw_machine_2_10_class_options(mc); SET_MACHINE_COMPAT(mc, CCW_COMPAT_2_9); s390mc->css_migration_enabled = false; diff --git a/include/hw/s390x/s390-virtio-ccw.h b/include/hw/s390x/s390-virtio-ccw.h index a9a90c2022..ac896e31ea 100644 --- a/include/hw/s390x/s390-virtio-ccw.h +++ b/include/hw/s390x/s390-virtio-ccw.h @@ -40,15 +40,12 @@ typedef struct S390CcwMachineClass { bool ri_allowed; bool cpu_model_allowed; bool css_migration_enabled; - bool gs_allowed; } S390CcwMachineClass; /* runtime-instrumentation allowed by the machine */ bool ri_allowed(void); /* cpu model allowed by the machine */ bool cpu_model_allowed(void); -/* guarded-storage allowed by the machine */ -bool gs_allowed(void); /** * Returns true if (vmstate based) migration of the channel subsystem diff --git a/pc-bios/s390-ccw.img b/pc-bios/s390-ccw.img Binary files differindex 0b039291a5..75b604e3ce 100644 --- a/pc-bios/s390-ccw.img +++ b/pc-bios/s390-ccw.img diff --git a/pc-bios/s390-ccw/sclp.c b/pc-bios/s390-ccw/sclp.c index b1fc8ff44b..90d1bc3147 100644 --- a/pc-bios/s390-ccw/sclp.c +++ b/pc-bios/s390-ccw/sclp.c @@ -76,17 +76,35 @@ static int _strlen(const char *str) long write(int fd, const void *str, size_t len) { WriteEventData *sccb = (void *)_sccb; + const char *p = str; + size_t data_len = 0; + size_t i; if (fd != 1 && fd != 2) { return -EIO; } - sccb->h.length = sizeof(WriteEventData) + len; + for (i = 0; i < len; i++) { + if ((data_len + 1) >= SCCB_DATA_LEN) { + /* We would overflow the sccb buffer, abort early */ + len = i; + break; + } + + if (*p == '\n') { + /* Terminal emulators might need \r\n, so generate it */ + sccb->data[data_len++] = '\r'; + } + + sccb->data[data_len++] = *p; + p++; + } + + sccb->h.length = sizeof(WriteEventData) + data_len; sccb->h.function_code = SCLP_FC_NORMAL_WRITE; - sccb->ebh.length = sizeof(EventBufferHeader) + len; + sccb->ebh.length = sizeof(EventBufferHeader) + data_len; sccb->ebh.type = SCLP_EVENT_ASCII_CONSOLE_DATA; sccb->ebh.flags = 0; - memcpy(sccb->data, str, len); sclp_service_call(SCLP_CMD_WRITE_EVENT_DATA, sccb); diff --git a/pc-bios/s390-netboot.img b/pc-bios/s390-netboot.img Binary files differindex 295ddfcf6a..24f40feae6 100755 --- a/pc-bios/s390-netboot.img +++ b/pc-bios/s390-netboot.img diff --git a/qapi-schema.json b/qapi-schema.json index a9dd043f65..18457954a8 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -3159,12 +3159,12 @@ # -> { "execute": "query-hotpluggable-cpus" } # <- {"return": [ # { -# "type": "qemu-s390-cpu", "vcpus-count": 1, +# "type": "qemu-s390x-cpu", "vcpus-count": 1, # "props": { "core-id": 1 } # }, # { # "qom-path": "/machine/unattached/device[0]", -# "type": "qemu-s390-cpu", "vcpus-count": 1, +# "type": "qemu-s390x-cpu", "vcpus-count": 1, # "props": { "core-id": 0 } # } # ]} diff --git a/target/s390x/cpu-qom.h b/target/s390x/cpu-qom.h index 0510c49e07..b46217dc31 100644 --- a/target/s390x/cpu-qom.h +++ b/target/s390x/cpu-qom.h @@ -22,7 +22,7 @@ #include "qom/cpu.h" -#define TYPE_S390_CPU "s390-cpu" +#define TYPE_S390_CPU "s390x-cpu" #define S390_CPU_CLASS(klass) \ OBJECT_CLASS_CHECK(S390CPUClass, (klass), TYPE_S390_CPU) diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c index 9554f19eb4..c4c37b3b15 100644 --- a/target/s390x/cpu_models.c +++ b/target/s390x/cpu_models.c @@ -286,7 +286,7 @@ static void s390_print_cpu_model_list_entry(gpointer data, gpointer user_data) details = "(migration-safe)"; } - /* strip off the -s390-cpu */ + /* strip off the -s390x-cpu */ g_strrstr(name, "-" TYPE_S390_CPU)[0] = 0; (*s->cpu_fprintf)(s->file, "s390 %-15s %-35s %s\n", name, scc->desc, details); @@ -390,7 +390,7 @@ static void create_cpu_model_list(ObjectClass *klass, void *opaque) char *name = g_strdup(object_class_get_name(klass)); S390CPUClass *scc = S390_CPU_CLASS(klass); - /* strip off the -s390-cpu */ + /* strip off the -s390x-cpu */ g_strrstr(name, "-" TYPE_S390_CPU)[0] = 0; info = g_new0(CpuDefinitionInfo, 1); info->name = name; diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c index 88f27d75b9..b03f583032 100644 --- a/target/s390x/kvm.c +++ b/target/s390x/kvm.c @@ -306,7 +306,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) cap_ri = 1; } } - if (gs_allowed()) { + if (cpu_model_allowed()) { if (kvm_vm_enable_cap(s, KVM_CAP_S390_GS, 0) == 0) { cap_gs = 1; } diff --git a/target/s390x/machine.c b/target/s390x/machine.c index e1b7015d20..b78f326d3a 100644 --- a/target/s390x/machine.c +++ b/target/s390x/machine.c @@ -180,7 +180,7 @@ const VMStateDescription vmstate_exval = { static bool gscb_needed(void *opaque) { - return kvm_s390_get_gs(); + return s390_has_feat(S390_FEAT_GUARDED_STORAGE); } const VMStateDescription vmstate_gscb = { |