diff options
Diffstat (limited to 'include/linux/irq.h')
-rw-r--r-- | include/linux/irq.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index def2b2aac8b1..5e91f6bcaacd 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -442,6 +442,8 @@ static inline irq_hw_number_t irqd_to_hwirq(struct irq_data *d) | |||
442 | * @irq_set_vcpu_affinity: optional to target a vCPU in a virtual machine | 442 | * @irq_set_vcpu_affinity: optional to target a vCPU in a virtual machine |
443 | * @ipi_send_single: send a single IPI to destination cpus | 443 | * @ipi_send_single: send a single IPI to destination cpus |
444 | * @ipi_send_mask: send an IPI to destination cpus in cpumask | 444 | * @ipi_send_mask: send an IPI to destination cpus in cpumask |
445 | * @irq_nmi_setup: function called from core code before enabling an NMI | ||
446 | * @irq_nmi_teardown: function called from core code after disabling an NMI | ||
445 | * @flags: chip specific flags | 447 | * @flags: chip specific flags |
446 | */ | 448 | */ |
447 | struct irq_chip { | 449 | struct irq_chip { |
@@ -490,6 +492,9 @@ struct irq_chip { | |||
490 | void (*ipi_send_single)(struct irq_data *data, unsigned int cpu); | 492 | void (*ipi_send_single)(struct irq_data *data, unsigned int cpu); |
491 | void (*ipi_send_mask)(struct irq_data *data, const struct cpumask *dest); | 493 | void (*ipi_send_mask)(struct irq_data *data, const struct cpumask *dest); |
492 | 494 | ||
495 | int (*irq_nmi_setup)(struct irq_data *data); | ||
496 | void (*irq_nmi_teardown)(struct irq_data *data); | ||
497 | |||
493 | unsigned long flags; | 498 | unsigned long flags; |
494 | }; | 499 | }; |
495 | 500 | ||
@@ -505,6 +510,7 @@ struct irq_chip { | |||
505 | * IRQCHIP_ONESHOT_SAFE: One shot does not require mask/unmask | 510 | * IRQCHIP_ONESHOT_SAFE: One shot does not require mask/unmask |
506 | * IRQCHIP_EOI_THREADED: Chip requires eoi() on unmask in threaded mode | 511 | * IRQCHIP_EOI_THREADED: Chip requires eoi() on unmask in threaded mode |
507 | * IRQCHIP_SUPPORTS_LEVEL_MSI Chip can provide two doorbells for Level MSIs | 512 | * IRQCHIP_SUPPORTS_LEVEL_MSI Chip can provide two doorbells for Level MSIs |
513 | * IRQCHIP_SUPPORTS_NMI: Chip can deliver NMIs, only for root irqchips | ||
508 | */ | 514 | */ |
509 | enum { | 515 | enum { |
510 | IRQCHIP_SET_TYPE_MASKED = (1 << 0), | 516 | IRQCHIP_SET_TYPE_MASKED = (1 << 0), |
@@ -515,6 +521,7 @@ enum { | |||
515 | IRQCHIP_ONESHOT_SAFE = (1 << 5), | 521 | IRQCHIP_ONESHOT_SAFE = (1 << 5), |
516 | IRQCHIP_EOI_THREADED = (1 << 6), | 522 | IRQCHIP_EOI_THREADED = (1 << 6), |
517 | IRQCHIP_SUPPORTS_LEVEL_MSI = (1 << 7), | 523 | IRQCHIP_SUPPORTS_LEVEL_MSI = (1 << 7), |
524 | IRQCHIP_SUPPORTS_NMI = (1 << 8), | ||
518 | }; | 525 | }; |
519 | 526 | ||
520 | #include <linux/irqdesc.h> | 527 | #include <linux/irqdesc.h> |
@@ -594,6 +601,9 @@ extern void handle_percpu_devid_irq(struct irq_desc *desc); | |||
594 | extern void handle_bad_irq(struct irq_desc *desc); | 601 | extern void handle_bad_irq(struct irq_desc *desc); |
595 | extern void handle_nested_irq(unsigned int irq); | 602 | extern void handle_nested_irq(unsigned int irq); |
596 | 603 | ||
604 | extern void handle_fasteoi_nmi(struct irq_desc *desc); | ||
605 | extern void handle_percpu_devid_fasteoi_nmi(struct irq_desc *desc); | ||
606 | |||
597 | extern int irq_chip_compose_msi_msg(struct irq_data *data, struct msi_msg *msg); | 607 | extern int irq_chip_compose_msi_msg(struct irq_data *data, struct msi_msg *msg); |
598 | extern int irq_chip_pm_get(struct irq_data *data); | 608 | extern int irq_chip_pm_get(struct irq_data *data); |
599 | extern int irq_chip_pm_put(struct irq_data *data); | 609 | extern int irq_chip_pm_put(struct irq_data *data); |