Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4f6e01f3 authored by Julian Wiedmann's avatar Julian Wiedmann Committed by David S. Miller
Browse files

s390/ctcm: don't use intparm for channel IO



ctcm passes an intparm when calling ccw_device_*(), even though
ctcm_irq_handler() later makes no use of this.

To reduce the confusion, consistently pass 0 as intparm instead.

Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: default avatarSebastian Ott <sebott@linux.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 59b757a9
Loading
Loading
Loading
Loading
+16 −26
Original line number Original line Diff line number Diff line
@@ -307,8 +307,7 @@ static void chx_txdone(fsm_instance *fi, int event, void *arg)
		ch->ccw[1].count = ch->trans_skb->len;
		ch->ccw[1].count = ch->trans_skb->len;
		fsm_addtimer(&ch->timer, CTCM_TIME_5_SEC, CTC_EVENT_TIMER, ch);
		fsm_addtimer(&ch->timer, CTCM_TIME_5_SEC, CTC_EVENT_TIMER, ch);
		ch->prof.send_stamp = jiffies;
		ch->prof.send_stamp = jiffies;
		rc = ccw_device_start(ch->cdev, &ch->ccw[0],
		rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0);
						(unsigned long)ch, 0xff, 0);
		ch->prof.doios_multi++;
		ch->prof.doios_multi++;
		if (rc != 0) {
		if (rc != 0) {
			priv->stats.tx_dropped += i;
			priv->stats.tx_dropped += i;
@@ -417,8 +416,7 @@ static void chx_rx(fsm_instance *fi, int event, void *arg)
	if (ctcm_checkalloc_buffer(ch))
	if (ctcm_checkalloc_buffer(ch))
		return;
		return;
	ch->ccw[1].count = ch->max_bufsize;
	ch->ccw[1].count = ch->max_bufsize;
	rc = ccw_device_start(ch->cdev, &ch->ccw[0],
	rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0);
					(unsigned long)ch, 0xff, 0);
	if (rc != 0)
	if (rc != 0)
		ctcm_ccw_check_rc(ch, rc, "normal RX");
		ctcm_ccw_check_rc(ch, rc, "normal RX");
}
}
@@ -478,8 +476,7 @@ static void chx_firstio(fsm_instance *fi, int event, void *arg)


	fsm_newstate(fi, (CHANNEL_DIRECTION(ch->flags) == CTCM_READ)
	fsm_newstate(fi, (CHANNEL_DIRECTION(ch->flags) == CTCM_READ)
		     ? CTC_STATE_RXINIT : CTC_STATE_TXINIT);
		     ? CTC_STATE_RXINIT : CTC_STATE_TXINIT);
	rc = ccw_device_start(ch->cdev, &ch->ccw[0],
	rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0);
					(unsigned long)ch, 0xff, 0);
	if (rc != 0) {
	if (rc != 0) {
		fsm_deltimer(&ch->timer);
		fsm_deltimer(&ch->timer);
		fsm_newstate(fi, CTC_STATE_SETUPWAIT);
		fsm_newstate(fi, CTC_STATE_SETUPWAIT);
@@ -527,8 +524,7 @@ static void chx_rxidle(fsm_instance *fi, int event, void *arg)
			return;
			return;
		ch->ccw[1].count = ch->max_bufsize;
		ch->ccw[1].count = ch->max_bufsize;
		fsm_newstate(fi, CTC_STATE_RXIDLE);
		fsm_newstate(fi, CTC_STATE_RXIDLE);
		rc = ccw_device_start(ch->cdev, &ch->ccw[0],
		rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0);
						(unsigned long)ch, 0xff, 0);
		if (rc != 0) {
		if (rc != 0) {
			fsm_newstate(fi, CTC_STATE_RXINIT);
			fsm_newstate(fi, CTC_STATE_RXINIT);
			ctcm_ccw_check_rc(ch, rc, "initial RX");
			ctcm_ccw_check_rc(ch, rc, "initial RX");
@@ -571,8 +567,7 @@ static void ctcm_chx_setmode(fsm_instance *fi, int event, void *arg)
			/* Such conditional locking is undeterministic in
			/* Such conditional locking is undeterministic in
			 * static view. => ignore sparse warnings here. */
			 * static view. => ignore sparse warnings here. */


	rc = ccw_device_start(ch->cdev, &ch->ccw[6],
	rc = ccw_device_start(ch->cdev, &ch->ccw[6], 0, 0xff, 0);
					(unsigned long)ch, 0xff, 0);
	if (event == CTC_EVENT_TIMER)	/* see above comments */
	if (event == CTC_EVENT_TIMER)	/* see above comments */
		spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
		spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
	if (rc != 0) {
	if (rc != 0) {
@@ -637,7 +632,7 @@ static void ctcm_chx_start(fsm_instance *fi, int event, void *arg)
	fsm_newstate(fi, CTC_STATE_STARTWAIT);
	fsm_newstate(fi, CTC_STATE_STARTWAIT);
	fsm_addtimer(&ch->timer, 1000, CTC_EVENT_TIMER, ch);
	fsm_addtimer(&ch->timer, 1000, CTC_EVENT_TIMER, ch);
	spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
	spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
	rc = ccw_device_halt(ch->cdev, (unsigned long)ch);
	rc = ccw_device_halt(ch->cdev, 0);
	spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
	spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
	if (rc != 0) {
	if (rc != 0) {
		if (rc != -EBUSY)
		if (rc != -EBUSY)
@@ -672,7 +667,7 @@ static void ctcm_chx_haltio(fsm_instance *fi, int event, void *arg)
			 * static view. => ignore sparse warnings here. */
			 * static view. => ignore sparse warnings here. */
	oldstate = fsm_getstate(fi);
	oldstate = fsm_getstate(fi);
	fsm_newstate(fi, CTC_STATE_TERM);
	fsm_newstate(fi, CTC_STATE_TERM);
	rc = ccw_device_halt(ch->cdev, (unsigned long)ch);
	rc = ccw_device_halt(ch->cdev, 0);


	if (event == CTC_EVENT_STOP)
	if (event == CTC_EVENT_STOP)
		spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
		spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
@@ -799,7 +794,7 @@ static void ctcm_chx_setuperr(fsm_instance *fi, int event, void *arg)
		fsm_addtimer(&ch->timer, CTCM_TIME_5_SEC, CTC_EVENT_TIMER, ch);
		fsm_addtimer(&ch->timer, CTCM_TIME_5_SEC, CTC_EVENT_TIMER, ch);
		if (!IS_MPC(ch) &&
		if (!IS_MPC(ch) &&
		    (CHANNEL_DIRECTION(ch->flags) == CTCM_READ)) {
		    (CHANNEL_DIRECTION(ch->flags) == CTCM_READ)) {
			int rc = ccw_device_halt(ch->cdev, (unsigned long)ch);
			int rc = ccw_device_halt(ch->cdev, 0);
			if (rc != 0)
			if (rc != 0)
				ctcm_ccw_check_rc(ch, rc,
				ctcm_ccw_check_rc(ch, rc,
					"HaltIO in chx_setuperr");
					"HaltIO in chx_setuperr");
@@ -851,7 +846,7 @@ static void ctcm_chx_restart(fsm_instance *fi, int event, void *arg)
			/* Such conditional locking is a known problem for
			/* Such conditional locking is a known problem for
			 * sparse because its undeterministic in static view.
			 * sparse because its undeterministic in static view.
			 * Warnings should be ignored here. */
			 * Warnings should be ignored here. */
	rc = ccw_device_halt(ch->cdev, (unsigned long)ch);
	rc = ccw_device_halt(ch->cdev, 0);
	if (event == CTC_EVENT_TIMER)
	if (event == CTC_EVENT_TIMER)
		spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
		spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
	if (rc != 0) {
	if (rc != 0) {
@@ -947,8 +942,8 @@ static void ctcm_chx_rxdisc(fsm_instance *fi, int event, void *arg)
	ch2 = priv->channel[CTCM_WRITE];
	ch2 = priv->channel[CTCM_WRITE];
	fsm_newstate(ch2->fsm, CTC_STATE_DTERM);
	fsm_newstate(ch2->fsm, CTC_STATE_DTERM);


	ccw_device_halt(ch->cdev, (unsigned long)ch);
	ccw_device_halt(ch->cdev, 0);
	ccw_device_halt(ch2->cdev, (unsigned long)ch2);
	ccw_device_halt(ch2->cdev, 0);
}
}


/**
/**
@@ -1041,8 +1036,7 @@ static void ctcm_chx_txretry(fsm_instance *fi, int event, void *arg)
			ctcmpc_dumpit((char *)&ch->ccw[3],
			ctcmpc_dumpit((char *)&ch->ccw[3],
					sizeof(struct ccw1) * 3);
					sizeof(struct ccw1) * 3);


		rc = ccw_device_start(ch->cdev, &ch->ccw[3],
		rc = ccw_device_start(ch->cdev, &ch->ccw[3], 0, 0xff, 0);
						(unsigned long)ch, 0xff, 0);
		if (event == CTC_EVENT_TIMER)
		if (event == CTC_EVENT_TIMER)
			spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev),
			spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev),
					saveflags);
					saveflags);
@@ -1361,8 +1355,7 @@ static void ctcmpc_chx_txdone(fsm_instance *fi, int event, void *arg)
	ch->prof.send_stamp = jiffies;
	ch->prof.send_stamp = jiffies;
	if (do_debug_ccw)
	if (do_debug_ccw)
		ctcmpc_dumpit((char *)&ch->ccw[0], sizeof(struct ccw1) * 3);
		ctcmpc_dumpit((char *)&ch->ccw[0], sizeof(struct ccw1) * 3);
	rc = ccw_device_start(ch->cdev, &ch->ccw[0],
	rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0);
					(unsigned long)ch, 0xff, 0);
	ch->prof.doios_multi++;
	ch->prof.doios_multi++;
	if (rc != 0) {
	if (rc != 0) {
		priv->stats.tx_dropped += i;
		priv->stats.tx_dropped += i;
@@ -1462,8 +1455,7 @@ static void ctcmpc_chx_rx(fsm_instance *fi, int event, void *arg)
		if (dolock)
		if (dolock)
			spin_lock_irqsave(
			spin_lock_irqsave(
				get_ccwdev_lock(ch->cdev), saveflags);
				get_ccwdev_lock(ch->cdev), saveflags);
		rc = ccw_device_start(ch->cdev, &ch->ccw[0],
		rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0);
						(unsigned long)ch, 0xff, 0);
		if (dolock) /* see remark about conditional locking */
		if (dolock) /* see remark about conditional locking */
			spin_unlock_irqrestore(
			spin_unlock_irqrestore(
				get_ccwdev_lock(ch->cdev), saveflags);
				get_ccwdev_lock(ch->cdev), saveflags);
@@ -1569,8 +1561,7 @@ void ctcmpc_chx_rxidle(fsm_instance *fi, int event, void *arg)
		if (event == CTC_EVENT_START)
		if (event == CTC_EVENT_START)
			/* see remark about conditional locking */
			/* see remark about conditional locking */
			spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
			spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
		rc = ccw_device_start(ch->cdev, &ch->ccw[0],
		rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0);
						(unsigned long)ch, 0xff, 0);
		if (event == CTC_EVENT_START)
		if (event == CTC_EVENT_START)
			spin_unlock_irqrestore(
			spin_unlock_irqrestore(
					get_ccwdev_lock(ch->cdev), saveflags);
					get_ccwdev_lock(ch->cdev), saveflags);
@@ -1825,8 +1816,7 @@ static void ctcmpc_chx_send_sweep(fsm_instance *fsm, int event, void *arg)


	spin_lock_irqsave(get_ccwdev_lock(wch->cdev), saveflags);
	spin_lock_irqsave(get_ccwdev_lock(wch->cdev), saveflags);
	wch->prof.send_stamp = jiffies;
	wch->prof.send_stamp = jiffies;
	rc = ccw_device_start(wch->cdev, &wch->ccw[3],
	rc = ccw_device_start(wch->cdev, &wch->ccw[3], 0, 0xff, 0);
					(unsigned long) wch, 0xff, 0);
	spin_unlock_irqrestore(get_ccwdev_lock(wch->cdev), saveflags);
	spin_unlock_irqrestore(get_ccwdev_lock(wch->cdev), saveflags);


	if ((grp->sweep_req_pend_num == 0) &&
	if ((grp->sweep_req_pend_num == 0) &&
+2 −4
Original line number Original line Diff line number Diff line
@@ -569,8 +569,7 @@ static int ctcm_transmit_skb(struct channel *ch, struct sk_buff *skb)
	fsm_addtimer(&ch->timer, CTCM_TIME_5_SEC, CTC_EVENT_TIMER, ch);
	fsm_addtimer(&ch->timer, CTCM_TIME_5_SEC, CTC_EVENT_TIMER, ch);
	spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
	spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
	ch->prof.send_stamp = jiffies;
	ch->prof.send_stamp = jiffies;
	rc = ccw_device_start(ch->cdev, &ch->ccw[ccw_idx],
	rc = ccw_device_start(ch->cdev, &ch->ccw[ccw_idx], 0, 0xff, 0);
					(unsigned long)ch, 0xff, 0);
	spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
	spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
	if (ccw_idx == 3)
	if (ccw_idx == 3)
		ch->prof.doios_single++;
		ch->prof.doios_single++;
@@ -833,8 +832,7 @@ static int ctcmpc_transmit_skb(struct channel *ch, struct sk_buff *skb)


	spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
	spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
	ch->prof.send_stamp = jiffies;
	ch->prof.send_stamp = jiffies;
	rc = ccw_device_start(ch->cdev, &ch->ccw[ccw_idx],
	rc = ccw_device_start(ch->cdev, &ch->ccw[ccw_idx], 0, 0xff, 0);
					(unsigned long)ch, 0xff, 0);
	spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
	spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
	if (ccw_idx == 3)
	if (ccw_idx == 3)
		ch->prof.doios_single++;
		ch->prof.doios_single++;
+2 −4
Original line number Original line Diff line number Diff line
@@ -1523,8 +1523,7 @@ void mpc_action_send_discontact(unsigned long thischan)
	unsigned long	saveflags = 0;
	unsigned long	saveflags = 0;


	spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
	spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags);
	rc = ccw_device_start(ch->cdev, &ch->ccw[15],
	rc = ccw_device_start(ch->cdev, &ch->ccw[15], 0, 0xff, 0);
					(unsigned long)ch, 0xff, 0);
	spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
	spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);


	if (rc != 0) {
	if (rc != 0) {
@@ -1797,8 +1796,7 @@ static void mpc_action_side_xid(fsm_instance *fsm, void *arg, int side)
	}
	}


	fsm_addtimer(&ch->timer, 5000 , CTC_EVENT_TIMER, ch);
	fsm_addtimer(&ch->timer, 5000 , CTC_EVENT_TIMER, ch);
	rc = ccw_device_start(ch->cdev, &ch->ccw[8],
	rc = ccw_device_start(ch->cdev, &ch->ccw[8], 0, 0xff, 0);
				(unsigned long)ch, 0xff, 0);


	if (gotlock)	/* see remark above about conditional locking */
	if (gotlock)	/* see remark above about conditional locking */
		spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);
		spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags);