Commit d0092d90 authored by Peter Maydell's avatar Peter Maydell
Browse files

Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20180820' into staging



First round of s390x patches for 3.1:
- add compat machine for 3.1
- remove deprecated 's390-squash-mcss' option
- cpu models: add "max" cpu model, enhance feature group code
- kvm: add support for etoken facility and huge page backing

# gpg: Signature made Mon 20 Aug 2018 13:47:38 BST
# gpg:                using RSA key DECF6B93C6F02FAF
# gpg: Good signature from "Cornelia Huck <conny@cornelia-huck.de>"
# gpg:                 aka "Cornelia Huck <huckc@linux.vnet.ibm.com>"
# gpg:                 aka "Cornelia Huck <cornelia.huck@de.ibm.com>"
# gpg:                 aka "Cornelia Huck <cohuck@kernel.org>"
# gpg:                 aka "Cornelia Huck <cohuck@redhat.com>"
# Primary key fingerprint: C3D0 D66D C362 4FF6 A8C0  18CE DECF 6B93 C6F0 2FAF

* remotes/cohuck/tags/s390x-20180820:
  s390x: Enable KVM huge page backing support
  s390x/kvm: add etoken facility
  linux-headers: update
  s390x/cpumodel: Add "-cpu max" support
  s390x: remove 's390-squash-mcss' option
  s390x/cpumodel: enum type S390FeatGroup now gets generated
  s390x: introduce 3.1 compat machine

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parents 44b69d50 09c6c754
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -98,13 +98,10 @@ static void emulated_ccw_3270_realize(DeviceState *ds, Error **errp)
    EmulatedCcw3270Class *ck = EMULATED_CCW_3270_GET_CLASS(dev);
    CcwDevice *cdev = CCW_DEVICE(ds);
    CCWDeviceClass *cdk = CCW_DEVICE_GET_CLASS(cdev);
    DeviceState *parent = DEVICE(cdev);
    BusState *qbus = qdev_get_parent_bus(parent);
    VirtualCssBus *cbus = VIRTUAL_CSS_BUS(qbus);
    SubchDev *sch;
    Error *err = NULL;

    sch = css_create_sch(cdev->devno, cbus->squash_mcss, errp);
    sch = css_create_sch(cdev->devno, errp);
    if (!sch) {
        return;
    }
+0 −1
Original line number Diff line number Diff line
@@ -106,7 +106,6 @@ VirtualCssBus *virtual_css_bus_init(void)
    /* Create bus on bridge device */
    bus = qbus_create(TYPE_VIRTUAL_CSS_BUS, dev, "virtual-css");
    cbus = VIRTUAL_CSS_BUS(bus);
    cbus->squash_mcss = s390_get_squash_mcss();

    /* Enable hotplugging */
    qbus_set_hotplug_handler(bus, dev, &error_abort);
+2 −4
Original line number Diff line number Diff line
@@ -2359,15 +2359,13 @@ const PropertyInfo css_devid_ro_propinfo = {
    .get = get_css_devid,
};

