Commit Graph
8462 Commits
Author SHA1 Message Date
Ian Campbell eaf735e999 xl: fix spelling mistake in xl.conf
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-21 18:00:39 +01:00
Ian Campbell 2eb54a2b4a xenstored: return EINVAL for attempt to watch invalid path
errno is essentially random at this point.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-21 17:56:51 +01:00
Keir Fraser da7abb1417 hvmloader: Properly block on xenstore daemon rather than merely yielding.
Signed-off-by: Keir Fraser <keir@xen.org>
2010-10-20 16:36:32 +01:00
Ian Campbell 3aba19194e libxc: use generic xc_get_pfn_list on ia64
The ia64 specific xc_get_pfn_list doesn't seem any different to the
generic xc_get_pfn_list once the call to xc_ia64_get_pfn_list is
expanded so remove and just use the generic one.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 17:40:08 +01:00
Ian Campbell 170b70b7ef libxc: do not lock VCPU context in xc_ia64_pv_recv_vcpu_context
xc_ia64_pv_recv_vcpu_context does not need to lock the ctxt buffer
since it calls xc_ia64_recv_vcpu_context which calls
xc_vcpu_setcontext which takes care of any necessary bouncing.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 17:39:44 +01:00
Ian Campbell c4dff75bab libxc: drop xc_get_max_pages
The function isn't really ia64 specific but since the result isn't
actually used in the only caller and the same info is available via
xc_domain_getinfo simply drop the function.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 17:38:15 +01:00
Ian Campbell 4f42a4e74f libxc: simplify lock profiling API
Current function has heavily overloaded semantics for the various
arguments. Separate out into more specific functions.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 17:37:50 +01:00
Ian Campbell 656ba9748a libxc: simplify performance counters API
Current function has heavily overloaded semantics for the various
arguments. Separate out into more specific functions.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 17:37:31 +01:00
Ian Campbell 5924f32d9c libxc: make do_memory_op's callers responsible for locking indirect buffers
Push responsibility for locking buffers refered to by the memory_op
argument up into the callers (which are now all internal to libxc).

This removes the last of the introspecation from do_memory_op and
generally makes the transistion to hypercall buffers smoother.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 17:36:46 +01:00
Ian Campbell 35e135f116 libxc: make xc_memory_op library private
Now that all XENMEM_* callers go via an op specific function make
xc_memory_op private to libxc (and rename to do_memory_op for
consistency with other private functions).

Also change the interface to take a size parameter so that
do_memory_op knows how much memory to lock for the top-level argument,
removing some of the introspection.

[ Compatibility note: this breaks qemu-xen before 706bc8c588cb ]

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 17:35:59 +01:00
Ian Campbell 932b3645d2 libxc: remove compatibility macro for xc_domain_memory_populate_physmap
[ Compatibility note: this breaks qemu-xen before d3c5e73eb3ae ]

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 17:35:35 +01:00
Ian Campbell d5023b6b5f libxc: add xc_maximum_ram_page to wrap XENMEM_maximum_ram_page
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 17:17:25 +01:00
Ian Campbell 3a97052f43 libxc: add xc_machphys_mfn_list to wrap XENMEM_machphys_mfn_list
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 17:16:59 +01:00
Ian Campbell 4f3b2fdaae libxc: add xc_domain_maximum_gpfn to wrap XENMEM_maximum_gpfn
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 17:16:13 +01:00
Ian Campbell 9d316132c2 libxc: add xc_domain_add_to_physmap to wrap XENMEM_add_to_physmap
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 17:15:26 +01:00
Ian Campbell 9bf9eada0d libxc: add xc_domain_memory_exchange_pages to wrap XENMEM_exchange
Generalised from exchange_page in xc_offline_page.c

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 17:14:07 +01:00
Ian Campbell 2674a29698 libxc: wrappers for XENMEM {increase,decrease}_reservation and populate_physmap
Currently the wrappers for these hypercalls swallow partial success
and return failure to the caller.

In order to use these functions more widely instead of open-coding
uses of XENMEM_* and xc_memory_op add variants which return the actual
hypercall result.

Therefore add the following functions:
  xc_domain_increase_reservation
  xc_domain_decrease_reservation
  xc_domain_populate_physmap
and implement the existing semantics using these new functions as
  xc_domain_increase_reservation_exact
  xc_domain_decrease_reservation_exact
  xc_domain_populate_physmap_exact
replacing the existing xc_domain_memory_* functions.

Use these new functions to replace all open coded uses of
XENMEM_increase_reservation, XENMEM_decrease_reservation and
XENMEM_populate_physmap.

Also rename xc_domain_memory_*_pod_target to xc_domain_*_pod_target
for consistency.

