Commit | Line | Data |
---|---|---|
45051539 | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
736baef4 JR |
2 | /* |
3 | * Copyright (C) 2012 Advanced Micro Devices, Inc. | |
63ce3ae8 | 4 | * Author: Joerg Roedel <jroedel@suse.de> |
736baef4 | 5 | * |
736baef4 JR |
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 | ||
8a8f422d SS |
10 | #ifndef __IRQ_REMAPPING_H |
11 | #define __IRQ_REMAPPING_H | |
736baef4 JR |
12 | |
13 | #ifdef CONFIG_IRQ_REMAP | |
14 | ||
4c1bad6a | 15 | struct irq_data; |
5e2b930b | 16 | struct msi_msg; |
947045a2 JL |
17 | struct irq_domain; |
18 | struct irq_alloc_info; | |
0c3f173a | 19 | |
03bbcb2e | 20 | extern int irq_remap_broken; |
736baef4 JR |
21 | extern int disable_sourceid_checking; |
22 | extern int no_x2apic_optout; | |
078e1ee2 | 23 | extern int irq_remapping_enabled; |
736baef4 | 24 | |
3d9b98f4 FW |
25 | extern int disable_irq_post; |
26 | ||
736baef4 | 27 | struct irq_remap_ops { |
6f281923 FW |
28 | /* The supported capabilities */ |
29 | int capability; | |
30 | ||
736baef4 | 31 | /* Initializes hardware and makes it ready for remapping interrupts */ |
95a02e97 | 32 | int (*prepare)(void); |
736baef4 JR |
33 | |
34 | /* Enables the remapping hardware */ | |
95a02e97 | 35 | int (*enable)(void); |
4f3d8b67 JR |
36 | |
37 | /* Disables the remapping hardware */ | |
95a02e97 | 38 | void (*disable)(void); |
4f3d8b67 JR |
39 | |
40 | /* Reenables the remapping hardware */ | |
95a02e97 | 41 | int (*reenable)(int); |
4f3d8b67 JR |
42 | |
43 | /* Enable fault handling */ | |
44 | int (*enable_faulting)(void); | |
736baef4 JR |
45 | }; |
46 | ||
47 | extern struct irq_remap_ops intel_irq_remap_ops; | |
6b474b82 | 48 | extern struct irq_remap_ops amd_iommu_irq_ops; |
29217a47 | 49 | extern struct irq_remap_ops hyperv_irq_remap_ops; |
736baef4 | 50 | |
05152a04 JR |
51 | #else /* CONFIG_IRQ_REMAP */ |
52 | ||
53 | #define irq_remapping_enabled 0 | |
03bbcb2e | 54 | #define irq_remap_broken 0 |
3d9b98f4 | 55 | #define disable_irq_post 1 |
05152a04 | 56 | |
736baef4 JR |
57 | #endif /* CONFIG_IRQ_REMAP */ |
58 | ||
8a8f422d | 59 | #endif /* __IRQ_REMAPPING_H */ |