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; > +} > +