aboutsummaryrefslogtreecommitdiff
path: root/arch/s390/pci/pci_irq.c
diff options
context:
space:
mode:
authorMatthew Rosato <[email protected]>2022-06-06 16:33:09 -0400
committerChristian Borntraeger <[email protected]>2022-07-11 09:54:10 +0200
commitd2197485a1883c60d044146b1ee69aac654c55e8 (patch)
tree9c8eb311577a6ca80a5424bcd44f0ab977517b42 /arch/s390/pci/pci_irq.c
parentb05a870c5e4e6a113b7f3fb61b5fa0869e40dd30 (diff)
s390/airq: pass more TPI info to airq handlers
A subsequent patch will introduce an airq handler that requires additional TPI information beyond directed vs floating, so pass the entire tpi_info structure via the handler. Only pci actually uses this information today, for the other airq handlers this is effectively a no-op. Reviewed-by: Eric Farman <[email protected]> Reviewed-by: Claudio Imbrenda <[email protected]> Reviewed-by: Pierre Morel <[email protected]> Reviewed-by: Thomas Huth <[email protected]> Acked-by: Christian Borntraeger <[email protected]> Acked-by: Cornelia Huck <[email protected]> Signed-off-by: Matthew Rosato <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Christian Borntraeger <[email protected]>
Diffstat (limited to 'arch/s390/pci/pci_irq.c')
-rw-r--r--arch/s390/pci/pci_irq.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/s390/pci/pci_irq.c b/arch/s390/pci/pci_irq.c
index 500cd2dbdf53..b805c75252ed 100644
--- a/arch/s390/pci/pci_irq.c
+++ b/arch/s390/pci/pci_irq.c
@@ -11,6 +11,7 @@
#include <asm/isc.h>
#include <asm/airq.h>
+#include <asm/tpi.h>
static enum {FLOATING, DIRECTED} irq_delivery;
@@ -216,8 +217,11 @@ static void zpci_handle_fallback_irq(void)
}
}
-static void zpci_directed_irq_handler(struct airq_struct *airq, bool floating)
+static void zpci_directed_irq_handler(struct airq_struct *airq,
+ struct tpi_info *tpi_info)
{
+ bool floating = !tpi_info->directed_irq;
+
if (floating) {
inc_irq_stat(IRQIO_PCF);
zpci_handle_fallback_irq();
@@ -227,7 +231,8 @@ static void zpci_directed_irq_handler(struct airq_struct *airq, bool floating)
}
}
-static void zpci_floating_irq_handler(struct airq_struct *airq, bool floating)
+static void zpci_floating_irq_handler(struct airq_struct *airq,
+ struct tpi_info *tpi_info)
{
unsigned long si, ai;
struct airq_iv *aibv;