diff options
author | Sebastian Ott <sebott@linux.vnet.ibm.com> | 2016-07-28 14:30:31 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2016-08-08 09:41:33 -0400 |
commit | 9080c92494f0d7e2bca1197bbddcc417117057c3 (patch) | |
tree | 07cb1c42e2855f5b27da02695036a2e935ec0bef | |
parent | 7de6a63ca2ff21ea67e50a546ca0e9bb6e2b0718 (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.c | 32 |
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, | |||
1122 | int qdio_get_ssqd_desc(struct ccw_device *cdev, | 1124 | int 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 | } |
1132 | EXPORT_SYMBOL_GPL(qdio_get_ssqd_desc); | 1136 | EXPORT_SYMBOL_GPL(qdio_get_ssqd_desc); |
1133 | 1137 | ||
@@ -1154,6 +1158,7 @@ static void qdio_shutdown_queues(struct ccw_device *cdev) | |||
1154 | int qdio_shutdown(struct ccw_device *cdev, int how) | 1158 | int 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); | |||
1228 | int qdio_free(struct ccw_device *cdev) | 1234 | int 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 | */ |
1252 | int qdio_allocate(struct qdio_initialize *init_data) | 1260 | int 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 | */ |
1332 | int qdio_establish(struct qdio_initialize *init_data) | 1342 | int 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 | */ |
1408 | int qdio_activate(struct ccw_device *cdev) | 1420 | int 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) |