Temporarily add a compatibility macro for
xc_domain_memory_populate_physmap to allow time for qemu to catch up.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 16:54:42 +01:00
Ian Campbell f5c808b428 libxc: use correct size of struct xen_mc
We want the size of the struct not the pointer (although rounding up
to page size in lock_pages probably saves us).

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 16:53:04 +01:00
Ian Campbell e43181a5eb libxc: remove unnecessary double indirection from xc_readconsolering
The double indirection has been unnecessary since 9867:ec61a8c25429,
there is no possibility of the buffer being reallocated now.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 16:52:37 +01:00
Ian Campbell f114466a23 libxc: pass an xc_interface handle to page locking functions
Not actually used here but useful to confirm that a handle is passed
down to each location where it will be required once we switch to
hypercall buffers.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 16:43:58 +01:00
Ian Campbell 3a200f3c4b libxc: flask: use (un)lock pages rather than open coding m(un)lock.
Allows us to do away with safe_unlock and merge into unlock_pages.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-10-18 16:43:15 +01:00
Gianni Tedesco 92d4a8cf45 pyxl: fix build of python xl binding for python < 2.5
The python C API introduced Py_ssize_t in version 2.5. Prior to this
int's were used instead. Fix the build by way of a heinous preprocessor
macro.

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>
2010-10-14 12:46:29 +01:00
Ian Campbell 43e2c25aec xl: audit allocation of strings within libxl_device_*
* Remove string literals from init_*_info.
* Free any existing string values before overwriting during device
  option parsing.
* Free libxl_device_console after use.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
2010-10-13 12:01:30 +01:00
Ian Campbell f51aae032a libxl: remove xs_writev function
It isn't actually being used to write a vector at the only callsite
and can easily be implemented using xs_write.

Furthermore the old implementation used to leak both the key and value
strings.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
2010-10-13 11:54:04 +01:00
Ian Campbell ab223ad3d6 pygrub: support grub2 "(hdX,msdosY)" partition syntax
This appeared in Debian Squeeze at some point.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
2010-10-13 11:45:26 +01:00
Ian Campbell bc712520fa xl: correct migration_domname_r
22154:ed8019e672c6 causes migration_domname_r to be initialised as
d_config.c_info.name + "--incoming" immediately after setting
d_config.c_info.name. The intention appears to have been to set it to
common_domname + "--incoming" so do so.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
2010-10-13 11:37:02 +01:00
Stephan Peijnik f5f0af18aa Replace pyxml/xmlproc-based XML validator with lxml based one
Pyxml/xmlproc is being used in tools/xen/xm/xenapi_create.py but is
unmaintained for several years now. xmlproc is used only for validating
XML documents against a DTD file.

This patch replaces the pyxml/xmlproc based XML validation with code
based on lxml, which is actively maintained.

Signed-off-by: Stephan Peijnik <spe@anexia.at>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
2010-10-11 17:54:53 +01:00
Keir Fraser cfb53841a5 tools/tests: Test 64-bit x86 emulation in test_x86_emulate.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2010-10-11 10:22:24 +01:00
Gianni Tedesco 6d01f35315 xl: Fix build in python binding since API change in 22229:1385b15e168f
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>
2010-10-08 11:41:57 +01:00
Gianni Tedesco 77fea72b06 xl: Implement PCI passthrough force removal
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>
2010-10-06 17:38:15 +01:00
Ian Campbell 5588033df5 libxl: remove console 0 backend directory from xenstore on devices destroy
The first PV console device has an unusual frontend path for
historical reasons (/local/domain/<domid>/console rather than
/local/domain/<domid>/device/console/0).

Therefore we need to check this additional frontend path as well as
those under /local/domain/<domid>/device when tearing down all
backends or else we miss the backend for the console.

As part of this we need to ensure that the frontend directory has a
valid link to the backend, currently this link does not exist.

Fix this by adding libxl__device_frontend_path to return the correct
frontend path, accounting for the special case, and use it from
libxl__device_add_generic. Also add libxl__device_backend_path for
consistency.

This also allows console 0 setup to follow essentially the same code
path as other consoles within libxl_device_console_add, reducing the
special casing required there.

