irq_remapping.h (1386B)
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 */