Commit Graph
43 Commits
Author SHA1 Message Date
kfraser@localhost.localdomain b65f717688 [LIBXC] Clean up use of sterror(). Define a thread-safe
version which uses strerror_r(), and tries to cope with
the POSIX and GNU versions of that function.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-12-08 11:57:06 +00:00
Ewan Mellor ff3ba258ad Fix PERROR.
Signed-off-by: Ewan Mellor <ewan@xensource.com>
2006-12-07 17:48:35 +00:00
kfraser@localhost.localdomain b07ced9c1f [LIBXC] Add an error reporting API to the libxc library.
- An 'xc_error' struct is used to pass around error
   details. Currently contains two members 'code' an enumeration of
   error types, and 'message' a free text description of the specific
   problem.

 - The xc_get_last_error() method returns a const pointer to the
   internal instance of this struct manged by libxc. By returning a
   const pointer we can add extra members to the end of the struct at
   any time without worrying about ABI of callers. This will let us
   provide more fine-grained info if needed in the future.

 - The xc_error instance is statically defined inside libxc and marked
   __thread. This ensures that errors are recorded per-thread, and
   that when dealing with errors we never need to call malloc - all
   storage needed is statically allocated.

 - The xc_clear_last_error() method resets any currently recorded
   error details

 - The xc_error_code_to_desc() method converts the integer error code
   into a generic user facing messsage. eg "Invalid kernel". Together
   with the 'message' field from xc_error, this provides the user
   visible feedback. eg "Invalid kernel: Non PAE-kernel on PAE host."

 - A callback can be registered with xc_set_error_handler to receive
   notification whenever an error is recorded, rather than querying
   for error details after the fact with xc_get_last_error

 - If built with -DDEBUG set, a default error handler will be
   registered which calls fprintf(stderr), thus maintaining current
   behaviour of logging errors to stderr during developer builds.

 - The python binding for libxc is updated to use xc_get_last_error
   to pull out error details whenever appropriate, instead of
   returning info based on 'errno'

 - The xc_set_error method is private to libxc internals, and is used
   for setting error details

 - The ERROR and PERROR macros have been updated to call xc_set_error
   automatically specifying XC_INTERNAL_ERROR as the error code. This
   gives a generic error report for all current failure points

 - Some uses of the ERROR macro have been replaced with explicit
   calls to xc_set_error to enable finer grained error reporting. In
   particular the code dealing with invalid kernel types uses this
   to report about PAE/architecture/wordsize mismatches

The patch has been tested by calling xm create against a varietry of
config files defining invalid kernels of various kinds. It has also
been tested with libvirt talking to xend. In both cases the error
messages were propagated all the way back up the stack.

There is only one place where I need to do further work. The suspend
& restore APIs in Xend invoke external helper programs rather than
calling libxc directly. This means that error details are essentially
lost. Since there is already code in XenD which scans STDERR from
these programs I will investigate adapting this to extract actual
error messages from these helpers.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2006-12-07 11:36:26 +00:00
kfraser@localhost.localdomain 457ee10d4c [XEN] Remove VGCF_hvm_guest, replace with XEN_DOMINF_hvm_guest.
Rename DOMFLAGS_* to XEN_DOMINF_*.
Clean up tools to deal with flags changes.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-11-03 10:52:29 +00:00
kfraser@localhost.localdomain a3fc4d842e [SOLARIS] Don't mlock() hypercall buffers.
On solaris mlock requires a page aligned address and mlock doesn't
ensure the pages won't minor page fault.

Signed-off-by: Mark Johnson <mark.johnson@sun.com>
2006-10-23 09:52:51 +01:00
kfraser@localhost.localdomain cf1aa17df0 Remove ERR() macro from libxc. Use ERROR/PERROR as appropriate.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-10-17 18:05:42 +01:00
kfraser@localhost.localdomain c0fd920e98 [SOLARIS] Don't build ptrace code on Solaris.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-10-17 17:59:32 +01:00
kfraser@localhost.localdomain 1df421476a Replace dom0_ops hypercall with three new hypercalls:
1. platform_op -- used by dom0 kernel to perform actions on the
    hardware platform (e.g., MTRR access, microcode update, platform
    quirks, ...)
 2. domctl -- used by management tools to control a specified domain
 3. sysctl -- used by management tools for system-wide actions

Benefits include more sensible factoring of actions to
hypercalls. Also allows tool compatibility to be tracked separately
from the dom0 kernel. The assumption is that it will be easier to
replace libxenctrl, libxenguest and Xen as a matched set if the
dom0 kernel does not need to be replaced too (e.g., because that
would require vendor revalidation).

