/* Execute a channel program on @cdev to release an existing PGID reservation. When finished, call ccw_device_stlck_done with a return code specifying the result.  */
void ccw_device_stlck_start(struct ccw_device *cdev, void *data, void *buf1, void *buf2)
/* Execute a channel program on @cdev to release an existing PGID reservation. When finished, call ccw_device_stlck_done with a return code specifying the result.  */
void ccw_device_stlck_start(struct ccw_device *cdev, void *data, void *buf1, void *buf2)
{
	struct subchannel *sch = to_subchannel(cdev->dev.parent);
	struct ccw_request *req = &cdev->private->req;
	CIO_TRACE_EVENT(4, "stlck");
	CIO_HEX_EVENT(4, &cdev->private->dev_id, sizeof(cdev->private->dev_id));
	memset(req, 0, sizeof(*req));
	req->timeout	= PGID_TIMEOUT;
	req->maxretries	= PGID_RETRIES;
	req->lpm	= sch->schib.pmcw.pam & sch->opm;
	req->data	= data;
	req->callback	= stlck_callback;
	stlck_build_cp(cdev, buf1, buf2);
	ccw_request_start(cdev);
}