linux/drivers/iommu/irq_remapping.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Copyright (C) 2012 Advanced Micro Devices, Inc.
   4 * Author: Joerg Roedel <jroedel@suse.de>
   5 *
   6 * This header file contains stuff that is shared between different interrupt
   7 * remapping drivers but with no need to be visible outside of the IOMMU layer.
   8 */
   9
  10#ifndef __IRQ_REMAPPING_H
  11#define __IRQ_REMAPPING_H
  12
  13#ifdef CONFIG_IRQ_REMAP
  14
  15struct irq_data;
  16struct msi_msg;
  17struct irq_domain;
  18struct irq_alloc_info;
  19
  20extern int irq_remap_broken;
  21extern int disable_sourceid_checking;
  22extern int no_x2apic_optout;
  23extern int irq_remapping_enabled;
  24
  25extern int disable_irq_post;
  26
  27struct irq_remap_ops {
  28        /* The supported capabilities */
  29        int capability;
  30
  31        /* Initializes hardware and makes it ready for remapping interrupts */
  32        int  (*prepare)(void);
  33
  34        /* Enables the remapping hardware */
  35        int  (*enable)(void);
  36
  37        /* Disables the remapping hardware */
  38        void (*disable)(void);
  39
  40        /* Reenables the remapping hardware */
  41        int  (*reenable)(int);
  42
  43        /* Enable fault handling */
  44        int  (*enable_faulting)(void);
  45};
  46
  47extern struct irq_remap_ops intel_irq_remap_ops;
  48extern struct irq_remap_ops amd_iommu_irq_ops;
  49extern struct irq_remap_ops hyperv_irq_remap_ops;
  50
  51#else  /* CONFIG_IRQ_REMAP */
  52
  53#define irq_remapping_enabled 0
  54#define irq_remap_broken      0
  55#define disable_irq_post      1
  56
  57#endif /* CONFIG_IRQ_REMAP */
  58
  59#endif /* __IRQ_REMAPPING_H */
  60