Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
iommu
irq_remapping.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2012 Advanced Micro Devices, Inc.
3
* Author: Joerg Roedel <
[email protected]
>
4
*
5
* This program is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 as published
7
* by the Free Software Foundation.
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
*
18
* This header file contains stuff that is shared between different interrupt
19
* remapping drivers but with no need to be visible outside of the IOMMU layer.
20
*/
21
22
#ifndef __IRQ_REMAPPING_H
23
#define __IRQ_REMAPPING_H
24
25
#ifdef CONFIG_IRQ_REMAP
26
27
struct
IO_APIC_route_entry
;
28
struct
io_apic_irq_attr
;
29
struct
irq_data
;
30
struct
cpumask
;
31
struct
pci_dev
;
32
struct
msi_msg
;
33
34
extern
int
disable_irq_remap
;
35
extern
int
disable_sourceid_checking
;
36
extern
int
no_x2apic_optout
;
37
38
struct
irq_remap_ops {
39
/* Check whether Interrupt Remapping is supported */
40
int
(*supported)(
void
);
41
42
/* Initializes hardware and makes it ready for remapping interrupts */
43
int
(*prepare)(
void
);
44
45
/* Enables the remapping hardware */
46
int
(*
enable
)(
void
);
47
48
/* Disables the remapping hardware */
49
void
(*
disable
)(
void
);
50
51
/* Reenables the remapping hardware */
52
int
(*reenable)(
int
);
53
54
/* Enable fault handling */
55
int
(*enable_faulting)(
void
);
56
57
/* IO-APIC setup routine */
58
int
(*setup_ioapic_entry)(
int
irq
,
struct
IO_APIC_route_entry
*,
59
unsigned
int
,
int
,
60
struct
io_apic_irq_attr
*);
61
62
/* Set the CPU affinity of a remapped interrupt */
63
int
(*set_affinity)(
struct
irq_data
*
data
,
const
struct
cpumask
*
mask
,
64
bool
force
);
65
66
/* Free an IRQ */
67
int
(*
free_irq
)(
int
);
68
69
/* Create MSI msg to use for interrupt remapping */
70
void
(*compose_msi_msg)(
struct
pci_dev
*,
71
unsigned
int
,
unsigned
int
,
72
struct
msi_msg
*,
u8
);
73
74
/* Allocate remapping resources for MSI */
75
int
(*msi_alloc_irq)(
struct
pci_dev
*,
int
,
int
);
76
77
/* Setup the remapped MSI irq */
78
int
(*msi_setup_irq)(
struct
pci_dev
*,
unsigned
int
,
int
,
int
);
79
80
/* Setup interrupt remapping for an HPET MSI */
81
int
(*setup_hpet_msi)(
unsigned
int
,
unsigned
int
);
82
};
83
84
extern
struct
irq_remap_ops
intel_irq_remap_ops
;
85
extern
struct
irq_remap_ops amd_iommu_irq_ops;
86
87
#else
/* CONFIG_IRQ_REMAP */
88
89
#define irq_remapping_enabled 0
90
#define disable_irq_remap 1
91
92
#endif
/* CONFIG_IRQ_REMAP */
93
94
#endif
/* __IRQ_REMAPPING_H */
Generated on Thu Jan 10 2013 13:06:11 for Linux Kernel by
1.8.2