SubchDev *css_create_sch(CssDevId bus_id, bool squash_mcss, Error **errp)
SubchDev *css_create_sch(CssDevId bus_id, Error **errp)
{
    uint16_t schid = 0;
    SubchDev *sch;

    if (bus_id.valid) {
        if (squash_mcss) {
            bus_id.cssid = channel_subsys.default_cssid;
        } else if (!channel_subsys.css[bus_id.cssid]) {
        if (!channel_subsys.css[bus_id.cssid]) {
            css_create_css_image(bus_id.cssid, false);
        }

+1 −3
Original line number Diff line number Diff line
@@ -67,8 +67,6 @@ static void s390_ccw_realize(S390CCWDevice *cdev, char *sysfsdev, Error **errp)
    CcwDevice *ccw_dev = CCW_DEVICE(cdev);
    CCWDeviceClass *ck = CCW_DEVICE_GET_CLASS(ccw_dev);
    DeviceState *parent = DEVICE(ccw_dev);
    BusState *qbus = qdev_get_parent_bus(parent);
    VirtualCssBus *cbus = VIRTUAL_CSS_BUS(qbus);
    SubchDev *sch;
    int ret;
    Error *err = NULL;
@@ -78,7 +76,7 @@ static void s390_ccw_realize(S390CCWDevice *cdev, char *sysfsdev, Error **errp)
        goto out_err_propagate;
    }

    sch = css_create_sch(ccw_dev->devno, cbus->squash_mcss, &err);
    sch = css_create_sch(ccw_dev->devno, &err);
    if (!sch) {
        goto out_mdevid_free;
    }
+18 −36
Original line number Diff line number Diff line
@@ -282,19 +282,8 @@ static void ccw_init(MachineState *machine)
    virtio_ccw_register_hcalls();

    s390_enable_css_support(s390_cpu_addr2state(0));
    /*
     * Non mcss-e enabled guests only see the devices from the default
     * css, which is determined by the value of the squash_mcss property.
     */
    if (css_bus->squash_mcss) {
        ret = css_create_css_image(0, true);
    } else {

    ret = css_create_css_image(VIRTUAL_CSSID, true);
    }
    if (qemu_opt_get(qemu_get_machine_opts(), "s390-squash-mcss")) {
        warn_report("The machine property 's390-squash-mcss' is deprecated"
                    " (obsoleted by lifting the cssid restrictions).");
    }

    assert(ret == 0);
    if (css_migration_enabled()) {
@@ -575,21 +564,6 @@ static void machine_set_loadparm(Object *obj, const char *val, Error **errp)
        ms->loadparm[i] = ' '; /* pad right with spaces */
    }
}
static inline bool machine_get_squash_mcss(Object *obj, Error **errp)
{
    S390CcwMachineState *ms = S390_CCW_MACHINE(obj);

    return ms->s390_squash_mcss;
}

static inline void machine_set_squash_mcss(Object *obj, bool value,
                                           Error **errp)
{
    S390CcwMachineState *ms = S390_CCW_MACHINE(obj);

    ms->s390_squash_mcss = value;
}

static inline void s390_machine_initfn(Object *obj)
{
    object_property_add_bool(obj, "aes-key-wrap",
@@ -614,13 +588,6 @@ static inline void s390_machine_initfn(Object *obj)
            " to upper case) to pass to machine loader, boot manager,"
            " and guest kernel",
            NULL);
    object_property_add_bool(obj, "s390-squash-mcss",
                             machine_get_squash_mcss,
                             machine_set_squash_mcss, NULL);
    object_property_set_description(obj, "s390-squash-mcss", "(deprecated) "
            "enable/disable squashing subchannels into the default css",
            NULL);
    object_property_set_bool(obj, false, "s390-squash-mcss", NULL);
}

static const TypeInfo ccw_machine_info = {
@@ -673,6 +640,9 @@ bool css_migration_enabled(void)
    }                                                                         \
    type_init(ccw_machine_register_##suffix)

#define CCW_COMPAT_3_0 \
        HW_COMPAT_3_0

#define CCW_COMPAT_2_12 \
        HW_COMPAT_2_12

@@ -761,14 +731,26 @@ bool css_migration_enabled(void)
            .value    = "0",\
        },

static void ccw_machine_3_1_instance_options(MachineState *machine)
{
}

static void ccw_machine_3_1_class_options(MachineClass *mc)
{
}
DEFINE_CCW_MACHINE(3_1, "3.1", true);

static void ccw_machine_3_0_instance_options(MachineState *machine)
{
    ccw_machine_3_1_instance_options(machine);
}

static void ccw_machine_3_0_class_options(MachineClass *mc)
{
    ccw_machine_3_1_class_options(mc);
    SET_MACHINE_COMPAT(mc, CCW_COMPAT_3_0);
}
DEFINE_CCW_MACHINE(3_0, "3.0", true);
DEFINE_CCW_MACHINE(3_0, "3.0", false);

static void ccw_machine_2_12_instance_options(MachineState *machine)
{
Loading