/root/src/xen/xen/include/public/nmi.h
Line | Count | Source (jump to first uncovered line) |
1 | | /****************************************************************************** |
2 | | * nmi.h |
3 | | * |
4 | | * NMI callback registration and reason codes. |
5 | | * |
6 | | * Permission is hereby granted, free of charge, to any person obtaining a copy |
7 | | * of this software and associated documentation files (the "Software"), to |
8 | | * deal in the Software without restriction, including without limitation the |
9 | | * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
10 | | * sell copies of the Software, and to permit persons to whom the Software is |
11 | | * furnished to do so, subject to the following conditions: |
12 | | * |
13 | | * The above copyright notice and this permission notice shall be included in |
14 | | * all copies or substantial portions of the Software. |
15 | | * |
16 | | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
17 | | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
18 | | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
19 | | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
20 | | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
21 | | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
22 | | * DEALINGS IN THE SOFTWARE. |
23 | | * |
24 | | * Copyright (c) 2005, Keir Fraser <keir@xensource.com> |
25 | | */ |
26 | | |
27 | | #ifndef __XEN_PUBLIC_NMI_H__ |
28 | | #define __XEN_PUBLIC_NMI_H__ |
29 | | |
30 | | #include "xen.h" |
31 | | |
32 | | /* |
33 | | * NMI reason codes: |
34 | | * Currently these are x86-specific, stored in arch_shared_info.nmi_reason. |
35 | | */ |
36 | | /* I/O-check error reported via ISA port 0x61, bit 6. */ |
37 | 0 | #define _XEN_NMIREASON_io_error 0 |
38 | | #define XEN_NMIREASON_io_error (1UL << _XEN_NMIREASON_io_error) |
39 | | /* PCI SERR reported via ISA port 0x61, bit 7. */ |
40 | 0 | #define _XEN_NMIREASON_pci_serr 1 |
41 | | #define XEN_NMIREASON_pci_serr (1UL << _XEN_NMIREASON_pci_serr) |
42 | | #if __XEN_INTERFACE_VERSION__ < 0x00040300 /* legacy alias of the above */ |
43 | | /* Parity error reported via ISA port 0x61, bit 7. */ |
44 | | #define _XEN_NMIREASON_parity_error 1 |
45 | | #define XEN_NMIREASON_parity_error (1UL << _XEN_NMIREASON_parity_error) |
46 | | #endif |
47 | | /* Unknown hardware-generated NMI. */ |
48 | 0 | #define _XEN_NMIREASON_unknown 2 |
49 | | #define XEN_NMIREASON_unknown (1UL << _XEN_NMIREASON_unknown) |
50 | | |
51 | | /* |
52 | | * long nmi_op(unsigned int cmd, void *arg) |
53 | | * NB. All ops return zero on success, else a negative error code. |
54 | | */ |
55 | | |
56 | | /* |
57 | | * Register NMI callback for this (calling) VCPU. Currently this only makes |
58 | | * sense for domain 0, vcpu 0. All other callers will be returned EINVAL. |
59 | | * arg == pointer to xennmi_callback structure. |
60 | | */ |
61 | 0 | #define XENNMI_register_callback 0 |
62 | | struct xennmi_callback { |
63 | | unsigned long handler_address; |
64 | | unsigned long pad; |
65 | | }; |
66 | | typedef struct xennmi_callback xennmi_callback_t; |
67 | | DEFINE_XEN_GUEST_HANDLE(xennmi_callback_t); |
68 | | |
69 | | /* |
70 | | * Deregister NMI callback for this (calling) VCPU. |
71 | | * arg == NULL. |
72 | | */ |
73 | 0 | #define XENNMI_unregister_callback 1 |
74 | | |
75 | | #endif /* __XEN_PUBLIC_NMI_H__ */ |
76 | | |
77 | | /* |
78 | | * Local variables: |
79 | | * mode: C |
80 | | * c-file-style: "BSD" |
81 | | * c-basic-offset: 4 |
82 | | * tab-width: 4 |
83 | | * indent-tabs-mode: nil |
84 | | * End: |
85 | | */ |