aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Ott <sebott@linux.vnet.ibm.com>2016-07-28 14:30:31 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2016-08-08 09:41:33 -0400
commit9080c92494f0d7e2bca1197bbddcc417117057c3 (patch)
tree07cb1c42e2855f5b27da02695036a2e935ec0bef
parent7de6a63ca2ff21ea67e50a546ca0e9bb6e2b0718 (diff)
s390/qdio: obtain subchannel_id via ccw_device_get_schid()
We want to get rid of the copy of struct subchannel_id maintained in ccw_device_private, so obtain it using ccw_device_get_schid(). Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Reviewed-by: Ursula Braun <ubraun@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--drivers/s390/cio/qdio_main.c32
1 files changed, 23 insertions, 9 deletions
diff --git a/drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c
index 4bb5262f7aee..94e96207d42d 100644
--- a/drivers/s390/cio/qdio_main.c
+++ b/drivers/s390/cio/qdio_main.c
@@ -1066,10 +1066,12 @@ void qdio_int_handler(struct ccw_device *cdev, unsigned long intparm,
1066 struct irb *irb) 1066 struct irb *irb)
1067{ 1067{
1068 struct qdio_irq *irq_ptr = cdev->private->qdio_data; 1068 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1069 struct subchannel_id schid;
1069 int cstat, dstat; 1070 int cstat, dstat;
1070 1071
1071 if (!intparm || !irq_ptr) { 1072 if (!intparm || !irq_ptr) {
1072 DBF_ERROR("qint:%4x", cdev->private->schid.sch_no); 1073 ccw_device_get_schid(cdev, &schid);
1074 DBF_ERROR("qint:%4x", schid.sch_no);
1073 return; 1075 return;
1074 } 1076 }
1075 1077
@@ -1122,12 +1124,14 @@ void qdio_int_handler(struct ccw_device *cdev, unsigned long intparm,
1122int qdio_get_ssqd_desc(struct ccw_device *cdev, 1124int qdio_get_ssqd_desc(struct ccw_device *cdev,
1123 struct qdio_ssqd_desc *data) 1125 struct qdio_ssqd_desc *data)
1124{ 1126{
1127 struct subchannel_id schid;
1125 1128
1126 if (!cdev || !cdev->private) 1129 if (!cdev || !cdev->private)
1127 return -EINVAL; 1130 return -EINVAL;
1128 1131
1129 DBF_EVENT("get ssqd:%4x", cdev->private->schid.sch_no); 1132 ccw_device_get_schid(cdev, &schid);
1130 return qdio_setup_get_ssqd(NULL, &cdev->private->schid, data); 1133 DBF_EVENT("get ssqd:%4x", schid.sch_no);
1134 return qdio_setup_get_ssqd(NULL, &schid, data);
1131} 1135}
1132EXPORT_SYMBOL_GPL(qdio_get_ssqd_desc); 1136EXPORT_SYMBOL_GPL(qdio_get_ssqd_desc);
1133 1137
@@ -1154,6 +1158,7 @@ static void qdio_shutdown_queues(struct ccw_device *cdev)
1154int qdio_shutdown(struct ccw_device *cdev, int how) 1158int qdio_shutdown(struct ccw_device *cdev, int how)
1155{ 1159{
1156 struct qdio_irq *irq_ptr = cdev->private->qdio_data; 1160 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1161 struct subchannel_id schid;
1157 int rc; 1162 int rc;
1158 unsigned long flags; 1163 unsigned long flags;
1159 1164
@@ -1161,7 +1166,8 @@ int qdio_shutdown(struct ccw_device *cdev, int how)
1161 return -ENODEV; 1166 return -ENODEV;
1162 1167
1163 WARN_ON_ONCE(irqs_disabled()); 1168 WARN_ON_ONCE(irqs_disabled());
1164 DBF_EVENT("qshutdown:%4x", cdev->private->schid.sch_no); 1169 ccw_device_get_schid(cdev, &schid);
1170 DBF_EVENT("qshutdown:%4x", schid.sch_no);
1165 1171
1166 mutex_lock(&irq_ptr->setup_mutex); 1172 mutex_lock(&irq_ptr->setup_mutex);
1167 /* 1173 /*
@@ -1228,11 +1234,13 @@ EXPORT_SYMBOL_GPL(qdio_shutdown);
1228int qdio_free(struct ccw_device *cdev) 1234int qdio_free(struct ccw_device *cdev)
1229{ 1235{
1230 struct qdio_irq *irq_ptr = cdev->private->qdio_data; 1236 struct qdio_irq *irq_ptr = cdev->private->qdio_data;
1237 struct subchannel_id schid;
1231 1238
1232 if (!irq_ptr) 1239 if (!irq_ptr)
1233 return -ENODEV; 1240 return -ENODEV;
1234 1241
1235 DBF_EVENT("qfree:%4x", cdev->private->schid.sch_no); 1242 ccw_device_get_schid(cdev, &schid);
1243 DBF_EVENT("qfree:%4x", schid.sch_no);
1236 DBF_DEV_EVENT(DBF_ERR, irq_ptr, "dbf abandoned"); 1244 DBF_DEV_EVENT(DBF_ERR, irq_ptr, "dbf abandoned");
1237 mutex_lock(&irq_ptr->setup_mutex); 1245 mutex_lock(&irq_ptr->setup_mutex);
1238 1246
@@ -1251,9 +1259,11 @@ EXPORT_SYMBOL_GPL(qdio_free);
1251 */ 1259 */
1252int qdio_allocate(struct qdio_initialize *init_data) 1260int qdio_allocate(struct qdio_initialize *init_data)
1253{ 1261{
1262 struct subchannel_id schid;
1254 struct qdio_irq *irq_ptr; 1263 struct qdio_irq *irq_ptr;
1255 1264
1256 DBF_EVENT("qallocate:%4x", init_data->cdev->private->schid.sch_no); 1265 ccw_device_get_schid(init_data->cdev, &schid);
1266 DBF_EVENT("qallocate:%4x", schid.sch_no);
1257 1267
1258 if ((init_data->no_input_qs && !init_data->input_handler) || 1268 if ((init_data->no_input_qs && !init_data->input_handler) ||
1259 (init_data->no_output_qs && !init_data->output_handler)) 1269 (init_data->no_output_qs && !init_data->output_handler))
@@ -1331,12 +1341,14 @@ static void qdio_detect_hsicq(struct qdio_irq *irq_ptr)
1331 */ 1341 */
1332int qdio_establish(struct qdio_initialize *init_data) 1342int qdio_establish(struct qdio_initialize *init_data)
1333{ 1343{
1334 struct qdio_irq *irq_ptr;
1335 struct ccw_device *cdev = init_data->cdev; 1344 struct ccw_device *cdev = init_data->cdev;
1345 struct subchannel_id schid;
1346 struct qdio_irq *irq_ptr;
1336 unsigned long saveflags; 1347 unsigned long saveflags;
1337 int rc; 1348 int rc;
1338 1349
1339 DBF_EVENT("qestablish:%4x", cdev->private->schid.sch_no); 1350 ccw_device_get_schid(cdev, &schid);
1351 DBF_EVENT("qestablish:%4x", schid.sch_no);
1340 1352
1341 irq_ptr = cdev->private->qdio_data; 1353 irq_ptr = cdev->private->qdio_data;
1342 if (!irq_ptr) 1354 if (!irq_ptr)
@@ -1407,11 +1419,13 @@ EXPORT_SYMBOL_GPL(qdio_establish);
1407 */ 1419 */
1408int qdio_activate(struct ccw_device *cdev) 1420int qdio_activate(struct ccw_device *cdev)
1409{ 1421{
1422 struct subchannel_id schid;
1410 struct qdio_irq *irq_ptr; 1423 struct qdio_irq *irq_ptr;
1411 int rc; 1424 int rc;
1412 unsigned long saveflags; 1425 unsigned long saveflags;
1413 1426
1414 DBF_EVENT("qactivate:%4x", cdev->private->schid.sch_no); 1427 ccw_device_get_schid(cdev, &schid);
1428 DBF_EVENT("qactivate:%4x", schid.sch_no);
1415 1429
1416 irq_ptr = cdev->private->qdio_data; 1430 irq_ptr = cdev->private->qdio_data;
1417 if (!irq_ptr) 1431 if (!irq_ptr)