diff options
| author | Sebastian Ott <sebott@linux.vnet.ibm.com> | 2011-03-15 17:08:27 +0100 | 
|---|---|---|
| committer | Martin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com> | 2011-03-15 17:08:23 +0100 | 
| commit | f92519e83e3bd509cb861a946701a26f74cb77fa (patch) | |
| tree | b6da7f33d563dc5f8932a8e32ef1add9c01b763d | |
| parent | 97eb6bfcb942a59f5c8d273523d68c6a0f57a6f2 (diff) | |
[S390] css: move io_private to drv_data
Use the subchannels drv_data to access io_subchannel_private
for io subchannels.
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
| -rw-r--r-- | drivers/s390/cio/device.c | 17 | ||||
| -rw-r--r-- | drivers/s390/cio/io_sch.h | 4 | 
2 files changed, 14 insertions, 7 deletions
| diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c index b7eaff9ca19e..7582a1e35eb8 100644 --- a/drivers/s390/cio/device.c +++ b/drivers/s390/cio/device.c @@ -1030,6 +1030,7 @@ static void io_subchannel_init_fields(struct subchannel *sch)   */  static int io_subchannel_probe(struct subchannel *sch)  { +	struct io_subchannel_private *io_priv;  	struct ccw_device *cdev;  	int rc; @@ -1073,10 +1074,11 @@ static int io_subchannel_probe(struct subchannel *sch)  	if (rc)  		goto out_schedule;  	/* Allocate I/O subchannel private data. */ -	sch->private = kzalloc(sizeof(struct io_subchannel_private), -			       GFP_KERNEL | GFP_DMA); -	if (!sch->private) +	io_priv = kzalloc(sizeof(*io_priv), GFP_KERNEL | GFP_DMA); +	if (!io_priv)  		goto out_schedule; + +	set_io_private(sch, io_priv);  	css_schedule_eval(sch->schid);  	return 0; @@ -1090,6 +1092,7 @@ out_schedule:  static int  io_subchannel_remove (struct subchannel *sch)  { +	struct io_subchannel_private *io_priv = to_io_private(sch);  	struct ccw_device *cdev;  	cdev = sch_get_cdev(sch); @@ -1099,11 +1102,12 @@ io_subchannel_remove (struct subchannel *sch)  	/* Set ccw device to not operational and drop reference. */  	spin_lock_irq(cdev->ccwlock);  	sch_set_cdev(sch, NULL); +	set_io_private(sch, NULL);  	cdev->private->state = DEV_STATE_NOT_OPER;  	spin_unlock_irq(cdev->ccwlock);  	ccw_device_unregister(cdev);  out_free: -	kfree(sch->private); +	kfree(io_priv);  	sysfs_remove_group(&sch->dev.kobj, &io_subchannel_attr_group);  	return 0;  } @@ -1553,11 +1557,12 @@ spinlock_t * cio_get_console_lock(void)  static int ccw_device_console_enable(struct ccw_device *cdev,  				     struct subchannel *sch)  { +	struct io_subchannel_private *io_priv = cio_get_console_priv();  	int rc;  	/* Attach subchannel private data. */ -	sch->private = cio_get_console_priv(); -	memset(sch->private, 0, sizeof(struct io_subchannel_private)); +	memset(io_priv, 0, sizeof(*io_priv)); +	set_io_private(sch, io_priv);  	io_subchannel_init_fields(sch);  	rc = cio_commit_config(sch);  	if (rc) diff --git a/drivers/s390/cio/io_sch.h b/drivers/s390/cio/io_sch.h index 23f50ba50392..ba31ad88f4f7 100644 --- a/drivers/s390/cio/io_sch.h +++ b/drivers/s390/cio/io_sch.h @@ -18,7 +18,9 @@ struct io_subchannel_private {  	} __packed options;  } __aligned(8); -#define to_io_private(n) ((struct io_subchannel_private *)n->private) +#define to_io_private(n) ((struct io_subchannel_private *) \ +			  dev_get_drvdata(&(n)->dev)) +#define set_io_private(n, p) (dev_set_drvdata(&(n)->dev, p))  static inline struct ccw_device *sch_get_cdev(struct subchannel *sch)  { | 