This also fixes the link from backend to frontend which until now gave
a dangling link to the normal device path instead of the exceptional
one.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
2010-10-05 17:51:28 +01:00
Christoph Egger d2cd9d41fd Fix copy and paste bug in libxl_run_bootloader
Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
2010-10-05 14:22:19 +01:00
Christoph Egger beff93f34d libxl: fix qemu-dm path
qemu-dm is installed under libxl_libexec_path (not under
libxl_private_bindir_path).

Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
2010-10-01 18:33:19 +01:00
Andre Przywara 5dfe0a4e91 xl: allow parsing of both old and new cpuid syntax
Allow parsing of both versions of the cpuid syntax, the old xm used one
and the new one for xl. This works automatically, as the parser can tell
a Python list apart from a string before processing the line.

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>
2010-10-01 17:22:40 +01:00
Andre Przywara 485fb4cf49 libxl: implementing legacy xm cpuid parser
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>
2010-10-01 17:21:01 +01:00
Andre Przywara 0521227646 xl: implement parsing of cpuid parameter and translate to Xen interface
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>
2010-10-01 17:20:41 +01:00
Andre Przywara c458c404da xl: use libxl_domain_info to get the uuid in printf_info
If there is no UUID specified in the config file, we generate one during
the _parsing_ process. Since xl list -l parses the config file again,
the UUID will be generated again in this case and the reported
version does probably not match the used one.
Fix this by retrieving the UUID from dominfo (like xl list -v does).

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>
2010-10-01 15:42:46 +01:00
Gianni Tedesco 0809fbef31 xl: Fix stack corruption caused by non-terminated call to libxl__xs_writev
Signed-off-by: Gianni Tedesco <gianni.tedesco@citrix.com>
Tested-by: Christoph Egger <Christoph.Egger@amd.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-09-23 19:16:00 +01:00
Gianni Tedesco ce675adf0d tools/python: do not link against blktap except on Linux
Link to libblktapctl in python setup only for platforms which build it.
This fixes a build breakage on NetBSD introduced in 330c4d9010da.

Signed-off-by: Gianni Tedesco <gianni.tedesco@citrix.com>
Tested-by: Christoph Egger <Christoph.Egger@amd.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-09-23 19:03:52 +01:00
Stefano Stabellini a39b5bc64b libxl: Introduce a maximum limit for free_mem_slack (re (dom0) ballooning)
This fixes this message:
 libxl: error: libxl.c:2921:libxl_set_memory_target new target
               for dom0 is below the minimum threshold
which can occur spuriously if dom0_mem is specified and xl
autoballoning is left turned on.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Tested-by: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-09-23 19:01:37 +01:00
Stefano Stabellini 2b989e000b xl: parse maxmem parameter in VM config files
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-09-22 18:04:11 +01:00
Stefano Stabellini ceb6e18f15 libxl: proper accounting for the videoram
Remove the videoram from the memory target of the domains consistently,
leave the total amount of memory in maxmem.

[fixed up for conflicts with libxl__ naming policy changes -iwj]

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-09-22 18:03:41 +01:00
Stefano Stabellini ea4dce89d4 xl: free memory before building a domain
Free the needed amount of memory before proceeding with the domain
build.

Use a filelock to prevent other xl instances from conflicting during
this operation.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-09-22 18:02:36 +01:00
Ian Jackson 2dbb423e17 xl: Change default global config not to contain uncommented default
[mistakenly applied v4 of patch 7/12 rather than v4b -iwj]

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-09-22 17:55:38 +01:00
Stefano Stabellini 52bf5773ab Config.mk et al: introduce XEN_LOCK_DIR
Introduce a OS dependent global variable XEN_LOCK_DIR that points at the
system directory that contains lock files.

[fixed up for conflict in Config.mk -iwj]

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-09-22 17:52:34 +01:00
Stefano Stabellini 73c54d46b1 xl: add a global configuration file
Add a global configuration file: /etc/xen/xl.conf; the only option
currently parsed is autoballoon that is 1 by default.

[fixed up for conflicts with libxl__ naming policy changes -iwj]

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-09-22 17:42:01 +01:00
Stefano Stabellini 9825666445 libxl: introduce the concept of dom0 minimum memory
Introduce a minimum value for the memory assigned to dom0.

[fixed up for conflicts with libxl__ naming policy changes -iwj]

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-09-22 17:40:44 +01:00
Stefano Stabellini 7010e9b7e4 libxl: add few more memory operations
libxl_domain_need_memory: calculate how much memory a domain needs in
order to be built and start correctly.

libxl_get_free_memory: calculate the total free memory in the system.

libxl_wait_for_free_memory: wait for a certain amount of memory to
become free in the system.

libxl_wait_for_memory_target: wait for a domain to reach its memory
target.

[fixed up for conflicts with libxl__ naming policy changes -iwj]

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-09-22 17:39:32 +01:00
Stefano Stabellini 038955aa3b libxl: add a "relative" parameter to libxl_set_memory_target
Introduce a relative parameter to flag that target_memkb is a relative
amount of memory.  The first time we are reading/writing dom0 memory
target, fill the informations in xenstore if they are missing.

Introduce libxl_get_memory_target.

[fixed up for conflicts with libxl__ naming policy changes -iwj]

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-09-22 17:37:09 +01:00
Stefano Stabellini eb7c5c76a3 libxl: use transactions in libxl_set_memory_target
[fixed up for conflicts with libxl__ naming policy changes]

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-09-22 17:31:45 +01:00