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

Commit 846d0c6f authored by Kees Cook's avatar Kees Cook Committed by Heiko Carstens
Browse files

s390/cio: Convert timers to use timer_setup()



In preparation for unconditionally passing the struct timer_list
pointer to all timer callbacks, switch to using the new timer_setup()
and from_timer() to pass the timer pointer explicitly.

Cc: Sebastian Ott <sebott@linux.vnet.ibm.com>
Cc: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
parent cb9f780a
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -142,7 +142,7 @@ static void io_subchannel_shutdown(struct subchannel *);
static int io_subchannel_sch_event(struct subchannel *, int);
static int io_subchannel_chp_event(struct subchannel *, struct chp_link *,
				   int);
static void recovery_func(unsigned long data);
static void recovery_func(struct timer_list *unused);

static struct css_device_id io_subchannel_ids[] = {
	{ .match_flags = 0x1, .type = SUBCHANNEL_TYPE_IO, },
@@ -194,7 +194,7 @@ int __init io_subchannel_init(void)
{
	int ret;

	setup_timer(&recovery_timer, recovery_func, 0);
	timer_setup(&recovery_timer, recovery_func, 0);
	ret = bus_register(&ccw_bus_type);
	if (ret)
		return ret;
@@ -726,7 +726,7 @@ static int io_subchannel_initialize_dev(struct subchannel *sch,
	INIT_WORK(&priv->todo_work, ccw_device_todo);
	INIT_LIST_HEAD(&priv->cmb_list);
	init_waitqueue_head(&priv->wait_q);
	init_timer(&priv->timer);
	timer_setup(&priv->timer, ccw_device_timeout, 0);

	atomic_set(&priv->onoff, 0);
	cdev->ccwlock = sch->lock;
@@ -1271,7 +1271,7 @@ static void recovery_work_func(struct work_struct *unused)

static DECLARE_WORK(recovery_work, recovery_work_func);

static void recovery_func(unsigned long data)
static void recovery_func(struct timer_list *unused)
{
	/*
	 * We can't do our recovery in softirq context and it's not
+2 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@

#include <asm/ccwdev.h>
#include <linux/atomic.h>
#include <linux/timer.h>
#include <linux/wait.h>
#include <linux/notifier.h>
#include <linux/kernel_stat.h>
@@ -134,6 +135,7 @@ int ccw_device_notify(struct ccw_device *, int);
void ccw_device_set_disconnected(struct ccw_device *cdev);
void ccw_device_set_notoper(struct ccw_device *cdev);

void ccw_device_timeout(struct timer_list *t);
void ccw_device_set_timeout(struct ccw_device *, int);
void ccw_device_schedule_recovery(void);

+4 −6
Original line number Diff line number Diff line
@@ -91,12 +91,12 @@ static void ccw_timeout_log(struct ccw_device *cdev)
/*
 * Timeout function. It just triggers a DEV_EVENT_TIMEOUT.
 */
static void
ccw_device_timeout(unsigned long data)
void
ccw_device_timeout(struct timer_list *t)
{
	struct ccw_device *cdev;
	struct ccw_device_private *priv = from_timer(priv, t, timer);
	struct ccw_device *cdev = priv->cdev;

	cdev = (struct ccw_device *) data;
	spin_lock_irq(cdev->ccwlock);
	if (timeout_log_enabled)
		ccw_timeout_log(cdev);
@@ -118,8 +118,6 @@ ccw_device_set_timeout(struct ccw_device *cdev, int expires)
		if (mod_timer(&cdev->private->timer, jiffies + expires))
			return;
	}
	cdev->private->timer.function = ccw_device_timeout;
	cdev->private->timer.data = (unsigned long) cdev;
	cdev->private->timer.expires = jiffies + expires;
	add_timer(&cdev->private->timer);
}
+4 −5
Original line number Diff line number Diff line
@@ -94,9 +94,10 @@ static int eadm_subchannel_clear(struct subchannel *sch)
	return 0;
}

static void eadm_subchannel_timeout(unsigned long data)
static void eadm_subchannel_timeout(struct timer_list *t)
{
	struct subchannel *sch = (struct subchannel *) data;
	struct eadm_private *private = from_timer(private, t, timer);
	struct subchannel *sch = private->sch;

	spin_lock_irq(sch->lock);
	EADM_LOG(1, "timeout");
@@ -118,8 +119,6 @@ static void eadm_subchannel_set_timeout(struct subchannel *sch, int expires)
		if (mod_timer(&private->timer, jiffies + expires))
			return;
	}
	private->timer.function = eadm_subchannel_timeout;
	private->timer.data = (unsigned long) sch;
	private->timer.expires = jiffies + expires;
	add_timer(&private->timer);
}
@@ -224,7 +223,7 @@ static int eadm_subchannel_probe(struct subchannel *sch)
		return -ENOMEM;

	INIT_LIST_HEAD(&private->head);
	init_timer(&private->timer);
	timer_setup(&private->timer, eadm_subchannel_timeout, 0);

	spin_lock_irq(sch->lock);
	set_eadm_private(sch, private);