[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: Peter Oberparleiter <peter.oberparleiter@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
committed by
Martin Schwidefsky
parent
05873df981
commit
a681887f7b
@@ -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)
|
|||||||
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)
|
||||||
|
Reference in New Issue
Block a user