Commit a681887f authored by Peter Oberparleiter's avatar Peter Oberparleiter Committed by Martin Schwidefsky

[S390] cio: fix cio_tpi ignoring adapter interrupts

Ensure that adapter interrupts are correctly processed when they are
retrieved using TEST PENDING INTERRUPTION.
Signed-off-by: default avatarPeter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 05873df9
...@@ -654,8 +654,8 @@ static struct io_subchannel_private console_priv; ...@@ -654,8 +654,8 @@ static struct io_subchannel_private console_priv;
static int console_subchannel_in_use; static int console_subchannel_in_use;
/* /*
* Use tpi to get a pending interrupt, call the interrupt handler and * Use cio_tpi to get a pending interrupt and call the interrupt handler.
* return a pointer to the subchannel structure. * Return non-zero if an interrupt was processed, zero otherwise.
*/ */
static int cio_tpi(void) static int cio_tpi(void)
{ {
...@@ -667,6 +667,10 @@ static int cio_tpi(void) ...@@ -667,6 +667,10 @@ static int cio_tpi(void)
tpi_info = (struct tpi_info *)&S390_lowcore.subchannel_id; tpi_info = (struct tpi_info *)&S390_lowcore.subchannel_id;
if (tpi(NULL) != 1) if (tpi(NULL) != 1)
return 0; return 0;
if (tpi_info->adapter_IO) {
do_adapter_IO(tpi_info->isc);
return 1;
}
irb = (struct irb *)&S390_lowcore.irb; irb = (struct irb *)&S390_lowcore.irb;
/* Store interrupt response block to lowcore. */ /* Store interrupt response block to lowcore. */
if (tsch(tpi_info->schid, irb) != 0) if (tsch(tpi_info->schid, irb) != 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment