s390/pci: gather statistics for floating vs directed irqs
Gather statistics to distinguish floating and directed interrupts. Signed-off-by: Sebastian Ott <sebott@linux.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
914b7dd07e
commit
07e3ec3acb
|
@ -59,7 +59,8 @@ enum interruption_class {
|
|||
IRQIO_VIR,
|
||||
IRQIO_QAI,
|
||||
IRQIO_APB,
|
||||
IRQIO_PCI,
|
||||
IRQIO_PCF,
|
||||
IRQIO_PCD,
|
||||
IRQIO_MSI,
|
||||
IRQIO_VAI,
|
||||
IRQIO_GAL,
|
||||
|
|
|
@ -85,7 +85,8 @@ static const struct irq_class irqclass_sub_desc[] = {
|
|||
{.irq = IRQIO_VIR, .name = "VIR", .desc = "[I/O] Virtual I/O Devices"},
|
||||
{.irq = IRQIO_QAI, .name = "QAI", .desc = "[AIO] QDIO Adapter Interrupt"},
|
||||
{.irq = IRQIO_APB, .name = "APB", .desc = "[AIO] AP Bus"},
|
||||
{.irq = IRQIO_PCI, .name = "PCI", .desc = "[AIO] PCI Interrupt"},
|
||||
{.irq = IRQIO_PCF, .name = "PCF", .desc = "[AIO] PCI Floating Interrupt"},
|
||||
{.irq = IRQIO_PCD, .name = "PCD", .desc = "[AIO] PCI Directed Interrupt"},
|
||||
{.irq = IRQIO_MSI, .name = "MSI", .desc = "[AIO] MSI Interrupt"},
|
||||
{.irq = IRQIO_VAI, .name = "VAI", .desc = "[AIO] Virtual I/O Devices AI"},
|
||||
{.irq = IRQIO_GAL, .name = "GAL", .desc = "[AIO] GIB Alert"},
|
||||
|
|
|
@ -188,11 +188,13 @@ static void zpci_handle_fallback_irq(void)
|
|||
|
||||
static void zpci_directed_irq_handler(struct airq_struct *airq, bool floating)
|
||||
{
|
||||
inc_irq_stat(IRQIO_PCI);
|
||||
if (floating)
|
||||
if (floating) {
|
||||
inc_irq_stat(IRQIO_PCF);
|
||||
zpci_handle_fallback_irq();
|
||||
else
|
||||
} else {
|
||||
inc_irq_stat(IRQIO_PCD);
|
||||
zpci_handle_cpu_local_irq(true);
|
||||
}
|
||||
}
|
||||
|
||||
static void zpci_floating_irq_handler(struct airq_struct *airq, bool floating)
|
||||
|
@ -201,7 +203,7 @@ static void zpci_floating_irq_handler(struct airq_struct *airq, bool floating)
|
|||
struct airq_iv *aibv;
|
||||
int irqs_on = 0;
|
||||
|
||||
inc_irq_stat(IRQIO_PCI);
|
||||
inc_irq_stat(IRQIO_PCF);
|
||||
for (si = 0;;) {
|
||||
/* Scan adapter summary indicator bit vector */
|
||||
si = airq_iv_scan(zpci_sbv, si, airq_iv_end(zpci_sbv));
|
||||
|
|
Loading…
Reference in New Issue