diff options
author | Stefan Haberland <stefan.haberland@de.ibm.com> | 2008-10-10 15:33:23 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2008-10-10 15:33:59 -0400 |
commit | ada3df9171e48b2a5f1e9c828337b61746e19ff0 (patch) | |
tree | db172c9c47a2a0749202a3eef3176dcf10646f5d /drivers/s390/block | |
parent | 5a0d0e65379256b4da2c9092e197a2c761f51c01 (diff) |
[S390] dasd: fix message flood for unsolicited interrupts
In the unsolicited interupt handler fake IRBs from CIO have to be
ignored because there is nothing to do.
The function dump_sense should not be called if there is no sense
data available.
Signed-off-by: Stefan Haberland <stefan.haberland@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/block')
-rw-r--r-- | drivers/s390/block/dasd_eckd.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c index 72d3970f11a4..8095629bc493 100644 --- a/drivers/s390/block/dasd_eckd.c +++ b/drivers/s390/block/dasd_eckd.c | |||
@@ -1501,12 +1501,27 @@ static void dasd_eckd_handle_unsolicited_interrupt(struct dasd_device *device, | |||
1501 | return; | 1501 | return; |
1502 | } | 1502 | } |
1503 | 1503 | ||
1504 | /* just report other unsolicited interrupts */ | 1504 | if ((irb->scsw.cmd.cc == 1) && |
1505 | DEV_MESSAGE(KERN_DEBUG, device, "%s", | 1505 | (irb->scsw.cmd.fctl & SCSW_FCTL_START_FUNC) && |
1506 | "unsolicited interrupt received"); | 1506 | (irb->scsw.cmd.actl & SCSW_ACTL_START_PEND) && |
1507 | device->discipline->dump_sense(device, NULL, irb); | 1507 | (irb->scsw.cmd.stctl & SCSW_STCTL_STATUS_PEND)) { |
1508 | dasd_schedule_device_bh(device); | 1508 | /* fake irb do nothing, they are handled elsewhere */ |
1509 | dasd_schedule_device_bh(device); | ||
1510 | return; | ||
1511 | } | ||
1509 | 1512 | ||
1513 | if (!(irb->esw.esw0.erw.cons)) { | ||
1514 | /* just report other unsolicited interrupts */ | ||
1515 | DEV_MESSAGE(KERN_ERR, device, "%s", | ||
1516 | "unsolicited interrupt received"); | ||
1517 | } else { | ||
1518 | DEV_MESSAGE(KERN_ERR, device, "%s", | ||
1519 | "unsolicited interrupt received " | ||
1520 | "(sense available)"); | ||
1521 | device->discipline->dump_sense(device, NULL, irb); | ||
1522 | } | ||
1523 | |||
1524 | dasd_schedule_device_bh(device); | ||
1510 | return; | 1525 | return; |
1511 | }; | 1526 | }; |
1512 | 1527 | ||