From here on we hope to maintain dom0 kernel compatibility. This
promise is not extended to tool compatibility beyond the existing
guarantee that compatibility will not be broken within a three-level
stable release [3.0.2, 3.0.3, etc.].

Signed-off-by: Keir Fraser <keir@xensource.com>
2006-08-25 18:39:10 +01:00
kaf24@firebug.cl.cam.ac.uk 2928514138 [LIBXC] Convert all printf/fprintf uses to use a macro instead.
Thus all can be disabled at compile time. It would be easy to
make enabling/disabling a run-time option too.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-06-07 14:07:36 +01:00
kaf24@firebug.cl.cam.ac.uk 2d0922d515 Move Linux-specific privcmd code into private libxc implementations.
Make header path for kernel's privcmd/evtchn headers generic.
Remove pointless xi_*() interface that was using private libxc
interfaces.

Signed-off-by: John Levon <john.levon@sun.com>
2006-05-02 15:12:06 +01:00
kaf24@firebug.cl.cam.ac.uk c702fb4c9d Fix whitespace in libxc. Tabs are manually fixed.
Trailing whitespace removed with:
 perl -p -i -e 's/\s+$/\n/g' tools/libxc/*.[ch]

Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
2006-04-15 10:07:31 +01:00
sos22@douglas.cl.cam.ac.uk 5f97716503 Create a block of reserved PFNs in shadow translate mode guests, and
move the shared info and grant table pfns into that block.  This
allows us to remove the get_gnttablist dom0 op, and simplifies the
domain creation code slightly.  Having the reserved block managed by
Xen may also make it slightly easier to handle the case where the
grant table needs to be extended at run time.

Suggested-by: kaf24
Signed-off-by: Steven Smith, sos22@cam.ac.uk
2006-01-26 19:40:13 +01:00
sos22@douglas.cl.cam.ac.uk cd9edced7b Make some basic cases of grant tables work in shadow translate mode.
This is enough to get block devices to work.

Note that this involves assigning PFNs to the machine frames used for
the grant table structures.  While I'm here, I also assigned a PFN to
the shared info frame.

Signed-off-by: Steven Smith, sos22@cam.ac.uk
2006-01-25 18:57:44 +01:00
kaf24@firebug.cl.cam.ac.uk 869e86d8e6 Add -Wdeclaration-after-statement to Xen and tools build.
Fix the compile errors that result from this.

Signed-off-by: Keir Fraser <keir@xensource.com>
2005-11-22 18:44:08 +01:00
emellor@leeni.uk.xensource.com a22292f2bb Make it possible to run valgrind on code linked with the libxc libraries.
Valgrind cannot see when a hypercall has initialised entries in a data
structure, so appropriate memsets have been placed before using dom0_op_t,
privcmd_hypercall_t, and a couple of miscellaneous blocks passed into this
layer.  This initialises the block so that valgrind considers it to be valid,
but the data therein will be immediately overwritten by the hypercall, all
being well.

These changes are semantically neutral if -DVALGRIND is not set.

Signed-off-by: Ewan Mellor <ewan@xensource.com>
2005-11-22 16:31:16 +01:00
vh249@arcadians.cl.cam.ac.uk 251e6d181b extends xm info with xen version and various others information.
exports version hypercall to userspace

Signed-off-by: Vincent Hanquez <vincent@xensource.com>
2005-08-31 10:39:53 +00:00
cl349@firebug.cl.cam.ac.uk acc63faffa Break the building/save/restore code out into a separate library libxenguest.
Also update the tools accordingly.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
2005-08-25 00:51:20 +00:00
cl349@firebug.cl.cam.ac.uk 60eb663513 Rename libxc => libxenctrl and xc.h => xen/xenctrl.h
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>


--HG--
rename : tools/libxc/xc.h => tools/libxc/xenctrl.h
2005-08-24 23:07:29 +00:00
kaf24@firebug.cl.cam.ac.uk 12b1a321bd Here is our latest patch to enable the Xen tools to
build and work with IA64 Xen.
Signed-off-by: Matt Chapman <matthewc@hp.com>
Acked-by: Dan Magenheimer <dan.magenheimer@hp.com>
2005-07-29 10:34:45 +00:00
kaf24@firebug.cl.cam.ac.uk 4b043a942c Initial tools support for 32-bit x86 pae.
Signed-off-by: Gerd Knorr <kraxel@suse.de>
2005-07-13 15:04:49 +00:00
arun.sharma@intel.com[kaf24] 5ac71a4238 bitkeeper revision 1.1777 (42c3a88aPiHvcATujFTezqA1w1FMCg)
[PATCH] 64 bit xend cleanups.

64 bit xend cleanups.

Signed-off-by: Xin Li <xin.bi.li@intel.com>
Signed-off-by: Xiofeng Ling <xiaofeng.ling@intel.com>
Signed-off-by: Arun Sharma <arun.sharma@intel.com>
2005-06-30 08:08:42 +00:00
kaf24@firebug.cl.cam.ac.uk 06420e5d04 bitkeeper revision 1.1752 (42bbe5ba5hLPfcw1f77_F22fq6v6Yw)
The set of patches below add support for loading plan9's a.out
format using the linux builder.  This is considerably simpler
than having a seperate builder, shares more code and should
be easier to maintain.  Hopefully the original plan9 builder
can go away in the future.

I've been able to test this manually with vm-tools but am
still having some problems (unrelated I think) with xm.

Signed-off-by: Tim Newsham <newsham@lava.net>
2005-06-24 10:51:38 +00:00
kaf24@firebug.cl.cam.ac.uk 8a6c33ded1 bitkeeper revision 1.1726.2.3 (42ba7587nwhnhQJ_hDkHTk8kTKtAFw)
Make sure we save errno across error-path printfs and munlocks. Based
on a patch from Anthony Liguori.
Signed-off-by: Keir Fraser <keir@xensource.com>
2005-06-23 08:40:39 +00:00
cl349@firebug.cl.cam.ac.uk aac7970f26 bitkeeper revision 1.1665.4.1 (42a40cf0EmwulK0I8hNEb2dVbDEkvQ)
xc_private.h, xc_linux_build.c, Makefile:
  Add support for loading ``bin'' format images, as used by ReactOS.
  Move image probing/parsing/loading code out of domain builder to allow
  multiple image formats without having to duplicate the domain building
  code.
xc_load_elf.c, xc_load_bin.c:
  new file
xc_vmx_build.c:
  Cleanup.
Signed-Off-By: Ge van Geldorp <gvg@reactos.com>
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
2005-06-06 08:44:32 +00:00
kaf24@firebug.cl.cam.ac.uk 7254a301ec bitkeeper revision 1.1665.1.5 (42a1a779yqLZDCutMj_vFNQlo3q3zw)
Rationalise debugger stuff in the tree.

Within Xen itself, remove PDB references and fold into domu_debug.
When domu_debug hits a breakpoint, it pauses all vcpus of the domain
and raises VIRQ_DEBUGGER (not VIRQ_PDB). The debugger in domain0 can
either poll pause status or bind to VIRQ_DEBUGGER. Before debugging
a breakpointed domain the debugger should issue PAUSEDOMAIN itself, or
it is not guaranteed to see paused state of the domain!

Outside Xen there's a new dir tools/debugger, containing gdb, pdb and
a new library libxendebug (used by pdb). I also think the ptrace
functions in libxc also ought to be moved out: either to libxendebug
or to a new library libxenptrace.

Signed-off-by: Keir Fraser <keir@xensource.com>
2005-06-04 13:07:05 +00:00
iap10@freefall.cl.cam.ac.uk a1f6364776 bitkeeper revision 1.1665.3.2 (42a0d0beY3Jku2hxgPBX6_mz23Ha3g)
[patch] libxc x86-64
I've redone the patch to add domU launching support to libxc for x86-64.

Signed-off-by: Jerone Young <jyoung5@us.ibm.com>
Signed-off-by: ian@xensource.com
2005-06-03 21:50:54 +00:00
cl349@firebug.cl.cam.ac.uk 3c624a8915 bitkeeper revision 1.1535 (4293983fRn8wZMaWw4jC331L5B1bhw)
xc_private.h:
  xc_io.h does no longer exist.
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
2005-05-24 21:10:23 +00:00
kaf24@firebug.cl.cam.ac.uk 0ebae1de2a bitkeeper revision 1.1367 (4269220d42QVzUVVn9-Tn1tb9fNSWw)
Remove memory and cpu parameters from DOM0_CREATEDOMAIN, and remove
DOM0_SETINITIALMEM. You can get the same effect via PINCPU, 
SETMAXMEM, and do_mem_op(increase_reservation).
Signed-off-by: Keir Fraser <keir@xensource.com>
2005-04-22 16:10:53 +00:00
kaf24@firebug.cl.cam.ac.uk 76d7931a0b bitkeeper revision 1.1236.1.183 (424d1ccaDlUUQZ1KrVHubRYFS5AKQA)
Batch p.t. pin requests during guest restore (after being suspended, or
after migration). Allow L1 tables to be pinned even after their va
backptr is fixed (no longer mutable).
Signed-off-by: Keir Fraser <keir@xensource.com>
2005-04-01 10:04:58 +00:00
kaf24@firebug.cl.cam.ac.uk 99d21671d5 bitkeeper revision 1.1236.1.164 (424aed36IaX4v3-NGAT_MnCdUsD1yQ)
Split mmu_update() hypercall into mmu_update() and mmuext_op().
All MMUEXT_* ops are now done via the latter hypercall. This allows
more arguments to be passed in a nicer way to mmuext operations.
Linux 2.4, 2.6 and control tools all use the new interface. The BSDs
will need some work, but shouldn't be too hard (and they can be moved
to writable pagetables at the same time :-) ).
Signed-off-by: Keir Fraser <keir@xensource.com>
2005-03-30 18:17:26 +00:00
kaf24@firebug.cl.cam.ac.uk f2c02d5c96 bitkeeper revision 1.1236.1.116 (424131f7rCir_eG6bLO6UbIol4mpgA)
Merge firebug.cl.cam.ac.uk:/local/scratch/kaf24/xen-2.0-testing.bk
into firebug.cl.cam.ac.uk:/local/scratch/kaf24/xen-unstable.bk
2005-03-23 09:08:07 +00:00
kaf24@firebug.cl.cam.ac.uk 74f81dd1a5 bitkeeper revision 1.1159.272.9 (424131e1AxW6hgsgUY2M3meFO0k4MQ)
libxc reacts to memory allocation delay because memory is on the 
scrub list.
Signed-off-by: Keir Fraser <keir@xensource.com>
2005-03-23 09:07:45 +00:00
mafetter@fleming.research 79c26560e2 bitkeeper revision 1.1159.220.2 (41e6700bFJzLjEYlNh48j_cSTbRy9A)
Code duplication cleanup: remove a number of duplicate identical
static functions in xc_*_{build,restore}.c, replaced with single
(non-static) copy in xc_private.c
2005-01-13 12:56:43 +00:00
kaf24@freefall.cl.cam.ac.uk 58f3afdd98 bitkeeper revision 1.1159.1.332 (41874e954CLIDA2J3phVFD2RnzVTpA)
Clean up public XenLinux header files. Now accessible from userspace as
#include <xen/linux...>
Got rid of the linux-xen-sparse symlink as it's no longer needed.
2004-11-02 09:08:37 +00:00
kaf24@freefall.cl.cam.ac.uk 187a0366b6 bitkeeper revision 1.1159.142.2 (41849fadYlUYMwSy6tcq8Y-Yi8NMZA)
Clean up libxc by allowing direct use of Xen headers from userland:
 #include <xen/...>
2004-10-31 08:17:49 +00:00
kaf24@freefall.cl.cam.ac.uk 4e7da2001d bitkeeper revision 1.1159.98.1 (415e7911bLQPew3o_RI5Cm8viw6VCQ)
Remove Xen-specific ioctl from /dev/mem device. Update domain-building
tools to use the correct device file for mapping foreign memory.
2004-10-02 09:46:57 +00:00
kaf24@freefall.cl.cam.ac.uk aa7dadf6b9 bitkeeper revision 1.1159.53.25 (4133b18fZ5FTt-fwTtgweJYFwIKErw)
Remove redundant multicall_op from libxc.
2004-08-30 23:00:31 +00:00
iap10@tetris.cl.cam.ac.uk 6e92cd3227 bitkeeper revision 1.1159.45.15 (4126390c2dSRHYLR3YNd9JysCy4XTw)
Export new mapping interface 'xc_map_foreign'
2004-08-20 17:46:52 +00:00
iap10@labyrinth.cl.cam.ac.uk 83b44e251e bitkeeper revision 1.1159.33.1 (4120e700LNXbe5IhAOotAN5jyP0RJw)
suspend/resume fixes
2004-08-16 16:55:28 +00:00
iap10@labyrinth.cl.cam.ac.uk 4284063463 bitkeeper revision 1.1108.57.1 (4117460ajav0OLcX9y8IQtXQMz0RvQ)
step 1 of fixing migration support after the interface changes
2004-08-09 09:38:18 +00:00
kaf24@scramble.cl.cam.ac.uk 87fdd59317 bitkeeper revision 1.1108.33.24 (410e17ceXCIuaFvQA3AD25FUTF_Ohw)
For clarity, all interface header files are in Xen's hypervisor-ifs
directory. This includes the I/O headers and the xend header.
2004-08-02 10:30:38 +00:00
kaf24@scramble.cl.cam.ac.uk 5018bf3137 bitkeeper revision 1.1041.2.1 (40e2dccbwLPMSsarwzAscW72tSfuEg)
Add resource tracking for pfn mappings in libxc.
2004-06-30 15:31:23 +00:00
mjw@wray-m-3.hpl.hp.com 48e9a9c636 bitkeeper revision 1.1026.1.8 (40e1b09foCFBM0EuIgrSA1uLJrWuzA)
Restructuring the python code and libs - first stage.
2004-06-29 18:10:39 +00:00