Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ada3df91 authored by Stefan Haberland's avatar Stefan Haberland Committed by Martin Schwidefsky
Browse files

[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: default avatarStefan Haberland <stefan.haberland@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 5a0d0e65
Loading
Loading
Loading
Loading
+20 −5
Original line number Diff line number Diff line
@@ -1501,12 +1501,27 @@ static void dasd_eckd_handle_unsolicited_interrupt(struct dasd_device *device,
		return;
	}

	if ((irb->scsw.cmd.cc == 1) &&
	    (irb->scsw.cmd.fctl & SCSW_FCTL_START_FUNC) &&
	    (irb->scsw.cmd.actl & SCSW_ACTL_START_PEND) &&
	    (irb->scsw.cmd.stctl & SCSW_STCTL_STATUS_PEND)) {
		/* fake irb do nothing, they are handled elsewhere */
		dasd_schedule_device_bh(device);
		return;
	}

	if (!(irb->esw.esw0.erw.cons)) {
		/* just report other unsolicited interrupts */
	DEV_MESSAGE(KERN_DEBUG, device, "%s",
		DEV_MESSAGE(KERN_ERR, device, "%s",
			    "unsolicited interrupt received");
	} else {
		DEV_MESSAGE(KERN_ERR, device, "%s",
			    "unsolicited interrupt received "
			    "(sense available)");
		device->discipline->dump_sense(device, NULL, irb);
	dasd_schedule_device_bh(device);
	}

	dasd_schedule_device_bh(device);
	return;
};