diff options
-rw-r--r-- | drivers/s390/block/dasd.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index 80e45de096a9..fb613d70c2cb 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c | |||
@@ -1107,17 +1107,22 @@ void dasd_int_handler(struct ccw_device *cdev, unsigned long intparm, | |||
1107 | if (cqr) | 1107 | if (cqr) |
1108 | memcpy(&cqr->irb, irb, sizeof(*irb)); | 1108 | memcpy(&cqr->irb, irb, sizeof(*irb)); |
1109 | device = dasd_device_from_cdev_locked(cdev); | 1109 | device = dasd_device_from_cdev_locked(cdev); |
1110 | if (!IS_ERR(device)) { | 1110 | if (IS_ERR(device)) |
1111 | device->discipline->dump_sense_dbf(device, irb, | 1111 | return; |
1112 | "unsolicited"); | 1112 | /* ignore unsolicited interrupts for DIAG discipline */ |
1113 | if ((device->features & DASD_FEATURE_ERPLOG)) | 1113 | if (device->discipline == dasd_diag_discipline_pointer) { |
1114 | device->discipline->dump_sense(device, cqr, | ||
1115 | irb); | ||
1116 | dasd_device_clear_timer(device); | ||
1117 | device->discipline->handle_unsolicited_interrupt(device, | ||
1118 | irb); | ||
1119 | dasd_put_device(device); | 1114 | dasd_put_device(device); |
1115 | return; | ||
1120 | } | 1116 | } |
1117 | device->discipline->dump_sense_dbf(device, irb, | ||
1118 | "unsolicited"); | ||
1119 | if ((device->features & DASD_FEATURE_ERPLOG)) | ||
1120 | device->discipline->dump_sense(device, cqr, | ||
1121 | irb); | ||
1122 | dasd_device_clear_timer(device); | ||
1123 | device->discipline->handle_unsolicited_interrupt(device, | ||
1124 | irb); | ||
1125 | dasd_put_device(device); | ||
1121 | return; | 1126 | return; |
1122 | } | 1127 | } |
1123 | 1128 | ||