aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl/libxl.h
Commit message (Collapse)AuthorAgeFilesLines
...
* libxl: convert NIC handling to device APIIan Campbell2011-10-181-2/+5
| | | | | | Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* libxl: convert disk handling to device APIIan Campbell2011-10-181-2/+14
| | | | | | Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* libxl: update nic list API to use common device API styleIan Campbell2011-10-181-1/+3
| | | | | | | | | libxl_device_nic_list returns an array of libxl_device_nic and libxl_device_nic_getinfo retrieves further information. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* libxl: add a comment describing the device interfaces.Ian Campbell2011-10-181-0/+59
| | | | | | | | | Subsequent patches will endeavour to make reality match this defined interface. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* libxl: libxl_destroy_cpumap becomes libxl_cpumap_destroyIan Campbell2011-10-181-1/+1
| | | | | | | | | Now that IDL type destructors are no longer libxl_*_destroy we can use the more common libxl_NOUN_VERB structure here. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* libxl: idl: use "dispose" rather than "destroy" for function to free IDL typesIan Campbell2011-10-181-7/+7
| | | | | | | | | | | Destroy is an overloaded term which would commonly like to be used for actual destructive operations, such as destroying a domain etc. Dispose isn't a great term but it does the job. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* libxl: IDL: autogenerate functions to produce JSON from libxl data structures.Ian Campbell2011-10-071-2/+2
| | | | | | | | | | | | | | | | | | | | Two functions are provided. TYPE_gen_json exposes an interface which is compatible with the YAGL generator infrastructure. TYPE_to_string uses this to produce a pretty printed string. The TYPE_gen_json functions are defined in a new header libxl_json.h which is not exposed via libxl.h due to the use of YAGL datatypes to avoid poluting the namespace us libxl users which don't use the library themselves. If a libxl user is interested in integrating at the YAGL level then it should #include this file itself. Also update testidl to generate a random version of each IDL datastructure and convert it to JSON. Unfortunately this requires a libxl_ctx and therefore the test must be run on a Xen system now. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* libxl: fixup incorrect indentationIan Campbell2011-10-121-0/+7
| | | | | | | | | Several places which were previsously indented using hard tabs are now incorrectly indented. Fix them up. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: expand hard tab stopsIan Campbell2011-10-111-1/+1
| | | | | | | | | | | | | | | I ran the following and committed the result. ^I is an actual hard tab for i in $(grep -l --exclude=*_[ly].\[ch\] '^I' tools/libxl/*.[ch]) ; do cat $i | expand | sponge $i done There are some actually wrong indentations too, I'll fix those up manually. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: clean up trailing whitespaces in code.Wei Liu2011-07-191-2/+2
| | | | | | | | | Commit exactly the results of running find \! -iname '*.txt' -type f -print0 | xargs -0 perl -p -i.bak -E 's/\s+\n/\n/' Signed-off-by: Wei Liu <liuw@liuw.name> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: specify HVM vs PV in create_info using libxl_domain_type enumIan Campbell2011-07-181-3/+8
| | | | | | | | | Since libxl_init_build_info now needs an error return and a ctx (to log to) switch all libxl_init_*_info to have an int return and a ctx. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* libxl: add LIBXL_MAC_{FMT,FMTLEN,BYTES}Ian Campbell2011-07-141-0/+3
| | | | | | | Modelled after LIBXL_UUID_... (where I also add FMTLEN). signed-off-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* tools: Introduce XEN_RUN_DIR path.Anthony PERARD2011-06-271-0/+1
| | | | | | | | This patch also add libxl_run_dir_path() function in libxl. Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: autogenerate to_string and from_string functions for Enumerations.Ian Campbell2011-06-211-0/+11
| | | | | | | | | | | | The generated strings are the lower case enum value names, with underscores. Accepted string for parsing are the same but are case insensitive. We provide a table of strings->value for each Enumeration as well as a convenience function to perform a lookup. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: make libxl_ctx_free tolerate NULL ctx argumentIan Jackson2011-06-021-1/+1
| | | | | | | This is purely for convenience (eg, when debugging). Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
* libxl: flask xsm supportMachon Gregory2011-06-021-0/+8
| | | | | | | | | | Adds support for assigning a label to domains, obtaining and setting the current enforcing mode, and loading a policy with xl command and libxl header when the Flask XSM is in use. Adheres to the changes made by the patch to remove exposure of libxenctrl/libxenstore headers via libxl.h. Signed-Off-By: Machon Gregory <mbgrego@tycho.ncsc.mil> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* tools: libxl: add libxl_domid to IDLIan Campbell2011-04-201-0/+2
| | | | | | | | | | | | | Language bindings would like to strongly type the domid as a separate type so make it a defined type. This patch only impacts the datatypes and autogenerated destructors, I didn't think the churn of switching the uint32_t's through the code was worth it. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* tools: libxl: add an Enumeration type to the IDLIan Campbell2011-04-201-65/+0
| | | | | | | | | | | | | The IDL requires a specific value for each enumerate, this make it much easier to avoid (or at least track) ABI changes since they must now be explicit. I believe I have used the same values as would have been chosen previoulsy but have not confirmed. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* tools: libxl: namespace enum values within their type.Ian Campbell2011-04-201-17/+17
| | | | | | | | | In other words the values for an enum type libxl_foo always take the form LIBXL_FOO_VALUE. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* tools: libxl: generalize libxl_qemu_machine_type into libxl_domain_typeIan Campbell2011-04-201-3/+3
| | | | | | | | | The FV/PV distinction is not particular to the device model, although that remains the only user for now. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* tools: libxl: move all enum values into the libxl namespaceIan Campbell2011-04-201-16/+16
| | | | | | Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* tools: libxl: hide selection of device-model by default.Ian Campbell2011-04-201-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This should never have been exposed to users as something they are required to think about, unless they want to. At the libxl API level: * Add libxl_device_model_info.device_model_version allowing the user to say which qemu version (e.g. old qemu-xen or qemu upstream) they want for a domain. * Add libxl_device_model_info.device_model_stubdomain allowing the user to select stub or non-stub device model * Default both the device_model field to NULL and DTRT when building a domain with that value in those fields, but still allow libxl users to specify something explicit if they want. * Note that libxl_device_model_info.device_model, if specified, must now be a complete path. At the xl level: * Support a new "device_model_version" option which sets the new libxl_device_model_info.device_model_version field. This option is mandatory if device_model_override is used. * Support a new "device_model_stubdomain_override" option which allows the user to request stubdomain if desired. * WARN if an HVM guest cfg uses the "device_model" config option, and direct users to the "device_model_override" option if they really do not want the default. If the "device_model" directive contains "stubdom-db" then direct users to the "device_model_stubdomain_override" directive. The default qemu remains the existing qemu-xen based qemu-dm and stubdomain defaults to off. I chose the name "qemu-xen traditional" to refer to the existing Xen fork of qemu and simply "qemu-xen" to refer to the new device model based on qemu upstream. I suspect that the vast majority of users only have these config options because they've copied them from somewhere and they normally have no interest in which device model is used. Renaming the fields and warning when they are used makes these decisions internal. This will allow us to make decisions at a platform level regarding the preferred hvmloader, device model, stub domain etc without requiring everyone to change their configuration files. Adding a device model version to the API is intended to make it easy for users to select what they need without having to know about the paths to specific binaries etc. Most importantly it gets rid of the parsing of the output of qemu -h... It's not clear where upstream qemu will eventually be installed, I went with /usr/bin/qemu for now. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson.citrix.com> Committed-by: Ian Jackson <ian.jackson.citrix.com>
* libxl: Add libvirt-xml to userdata userid registryJim Fehlig2011-04-081-2/+4
| | | | | | Signed-off-by: Jim Fehlig <jfehlig@novell.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: drop domid field from libxl_device_*Ian Campbell2011-04-081-2/+2
| | | | | | | | | | | | | | | | | | All functions which add a device to a domain already take a domid argument and the callers typically write the same value to the structure right before making the call. Functions which delete a device typically do not but adding this field makes the interface more consistent anyway and all callers have the domid to hand. All functions which return a libxl device structure are given a domid as a paramter and the caller therefore already knows which domain it is dealing with. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl/xl: drop support for netchannel2Ian Campbell2011-04-081-10/+1
| | | | | | | | | | | | | | | | | netchannel2 was never widely deployed and no supported kernel includes either the front- or back-ends. The last known kernel with this support was the xen.git 2.6.31 branch which has been unsupported for ages. xl will warn the user if it spots a "vif2" configration item but otherwise support is completely removed. Work is ongoing to add the interesting features of netchannel2 as protocol extensions to netchannel1. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: do not expose libxenctrl/libxenstore headers via libxl.hIan Campbell2011-04-061-14/+9
| | | | | | | | | | | | This completely removes libxenstore from libxl users' view. xl still needs libxenctrl directly due to the direct use of the xentoollog functionality but it is not exposed to the indirect linkage anymore. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: typedef libxl_action_on_shutdownIan Campbell2011-03-311-6/+6
| | | | | | | | | This is the libxl convention. By using the "typedef enum foo { } foo;" syntax we can retain backwards compatibility with existing users. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: use system include for libxl_uuid.hIan Campbell2011-03-311-1/+1
| | | | | | | | | We install libxl_uuid.h into the system include directory and refer to it from libxl.h, hence we should include with <> not "". Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: remove XS transaction from public API.Ian Campbell2011-03-231-2/+2
| | | | | | | | | | All external users pass 0 anyway so make the version of libxl_domain_rename which takes a transaction internal and provide an external facing function which does not expose a transaction. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: drop protype for libxl_ctx_set_logIan Campbell2011-03-231-1/+0
| | | | | | | | Nothing defines or uses it. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: disk specification interface changeKamala Narasimhan2011-02-151-8/+14
| | | | | | | | | | | | | | | | | | | | | | | | | Currently we pile all the backend and format information pertaining to disk option in a single enum. This check-in separates the two and uses two enums, one for disk format and another for disk backend. This helps clearly differentiate between disk format and backend within the implementation and also helps cleanup the code in this area in preparation for the impending parser revamping to be done post 4.1. Along with separating format and backend, this check-in also removes unwanted types and renames variables in the disk interface and fixes the code affected by the interface changes. In specific, here are the disk interface changes made - In libxl_device_disk structure physpath was renamed to pdev_path, virtpath was renamed to vdev, phystype was removed and replaced with backend and format enums. Also previously a single enum libxl_disk_phystype held the values for qcow, qcow2, vhd, aio, file, phy, empty and that got refactored into two enums, libxl_disk_format to hold unknown, qcow, qcow2, vhd, raw, empty and libxl_disk_backend to hold unknown, phy, tap and qdisk. Signed-off-by: Kamala Narasimhan <kamala.narasimhan@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* xl: Support more than 32 vcpus for xl vcpu-setJuergen Gross2011-02-141-1/+1
| | | | | | | | | | | | xl vcpu-set currently uses a 32 bit mask for specifying which cpus are to be set online. This restricts the number of cpus supported by this command. The patch switches to libxl_cpumap, the interface of libxl_set_vcpuonline() is changed accordingly. Signed-off-by: Juergen Gross <juergen.gross@ts.fujitsu.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl/xl: improve behaviour when guest fails to suspend itself.Ian Campbell2011-02-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The PV suspend protocol requires guest co-operating whereby the guest must respond to a suspend request written to the xenstore control node by clearing the node and then making a suspend hypercall. Currently when a guest fails to do this libxl times out and returns a generic failure code to the caller. In response to this failure xl attempts to resume the guest. However if the guest has not responded to the suspend request then the is no guarantee that the guest has made the suspend hypercall (in fact it is quite unlikely). Since the resume process attempts to modify the return value of the hypercall (to indicate a cancelled suspend) this results in the guest eax/rax register being corrupted! To fix this change libxl to do the following: * Wait for the guest to acknowledge the suspend request. - on timeout cancel the suspend request. - if cancellation is successful then return a new error code to indicate that the guest is not responding. - if the cancel does not succeed then we raced with the guest which actually did acknowledge at the last minute, so continue. * Wait for the guest to suspend. - on timeout return the standard error code as before * Guest successfully suspended, return success. Lastly in xl do not attempt to resume a guest if it has not responded to the suspend request. Tested by live migration of PVops kernels which either ignore the suspend request, have already crashed and those which suspend/resume correctly. In the first two cases the source domain is left alone (and continues to function in the first case) and in the third the migration is successful. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl, xl: fixes to domain creation cleanup logic (domid values)Ian Jackson2011-01-281-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libxl__domain_make makes some assumptions about the way its caller treats its uint32_t *domid parameter: specifically, if it fails it may have partially created the domain and it does not every destroy it. But it does not initialise it. Document this assumption in a comment, and assert on entry that domid not a guest domain id, to ensure that the caller has properly initialised it. Introduce a function libxl_domid_valid_guest to help with this. This is not intended to produce any practical functional change in current code. Secondly, libxl_create_stubdom calls libxl__domain_make and has no code to tear down the domain again on error. This is complicated to fix (since it may even be possible for the the domain to be left in a state where it's not possible to tell that it was going to be a stubdom for some other domain). So for now simply leave a fixme comment. Finally, in 22739:d839631b6048 we introduced "-1" as a sentinel "no such domain" value for domid. However, domid is a uint32 so testing it with "if (domid > 0)" as we do in 22740:ce208811f540 is wrong because it always triggers. Instead use libxl_domid_valid_guest. This fix means that that if "xl create" fails, it will not try to destroy the domain "-1". Previously you'd see this message: libxl: error: libxl.c:697:libxl_domain_destroy non-existant domain -1 whose "-1" many readers may have thought was an error code, but which is actually supposedly a domain id. Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com> Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: band-aid for functions which return literal "-1"Ian Jackson2011-01-261-6/+7
| | | | | | | | | | | | | | | Many libxl functions erroneously return "-1" on error, rather than some ERROR_* value. To deal with this, invent a new ERROR_NONSPECIFIC "-1" which indicates that "the function which generated this error code is broken". Fix up the one we care about for forthcoming duplicate domain detection (libxl_name_to_domid) and the others following the same pattern nearby; leave the rest for post-4.1. Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com> Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
* libxl/xl: support empty disk paths (ejected cdroms)Stefano Stabellini2011-01-251-0/+1
| | | | | | | | | | Support empty disk paths, including in domain config files, for compatibility with xend. This allows a domain to be created with a cdrom which is initially in the "ejected" (no cd present) state. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: move domain struct init functions from xl to libxlGianni Tedesco2011-01-111-0/+7
| | | | | | | | | | This allows libxl users to get some sane default values for this complex set of structures. This is purely code movement and there are no functional changes except for a trivial error handling change in nic device init. Signed-off-by: Gianni Tedesco <gianni.tedesco@citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: Introduce libxl_domain_create_new() and libxl_domain_create_restore()Gianni Tedesco2011-01-111-26/+36
| | | | | | | | | | | | | | | | | | | | | These functions are introduced as the new way to create domains with libxl they prevent the callers from need to know about low-level implementation details such as: - libxl_domain_make() - libxl_domain_build() - libxl_domain_restore() - when to attach the console - how to start the device model Above mentioned functions and all API's for the device model, which are now redundant, have been made internal to libxl and no longer accessible. The ocaml binding for libxl has not been properly updated to reflect the changes, wrappers for the old functions have been removed but the code to wrap the new functions has not been added. Signed-off-by: Gianni Tedesco <gianni.tedesco@citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
* Support renaming of cpupoolsJuergen Gross2010-12-091-0/+1
| | | | | | | | Add a new library function libxl_cpupool_rename() and a new xl command xl cpupool-rename to support renaming of cpupools. Signed-off-by: juergen.gross@ts.fujitsu.com Signed-off-by: Ian Jackson <ian.jackson.citrix.com>
* Extend cpupools to support numaJuergen Gross2010-12-091-0/+2
| | | | | | | | | | | | | | | | | | The user interfaces for cpupools are extended to support numa machines: - xl cpupool-create supports now specifying a node list instead of a cpu list. The new cpupool will be created with all free cpus of the specified numa nodes. - xl cpupool-cpu-remove and xl cpupool-cpu-add can take a node number instead of a cpu number. Using 'node:1' for the cpu parameter will, depending on the operation, either remove all cpus of node 1 in the specified cpupool, or add all free cpus of node 1 to the cpupool. libxl is extended with the following functions to support this feature: int libxl_cpupool_cpuadd_node(libxl_ctx *ctx, uint32_t poolid, int node, int *cpus) int libxl_cpupool_cpuremove_node(libxl_ctx *ctx, uint32_t poolid, int node, int *cpus) Signed-off-by: juergen.gross@ts.fujitsu.com Signed-off-by: Ian Jackson <ian.jackson.citrix.com>
* Support getting topology info in libxlJuergen Gross2010-12-091-0/+8
| | | | | | | | Added new function libxl_get_topologyinfo() to obtain this information from hypervisor. Signed-off-by: juergen.gross@ts.fujitsu.com Signed-off-by: Ian Jackson <ian.jackson.citrix.com>
* libxl: constify libxl_create_cpupool()Christoph Egger2010-12-161-1/+1
| | | | | | | Attached patch constifies libxl_create_cpupool(). Signed-off-by: Christoph Egger <Christoph.Egger@amd.com> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
* libxl: introduce libxl_need_xenpv_qemuStefano Stabellini2010-12-141-0/+4
| | | | | | | | | | Introduce libxl_need_xenpv_qemu to detect if the caller needs to create a pv qemu instance (using libxl_create_xenpv_qemu). A positive reply depends on the number of pv console and vfbs, and the type of disk backends. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
* tools: libxl: fix cpuid compilation errors for ia64KUWAMURA Shin'ya2010-11-091-0/+3
| | | | | | | | | ia64 does not have cpuid. So break out cpuid-related functions into a separate file, with stubs for ia64. Signed-off-by: KUWAMURA Shin'ya <kuwa@jp.fujitsu.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
* tools: change cpumaps to uint8_tJuergen Gross2010-11-031-2/+2
| | | | | | | | | | | | | | | | | | | | Cpumap types in tools (libxc and libxl) are changed to be based on bytes like in the interface to the hypervisor. To make handling easier the size of used cpumaps is always based on the number of physical cpus supported by the hypervisor. This eliminates the need to keep track of the cpumap size in external interfaces. In libxl a macro for cycling through a cpumap is added (libxl_for_each_cpu). Interfaces changed: libxl_set_vcpuaffinity() libxl_cpumap_alloc() xc_vcpu_setaffinity() xc_vcpu_getaffinity() xc_cpupool_freeinfo() Signed-off-by: Juergen Gross <juergen.gross@ts.fujitsu.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
* tools: cpupools: xl: commands and library changesJuergen Gross2010-10-211-3/+16
| | | | | | | | | | | | | | | Support of cpu pools in libxl and xl: library functions xl cpupool-create xl cpupool-list xl cpupool-destroy xl cpupool-cpu-add xl cpupool-cpu-remove xl cpupool-migrate Renamed all cpu pool related names to *cpupool* Signed-off-by: juergen.gross@ts.fujitsu.com Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
* tools: cpupools: Support arbitrary numbers of physical cpusJuergen Gross2010-10-211-0/+3
| | | | | | | | | | | | | | To be able to support arbitrary numbers of physical cpus it was necessary to include the size of cpumaps in the xc-interfaces for cpu pools. These were: definition of xc_cpupoolinfo_t xc_cpupool_getinfo() xc_cpupool_freeinfo() xc_cpupool_getinfo() and xc_cpupool_freeinfo() are changed to allocate the needed buffer and return it. Signed-off-by: juergen.gross@ts.fujitsu.com Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
* xl: Implement PCI passthrough force removalGianni Tedesco2010-10-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes two errors with removing PCI devices from HVM domains. The first error is that the handling of "pci-rem" device-model command is erroneously implemented in qemu and difficult (impossible?) to get right. For example, during domain shutdown there can be a race where the guest OS unloads it's drivers and perhaps even shuts down PCI subsystem before the pci-rem command has been received by qemu. This means that no OS is present to write to the port which causes the dm command to be acknowledged. We fix this by implementing a 'force removal' option to libxl_device_pci_remove which is always set to 1 during guest shutdown. It can be optionally enabled on the xl command line for other occasions. The second error is that if a guest OS doesn't respond to the SCI interrupt and therefore the pci-rem dm command, which can happen if the guest OS has no ACPI PCI hotplug support, then device removal bails with an error but only AFTER removing the device from xenstore. This means that xenstore gets in to an inconsistent state where an assigned device also appears to be assignable. This is fixed by moving xenstore device removal to occur only after the device has really been removed. Signed-off-by: Gianni Tedesco <gianni.tedesco@citrix.com> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
* libxl: implementing legacy xm cpuid parserAndre Przywara2010-10-011-0/+2
| | | | | | | | | | To support compatibility with the xm config files, add a parser for the old style cpuid= syntax. This uses a Python list, so it can be distinguished from the new syntax easily. Signed-off-by: Andre Przywara <andre.przywara@amd.com> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
* xl: implement parsing of cpuid parameter and translate to Xen interfaceAndre Przywara2010-10-011-0/+1
| | | | | | | | | | | | | | | | | | Parses a string enumerating cpuid flags and their behavior. The syntax is: cpuid = "host,<flagname>=[01xks],..." Supports: 0: clear this flag 1: set this flag x: don't care, use the default handling k: use the host value s: as k, but keep stable across migrations For multiple bit flags there have to be numbers passed (hex or dec), like: family=0x10,model=4 Signed-off-by: Andre Przywara <andre.przywara@amd.com> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>