ia64/xen-unstable

changeset 13726:44d565181709

Remove the CPU feature handling, unimplementable as it stands.

Signed-off-by: Ewan Mellor <ewan@xensource.com>
author Ewan Mellor <ewan@xensource.com>
date Tue Jan 30 00:10:05 2007 +0000 (2007-01-30)
parents eb7b2a9ce40c
children 9e7b7f9b96a4
files docs/xen-api/xenapi-datamodel.tex tools/libxen/include/xen_cpu_feature.h tools/libxen/include/xen_cpu_feature_internal.h tools/libxen/include/xen_host_cpu.h tools/libxen/include/xen_vm.h tools/libxen/src/xen_cpu_feature.c tools/libxen/src/xen_host_cpu.c tools/libxen/src/xen_vm.c tools/python/xen/xend/XendAPI.py
line diff
     1.1 --- a/docs/xen-api/xenapi-datamodel.tex	Mon Jan 29 19:04:54 2007 +0000
     1.2 +++ b/docs/xen-api/xenapi-datamodel.tex	Tue Jan 30 00:10:05 2007 +0000
     1.3 @@ -163,78 +163,6 @@ The following enumeration types are used
     1.4  \vspace{1cm}
     1.5  \begin{longtable}{|ll|}
     1.6  \hline
     1.7 -{\tt enum cpu\_feature} & \\
     1.8 -\hline
     1.9 -\hspace{0.5cm}{\tt FPU} &  Onboard FPU  \\
    1.10 -\hspace{0.5cm}{\tt VME} &  Virtual Mode Extensions  \\
    1.11 -\hspace{0.5cm}{\tt DE} &  Debugging Extensions  \\
    1.12 -\hspace{0.5cm}{\tt PSE} &  Page Size Extensions  \\
    1.13 -\hspace{0.5cm}{\tt TSC} &  Time Stamp Counter  \\
    1.14 -\hspace{0.5cm}{\tt MSR} &  Model-Specific Registers, RDMSR, WRMSR  \\
    1.15 -\hspace{0.5cm}{\tt PAE} &  Physical Address Extensions  \\
    1.16 -\hspace{0.5cm}{\tt MCE} &  Machine Check Architecture  \\
    1.17 -\hspace{0.5cm}{\tt CX8} &  CMPXCHG8 instruction  \\
    1.18 -\hspace{0.5cm}{\tt APIC} &  Onboard APIC  \\
    1.19 -\hspace{0.5cm}{\tt SEP} &  SYSENTER/SYSEXIT  \\
    1.20 -\hspace{0.5cm}{\tt MTRR} &  Memory Type Range Registers  \\
    1.21 -\hspace{0.5cm}{\tt PGE} &  Page Global Enable  \\
    1.22 -\hspace{0.5cm}{\tt MCA} &  Machine Check Architecture  \\
    1.23 -\hspace{0.5cm}{\tt CMOV} &  CMOV instruction (FCMOVCC and FCOMI too if FPU present)  \\
    1.24 -\hspace{0.5cm}{\tt PAT} &  Page Attribute Table  \\
    1.25 -\hspace{0.5cm}{\tt PSE36} &  36-bit PSEs  \\
    1.26 -\hspace{0.5cm}{\tt PN} &  Processor serial number  \\
    1.27 -\hspace{0.5cm}{\tt CLFLSH} &  Supports the CLFLUSH instruction  \\
    1.28 -\hspace{0.5cm}{\tt DTES} &  Debug Trace Store  \\
    1.29 -\hspace{0.5cm}{\tt ACPI} &  ACPI via MSR  \\
    1.30 -\hspace{0.5cm}{\tt MMX} &  Multimedia Extensions  \\
    1.31 -\hspace{0.5cm}{\tt FXSR} &  FXSAVE and FXRSTOR instructions (fast save and restore  \\
    1.32 -\hspace{0.5cm}{\tt XMM} &  Streaming SIMD Extensions  \\
    1.33 -\hspace{0.5cm}{\tt XMM2} &  Streaming SIMD Extensions-2  \\
    1.34 -\hspace{0.5cm}{\tt SELFSNOOP} &  CPU self snoop  \\
    1.35 -\hspace{0.5cm}{\tt HT} &  Hyper-Threading  \\
    1.36 -\hspace{0.5cm}{\tt ACC} &  Automatic clock control  \\
    1.37 -\hspace{0.5cm}{\tt IA64} &  IA-64 processor  \\
    1.38 -\hspace{0.5cm}{\tt SYSCALL} &  SYSCALL/SYSRET  \\
    1.39 -\hspace{0.5cm}{\tt MP} &  MP Capable.  \\
    1.40 -\hspace{0.5cm}{\tt NX} &  Execute Disable  \\
    1.41 -\hspace{0.5cm}{\tt MMXEXT} &  AMD MMX extensions  \\
    1.42 -\hspace{0.5cm}{\tt LM} &  Long Mode (x86-64)  \\
    1.43 -\hspace{0.5cm}{\tt THREEDNOWEXT} &  AMD 3DNow! extensions  \\
    1.44 -\hspace{0.5cm}{\tt THREEDNOW} &  3DNow!  \\
    1.45 -\hspace{0.5cm}{\tt RECOVERY} &  CPU in recovery mode  \\
    1.46 -\hspace{0.5cm}{\tt LONGRUN} &  Longrun power control  \\
    1.47 -\hspace{0.5cm}{\tt LRTI} &  LongRun table interface  \\
    1.48 -\hspace{0.5cm}{\tt CXMMX} &  Cyrix MMX extensions  \\
    1.49 -\hspace{0.5cm}{\tt K6\_MTRR} &  AMD K6 nonstandard MTRRs  \\
    1.50 -\hspace{0.5cm}{\tt CYRIX\_ARR} &  Cyrix ARRs (= MTRRs)  \\
    1.51 -\hspace{0.5cm}{\tt CENTAUR\_MCR} &  Centaur MCRs (= MTRRs)  \\
    1.52 -\hspace{0.5cm}{\tt K8} &  Opteron, Athlon64  \\
    1.53 -\hspace{0.5cm}{\tt K7} &  Athlon  \\
    1.54 -\hspace{0.5cm}{\tt P3} &  P3  \\
    1.55 -\hspace{0.5cm}{\tt P4} &  P4  \\
    1.56 -\hspace{0.5cm}{\tt CONSTANT\_TSC} &  TSC ticks at a constant rate  \\
    1.57 -\hspace{0.5cm}{\tt FXSAVE\_LEAK} &  FXSAVE leaks FOP/FIP/FOP  \\
    1.58 -\hspace{0.5cm}{\tt XMM3} &  Streaming SIMD Extensions-3  \\
    1.59 -\hspace{0.5cm}{\tt MWAIT} &  Monitor/Mwait support  \\
    1.60 -\hspace{0.5cm}{\tt DSCPL} &  CPL Qualified Debug Store  \\
    1.61 -\hspace{0.5cm}{\tt EST} &  Enhanced SpeedStep  \\
    1.62 -\hspace{0.5cm}{\tt TM2} &  Thermal Monitor 2  \\
    1.63 -\hspace{0.5cm}{\tt CID} &  Context ID  \\
    1.64 -\hspace{0.5cm}{\tt CX16} &  CMPXCHG16B  \\
    1.65 -\hspace{0.5cm}{\tt XTPR} &  Send Task Priority Messages  \\
    1.66 -\hspace{0.5cm}{\tt XSTORE} &  on-CPU RNG present (xstore insn)  \\
    1.67 -\hspace{0.5cm}{\tt XSTORE\_EN} &  on-CPU RNG enabled  \\
    1.68 -\hspace{0.5cm}{\tt XCRYPT} &  on-CPU crypto (xcrypt insn)  \\
    1.69 -\hspace{0.5cm}{\tt XCRYPT\_EN} &  on-CPU crypto enabled  \\
    1.70 -\hspace{0.5cm}{\tt LAHF\_LM} &  LAHF/SAHF in long mode  \\
    1.71 -\hspace{0.5cm}{\tt CMP\_LEGACY} &  If yes HyperThreading not valid  \\
    1.72 -\hspace{0.5cm}{\tt VMX} &  VMX instruction set  \\
    1.73 -\hline
    1.74 -\end{longtable}
    1.75 -
    1.76 -\vspace{1cm}
    1.77 -\begin{longtable}{|ll|}
    1.78 -\hline
    1.79  {\tt enum on\_normal\_exit} & \\
    1.80  \hline
    1.81  \hspace{0.5cm}{\tt destroy} & destroy the VM state \\
    1.82 @@ -1104,10 +1032,6 @@ Quals & Field & Type & Description \\
    1.83  $\mathit{RW}$ &  {\tt VCPUs/params} & string & string-encoded parameters passed to selected VCPU policy \\
    1.84  $\mathit{RW}$ &  {\tt VCPUs/number} & int & Current number of VCPUs \\
    1.85  $\mathit{RO}_\mathit{run}$ &  {\tt VCPUs/utilisation} & (int $\rightarrow$ float) Map & Utilisation for all of guest's current VCPUs \\
    1.86 -$\mathit{RO}_\mathit{ins}$ &  {\tt VCPUs/features/required} & (cpu\_feature) Set & CPU features the guest demands the host supports \\
    1.87 -$\mathit{RO}_\mathit{ins}$ &  {\tt VCPUs/features/can\_use} & (cpu\_feature) Set & CPU features the guest can use if available \\
    1.88 -$\mathit{RW}$ &  {\tt VCPUs/features/force\_on} & (cpu\_feature) Set & CPU features to expose to the guest above the bare minimum \\
    1.89 -$\mathit{RW}$ &  {\tt VCPUs/features/force\_off} & (cpu\_feature) Set & CPU features to hide to the guest \\
    1.90  $\mathit{RW}$ &  {\tt actions/after\_shutdown} & on\_normal\_exit & action to take after the guest has shutdown itself \\
    1.91  $\mathit{RW}$ &  {\tt actions/after\_reboot} & on\_normal\_exit & action to take after the guest has rebooted itself \\
    1.92  $\mathit{RW}$ &  {\tt actions/after\_suspend} & on\_normal\_exit & action to take after the guest has suspended itself \\
    1.93 @@ -2402,342 +2326,6 @@ value of the field
    1.94  \vspace{0.3cm}
    1.95  \vspace{0.3cm}
    1.96  \vspace{0.3cm}
    1.97 -\subsubsection{RPC name:~get\_VCPUs\_features\_required}
    1.98 -
    1.99 -{\bf Overview:} 
   1.100 -Get the VCPUs/features/required field of the given VM.
   1.101 -
   1.102 - \noindent {\bf Signature:} 
   1.103 -\begin{verbatim} ((cpu_feature) Set) get_VCPUs_features_required (session_id s, VM ref self)\end{verbatim}
   1.104 -
   1.105 -
   1.106 -\noindent{\bf Arguments:}
   1.107 -
   1.108 - 
   1.109 -\vspace{0.3cm}
   1.110 -\begin{tabular}{|c|c|p{7cm}|}
   1.111 - \hline
   1.112 -{\bf type} & {\bf name} & {\bf description} \\ \hline
   1.113 -{\tt VM ref } & self & reference to the object \\ \hline 
   1.114 -
   1.115 -\end{tabular}
   1.116 -
   1.117 -\vspace{0.3cm}
   1.118 -
   1.119 - \noindent {\bf Return Type:} 
   1.120 -{\tt 
   1.121 -(cpu\_feature) Set
   1.122 -}
   1.123 -
   1.124 -
   1.125 -value of the field
   1.126 -\vspace{0.3cm}
   1.127 -\vspace{0.3cm}
   1.128 -\vspace{0.3cm}
   1.129 -\subsubsection{RPC name:~get\_VCPUs\_features\_can\_use}
   1.130 -
   1.131 -{\bf Overview:} 
   1.132 -Get the VCPUs/features/can\_use field of the given VM.
   1.133 -
   1.134 - \noindent {\bf Signature:} 
   1.135 -\begin{verbatim} ((cpu_feature) Set) get_VCPUs_features_can_use (session_id s, VM ref self)\end{verbatim}
   1.136 -
   1.137 -
   1.138 -\noindent{\bf Arguments:}
   1.139 -
   1.140 - 
   1.141 -\vspace{0.3cm}
   1.142 -\begin{tabular}{|c|c|p{7cm}|}
   1.143 - \hline
   1.144 -{\bf type} & {\bf name} & {\bf description} \\ \hline
   1.145 -{\tt VM ref } & self & reference to the object \\ \hline 
   1.146 -
   1.147 -\end{tabular}
   1.148 -
   1.149 -\vspace{0.3cm}
   1.150 -
   1.151 - \noindent {\bf Return Type:} 
   1.152 -{\tt 
   1.153 -(cpu\_feature) Set
   1.154 -}
   1.155 -
   1.156 -
   1.157 -value of the field
   1.158 -\vspace{0.3cm}
   1.159 -\vspace{0.3cm}
   1.160 -\vspace{0.3cm}
   1.161 -\subsubsection{RPC name:~get\_VCPUs\_features\_force\_on}
   1.162 -
   1.163 -{\bf Overview:} 
   1.164 -Get the VCPUs/features/force\_on field of the given VM.
   1.165 -
   1.166 - \noindent {\bf Signature:} 
   1.167 -\begin{verbatim} ((cpu_feature) Set) get_VCPUs_features_force_on (session_id s, VM ref self)\end{verbatim}
   1.168 -
   1.169 -
   1.170 -\noindent{\bf Arguments:}
   1.171 -
   1.172 - 
   1.173 -\vspace{0.3cm}
   1.174 -\begin{tabular}{|c|c|p{7cm}|}
   1.175 - \hline
   1.176 -{\bf type} & {\bf name} & {\bf description} \\ \hline
   1.177 -{\tt VM ref } & self & reference to the object \\ \hline 
   1.178 -
   1.179 -\end{tabular}
   1.180 -
   1.181 -\vspace{0.3cm}
   1.182 -
   1.183 - \noindent {\bf Return Type:} 
   1.184 -{\tt 
   1.185 -(cpu\_feature) Set
   1.186 -}
   1.187 -
   1.188 -
   1.189 -value of the field
   1.190 -\vspace{0.3cm}
   1.191 -\vspace{0.3cm}
   1.192 -\vspace{0.3cm}
   1.193 -\subsubsection{RPC name:~set\_VCPUs\_features\_force\_on}
   1.194 -
   1.195 -{\bf Overview:} 
   1.196 -Set the VCPUs/features/force\_on field of the given VM.
   1.197 -
   1.198 - \noindent {\bf Signature:} 
   1.199 -\begin{verbatim} void set_VCPUs_features_force_on (session_id s, VM ref self, (cpu_feature) Set value)\end{verbatim}
   1.200 -
   1.201 -
   1.202 -\noindent{\bf Arguments:}
   1.203 -
   1.204 - 
   1.205 -\vspace{0.3cm}
   1.206 -\begin{tabular}{|c|c|p{7cm}|}
   1.207 - \hline
   1.208 -{\bf type} & {\bf name} & {\bf description} \\ \hline
   1.209 -{\tt VM ref } & self & reference to the object \\ \hline 
   1.210 -
   1.211 -{\tt (cpu\_feature) Set } & value & New value to set \\ \hline 
   1.212 -
   1.213 -\end{tabular}
   1.214 -
   1.215 -\vspace{0.3cm}
   1.216 -
   1.217 - \noindent {\bf Return Type:} 
   1.218 -{\tt 
   1.219 -void
   1.220 -}
   1.221 -
   1.222 -
   1.223 -
   1.224 -\vspace{0.3cm}
   1.225 -\vspace{0.3cm}
   1.226 -\vspace{0.3cm}
   1.227 -\subsubsection{RPC name:~add\_VCPUs\_features\_force\_on}
   1.228 -
   1.229 -{\bf Overview:} 
   1.230 -Add the given value to the VCPUs/features/force\_on field of the given VM. 
   1.231 -If the value is already in that Set, then do nothing.
   1.232 -
   1.233 - \noindent {\bf Signature:} 
   1.234 -\begin{verbatim} void add_VCPUs_features_force_on (session_id s, VM ref self, cpu_feature value)\end{verbatim}
   1.235 -
   1.236 -
   1.237 -\noindent{\bf Arguments:}
   1.238 -
   1.239 - 
   1.240 -\vspace{0.3cm}
   1.241 -\begin{tabular}{|c|c|p{7cm}|}
   1.242 - \hline
   1.243 -{\bf type} & {\bf name} & {\bf description} \\ \hline
   1.244 -{\tt VM ref } & self & reference to the object \\ \hline 
   1.245 -
   1.246 -{\tt cpu\_feature } & value & New value to add \\ \hline 
   1.247 -
   1.248 -\end{tabular}
   1.249 -
   1.250 -\vspace{0.3cm}
   1.251 -
   1.252 - \noindent {\bf Return Type:} 
   1.253 -{\tt 
   1.254 -void
   1.255 -}
   1.256 -
   1.257 -
   1.258 -
   1.259 -\vspace{0.3cm}
   1.260 -\vspace{0.3cm}
   1.261 -\vspace{0.3cm}
   1.262 -\subsubsection{RPC name:~remove\_VCPUs\_features\_force\_on}
   1.263 -
   1.264 -{\bf Overview:} 
   1.265 -Remove the given value from the VCPUs/features/force\_on field of the given
   1.266 -VM.  If the value is not in that Set, then do nothing.
   1.267 -
   1.268 - \noindent {\bf Signature:} 
   1.269 -\begin{verbatim} void remove_VCPUs_features_force_on (session_id s, VM ref self, cpu_feature value)\end{verbatim}
   1.270 -
   1.271 -
   1.272 -\noindent{\bf Arguments:}
   1.273 -
   1.274 - 
   1.275 -\vspace{0.3cm}
   1.276 -\begin{tabular}{|c|c|p{7cm}|}
   1.277 - \hline
   1.278 -{\bf type} & {\bf name} & {\bf description} \\ \hline
   1.279 -{\tt VM ref } & self & reference to the object \\ \hline 
   1.280 -
   1.281 -{\tt cpu\_feature } & value & Value to remove \\ \hline 
   1.282 -
   1.283 -\end{tabular}
   1.284 -
   1.285 -\vspace{0.3cm}
   1.286 -
   1.287 - \noindent {\bf Return Type:} 
   1.288 -{\tt 
   1.289 -void
   1.290 -}
   1.291 -
   1.292 -
   1.293 -
   1.294 -\vspace{0.3cm}
   1.295 -\vspace{0.3cm}
   1.296 -\vspace{0.3cm}
   1.297 -\subsubsection{RPC name:~get\_VCPUs\_features\_force\_off}
   1.298 -
   1.299 -{\bf Overview:} 
   1.300 -Get the VCPUs/features/force\_off field of the given VM.
   1.301 -
   1.302 - \noindent {\bf Signature:} 
   1.303 -\begin{verbatim} ((cpu_feature) Set) get_VCPUs_features_force_off (session_id s, VM ref self)\end{verbatim}
   1.304 -
   1.305 -
   1.306 -\noindent{\bf Arguments:}
   1.307 -
   1.308 - 
   1.309 -\vspace{0.3cm}
   1.310 -\begin{tabular}{|c|c|p{7cm}|}
   1.311 - \hline
   1.312 -{\bf type} & {\bf name} & {\bf description} \\ \hline
   1.313 -{\tt VM ref } & self & reference to the object \\ \hline 
   1.314 -
   1.315 -\end{tabular}
   1.316 -
   1.317 -\vspace{0.3cm}
   1.318 -
   1.319 - \noindent {\bf Return Type:} 
   1.320 -{\tt 
   1.321 -(cpu\_feature) Set
   1.322 -}
   1.323 -
   1.324 -
   1.325 -value of the field
   1.326 -\vspace{0.3cm}
   1.327 -\vspace{0.3cm}
   1.328 -\vspace{0.3cm}
   1.329 -\subsubsection{RPC name:~set\_VCPUs\_features\_force\_off}
   1.330 -
   1.331 -{\bf Overview:} 
   1.332 -Set the VCPUs/features/force\_off field of the given VM.
   1.333 -
   1.334 - \noindent {\bf Signature:} 
   1.335 -\begin{verbatim} void set_VCPUs_features_force_off (session_id s, VM ref self, (cpu_feature) Set value)\end{verbatim}
   1.336 -
   1.337 -
   1.338 -\noindent{\bf Arguments:}
   1.339 -
   1.340 - 
   1.341 -\vspace{0.3cm}
   1.342 -\begin{tabular}{|c|c|p{7cm}|}
   1.343 - \hline
   1.344 -{\bf type} & {\bf name} & {\bf description} \\ \hline
   1.345 -{\tt VM ref } & self & reference to the object \\ \hline 
   1.346 -
   1.347 -{\tt (cpu\_feature) Set } & value & New value to set \\ \hline 
   1.348 -
   1.349 -\end{tabular}
   1.350 -
   1.351 -\vspace{0.3cm}
   1.352 -
   1.353 - \noindent {\bf Return Type:} 
   1.354 -{\tt 
   1.355 -void
   1.356 -}
   1.357 -
   1.358 -
   1.359 -
   1.360 -\vspace{0.3cm}
   1.361 -\vspace{0.3cm}
   1.362 -\vspace{0.3cm}
   1.363 -\subsubsection{RPC name:~add\_VCPUs\_features\_force\_off}
   1.364 -
   1.365 -{\bf Overview:} 
   1.366 -Add the given value to the VCPUs/features/force\_off field of the given VM.
   1.367 - If the value is already in that Set, then do nothing.
   1.368 -
   1.369 - \noindent {\bf Signature:} 
   1.370 -\begin{verbatim} void add_VCPUs_features_force_off (session_id s, VM ref self, cpu_feature value)\end{verbatim}
   1.371 -
   1.372 -
   1.373 -\noindent{\bf Arguments:}
   1.374 -
   1.375 - 
   1.376 -\vspace{0.3cm}
   1.377 -\begin{tabular}{|c|c|p{7cm}|}
   1.378 - \hline
   1.379 -{\bf type} & {\bf name} & {\bf description} \\ \hline
   1.380 -{\tt VM ref } & self & reference to the object \\ \hline 
   1.381 -
   1.382 -{\tt cpu\_feature } & value & New value to add \\ \hline 
   1.383 -
   1.384 -\end{tabular}
   1.385 -
   1.386 -\vspace{0.3cm}
   1.387 -
   1.388 - \noindent {\bf Return Type:} 
   1.389 -{\tt 
   1.390 -void
   1.391 -}
   1.392 -
   1.393 -
   1.394 -
   1.395 -\vspace{0.3cm}
   1.396 -\vspace{0.3cm}
   1.397 -\vspace{0.3cm}
   1.398 -\subsubsection{RPC name:~remove\_VCPUs\_features\_force\_off}
   1.399 -
   1.400 -{\bf Overview:} 
   1.401 -Remove the given value from the VCPUs/features/force\_off field of the
   1.402 -given VM.  If the value is not in that Set, then do nothing.
   1.403 -
   1.404 - \noindent {\bf Signature:} 
   1.405 -\begin{verbatim} void remove_VCPUs_features_force_off (session_id s, VM ref self, cpu_feature value)\end{verbatim}
   1.406 -
   1.407 -
   1.408 -\noindent{\bf Arguments:}
   1.409 -
   1.410 - 
   1.411 -\vspace{0.3cm}
   1.412 -\begin{tabular}{|c|c|p{7cm}|}
   1.413 - \hline
   1.414 -{\bf type} & {\bf name} & {\bf description} \\ \hline
   1.415 -{\tt VM ref } & self & reference to the object \\ \hline 
   1.416 -
   1.417 -{\tt cpu\_feature } & value & Value to remove \\ \hline 
   1.418 -
   1.419 -\end{tabular}
   1.420 -
   1.421 -\vspace{0.3cm}
   1.422 -
   1.423 - \noindent {\bf Return Type:} 
   1.424 -{\tt 
   1.425 -void
   1.426 -}
   1.427 -
   1.428 -
   1.429 -
   1.430 -\vspace{0.3cm}
   1.431 -\vspace{0.3cm}
   1.432 -\vspace{0.3cm}
   1.433  \subsubsection{RPC name:~get\_actions\_after\_shutdown}
   1.434  
   1.435  {\bf Overview:} 
   1.436 @@ -4896,7 +4484,6 @@ Quals & Field & Type & Description \\
   1.437  $\mathit{RO}_\mathit{ins}$ &  {\tt vendor} & string & the vendor of the physical CPU \\
   1.438  $\mathit{RO}_\mathit{ins}$ &  {\tt speed} & int & the speed of the physical CPU \\
   1.439  $\mathit{RO}_\mathit{ins}$ &  {\tt modelname} & string & the model name of the physical CPU \\
   1.440 -$\mathit{RO}_\mathit{ins}$ &  {\tt features} & (cpu\_feature) Set & the features supported by the CPU \\
   1.441  $\mathit{RO}_\mathit{run}$ &  {\tt utilisation} & float & the current CPU utilisation \\
   1.442  \hline
   1.443  \end{longtable}
   1.444 @@ -5093,38 +4680,6 @@ value of the field
   1.445  \vspace{0.3cm}
   1.446  \vspace{0.3cm}
   1.447  \vspace{0.3cm}
   1.448 -\subsubsection{RPC name:~get\_features}
   1.449 -
   1.450 -{\bf Overview:} 
   1.451 -Get the features field of the given host\_cpu.
   1.452 -
   1.453 - \noindent {\bf Signature:} 
   1.454 -\begin{verbatim} ((cpu_feature) Set) get_features (session_id s, host_cpu ref self)\end{verbatim}
   1.455 -
   1.456 -
   1.457 -\noindent{\bf Arguments:}
   1.458 -
   1.459 - 
   1.460 -\vspace{0.3cm}
   1.461 -\begin{tabular}{|c|c|p{7cm}|}
   1.462 - \hline
   1.463 -{\bf type} & {\bf name} & {\bf description} \\ \hline
   1.464 -{\tt host\_cpu ref } & self & reference to the object \\ \hline 
   1.465 -
   1.466 -\end{tabular}
   1.467 -
   1.468 -\vspace{0.3cm}
   1.469 -
   1.470 - \noindent {\bf Return Type:} 
   1.471 -{\tt 
   1.472 -(cpu\_feature) Set
   1.473 -}
   1.474 -
   1.475 -
   1.476 -value of the field
   1.477 -\vspace{0.3cm}
   1.478 -\vspace{0.3cm}
   1.479 -\vspace{0.3cm}
   1.480  \subsubsection{RPC name:~get\_utilisation}
   1.481  
   1.482  {\bf Overview:} 
     2.1 --- a/tools/libxen/include/xen_cpu_feature.h	Mon Jan 29 19:04:54 2007 +0000
     2.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.3 @@ -1,387 +0,0 @@
     2.4 -/*
     2.5 - * Copyright (c) 2006, XenSource Inc.
     2.6 - *
     2.7 - * This library is free software; you can redistribute it and/or
     2.8 - * modify it under the terms of the GNU Lesser General Public
     2.9 - * License as published by the Free Software Foundation; either
    2.10 - * version 2.1 of the License, or (at your option) any later version.
    2.11 - *
    2.12 - * This library is distributed in the hope that it will be useful,
    2.13 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    2.14 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    2.15 - * Lesser General Public License for more details.
    2.16 - *
    2.17 - * You should have received a copy of the GNU Lesser General Public
    2.18 - * License along with this library; if not, write to the Free Software
    2.19 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
    2.20 - */
    2.21 -
    2.22 -#ifndef XEN_CPU_FEATURE_H
    2.23 -#define XEN_CPU_FEATURE_H
    2.24 -
    2.25 -
    2.26 -#include "xen_common.h"
    2.27 -
    2.28 -
    2.29 -enum xen_cpu_feature
    2.30 -{
    2.31 -    /**
    2.32 -     *  Onboard FPU
    2.33 -     */
    2.34 -    XEN_CPU_FEATURE_FPU,
    2.35 -
    2.36 -    /**
    2.37 -     *  Virtual Mode Extensions
    2.38 -     */
    2.39 -    XEN_CPU_FEATURE_VME,
    2.40 -
    2.41 -    /**
    2.42 -     *  Debugging Extensions
    2.43 -     */
    2.44 -    XEN_CPU_FEATURE_DE,
    2.45 -
    2.46 -    /**
    2.47 -     *  Page Size Extensions
    2.48 -     */
    2.49 -    XEN_CPU_FEATURE_PSE,
    2.50 -
    2.51 -    /**
    2.52 -     *  Time Stamp Counter
    2.53 -     */
    2.54 -    XEN_CPU_FEATURE_TSC,
    2.55 -
    2.56 -    /**
    2.57 -     *  Model-Specific Registers, RDMSR, WRMSR
    2.58 -     */
    2.59 -    XEN_CPU_FEATURE_MSR,
    2.60 -
    2.61 -    /**
    2.62 -     *  Physical Address Extensions
    2.63 -     */
    2.64 -    XEN_CPU_FEATURE_PAE,
    2.65 -
    2.66 -    /**
    2.67 -     *  Machine Check Architecture
    2.68 -     */
    2.69 -    XEN_CPU_FEATURE_MCE,
    2.70 -
    2.71 -    /**
    2.72 -     *  CMPXCHG8 instruction
    2.73 -     */
    2.74 -    XEN_CPU_FEATURE_CX8,
    2.75 -
    2.76 -    /**
    2.77 -     *  Onboard APIC
    2.78 -     */
    2.79 -    XEN_CPU_FEATURE_APIC,
    2.80 -
    2.81 -    /**
    2.82 -     *  SYSENTER/SYSEXIT
    2.83 -     */
    2.84 -    XEN_CPU_FEATURE_SEP,
    2.85 -
    2.86 -    /**
    2.87 -     *  Memory Type Range Registers
    2.88 -     */
    2.89 -    XEN_CPU_FEATURE_MTRR,
    2.90 -
    2.91 -    /**
    2.92 -     *  Page Global Enable
    2.93 -     */
    2.94 -    XEN_CPU_FEATURE_PGE,
    2.95 -
    2.96 -    /**
    2.97 -     *  Machine Check Architecture
    2.98 -     */
    2.99 -    XEN_CPU_FEATURE_MCA,
   2.100 -
   2.101 -    /**
   2.102 -     *  CMOV instruction (FCMOVCC and FCOMI too if FPU present)
   2.103 -     */
   2.104 -    XEN_CPU_FEATURE_CMOV,
   2.105 -
   2.106 -    /**
   2.107 -     *  Page Attribute Table
   2.108 -     */
   2.109 -    XEN_CPU_FEATURE_PAT,
   2.110 -
   2.111 -    /**
   2.112 -     *  36-bit PSEs
   2.113 -     */
   2.114 -    XEN_CPU_FEATURE_PSE36,
   2.115 -
   2.116 -    /**
   2.117 -     *  Processor serial number
   2.118 -     */
   2.119 -    XEN_CPU_FEATURE_PN,
   2.120 -
   2.121 -    /**
   2.122 -     *  Supports the CLFLUSH instruction
   2.123 -     */
   2.124 -    XEN_CPU_FEATURE_CLFLSH,
   2.125 -
   2.126 -    /**
   2.127 -     *  Debug Trace Store
   2.128 -     */
   2.129 -    XEN_CPU_FEATURE_DTES,
   2.130 -
   2.131 -    /**
   2.132 -     *  ACPI via MSR
   2.133 -     */
   2.134 -    XEN_CPU_FEATURE_ACPI,
   2.135 -
   2.136 -    /**
   2.137 -     *  Multimedia Extensions
   2.138 -     */
   2.139 -    XEN_CPU_FEATURE_MMX,
   2.140 -
   2.141 -    /**
   2.142 -     *  FXSAVE and FXRSTOR instructions (fast save and restore
   2.143 -     */
   2.144 -    XEN_CPU_FEATURE_FXSR,
   2.145 -
   2.146 -    /**
   2.147 -     *  Streaming SIMD Extensions
   2.148 -     */
   2.149 -    XEN_CPU_FEATURE_XMM,
   2.150 -
   2.151 -    /**
   2.152 -     *  Streaming SIMD Extensions-2
   2.153 -     */
   2.154 -    XEN_CPU_FEATURE_XMM2,
   2.155 -
   2.156 -    /**
   2.157 -     *  CPU self snoop
   2.158 -     */
   2.159 -    XEN_CPU_FEATURE_SELFSNOOP,
   2.160 -
   2.161 -    /**
   2.162 -     *  Hyper-Threading
   2.163 -     */
   2.164 -    XEN_CPU_FEATURE_HT,
   2.165 -
   2.166 -    /**
   2.167 -     *  Automatic clock control
   2.168 -     */
   2.169 -    XEN_CPU_FEATURE_ACC,
   2.170 -
   2.171 -    /**
   2.172 -     *  IA-64 processor
   2.173 -     */
   2.174 -    XEN_CPU_FEATURE_IA64,
   2.175 -
   2.176 -    /**
   2.177 -     *  SYSCALL/SYSRET
   2.178 -     */
   2.179 -    XEN_CPU_FEATURE_SYSCALL,
   2.180 -
   2.181 -    /**
   2.182 -     *  MP Capable.
   2.183 -     */
   2.184 -    XEN_CPU_FEATURE_MP,
   2.185 -
   2.186 -    /**
   2.187 -     *  Execute Disable
   2.188 -     */
   2.189 -    XEN_CPU_FEATURE_NX,
   2.190 -
   2.191 -    /**
   2.192 -     *  AMD MMX extensions
   2.193 -     */
   2.194 -    XEN_CPU_FEATURE_MMXEXT,
   2.195 -
   2.196 -    /**
   2.197 -     *  Long Mode (x86-64)
   2.198 -     */
   2.199 -    XEN_CPU_FEATURE_LM,
   2.200 -
   2.201 -    /**
   2.202 -     *  AMD 3DNow! extensions
   2.203 -     */
   2.204 -    XEN_CPU_FEATURE_THREEDNOWEXT,
   2.205 -
   2.206 -    /**
   2.207 -     *  3DNow!
   2.208 -     */
   2.209 -    XEN_CPU_FEATURE_THREEDNOW,
   2.210 -
   2.211 -    /**
   2.212 -     *  CPU in recovery mode
   2.213 -     */
   2.214 -    XEN_CPU_FEATURE_RECOVERY,
   2.215 -
   2.216 -    /**
   2.217 -     *  Longrun power control
   2.218 -     */
   2.219 -    XEN_CPU_FEATURE_LONGRUN,
   2.220 -
   2.221 -    /**
   2.222 -     *  LongRun table interface
   2.223 -     */
   2.224 -    XEN_CPU_FEATURE_LRTI,
   2.225 -
   2.226 -    /**
   2.227 -     *  Cyrix MMX extensions
   2.228 -     */
   2.229 -    XEN_CPU_FEATURE_CXMMX,
   2.230 -
   2.231 -    /**
   2.232 -     *  AMD K6 nonstandard MTRRs
   2.233 -     */
   2.234 -    XEN_CPU_FEATURE_K6_MTRR,
   2.235 -
   2.236 -    /**
   2.237 -     *  Cyrix ARRs (= MTRRs)
   2.238 -     */
   2.239 -    XEN_CPU_FEATURE_CYRIX_ARR,
   2.240 -
   2.241 -    /**
   2.242 -     *  Centaur MCRs (= MTRRs)
   2.243 -     */
   2.244 -    XEN_CPU_FEATURE_CENTAUR_MCR,
   2.245 -
   2.246 -    /**
   2.247 -     *  Opteron, Athlon64
   2.248 -     */
   2.249 -    XEN_CPU_FEATURE_K8,
   2.250 -
   2.251 -    /**
   2.252 -     *  Athlon
   2.253 -     */
   2.254 -    XEN_CPU_FEATURE_K7,
   2.255 -
   2.256 -    /**
   2.257 -     *  P3
   2.258 -     */
   2.259 -    XEN_CPU_FEATURE_P3,
   2.260 -
   2.261 -    /**
   2.262 -     *  P4
   2.263 -     */
   2.264 -    XEN_CPU_FEATURE_P4,
   2.265 -
   2.266 -    /**
   2.267 -     *  TSC ticks at a constant rate
   2.268 -     */
   2.269 -    XEN_CPU_FEATURE_CONSTANT_TSC,
   2.270 -
   2.271 -    /**
   2.272 -     *  FXSAVE leaks FOP/FIP/FOP
   2.273 -     */
   2.274 -    XEN_CPU_FEATURE_FXSAVE_LEAK,
   2.275 -
   2.276 -    /**
   2.277 -     *  Streaming SIMD Extensions-3
   2.278 -     */
   2.279 -    XEN_CPU_FEATURE_XMM3,
   2.280 -
   2.281 -    /**
   2.282 -     *  Monitor/Mwait support
   2.283 -     */
   2.284 -    XEN_CPU_FEATURE_MWAIT,
   2.285 -
   2.286 -    /**
   2.287 -     *  CPL Qualified Debug Store
   2.288 -     */
   2.289 -    XEN_CPU_FEATURE_DSCPL,
   2.290 -
   2.291 -    /**
   2.292 -     *  Enhanced SpeedStep
   2.293 -     */
   2.294 -    XEN_CPU_FEATURE_EST,
   2.295 -
   2.296 -    /**
   2.297 -     *  Thermal Monitor 2
   2.298 -     */
   2.299 -    XEN_CPU_FEATURE_TM2,
   2.300 -
   2.301 -    /**
   2.302 -     *  Context ID
   2.303 -     */
   2.304 -    XEN_CPU_FEATURE_CID,
   2.305 -
   2.306 -    /**
   2.307 -     *  CMPXCHG16B
   2.308 -     */
   2.309 -    XEN_CPU_FEATURE_CX16,
   2.310 -
   2.311 -    /**
   2.312 -     *  Send Task Priority Messages
   2.313 -     */
   2.314 -    XEN_CPU_FEATURE_XTPR,
   2.315 -
   2.316 -    /**
   2.317 -     *  on-CPU RNG present (xstore insn)
   2.318 -     */
   2.319 -    XEN_CPU_FEATURE_XSTORE,
   2.320 -
   2.321 -    /**
   2.322 -     *  on-CPU RNG enabled
   2.323 -     */
   2.324 -    XEN_CPU_FEATURE_XSTORE_EN,
   2.325 -
   2.326 -    /**
   2.327 -     *  on-CPU crypto (xcrypt insn)
   2.328 -     */
   2.329 -    XEN_CPU_FEATURE_XCRYPT,
   2.330 -
   2.331 -    /**
   2.332 -     *  on-CPU crypto enabled
   2.333 -     */
   2.334 -    XEN_CPU_FEATURE_XCRYPT_EN,
   2.335 -
   2.336 -    /**
   2.337 -     *  LAHF/SAHF in long mode
   2.338 -     */
   2.339 -    XEN_CPU_FEATURE_LAHF_LM,
   2.340 -
   2.341 -    /**
   2.342 -     *  If yes HyperThreading not valid
   2.343 -     */
   2.344 -    XEN_CPU_FEATURE_CMP_LEGACY,
   2.345 -
   2.346 -    /**
   2.347 -     *  VMX instruction set
   2.348 -     */
   2.349 -    XEN_CPU_FEATURE_VMX
   2.350 -};
   2.351 -
   2.352 -
   2.353 -typedef struct xen_cpu_feature_set
   2.354 -{
   2.355 -    size_t size;
   2.356 -    enum xen_cpu_feature contents[];
   2.357 -} xen_cpu_feature_set;
   2.358 -
   2.359 -/**
   2.360 - * Allocate a xen_cpu_feature_set of the given size.
   2.361 - */
   2.362 -extern xen_cpu_feature_set *
   2.363 -xen_cpu_feature_set_alloc(size_t size);
   2.364 -
   2.365 -/**
   2.366 - * Free the given xen_cpu_feature_set.  The given set must have been
   2.367 - * allocated by this library.
   2.368 - */
   2.369 -extern void
   2.370 -xen_cpu_feature_set_free(xen_cpu_feature_set *set);
   2.371 -
   2.372 -
   2.373 -/**
   2.374 - * Return the name corresponding to the given code.  This string must
   2.375 - * not be modified or freed.
   2.376 - */
   2.377 -extern const char *
   2.378 -xen_cpu_feature_to_string(enum xen_cpu_feature val);
   2.379 -
   2.380 -
   2.381 -/**
   2.382 - * Return the correct code for the given string, or set the session
   2.383 - * object to failure and return an undefined value if the given string does
   2.384 - * not match a known code.
   2.385 - */
   2.386 -extern enum xen_cpu_feature
   2.387 -xen_cpu_feature_from_string(xen_session *session, const char *str);
   2.388 -
   2.389 -
   2.390 -#endif
     3.1 --- a/tools/libxen/include/xen_cpu_feature_internal.h	Mon Jan 29 19:04:54 2007 +0000
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,37 +0,0 @@
     3.4 -/*
     3.5 - * Copyright (c) 2006, XenSource Inc.
     3.6 - *
     3.7 - * This library is free software; you can redistribute it and/or
     3.8 - * modify it under the terms of the GNU Lesser General Public
     3.9 - * License as published by the Free Software Foundation; either
    3.10 - * version 2.1 of the License, or (at your option) any later version.
    3.11 - *
    3.12 - * This library is distributed in the hope that it will be useful,
    3.13 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    3.14 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    3.15 - * Lesser General Public License for more details.
    3.16 - *
    3.17 - * You should have received a copy of the GNU Lesser General Public
    3.18 - * License along with this library; if not, write to the Free Software
    3.19 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
    3.20 - */
    3.21 -
    3.22 -
    3.23 -/*
    3.24 - * Declarations of the abstract types used during demarshalling of enum
    3.25 - * xen_cpu_feature.  Internal to this library -- do not use from outside.
    3.26 - */
    3.27 -
    3.28 -
    3.29 -#ifndef XEN_CPU_FEATURE_INTERNAL_H
    3.30 -#define XEN_CPU_FEATURE_INTERNAL_H
    3.31 -
    3.32 -
    3.33 -#include "xen_internal.h"
    3.34 -
    3.35 -
    3.36 -extern const abstract_type xen_cpu_feature_abstract_type_;
    3.37 -extern const abstract_type xen_cpu_feature_set_abstract_type_;
    3.38 -
    3.39 -
    3.40 -#endif
     4.1 --- a/tools/libxen/include/xen_host_cpu.h	Mon Jan 29 19:04:54 2007 +0000
     4.2 +++ b/tools/libxen/include/xen_host_cpu.h	Tue Jan 30 00:10:05 2007 +0000
     4.3 @@ -20,7 +20,6 @@
     4.4  #define XEN_HOST_CPU_H
     4.5  
     4.6  #include "xen_common.h"
     4.7 -#include "xen_cpu_feature.h"
     4.8  #include "xen_host_cpu_decl.h"
     4.9  #include "xen_host_decl.h"
    4.10  
    4.11 @@ -69,7 +68,6 @@ typedef struct xen_host_cpu_record
    4.12      char *vendor;
    4.13      int64_t speed;
    4.14      char *modelname;
    4.15 -    struct xen_cpu_feature_set *features;
    4.16      double utilisation;
    4.17  } xen_host_cpu_record;
    4.18  
    4.19 @@ -223,13 +221,6 @@ xen_host_cpu_get_modelname(xen_session *
    4.20  
    4.21  
    4.22  /**
    4.23 - * Get the features field of the given host_cpu.
    4.24 - */
    4.25 -extern bool
    4.26 -xen_host_cpu_get_features(xen_session *session, struct xen_cpu_feature_set **result, xen_host_cpu host_cpu);
    4.27 -
    4.28 -
    4.29 -/**
    4.30   * Get the utilisation field of the given host_cpu.
    4.31   */
    4.32  extern bool
     5.1 --- a/tools/libxen/include/xen_vm.h	Mon Jan 29 19:04:54 2007 +0000
     5.2 +++ b/tools/libxen/include/xen_vm.h	Tue Jan 30 00:10:05 2007 +0000
     5.3 @@ -21,7 +21,6 @@
     5.4  
     5.5  #include "xen_common.h"
     5.6  #include "xen_console_decl.h"
     5.7 -#include "xen_cpu_feature.h"
     5.8  #include "xen_host_decl.h"
     5.9  #include "xen_int_float_map.h"
    5.10  #include "xen_on_crash_behaviour.h"
    5.11 @@ -119,10 +118,6 @@ typedef struct xen_vm_record
    5.12      char *vcpus_params;
    5.13      int64_t vcpus_number;
    5.14      xen_int_float_map *vcpus_utilisation;
    5.15 -    struct xen_cpu_feature_set *vcpus_features_required;
    5.16 -    struct xen_cpu_feature_set *vcpus_features_can_use;
    5.17 -    struct xen_cpu_feature_set *vcpus_features_force_on;
    5.18 -    struct xen_cpu_feature_set *vcpus_features_force_off;
    5.19      enum xen_on_normal_exit actions_after_shutdown;
    5.20      enum xen_on_normal_exit actions_after_reboot;
    5.21      enum xen_on_normal_exit actions_after_suspend;
    5.22 @@ -383,34 +378,6 @@ xen_vm_get_vcpus_utilisation(xen_session
    5.23  
    5.24  
    5.25  /**
    5.26 - * Get the VCPUs/features/required field of the given VM.
    5.27 - */
    5.28 -extern bool
    5.29 -xen_vm_get_vcpus_features_required(xen_session *session, struct xen_cpu_feature_set **result, xen_vm vm);
    5.30 -
    5.31 -
    5.32 -/**
    5.33 - * Get the VCPUs/features/can_use field of the given VM.
    5.34 - */
    5.35 -extern bool
    5.36 -xen_vm_get_vcpus_features_can_use(xen_session *session, struct xen_cpu_feature_set **result, xen_vm vm);
    5.37 -
    5.38 -
    5.39 -/**
    5.40 - * Get the VCPUs/features/force_on field of the given VM.
    5.41 - */
    5.42 -extern bool
    5.43 -xen_vm_get_vcpus_features_force_on(xen_session *session, struct xen_cpu_feature_set **result, xen_vm vm);
    5.44 -
    5.45 -
    5.46 -/**
    5.47 - * Get the VCPUs/features/force_off field of the given VM.
    5.48 - */
    5.49 -extern bool
    5.50 -xen_vm_get_vcpus_features_force_off(xen_session *session, struct xen_cpu_feature_set **result, xen_vm vm);
    5.51 -
    5.52 -
    5.53 -/**
    5.54   * Get the actions/after_shutdown field of the given VM.
    5.55   */
    5.56  extern bool
    5.57 @@ -635,52 +602,6 @@ xen_vm_set_vcpus_number(xen_session *ses
    5.58  
    5.59  
    5.60  /**
    5.61 - * Set the VCPUs/features/force_on field of the given VM.
    5.62 - */
    5.63 -extern bool
    5.64 -xen_vm_set_vcpus_features_force_on(xen_session *session, xen_vm vm, struct xen_cpu_feature_set *force_on);
    5.65 -
    5.66 -
    5.67 -/**
    5.68 - * Add the given value to the VCPUs/features/force_on field of the
    5.69 - * given VM.  If the value is already in that Set, then do nothing.
    5.70 - */
    5.71 -extern bool
    5.72 -xen_vm_add_vcpus_features_force_on(xen_session *session, xen_vm vm, enum xen_cpu_feature value);
    5.73 -
    5.74 -
    5.75 -/**
    5.76 - * Remove the given value from the VCPUs/features/force_on field of the
    5.77 - * given VM.  If the value is not in that Set, then do nothing.
    5.78 - */
    5.79 -extern bool
    5.80 -xen_vm_remove_vcpus_features_force_on(xen_session *session, xen_vm vm, enum xen_cpu_feature value);
    5.81 -
    5.82 -
    5.83 -/**
    5.84 - * Set the VCPUs/features/force_off field of the given VM.
    5.85 - */
    5.86 -extern bool
    5.87 -xen_vm_set_vcpus_features_force_off(xen_session *session, xen_vm vm, struct xen_cpu_feature_set *force_off);
    5.88 -
    5.89 -
    5.90 -/**
    5.91 - * Add the given value to the VCPUs/features/force_off field of the
    5.92 - * given VM.  If the value is already in that Set, then do nothing.
    5.93 - */
    5.94 -extern bool
    5.95 -xen_vm_add_vcpus_features_force_off(xen_session *session, xen_vm vm, enum xen_cpu_feature value);
    5.96 -
    5.97 -
    5.98 -/**
    5.99 - * Remove the given value from the VCPUs/features/force_off field of
   5.100 - * the given VM.  If the value is not in that Set, then do nothing.
   5.101 - */
   5.102 -extern bool
   5.103 -xen_vm_remove_vcpus_features_force_off(xen_session *session, xen_vm vm, enum xen_cpu_feature value);
   5.104 -
   5.105 -
   5.106 -/**
   5.107   * Set the actions/after_shutdown field of the given VM.
   5.108   */
   5.109  extern bool
     6.1 --- a/tools/libxen/src/xen_cpu_feature.c	Mon Jan 29 19:04:54 2007 +0000
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,143 +0,0 @@
     6.4 -/*
     6.5 - * Copyright (c) 2006, XenSource Inc.
     6.6 - *
     6.7 - * This library is free software; you can redistribute it and/or
     6.8 - * modify it under the terms of the GNU Lesser General Public
     6.9 - * License as published by the Free Software Foundation; either
    6.10 - * version 2.1 of the License, or (at your option) any later version.
    6.11 - *
    6.12 - * This library is distributed in the hope that it will be useful,
    6.13 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    6.14 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    6.15 - * Lesser General Public License for more details.
    6.16 - *
    6.17 - * You should have received a copy of the GNU Lesser General Public
    6.18 - * License along with this library; if not, write to the Free Software
    6.19 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
    6.20 - */
    6.21 -
    6.22 -#include <string.h>
    6.23 -
    6.24 -#include "xen_internal.h"
    6.25 -#include "xen_cpu_feature.h"
    6.26 -#include "xen_cpu_feature_internal.h"
    6.27 -
    6.28 -
    6.29 -/*
    6.30 - * Maintain this in the same order as the enum declaration!
    6.31 - */
    6.32 -static const char *lookup_table[] =
    6.33 -{
    6.34 -    "FPU",
    6.35 -    "VME",
    6.36 -    "DE",
    6.37 -    "PSE",
    6.38 -    "TSC",
    6.39 -    "MSR",
    6.40 -    "PAE",
    6.41 -    "MCE",
    6.42 -    "CX8",
    6.43 -    "APIC",
    6.44 -    "SEP",
    6.45 -    "MTRR",
    6.46 -    "PGE",
    6.47 -    "MCA",
    6.48 -    "CMOV",
    6.49 -    "PAT",
    6.50 -    "PSE36",
    6.51 -    "PN",
    6.52 -    "CLFLSH",
    6.53 -    "DTES",
    6.54 -    "ACPI",
    6.55 -    "MMX",
    6.56 -    "FXSR",
    6.57 -    "XMM",
    6.58 -    "XMM2",
    6.59 -    "SELFSNOOP",
    6.60 -    "HT",
    6.61 -    "ACC",
    6.62 -    "IA64",
    6.63 -    "SYSCALL",
    6.64 -    "MP",
    6.65 -    "NX",
    6.66 -    "MMXEXT",
    6.67 -    "LM",
    6.68 -    "THREEDNOWEXT",
    6.69 -    "THREEDNOW",
    6.70 -    "RECOVERY",
    6.71 -    "LONGRUN",
    6.72 -    "LRTI",
    6.73 -    "CXMMX",
    6.74 -    "K6_MTRR",
    6.75 -    "CYRIX_ARR",
    6.76 -    "CENTAUR_MCR",
    6.77 -    "K8",
    6.78 -    "K7",
    6.79 -    "P3",
    6.80 -    "P4",
    6.81 -    "CONSTANT_TSC",
    6.82 -    "FXSAVE_LEAK",
    6.83 -    "XMM3",
    6.84 -    "MWAIT",
    6.85 -    "DSCPL",
    6.86 -    "EST",
    6.87 -    "TM2",
    6.88 -    "CID",
    6.89 -    "CX16",
    6.90 -    "XTPR",
    6.91 -    "XSTORE",
    6.92 -    "XSTORE_EN",
    6.93 -    "XCRYPT",
    6.94 -    "XCRYPT_EN",
    6.95 -    "LAHF_LM",
    6.96 -    "CMP_LEGACY",
    6.97 -    "VMX"
    6.98 -};
    6.99 -
   6.100 -
   6.101 -extern xen_cpu_feature_set *
   6.102 -xen_cpu_feature_set_alloc(size_t size)
   6.103 -{
   6.104 -    return calloc(1, sizeof(xen_cpu_feature_set) +
   6.105 -                  size * sizeof(enum xen_cpu_feature));
   6.106 -}
   6.107 -
   6.108 -
   6.109 -extern void
   6.110 -xen_cpu_feature_set_free(xen_cpu_feature_set *set)
   6.111 -{
   6.112 -    free(set);
   6.113 -}
   6.114 -
   6.115 -
   6.116 -const char *
   6.117 -xen_cpu_feature_to_string(enum xen_cpu_feature val)
   6.118 -{
   6.119 -    return lookup_table[val];
   6.120 -}
   6.121 -
   6.122 -
   6.123 -extern enum xen_cpu_feature
   6.124 -xen_cpu_feature_from_string(xen_session *session, const char *str)
   6.125 -{
   6.126 -    return ENUM_LOOKUP(session, str, lookup_table);
   6.127 -}
   6.128 -
   6.129 -
   6.130 -const abstract_type xen_cpu_feature_abstract_type_ =
   6.131 -    {
   6.132 -        .typename = ENUM,
   6.133 -        .enum_marshaller =
   6.134 -             (const char *(*)(int))&xen_cpu_feature_to_string,
   6.135 -        .enum_demarshaller =
   6.136 -             (int (*)(xen_session *, const char *))&xen_cpu_feature_from_string
   6.137 -    };
   6.138 -
   6.139 -
   6.140 -const abstract_type xen_cpu_feature_set_abstract_type_ =
   6.141 -    {
   6.142 -        .typename = SET,
   6.143 -        .child = &xen_cpu_feature_abstract_type_
   6.144 -    };
   6.145 -
   6.146 -
     7.1 --- a/tools/libxen/src/xen_host_cpu.c	Mon Jan 29 19:04:54 2007 +0000
     7.2 +++ b/tools/libxen/src/xen_host_cpu.c	Tue Jan 30 00:10:05 2007 +0000
     7.3 @@ -21,8 +21,6 @@
     7.4  #include <stdlib.h>
     7.5  
     7.6  #include "xen_common.h"
     7.7 -#include "xen_cpu_feature.h"
     7.8 -#include "xen_cpu_feature_internal.h"
     7.9  #include "xen_host.h"
    7.10  #include "xen_host_cpu.h"
    7.11  #include "xen_internal.h"
    7.12 @@ -57,9 +55,6 @@ static const struct_member xen_host_cpu_
    7.13          { .key = "modelname",
    7.14            .type = &abstract_type_string,
    7.15            .offset = offsetof(xen_host_cpu_record, modelname) },
    7.16 -        { .key = "features",
    7.17 -          .type = &xen_cpu_feature_set_abstract_type_,
    7.18 -          .offset = offsetof(xen_host_cpu_record, features) },
    7.19          { .key = "utilisation",
    7.20            .type = &abstract_type_float,
    7.21            .offset = offsetof(xen_host_cpu_record, utilisation) }
    7.22 @@ -87,7 +82,6 @@ xen_host_cpu_record_free(xen_host_cpu_re
    7.23      xen_host_record_opt_free(record->host);
    7.24      free(record->vendor);
    7.25      free(record->modelname);
    7.26 -    xen_cpu_feature_set_free(record->features);
    7.27      free(record);
    7.28  }
    7.29  
    7.30 @@ -247,23 +241,6 @@ xen_host_cpu_get_modelname(xen_session *
    7.31  
    7.32  
    7.33  bool
    7.34 -xen_host_cpu_get_features(xen_session *session, struct xen_cpu_feature_set **result, xen_host_cpu host_cpu)
    7.35 -{
    7.36 -    abstract_value param_values[] =
    7.37 -        {
    7.38 -            { .type = &abstract_type_string,
    7.39 -              .u.string_val = host_cpu }
    7.40 -        };
    7.41 -
    7.42 -    abstract_type result_type = xen_cpu_feature_set_abstract_type_;
    7.43 -
    7.44 -    *result = NULL;
    7.45 -    XEN_CALL_("host_cpu.get_features");
    7.46 -    return session->ok;
    7.47 -}
    7.48 -
    7.49 -
    7.50 -bool
    7.51  xen_host_cpu_get_utilisation(xen_session *session, double *result, xen_host_cpu host_cpu)
    7.52  {
    7.53      abstract_value param_values[] =
     8.1 --- a/tools/libxen/src/xen_vm.c	Mon Jan 29 19:04:54 2007 +0000
     8.2 +++ b/tools/libxen/src/xen_vm.c	Tue Jan 30 00:10:05 2007 +0000
     8.3 @@ -22,8 +22,6 @@
     8.4  
     8.5  #include "xen_common.h"
     8.6  #include "xen_console.h"
     8.7 -#include "xen_cpu_feature.h"
     8.8 -#include "xen_cpu_feature_internal.h"
     8.9  #include "xen_host.h"
    8.10  #include "xen_int_float_map.h"
    8.11  #include "xen_internal.h"
    8.12 @@ -99,18 +97,6 @@ static const struct_member xen_vm_record
    8.13          { .key = "VCPUs_utilisation",
    8.14            .type = &abstract_type_int_float_map,
    8.15            .offset = offsetof(xen_vm_record, vcpus_utilisation) },
    8.16 -        { .key = "VCPUs_features_required",
    8.17 -          .type = &xen_cpu_feature_set_abstract_type_,
    8.18 -          .offset = offsetof(xen_vm_record, vcpus_features_required) },
    8.19 -        { .key = "VCPUs_features_can_use",
    8.20 -          .type = &xen_cpu_feature_set_abstract_type_,
    8.21 -          .offset = offsetof(xen_vm_record, vcpus_features_can_use) },
    8.22 -        { .key = "VCPUs_features_force_on",
    8.23 -          .type = &xen_cpu_feature_set_abstract_type_,
    8.24 -          .offset = offsetof(xen_vm_record, vcpus_features_force_on) },
    8.25 -        { .key = "VCPUs_features_force_off",
    8.26 -          .type = &xen_cpu_feature_set_abstract_type_,
    8.27 -          .offset = offsetof(xen_vm_record, vcpus_features_force_off) },
    8.28          { .key = "actions_after_shutdown",
    8.29            .type = &xen_on_normal_exit_abstract_type_,
    8.30            .offset = offsetof(xen_vm_record, actions_after_shutdown) },
    8.31 @@ -204,10 +190,6 @@ xen_vm_record_free(xen_vm_record *record
    8.32      free(record->vcpus_policy);
    8.33      free(record->vcpus_params);
    8.34      xen_int_float_map_free(record->vcpus_utilisation);
    8.35 -    xen_cpu_feature_set_free(record->vcpus_features_required);
    8.36 -    xen_cpu_feature_set_free(record->vcpus_features_can_use);
    8.37 -    xen_cpu_feature_set_free(record->vcpus_features_force_on);
    8.38 -    xen_cpu_feature_set_free(record->vcpus_features_force_off);
    8.39      xen_console_record_opt_set_free(record->consoles);
    8.40      xen_vif_record_opt_set_free(record->vifs);
    8.41      xen_vbd_record_opt_set_free(record->vbds);
    8.42 @@ -576,74 +558,6 @@ xen_vm_get_vcpus_utilisation(xen_session
    8.43  
    8.44  
    8.45  bool
    8.46 -xen_vm_get_vcpus_features_required(xen_session *session, struct xen_cpu_feature_set **result, xen_vm vm)
    8.47 -{
    8.48 -    abstract_value param_values[] =
    8.49 -        {
    8.50 -            { .type = &abstract_type_string,
    8.51 -              .u.string_val = vm }
    8.52 -        };
    8.53 -
    8.54 -    abstract_type result_type = xen_cpu_feature_set_abstract_type_;
    8.55 -
    8.56 -    *result = NULL;
    8.57 -    XEN_CALL_("VM.get_VCPUs_features_required");
    8.58 -    return session->ok;
    8.59 -}
    8.60 -
    8.61 -
    8.62 -bool
    8.63 -xen_vm_get_vcpus_features_can_use(xen_session *session, struct xen_cpu_feature_set **result, xen_vm vm)
    8.64 -{
    8.65 -    abstract_value param_values[] =
    8.66 -        {
    8.67 -            { .type = &abstract_type_string,
    8.68 -              .u.string_val = vm }
    8.69 -        };
    8.70 -
    8.71 -    abstract_type result_type = xen_cpu_feature_set_abstract_type_;
    8.72 -
    8.73 -    *result = NULL;
    8.74 -    XEN_CALL_("VM.get_VCPUs_features_can_use");
    8.75 -    return session->ok;
    8.76 -}
    8.77 -
    8.78 -
    8.79 -bool
    8.80 -xen_vm_get_vcpus_features_force_on(xen_session *session, struct xen_cpu_feature_set **result, xen_vm vm)
    8.81 -{
    8.82 -    abstract_value param_values[] =
    8.83 -        {
    8.84 -            { .type = &abstract_type_string,
    8.85 -              .u.string_val = vm }
    8.86 -        };
    8.87 -
    8.88 -    abstract_type result_type = xen_cpu_feature_set_abstract_type_;
    8.89 -
    8.90 -    *result = NULL;
    8.91 -    XEN_CALL_("VM.get_VCPUs_features_force_on");
    8.92 -    return session->ok;
    8.93 -}
    8.94 -
    8.95 -
    8.96 -bool
    8.97 -xen_vm_get_vcpus_features_force_off(xen_session *session, struct xen_cpu_feature_set **result, xen_vm vm)
    8.98 -{
    8.99 -    abstract_value param_values[] =
   8.100 -        {
   8.101 -            { .type = &abstract_type_string,
   8.102 -              .u.string_val = vm }
   8.103 -        };
   8.104 -
   8.105 -    abstract_type result_type = xen_cpu_feature_set_abstract_type_;
   8.106 -
   8.107 -    *result = NULL;
   8.108 -    XEN_CALL_("VM.get_VCPUs_features_force_off");
   8.109 -    return session->ok;
   8.110 -}
   8.111 -
   8.112 -
   8.113 -bool
   8.114  xen_vm_get_actions_after_shutdown(xen_session *session, enum xen_on_normal_exit *result, xen_vm vm)
   8.115  {
   8.116      abstract_value param_values[] =
   8.117 @@ -1166,102 +1080,6 @@ xen_vm_set_vcpus_number(xen_session *ses
   8.118  
   8.119  
   8.120  bool
   8.121 -xen_vm_set_vcpus_features_force_on(xen_session *session, xen_vm vm, struct xen_cpu_feature_set *force_on)
   8.122 -{
   8.123 -    abstract_value param_values[] =
   8.124 -        {
   8.125 -            { .type = &abstract_type_string,
   8.126 -              .u.string_val = vm },
   8.127 -            { .type = &xen_cpu_feature_set_abstract_type_,
   8.128 -              .u.set_val = (arbitrary_set *)force_on }
   8.129 -        };
   8.130 -
   8.131 -    xen_call_(session, "VM.set_VCPUs_features_force_on", param_values, 2, NULL, NULL);
   8.132 -    return session->ok;
   8.133 -}
   8.134 -
   8.135 -
   8.136 -bool
   8.137 -xen_vm_add_vcpus_features_force_on(xen_session *session, xen_vm vm, enum xen_cpu_feature value)
   8.138 -{
   8.139 -    abstract_value param_values[] =
   8.140 -        {
   8.141 -            { .type = &abstract_type_string,
   8.142 -              .u.string_val = vm },
   8.143 -            { .type = &xen_cpu_feature_abstract_type_,
   8.144 -              .u.string_val = xen_cpu_feature_to_string(value) }
   8.145 -        };
   8.146 -
   8.147 -    xen_call_(session, "VM.add_VCPUs_features_force_on", param_values, 2, NULL, NULL);
   8.148 -    return session->ok;
   8.149 -}
   8.150 -
   8.151 -
   8.152 -bool
   8.153 -xen_vm_remove_vcpus_features_force_on(xen_session *session, xen_vm vm, enum xen_cpu_feature value)
   8.154 -{
   8.155 -    abstract_value param_values[] =
   8.156 -        {
   8.157 -            { .type = &abstract_type_string,
   8.158 -              .u.string_val = vm },
   8.159 -            { .type = &xen_cpu_feature_abstract_type_,
   8.160 -              .u.string_val = xen_cpu_feature_to_string(value) }
   8.161 -        };
   8.162 -
   8.163 -    xen_call_(session, "VM.remove_VCPUs_features_force_on", param_values, 2, NULL, NULL);
   8.164 -    return session->ok;
   8.165 -}
   8.166 -
   8.167 -
   8.168 -bool
   8.169 -xen_vm_set_vcpus_features_force_off(xen_session *session, xen_vm vm, struct xen_cpu_feature_set *force_off)
   8.170 -{
   8.171 -    abstract_value param_values[] =
   8.172 -        {
   8.173 -            { .type = &abstract_type_string,
   8.174 -              .u.string_val = vm },
   8.175 -            { .type = &xen_cpu_feature_set_abstract_type_,
   8.176 -              .u.set_val = (arbitrary_set *)force_off }
   8.177 -        };
   8.178 -
   8.179 -    xen_call_(session, "VM.set_VCPUs_features_force_off", param_values, 2, NULL, NULL);
   8.180 -    return session->ok;
   8.181 -}
   8.182 -
   8.183 -
   8.184 -bool
   8.185 -xen_vm_add_vcpus_features_force_off(xen_session *session, xen_vm vm, enum xen_cpu_feature value)
   8.186 -{
   8.187 -    abstract_value param_values[] =
   8.188 -        {
   8.189 -            { .type = &abstract_type_string,
   8.190 -              .u.string_val = vm },
   8.191 -            { .type = &xen_cpu_feature_abstract_type_,
   8.192 -              .u.string_val = xen_cpu_feature_to_string(value) }
   8.193 -        };
   8.194 -
   8.195 -    xen_call_(session, "VM.add_VCPUs_features_force_off", param_values, 2, NULL, NULL);
   8.196 -    return session->ok;
   8.197 -}
   8.198 -
   8.199 -
   8.200 -bool
   8.201 -xen_vm_remove_vcpus_features_force_off(xen_session *session, xen_vm vm, enum xen_cpu_feature value)
   8.202 -{
   8.203 -    abstract_value param_values[] =
   8.204 -        {
   8.205 -            { .type = &abstract_type_string,
   8.206 -              .u.string_val = vm },
   8.207 -            { .type = &xen_cpu_feature_abstract_type_,
   8.208 -              .u.string_val = xen_cpu_feature_to_string(value) }
   8.209 -        };
   8.210 -
   8.211 -    xen_call_(session, "VM.remove_VCPUs_features_force_off", param_values, 2, NULL, NULL);
   8.212 -    return session->ok;
   8.213 -}
   8.214 -
   8.215 -
   8.216 -bool
   8.217  xen_vm_set_actions_after_shutdown(xen_session *session, xen_vm vm, enum xen_on_normal_exit after_shutdown)
   8.218  {
   8.219      abstract_value param_values[] =
     9.1 --- a/tools/python/xen/xend/XendAPI.py	Mon Jan 29 19:04:54 2007 +0000
     9.2 +++ b/tools/python/xen/xend/XendAPI.py	Tue Jan 30 00:10:05 2007 +0000
     9.3 @@ -652,15 +652,11 @@ class XendAPI(object):
     9.4  
     9.5      host_cpu_attr_ro = ['host',
     9.6                          'number',
     9.7 -                        'features',
     9.8                          'utilisation']
     9.9  
    9.10      # attributes
    9.11      def host_cpu_get_host(self, session, host_cpu_ref):
    9.12          return xen_api_success(XendNode.instance().uuid)
    9.13 -    def host_cpu_get_features(self, session, host_cpu_ref):
    9.14 -        features = XendNode.instance().get_host_cpu_features(host_cpu_ref)
    9.15 -        return xen_api_success(features)
    9.16      def host_cpu_get_utilisation(self, session, host_cpu_ref):
    9.17          util = XendNode.instance().get_host_cpu_load(host_cpu_ref)
    9.18          return xen_api_success(util)
    9.19 @@ -676,7 +672,6 @@ class XendAPI(object):
    9.20          record = {'uuid': host_cpu_ref,
    9.21                    'host': node.uuid,
    9.22                    'number': node.get_host_cpu_number(host_cpu_ref),
    9.23 -                  'features': node.get_host_cpu_features(host_cpu_ref),
    9.24                    'utilisation': node.get_host_cpu_load(host_cpu_ref)}
    9.25          return xen_api_success(record)
    9.26  
    9.27 @@ -860,8 +855,6 @@ class XendAPI(object):
    9.28                    'memory_static_min',
    9.29                    'VCPUs_number',
    9.30                    'VCPUs_utilisation',
    9.31 -                  'VCPUs_features_required',
    9.32 -                  'VCPUs_can_use',
    9.33                    'consoles',
    9.34                    'VIFs',
    9.35                    'VBDs',
    9.36 @@ -879,8 +872,6 @@ class XendAPI(object):
    9.37                    'memory_dynamic_min',
    9.38                    'VCPUs_policy',
    9.39                    'VCPUs_params',
    9.40 -                  'VCPUs_features_force_on',
    9.41 -                  'VCPUs_features_force_off',
    9.42                    'actions_after_shutdown',
    9.43                    'actions_after_reboot',
    9.44                    'actions_after_suspend',
    9.45 @@ -927,10 +918,6 @@ class XendAPI(object):
    9.46          'memory_static_min',
    9.47          'VCPUs_policy',
    9.48          'VCPUs_params',
    9.49 -        'VCPUs_features_required',
    9.50 -        'VCPUs_features_can_use',
    9.51 -        'VCPUs_features_force_on',
    9.52 -        'VCPUs_features_force_off',
    9.53          'actions_after_shutdown',
    9.54          'actions_after_reboot',
    9.55          'actions_after_suspend',
    9.56 @@ -990,14 +977,6 @@ class XendAPI(object):
    9.57          dom = XendDomain.instance().get_vm_by_uuid(vm_ref)
    9.58          return xen_api_success(dom.get_vcpus_util())
    9.59      
    9.60 -    def VM_get_VCPUs_features_required(self, session, vm_ref):
    9.61 -        dom = XendDomain.instance().get_vm_by_uuid(vm_ref)
    9.62 -        return xen_api_todo() # unsupported by xc
    9.63 -    
    9.64 -    def VM_get_VCPUs_can_use(self, session, vm_ref):
    9.65 -        dom = XendDomain.instance().get_vm_by_uuid(vm_ref)
    9.66 -        return xen_api_todo() # unsupported by xc
    9.67 -    
    9.68      def VM_get_VIFs(self, session, vm_ref):
    9.69          dom = XendDomain.instance().get_vm_by_uuid(vm_ref)
    9.70          return xen_api_success(dom.get_vifs())
    9.71 @@ -1055,14 +1034,6 @@ class XendAPI(object):
    9.72          dom = XendDomain.instance().get_vm_by_uuid(vm_ref)
    9.73          return xen_api_todo() # need access to scheduler
    9.74      
    9.75 -    def VM_get_VCPUs_features_force_on(self, session, vm_ref):
    9.76 -        dom = XendDomain.instance().get_vm_by_uuid(vm_ref)
    9.77 -        return xen_api_todo()
    9.78 -    
    9.79 -    def VM_get_VCPUs_features_force_off(self, session, vm_ref):
    9.80 -        dom = XendDomain.instance().get_vm_by_uuid(vm_ref)
    9.81 -        return xen_api_todo()
    9.82 -    
    9.83      def VM_get_actions_after_shutdown(self, session, vm_ref):
    9.84          dom = XendDomain.instance().get_vm_by_uuid(vm_ref)
    9.85          return xen_api_success(dom.get_on_shutdown())
    9.86 @@ -1157,14 +1128,6 @@ class XendAPI(object):
    9.87          dom = XendDomain.instance().get_vm_by_uuid(vm_ref)
    9.88          return xen_api_todo()
    9.89      
    9.90 -    def VM_set_VCPUs_features_force_on(self, session, vm_ref, features):
    9.91 -        dom = XendDomain.instance().get_vm_by_uuid(vm_ref)
    9.92 -        return xen_api_todo()
    9.93 -    
    9.94 -    def VM_set_VCPUs_features_force_off(self, session, vm_ref, features):
    9.95 -        dom = XendDomain.instance().get_vm_by_uuid(vm_ref)
    9.96 -        return xen_api_todo()
    9.97 -    
    9.98      def VM_set_actions_after_shutdown(self, session, vm_ref, action):
    9.99          if action not in XEN_API_ON_NORMAL_EXIST:
   9.100              return xen_api_error(['VM_ON_NORMAL_EXIT_INVALID', vm_ref])
   9.101 @@ -1280,10 +1243,6 @@ class XendAPI(object):
   9.102              'VCPUs_params': xeninfo.get_vcpus_params(),
   9.103              'VCPUs_number': xeninfo.getVCpuCount(),
   9.104              'VCPUs_utilisation': xeninfo.get_vcpus_util(),
   9.105 -            'VCPUs_features_required': [],
   9.106 -            'VCPUs_features_can_use': [],
   9.107 -            'VCPUs_features_force_on': [],
   9.108 -            'VCPUs_features_force_off': [],
   9.109              'actions_after_shutdown': xeninfo.get_on_shutdown(),
   9.110              'actions_after_reboot': xeninfo.get_on_reboot(),
   9.111              'actions_after_suspend': xeninfo.get_on_suspend(),