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 | |
15 | struct irq_data; |
16 | struct msi_msg; |
17 | struct irq_domain; |
18 | struct irq_alloc_info; |
19 | |
20 | extern int irq_remap_broken; |
21 | extern int disable_sourceid_checking; |
22 | extern int no_x2apic_optout; |
23 | extern int irq_remapping_enabled; |
24 | |
25 | extern int disable_irq_post; |
26 | |
27 | struct 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 | |
47 | extern struct irq_remap_ops intel_irq_remap_ops; |
48 | extern struct irq_remap_ops amd_iommu_irq_ops; |
49 | extern 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 | |