Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git] / include / xen / interface / dom0_ops.h
1 /******************************************************************************
2  * dom0_ops.h
3  * 
4  * Process command requests from domain-0 guest OS.
5  * 
6  * Copyright (c) 2002-2003, B Dragovic
7  * Copyright (c) 2002-2006, K Fraser
8  */
9
10 #ifndef __XEN_PUBLIC_DOM0_OPS_H__
11 #define __XEN_PUBLIC_DOM0_OPS_H__
12
13 #include "xen.h"
14 #include "platform.h"
15
16 #if __XEN_INTERFACE_VERSION__ >= 0x00030204
17 #error "dom0_ops.h is a compatibility interface only"
18 #endif
19
20 #define DOM0_INTERFACE_VERSION XENPF_INTERFACE_VERSION
21
22 #define DOM0_SETTIME          XENPF_settime
23 #define dom0_settime          xenpf_settime
24 #define dom0_settime_t        xenpf_settime_t
25
26 #define DOM0_ADD_MEMTYPE      XENPF_add_memtype
27 #define dom0_add_memtype      xenpf_add_memtype
28 #define dom0_add_memtype_t    xenpf_add_memtype_t
29
30 #define DOM0_DEL_MEMTYPE      XENPF_del_memtype
31 #define dom0_del_memtype      xenpf_del_memtype
32 #define dom0_del_memtype_t    xenpf_del_memtype_t
33
34 #define DOM0_READ_MEMTYPE     XENPF_read_memtype
35 #define dom0_read_memtype     xenpf_read_memtype
36 #define dom0_read_memtype_t   xenpf_read_memtype_t
37
38 #define DOM0_MICROCODE        XENPF_microcode_update
39 #define dom0_microcode        xenpf_microcode_update
40 #define dom0_microcode_t      xenpf_microcode_update_t
41
42 #define DOM0_PLATFORM_QUIRK   XENPF_platform_quirk
43 #define dom0_platform_quirk   xenpf_platform_quirk
44 #define dom0_platform_quirk_t xenpf_platform_quirk_t
45
46 typedef uint64_t cpumap_t;
47
48 /* Unsupported legacy operation -- defined for API compatibility. */
49 #define DOM0_MSR                 15
50 struct dom0_msr {
51     /* IN variables. */
52     uint32_t write;
53     cpumap_t cpu_mask;
54     uint32_t msr;
55     uint32_t in1;
56     uint32_t in2;
57     /* OUT variables. */
58     uint32_t out1;
59     uint32_t out2;
60 };
61 typedef struct dom0_msr dom0_msr_t;
62 DEFINE_XEN_GUEST_HANDLE(dom0_msr_t);
63
64 /* Unsupported legacy operation -- defined for API compatibility. */
65 #define DOM0_PHYSICAL_MEMORY_MAP 40
66 struct dom0_memory_map_entry {
67     uint64_t start, end;
68     uint32_t flags; /* reserved */
69     uint8_t  is_ram;
70 };
71 typedef struct dom0_memory_map_entry dom0_memory_map_entry_t;
72 DEFINE_XEN_GUEST_HANDLE(dom0_memory_map_entry_t);
73
74 struct dom0_op {
75     uint32_t cmd;
76     uint32_t interface_version; /* DOM0_INTERFACE_VERSION */
77     union {
78         struct dom0_msr               msr;
79         struct dom0_settime           settime;
80         struct dom0_add_memtype       add_memtype;
81         struct dom0_del_memtype       del_memtype;
82         struct dom0_read_memtype      read_memtype;
83         struct dom0_microcode         microcode;
84         struct dom0_platform_quirk    platform_quirk;
85         struct dom0_memory_map_entry  physical_memory_map;
86         uint8_t                       pad[128];
87     } u;
88 };
89 typedef struct dom0_op dom0_op_t;
90 DEFINE_XEN_GUEST_HANDLE(dom0_op_t);
91
92 #endif /* __XEN_PUBLIC_DOM0_OPS_H__ */
93
94 /*
95  * Local variables:
96  * mode: C
97  * c-set-style: "BSD"
98  * c-basic-offset: 4
99  * tab-width: 4
100  * indent-tabs-mode: nil
101  * End:
102  */