On 11/08/2017 05:54 PM, Halil Pasic wrote:
> +/* TODO This is the out-of-band variant. We may want to get rid of it */
> +static int set_mode_diag(const uint64_t *args)
> +{
> + uint64_t subch_id = args[0];
> + uint64_t op_mode = args[1];
> + SubchDev *sch;
> + CcwTestDevDevice *dev;
> + int cssid, ssid, schid, m;
> +
> + if (ioinst_disassemble_sch_ident(subch_id, &m, &cssid, &ssid, &schid)) {
> + return -EINVAL;
> + }
> + sch = css_find_subch(m, cssid, ssid, schid);
> + if (!sch || !css_subch_visible(sch)) {
> + return -EINVAL;
> + }
> + dev = CCW_TESTDEV(sch->driver_data);
> + if (dev->op_mode_locked) {
> + return op_mode == dev->op_mode ? 0 : -EINVAL;
> + }
Should probably do validation on op_mode here.
> + dev->op_mode = op_mode;
> + sch->ccw_cb = get_ccw_cb(dev->op_mode);
> + return 0;
> +}
> +