]> xenbits.xensource.com Git - xen.git/log
xen.git
13 years agovmx: Allow software (user defined) interrupts to be injected in to the guest
Aravindh Puthiyaparambil [Fri, 20 Apr 2012 08:43:46 +0000 (09:43 +0100)]
vmx: Allow software (user defined) interrupts to be injected in to the guest

If xc_hvm_inject_trap() is called on a software (user defined)
interrupt, it causes the guest to crash with a vmentry failure. The
following patch fixes this issue.

Signed-off-by: Aravindh Puthiyaparambil <aravindh@virtuata.com>
Committed-by: Keir Fraser <keir@xen.org>
13 years agoClean up convoluted hvm_inject_exception() logic.
Keir Fraser [Fri, 20 Apr 2012 08:33:35 +0000 (09:33 +0100)]
Clean up convoluted hvm_inject_exception() logic.

Signed-off-by: Keir Fraser <keir@xen.org>
13 years agox86/mm: fix parens in mm lock level check
Tim Deegan [Thu, 19 Apr 2012 14:30:44 +0000 (15:30 +0100)]
x86/mm: fix parens in mm lock level check

Signed-off-by: Tim Deegan <tim@xen.org>
Acked-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agox86/mm: BUG() rather than panic() on mm lock order violations
Tim Deegan [Wed, 18 Apr 2012 15:43:13 +0000 (16:43 +0100)]
x86/mm: BUG() rather than panic() on mm lock order violations

That gives us a backtrace showing where the bad lock happens.

Reported-by: Andres Lagar-Cavilla <andres@lagarcavilla.org
Signed-off-by: Tim Deegan <tim@xen.org>
Acked-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agox86/mm/shadow: enclose an OOS function in the proper conditional ifdef
Andres Lagar-Cavilla [Wed, 18 Apr 2012 15:49:55 +0000 (16:49 +0100)]
x86/mm/shadow: enclose an OOS function in the proper conditional ifdef

Otherwise compilation fails if the feature is disabled.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-By: Gianluca Guida <gianluca.guida@citrix.com>
Committed-by: Tim Deegan <tim@xen.org>
13 years agox86/mm/sharing: Clean ups for relinquishing shared pages on destroy
Andres Lagar-Cavilla [Wed, 18 Apr 2012 12:38:47 +0000 (13:38 +0100)]
x86/mm/sharing: Clean ups for relinquishing shared pages on destroy

When a domain is destroyed, its pages are freed in relinquish_resources in a
preemptible mode, in the context of a synchronous domctl.

P2m entries pointing to shared pages are, however, released during p2m cleanup
in an RCU callback, and in non-preemptible mode.

This is an O(n) operation for a very large n, which may include actually
freeing shared pages for which the domain is the last holder.

To improve responsiveness, move this operation to the preemtible portion of
domain destruction, during the synchronous domain_kill hypercall. And remove
the bulk of the work from the RCU callback.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agomem_access: fix setting default mem_access type
Aravindh Puthiyaparambil [Wed, 18 Apr 2012 12:38:47 +0000 (13:38 +0100)]
mem_access: fix setting default mem_access type

When xc_hvm_set_mem_access(xch, domain_id, default_access, ~0ull, 0)
is called, first_pfn=~0ull is a hint to HVMOP_set_mem_access as to
what the default mem_access type is for the domain. This call was
failing because it was gated by the memory range check in the
HVMOP_set_mem_access case statement in do_hvm_op(). The following
patch fixes this issue.

Signed-off-by: Aravindh Puthiyaparambil <aravindh@virtuata.com>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/hvm/hvm.c |  5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

13 years agox86/mm: Fix locking on hap enable failure
Andres Lagar-Cavilla [Wed, 18 Apr 2012 12:38:47 +0000 (13:38 +0100)]
x86/mm: Fix locking on hap enable failure

If enabling hap fails due to out of memory, the locking on the clean up path is
broken.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agox86/mem_event: Fix foreign domain flag in grab_slot
Andres Lagar-Cavilla [Wed, 18 Apr 2012 12:38:47 +0000 (13:38 +0100)]
x86/mem_event: Fix foreign domain flag in grab_slot

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agoxl: xl network-attach -N (dry run) option
Mathieu Gagne [Tue, 17 Apr 2012 18:13:52 +0000 (19:13 +0100)]
xl: xl network-attach -N (dry run) option

Add dryrun for testing and debugging purposes.

Signed-off-by: Mathieu Gagne <mgagne@iweb.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
13 years agoxl: cleanup indentation
Mathieu Gagne [Tue, 17 Apr 2012 18:13:19 +0000 (19:13 +0100)]
xl: cleanup indentation

Signed-off-by: Mathieu Gagne <mgagne@iweb.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
13 years agolibxl: Query VNC listening port through QMP
Anthony PERARD [Tue, 17 Apr 2012 17:22:49 +0000 (18:22 +0100)]
libxl: Query VNC listening port through QMP

Currently `xl vncviewer $dom` does not work because the VNC port is not
registered in xenstore when using qemu-upstream. This patch attempted to fix
this.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agoMerge
Ian Jackson [Tue, 17 Apr 2012 17:19:12 +0000 (18:19 +0100)]
Merge

13 years agotools/libvchan: Remove unwanted debugging code
Olaf Hering [Tue, 17 Apr 2012 17:18:49 +0000 (18:18 +0100)]
tools/libvchan: Remove unwanted debugging code

-O2 -Wall -Werror triggers these warnings:

io.c: In function 'do_send':
io.c:196: warning: ignoring return value of 'writev', declared with attribute warn_unused_result
io.c: In function 'do_recv':
io.c:287: warning: ignoring return value of 'writev', declared with attribute warn_unused_result

writev to -1 will always fail, silence the warning by removing the offending
(disabled) debug code.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agox86-64: fix updating of UREGS_rip when converting sysenter to #GP
Jan Beulich [Tue, 17 Apr 2012 15:17:05 +0000 (17:17 +0200)]
x86-64: fix updating of UREGS_rip when converting sysenter to #GP

(I spotted this copy-and-paste mistake only when backporting c/s
25200:80f4113be500 to 4.1 and 4.0.)

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
13 years agox86: suppress warning messages on IO-APIC-less systems
Jan Beulich [Tue, 17 Apr 2012 13:37:05 +0000 (15:37 +0200)]
x86: suppress warning messages on IO-APIC-less systems

Each call to mp_register_gsi() so far produced two warnings (about not
being able to find the corresponding IO-APIC pin).

However, we should use the provided information for setting the ELCR
correctly (we might want to even do this when there is an IO-APIC, if
was absolutely certain that all machines really have this register
[and specifically not some other device at the two I/O ports in
question]). It is in any case questionable that we allow Dom0 to set
this register - it could particularly be the interrupt of a plug-in
serial port card that might not work due to this. The problem is that
all Dom0 kernels to date do so, hence we can't simply #GP on such an
access (which would be the result if we disallowed access to the port
as we should have done from the beginning).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
13 years agox86/IO-APIC: adjust an otherwise pretty useless message
Jan Beulich [Tue, 17 Apr 2012 13:36:34 +0000 (15:36 +0200)]
x86/IO-APIC: adjust an otherwise pretty useless message

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
13 years agox86/ioapic: Add register level checks to detect bogus io-apic entries
Suresh Siddha [Tue, 17 Apr 2012 13:35:39 +0000 (15:35 +0200)]
x86/ioapic: Add register level checks to detect bogus io-apic entries

With the recent changes to clear_IO_APIC_pin() which tries to
clear remoteIRR bit explicitly, some of the users started to see
"Unable to reset IRR for apic .." messages.

Close look shows that these are related to bogus IO-APIC entries
which returns all 1s for their io-apic registers. And the
above mentioned error messages are benign. But kernel should
have ignored such io-apic's in the first place.

Check if register 0, 1, 2 of the listed io-apic are all 1s and
ignore such io-apic.

[original Linux patch:]
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Committed-by: Jan Beulich <jbeulich@suse.com>
13 years agox86-64: fix #GP generation in assembly code
Jan Beulich [Tue, 17 Apr 2012 13:33:53 +0000 (15:33 +0200)]
x86-64: fix #GP generation in assembly code

When guest use of sysenter (64-bit PV guest) or syscall (32-bit PV
guest) gets converted into a GP fault (due to no callback having got
registered), we must
- honor the GP fault handler's request the keep enabled or mask event
  delivery
- not allow TBF_EXCEPTION to remain set past the generation of the
  (guest) exception in the vCPU's trap_bounce.flags, as that would
  otherwise allow for the next exception occurring in guest mode,
  should it happen to get handled in Xen itself, to nevertheless get
  bounced to the guest kernel.

Also, just like compat mode syscall handling already did, native mode
sysenter handling should, when converting to #GP, subtract 2 from the
RIP present in the frame so that the guest's GP fault handler would
see the fault pointing to the offending instruction instead of past it.

Finally, since those exception generating code blocks needed to be
modified anyway, convert them to make use of UNLIKELY_{START,END}().

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
13 years agognttab: remove pointless NULL check
Jan Beulich [Tue, 17 Apr 2012 13:05:05 +0000 (15:05 +0200)]
gnttab: remove pointless NULL check

Domains in the domain hash (and hence locatable via the usual lookup
functions) can't have a NULL grant table pointer; no other function
performs such a check, so remove it from gnttab_prepare_for_transfer()
for consistency.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
13 years agoxsm/flask: clean up auditing output
Daniel De Graaf [Tue, 17 Apr 2012 07:31:07 +0000 (08:31 +0100)]
xsm/flask: clean up auditing output

The audit data for normal MMU updates was incorrectly using the RANGE
type which presented the data badly in audit messages; add a MEMORY
type for this showing the correct names for the fields. This patch
also shows the target domain in event channel mapping checks to make
debugging those denials easier.

Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Committed-by: Keir Fraser <keir@xen.org>
13 years agofix build error when enabling lock profile
Yang Zhang [Tue, 17 Apr 2012 07:30:27 +0000 (08:30 +0100)]
fix build error when enabling lock profile

Signed-off-by: Yang Zhang <yang.z.zhang@Intel.com>
Committed-by: Keir Fraser <keir@xen.org>
13 years agoFix save/restore of guest PAT table in HAP paging mode.
Gianluca Guida [Tue, 17 Apr 2012 07:29:26 +0000 (08:29 +0100)]
Fix save/restore of guest PAT table in HAP paging mode.

HAP paging mode guests use direct MSR read/write into the VMCS/VMCB
for the guest PAT table, while the current save/restore code was
accessing only the pat_cr field in hvm_vcpu, used when intercepting
the MSR mostly in shadow mode (the Intel scenario is a bit more
complicated).  This patch fixes this issue creating a new couple of
hvm_funcs, get/set_guest_pat, that access the right PAT table based on
the paging mode and guest configuration.

Signed-off-by: Gianluca Guida <gianluca.guida@citrix.com>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Keir Fraser <keir@xen.org>
13 years agox86/cpuidle: do not flush cache unless entering C3
Wei Wang [Mon, 16 Apr 2012 11:05:28 +0000 (13:05 +0200)]
x86/cpuidle: do not flush cache unless entering C3

Nor is there a need to disable bus master arbitration in that case.

Signed-off-by: Wei Wang <wei.wang2@amd.com>
Modified-by: Zhang, Yang Z <yang.z.zhang@intel.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Committed-by: Jan Beulich <jbeulich@suse.com>
13 years agotools: Revert c/s 25150:b490ef93bad7 tools/libfsimage: include Rules.mk first
George Dunlap [Fri, 13 Apr 2012 16:13:01 +0000 (17:13 +0100)]
tools: Revert c/s 25150:b490ef93bad7 tools/libfsimage: include Rules.mk first

tools/libfsimage/Rules.mk relies on having certain variables set already; if
they're not set, the definitions dont' work right.  The result was a bunch
of empty files and pygrub failing with an uninformative error message.

It's likely that this didn't cause anyone problems becasue changing the
Makefiles didn't cause a re-build; building from a fresh repo results in
completely empty filesystem plugin binaries.

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agoxen: Fix failure paths for xentrace
George Dunlap [Thu, 12 Apr 2012 13:01:27 +0000 (14:01 +0100)]
xen: Fix failure paths for xentrace

Problems this addresses:
* After the allocation of t_info fails, the path the code takes tries
to free t_info.  Jump past that part instead.
* The failure code assumes that unused data is zero; but the structure
is never initialized.  Zero the structure before using it.
* The t_info pages are shared with dom0 before we know that the whole
operation will succeed, and not un-shared afterwards.  Don't share the
pages until we know the whole thing will succeed.

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Committed-by: Keir Fraser <keir@xen.org>
13 years agotools/blktap2: fix 'make clean'
Tim Deegan [Thu, 5 Apr 2012 10:24:26 +0000 (11:24 +0100)]
tools/blktap2: fix 'make clean'

Signed-off-by: Tim Deegan <tim@xen.org>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agox86: fix delta calculation in TSC deadline timer emulation
David Vrabel [Wed, 11 Apr 2012 15:49:45 +0000 (16:49 +0100)]
x86: fix delta calculation in TSC deadline timer emulation

In the virtual LAPIC, correct the delta calculation when emulating the
TSC deadline timer.

Without this fix, XenServer (which is based on Xen 4.1) does not work
when running as an HVM guest.  dom0 fails to boot because its timer
interrupts are very delayed (by several minutes in some cases).

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Committed-by: Keir Fraser <keir@xen.org>
13 years agolibxl: provide STATE_AO_GC
Ian Jackson [Wed, 11 Apr 2012 13:14:18 +0000 (14:14 +0100)]
libxl: provide STATE_AO_GC

Provide a convenience macro for use in ao callback functions, and
document that it should be used.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: Protect fds with CLOEXEC even with forking threads
Ian Jackson [Wed, 11 Apr 2012 13:14:18 +0000 (14:14 +0100)]
libxl: Protect fds with CLOEXEC even with forking threads

We introduce a new "carefd" concept, which relates to fds that we care
about not being inherited by long-lived children.

As yet we do not use this anywhere in libxl.  Until all locations in
libxl which make such fds are converted, libxl__postfork may not work
entirely properly.  If these locations do not use O_CLOEXEC (or use
calls for which there is no O_CLOEXEC) then multithreaded programs may
not work properly.

This introduces a new API call libxl_postfork_child_noexec which must
be called by applications which make long-running non-execing
children.  Add the appropriate call to xl's postfork function.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: libxl_event.c:beforepoll_internal, REQUIRE_FDS
Ian Jackson [Wed, 11 Apr 2012 13:14:17 +0000 (14:14 +0100)]
libxl: libxl_event.c:beforepoll_internal, REQUIRE_FDS

Introduce definition and use of a new function-local macro REQUIRE_FDS
to avoid repeatedly spelling out which fds we are interested in.

We are going to introduce a new fd for the SIGCHLD self-pipe.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: abolish libxl_ctx_postfork
Ian Jackson [Wed, 11 Apr 2012 13:14:17 +0000 (14:14 +0100)]
libxl: abolish libxl_ctx_postfork

libxl's task has become too complicated (particularly in the presence
of both forking and multithreading) to support reuse of the same
libxl_ctx after fork.

So abolish libxl_ctx_fork.  xl instead simply initialises a new
libxl_ctx.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: include <_libxl_paths.h> in libxl_internal.h
Ian Jackson [Wed, 11 Apr 2012 13:14:16 +0000 (14:14 +0100)]
libxl: include <_libxl_paths.h> in libxl_internal.h

Ie, we permit general code in libxl direct access to the manifest
constants such as XEN_RUN_DIR.  This simplifies their use in (eg)
format strings.

This might be controversial because it will make it difficult to make
any of these runtime-configurable later without changing lots of use
sites.  But I don't think it's likely we'll want to do that.

For the moment, leave existing call sites of all the functions in
libxl_paths.c unchanged.  The simplified use arrangements can be used
in new code and when we update call sites for other reasons.

Also correct the dependencies in the Makefile so that _libxl_paths.h
is generated before anything that uses libxl_internal.h.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: Provide libxl_string_list_length
Ian Jackson [Wed, 11 Apr 2012 13:14:15 +0000 (14:14 +0100)]
libxl: Provide libxl_string_list_length

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: include <ctype.h> and introduce CTYPE helper macro
Ian Jackson [Wed, 11 Apr 2012 13:14:15 +0000 (14:14 +0100)]
libxl: include <ctype.h> and introduce CTYPE helper macro

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: Introduce some convenience macros
Ian Jackson [Wed, 11 Apr 2012 13:14:14 +0000 (14:14 +0100)]
libxl: Introduce some convenience macros

We introduce:
   <type> *GCNEW(<type> *var);
   <type> *GCNEW_ARRAY(<type> *var, ssize_t nmemb);
   <type> *GCREALLOC_ARRAY(<type> *var, size_t nmemb);
   char *GCSPRINTF(const char *fmt, ...);
   void LOG(<xtl_level_suffix>, const char *fmt, ...);
   void LOGE(<xtl_level_suffix>, const char *fmt, ...);
   void LOGEV(<xtl_level_suffix>, int errnoval, const char *fmt, ...);
all of which expect, in the calling context,
   libxl__gc *gc;

Most of these will find callers in subsequent patches.  The exceptions
are the orthogonally necessary LOGE and LOGEV, and GCREALLOC_ARRAY.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: Make libxl__zalloc et al tolerate a NULL gc
Ian Jackson [Wed, 11 Apr 2012 13:14:14 +0000 (14:14 +0100)]
libxl: Make libxl__zalloc et al tolerate a NULL gc

Arrange that if we pass NULL as a gc, we simply don't register the
pointer.  This instantly gives us non-gc'ing but error-checking
versions of malloc, realloc, vasprintf, etc.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: Crash (more sensibly) on malloc failure
Ian Jackson [Wed, 11 Apr 2012 13:14:13 +0000 (14:14 +0100)]
libxl: Crash (more sensibly) on malloc failure

Formally change the libxl memory allocation failure policy to "crash".

Previously we had a very uneven approach; much code assumed that
libxl__sprintf (for example) would never return NULL, but some code
was written more carefully.

We think it is unlikely that we will be able to make the library
actually robust against allocation failure (since that would be an
awful lot of never-tested error paths) and few calling environments
will be able to cope anyway.  So, instead, adopt the alternative
approach: provide allocation functions which never return null, but
will crash the whole process instead.

Consequently,
 - New noreturn function libxl__alloc_failed which may be used for
   printing a vaguely-useful error message, rather than simply
   dereferencing a null pointer.
 - libxl__ptr_add now returns void as it crashes on failure.
 - libxl__zalloc, _calloc, _strdup, _strndup, crash on failure using
   libxl__alloc_failed.  So all the code that uses these can no longer
   dereference null on malloc failure.

While we're at it, make libxl__ptr_add use realloc rather than
emulating it with calloc and free, and make it grow the array
exponentially rather than linearly.

Things left to do:
 - Remove a lot of now-spurious error handling.
 - Remove the ERROR_NOMEM error code.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agotools: Use PTHREAD_CFLAGS, _LDFLAGS, _LIBS
Ian Jackson [Wed, 11 Apr 2012 13:14:13 +0000 (14:14 +0100)]
tools: Use PTHREAD_CFLAGS, _LDFLAGS, _LIBS

Replace all literal occurrences of -lpthread and -pthread in Makefiles
by references to PTHREAD_CFLAGS, PTHREAD_LDFLAGS and PTHREAD_LIBS.
These are the new variables set by configure, and currently expand to
-pthread on the compilation and link lines as is required.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: Use PTHREAD_CFLAGS, LDFLAGS, LIBS
Ian Jackson [Wed, 11 Apr 2012 13:14:12 +0000 (14:14 +0100)]
libxl: Use PTHREAD_CFLAGS, LDFLAGS, LIBS

This is going to be needed for pthread_atfork.  It is a mystery why it
hasn't been needed before.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agotools: Correct PTHREAD options in config/StdGNU.mk
Ian Jackson [Wed, 11 Apr 2012 13:14:11 +0000 (14:14 +0100)]
tools: Correct PTHREAD options in config/StdGNU.mk

It is not correct to say -lpthread.  The correct option is -pthread,
which may have sundry other effects on code generation etc.  It needs
to be passed both to compilation and linking.

Fix the configure test to test -pthread, and plumb the resulting flag
through to PTHREAD_{CFLAGS,LDFLAGS} in Tools.mk; also substitute
PTHREAD_LIBS (although this will currently always be empty).
Remove PTHREAD_LIBS setting from StdGNU.mk.

Fix the one user (libxc) to use PTHREAD_{CFLAGS,LDFLAGS} too.

There are still some other users in tree which pass -pthread or
-lpthread by adding it as a literal to their own compiler options.
These will be fixed in a later patch.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Cc: Roger Pau Monne <roger.pau@entel.upc.edu>
Acked-by: Roger Pau Monne <roger.pau@entel.upc.edu>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: Fix leak of ctx->lock
Ian Jackson [Wed, 11 Apr 2012 13:14:10 +0000 (14:14 +0100)]
libxl: Fix leak of ctx->lock

A mutex created with pthread_mutex_init, like ctx->lock, may need to
be destroyed with pthread_mutex_destroy.

Also, previously, if libxl__init_recursive_mutex failed, the nascent
ctx would be leaked.  Add some comments which will hopefully make
these kind of mistakes less likely in future.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: remove poller from list in libxl__poller_get
Roger Pau Monne [Wed, 11 Apr 2012 13:14:10 +0000 (14:14 +0100)]
libxl: remove poller from list in libxl__poller_get

Remove poller from the list once it has been requested.
Fixes a double-free bug.

Signed-off-by: Roger Pau Monne <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: Fix eventloop_iteration over-locking
Ian Jackson [Wed, 11 Apr 2012 13:14:09 +0000 (14:14 +0100)]
libxl: Fix eventloop_iteration over-locking

eventloop_iteration's head comment says that it must be called with
the ctx locked exactly once, and this is indeed true, and it's done
correctly at both the call sites.

However, it takes out the lock an additional time itself.  This is
wrong because it prevents the unlocks around poll from being
effective.  This would mean that a multithreaded event-loop using
program might suffer from undesired blocking, as one thread trying to
enter libxl might end up stalled by another thread waiting for a slow
event.  So remove those two lock calls.

Also add a couple of comments documenting the locking behaviour of
libxl__ao_inprogress and libxl__egc_cleanup.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: fix hang due to libxl__initiate_device_remove
Ian Jackson [Wed, 11 Apr 2012 13:14:09 +0000 (14:14 +0100)]
libxl: fix hang due to libxl__initiate_device_remove

libxl__initiate_device_remove might discover that the operation was
complete, immediately (typically, if the device is already removed).

Previously, in this situation, it would return 0 to the caller but
never call libxl__ao_complete.  Fix this.  This necessitates passing
the egc in from the functions which are the ao initiators.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Cc: Roger Pau Monne <roger.pau@entel.upc.edu>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agolibxl: ao: allow immediate completion
Ian Jackson [Wed, 11 Apr 2012 13:14:08 +0000 (14:14 +0100)]
libxl: ao: allow immediate completion

Make it possible to complete an ao during its initating function.

Previously this was not generally possible because initiators did not
have an egc.  But there is no reason why an ao initiator should not
have an egc, so make the standard macros provide one.

Change the internal documentation comments accordingly.  (This change,
which means that an initiator function may call a completion callback
directly, is already consistent with the documented external API.)

We also invent of a new state flag "constructing" which indicates
whether we are between ao__create and ao__inprogress.  This is a
slightly optimisation which allows ao_complete to not bother poking
the wakeup pipe, since the logic in ao__inprogress will not run the
event loop if the ao is complete on entry.

Also fix the wording in the libxl_internal.h comment forbidding use of
ao_how-taking functions from within libxl.  (There are sadly currently
some such functions.)

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Cc: Roger Pau Monne <roger.pau@entel.upc.edu>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years ago.gitignore: Add a missing file
Ian Jackson [Wed, 11 Apr 2012 13:14:07 +0000 (14:14 +0100)]
.gitignore: Add a missing file

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
13 years agox86: explicitly mark __initdata variables as used when building with clang.
Tim Deegan [Wed, 11 Apr 2012 12:10:33 +0000 (13:10 +0100)]
x86: explicitly mark __initdata variables as used when building with clang.

This stops LLVM from replacing it with a different, auto-generated
variable as part of an optimization.  (The auto-generated variable
ends up in the normal data section.)

Remove stray __read_mostly annotations on declarations that this unmasked.

Signed-off-by: Tim Deegan <tim@xen.org>
Acked-by: Keir Fraser <keir@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agoxen: define __section() and friends and use them for section annotations.
Tim Deegan [Wed, 11 Apr 2012 12:10:33 +0000 (13:10 +0100)]
xen: define __section() and friends and use them for section annotations.

By itself this is just code-tidying, but it's also useful for the
following patch, which will adjust __section() for clang compiles.

Signed-off-by: Tim Deegan <tim@xen.org>
Acked-by: Keir Fraser <keir@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agox86: don't use .subsection when compiling with clang
Tim Deegan [Wed, 11 Apr 2012 12:10:33 +0000 (13:10 +0100)]
x86: don't use .subsection when compiling with clang

LLVM's assembler doesn't support the .subsection directive, so put
the out-of-line failure path in .fixup instead.

Signed-off-by: Tim Deegan <tim@xen.org>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agox86: fix memset(ptr, 0, sizeof ptr).
Tim Deegan [Wed, 11 Apr 2012 12:10:33 +0000 (13:10 +0100)]
x86: fix memset(ptr, 0, sizeof ptr).

Signed-off-by: Tim Deegan <tim@xen.org>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Christoph Egger <Christoph.Egger@amd.com>
Acked-by: Keir Fraser <keir@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agox86: fix logical ANDs used to mask bitfields.
Tim Deegan [Wed, 11 Apr 2012 12:10:33 +0000 (13:10 +0100)]
x86: fix logical ANDs used to mask bitfields.

Signed-off-by: Tim Deegan <tim@xen.org>
Acked-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agox86/mm: Another couple of comparisons of unsigned vars with < 0.
Tim Deegan [Wed, 11 Apr 2012 12:10:33 +0000 (13:10 +0100)]
x86/mm: Another couple of comparisons of unsigned vars with < 0.

Adding the explicit (unsigned) casts in case enums ever end up signed.

Signed-off-by: Tim Deegan <tim@xen.org>
Acked-by: Keir Fraser <keir@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agoxen: Add -Wno-unused-value to the clang CFLAGS
Tim Deegan [Wed, 11 Apr 2012 12:10:33 +0000 (13:10 +0100)]
xen: Add -Wno-unused-value to the clang CFLAGS

clang complains about a lot of functions and macros whose return value
is unused.  I started on patches to drop some functions' return values
and scatter (void)s around callers, but it was getting too messy.
Just turn off the warning instead.

Signed-off-by: Tim Deegan <tim@xen.org>
Acked-by: Keir Fraser <keir@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agoxen, cpupools: Fix cpupool-move to make more consistent
George Dunlap [Tue, 10 Apr 2012 09:42:35 +0000 (10:42 +0100)]
xen, cpupools: Fix cpupool-move to make more consistent

The full order for creating new private data structures when moving
from one pool to another is now:
* Allocate all new structures
 - Allocate a new private domain structure (but don't point there yet)
 - Allocate per-vcpu data structures (but don't point there yet)
* Remove old structures
 - Remove each vcpu, freeing the associated data structure
 - Free the domain data structure
* Switch to the new structures
 - Set the domain to the new cpupool, with the new private domain
 structure
 - Set each vcpu to the respective new structure, and insert

This is in line with a (fairly reasonable) assumption in credit2 that
the private structure of the domain will be the private structure
pointed to by the per-vcpu private structure.

Also fix a bug, in which insert_vcpu was called with the *old* vcpu
ops rather than the new ones.

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Committed-by: Keir Fraser <keir@xen.org>
13 years agoxen, credit2: Put the per-cpu schedule lock back to the default lock when releasing cpu
George Dunlap [Tue, 10 Apr 2012 09:41:55 +0000 (10:41 +0100)]
xen, credit2: Put the per-cpu schedule lock back to the default lock when releasing cpu

This fixes a bug that happens when you remove cpus from a credit2
cpupool.

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Committed-by: Keir Fraser <keir@xen.org>
13 years agoxen: Fix schedule()'s grabbing of the schedule lock
George Dunlap [Tue, 10 Apr 2012 09:41:30 +0000 (10:41 +0100)]
xen: Fix schedule()'s grabbing of the schedule lock

Because the location of the lock can change between the time you read
it and the time you grab it, the per-cpu schedule locks need to check
after lock acquisition that the lock location hasn't changed, and
release and re-try if so.  This change was effected throughout the
source code, but one very important place was apparently missed: in
schedule() itself.

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Committed-by: Keir Fraser <keir@xen.org>
13 years agox86/mm: Take care of domain reference for shared pages
Andres Lagar-Cavilla [Thu, 5 Apr 2012 10:06:03 +0000 (11:06 +0100)]
x86/mm: Take care of domain reference for shared pages

Making a page sharable removes it from the previous owner's list. Making it
private adds it. These actions are similar to freeing or allocating a page.
Except that they were not minding the domain reference that is taken/dropped
when the first/last page is allocated/freed.

Without fixing this, a domain might remain zombie when destroyed if all its
pages are shared.

Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agodomctl.h: document non-standard error codes for enabling paging/access
Olaf Hering [Tue, 3 Apr 2012 15:22:59 +0000 (17:22 +0200)]
domctl.h: document non-standard error codes for enabling paging/access

The domctl to enable paging and access returns some non-standard error
codes after failure. This can be used in the tools to print specific
error messages. xenpaging recognizes these errno values and shows them
if the init function fails.

Document the return codes in the public header file.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agoxenpaging: add error code to indicate iommem passthrough
Olaf Hering [Fri, 30 Mar 2012 15:09:07 +0000 (17:09 +0200)]
xenpaging: add error code to indicate iommem passthrough

Similar to the existing ENODEV and EXDEV error codes, add EMDEV to
indicate that iommu passthrough is not compatible with paging.
All error codes are just made-up return codes to give proper error
messages in the pager.

Also update the HAP related error message now that paging is enabled
also on AMD hosts.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Ian Jackson <Ian.Jackson@citrix.com>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
13 years agoautoconf: check for as86, ld86, bcc and iasl
Roger Pau Monne [Wed, 22 Feb 2012 16:37:50 +0000 (17:37 +0100)]
autoconf: check for as86, ld86, bcc and iasl

Check for this tools, and set the proper paths on config/Tool.mk.

Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agolibxl: fixup error handling in libxl_send_trigger
Ian Campbell [Wed, 4 Apr 2012 15:10:18 +0000 (16:10 +0100)]
libxl: fixup error handling in libxl_send_trigger

xc_domain_send_trigger returns -1 and sets errno on failure so use
LIBXL__LOG_ERRNO not LIBXL__LOG_ERRNOVAL(rc).

Change the default case of the switch to set rc=-1,errno=EINVAL too.

Also we weren't actually returning the error code we'd decided on.

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>
13 years agoxl, libxl: Add per-device and global permissive config options for pci passthrough
George Dunlap [Wed, 4 Apr 2012 15:06:42 +0000 (16:06 +0100)]
xl, libxl: Add per-device and global permissive config options for pci passthrough

By default pciback only allows PV guests to write "known safe" values into
PCI config space.  But many devices require writes to other areas of config
space in order to operate properly.  One way to do that is with the "quirks"
interface, which specifies areas known safe to a particular device; the
other way is to mark a device as "permissive", which tells pciback to allow
all config space writes for that domain and device.

This adds a "permissive" flag to the libxl_pci struct and teaches libxl how
to write the appropriate value into sysfs to enable the permissive feature for
devices being passed through.  It also adds the permissive config options either
on a per-device basis, or as a global option in the xl command-line.

Because of the potential stability and security implications of enabling
permissive, the flag is left off by default.

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agolibxl: Move bdf parsing into libxlu
George Dunlap [Wed, 4 Apr 2012 15:06:42 +0000 (16:06 +0100)]
libxl: Move bdf parsing into libxlu

Config parsing functions do not properly belong in libxl.  Move them into
libxlu so that others can use them or not as they see fit.

No functional changes.  One side-effect was making public a private libxl
utility function which just set the elements of a structure from the  function
arguments passed in.

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agoPV-GRUB: add support for btrfs
Matt Wilson [Wed, 4 Apr 2012 10:09:15 +0000 (11:09 +0100)]
PV-GRUB: add support for btrfs

This patch adds btrfs support to the GRUB tree used to build PV-GRUB.
The original patch is from Gentoo:
https://bugs.gentoo.org/show_bug.cgi?id=283637

Signed-off-by: Matt Wilson <msw@amazon.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agoPV-GRUB: add support for ext4
Matt Wilson [Wed, 4 Apr 2012 10:09:14 +0000 (11:09 +0100)]
PV-GRUB: add support for ext4

This patch adds support for ext4 to the GRUB tree used to build PV-GRUB.
The original patch is taken from the Fedora GRUB package in this commit:
http://pkgs.fedoraproject.org/gitweb/?p=grub.git;a=commitdiff;h=32bf414af04d377055957167aac7dedec691ef57

Signed-off-by: Matt Wilson <msw@amazon.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agoPV-GRUB: Check for errors when applying patches to GRUB
Matt Wilson [Wed, 4 Apr 2012 10:09:14 +0000 (11:09 +0100)]
PV-GRUB: Check for errors when applying patches to GRUB

We want to ensure that patches apply cleanly without rejects. Bail if
patch returns a non-zero exit code.

Signed-off-by: Matt Wilson <msw@amazon.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agoQEMU_TAG update
Ian Jackson [Tue, 3 Apr 2012 17:25:56 +0000 (18:25 +0100)]
QEMU_TAG update

13 years agotools/libfsimage: include Rules.mk first
Olaf Hering [Wed, 14 Mar 2012 16:53:56 +0000 (17:53 +0100)]
tools/libfsimage: include Rules.mk first

Move the inclusion of Rules.mk up so that things like CFLAGS get initialized
properly. Currently only zfs appends CFLAGS. If CFLAGS get reset by Rules.mk
the private settings are lost and compilation of zfs support fails.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agotools/blktap: reorder MEMSHR_DIR to fix CFLAGS
Olaf Hering [Wed, 14 Mar 2012 16:02:23 +0000 (17:02 +0100)]
tools/blktap: reorder MEMSHR_DIR to fix CFLAGS

In blktap2 MEMSHR_DIR is used before it is set. This removes the
required -D_GNU_SOURCE from CFLAGS, its used as option for -I
Fix this by moving memshr related flags to the place where its actually
used.
The failure is a missing O_DIRECT define.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agolibxl: Pass actual RAM amount to qemu-xen
Anthony PERARD [Tue, 3 Apr 2012 17:15:11 +0000 (18:15 +0100)]
libxl: Pass actual RAM amount to qemu-xen

QEMU upstream need to kown the amount of RAM given to a guest. This patch give
the correct value.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agoautoconf: change AX_ARG_{DISABLE/ENABLE}_AND_EXPORT to make more sense
Roger Pau Monne [Tue, 3 Apr 2012 17:02:46 +0000 (18:02 +0100)]
autoconf: change AX_ARG_{DISABLE/ENABLE}_AND_EXPORT to make more sense

Change disable/enable feature macros to have a more significative name
of what they actually do, to avoid confusions.

New macros have the following names:

AX_ARG_DEFAULT_ENABLE: feature is enabled by default, provides the
--disable-{feature} option to disable it.

AX_ARG_DEFAULT_DISABLE: feature is disabled by default, provides the
--enable-{feature] option to enable it.

Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Olaf Hering <olaf@aepfle.de>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agoconfig/Tools.mk: remove unused IP
Olaf Hering [Tue, 3 Apr 2012 14:56:53 +0000 (15:56 +0100)]
config/Tools.mk: remove unused IP

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Roger Pau Monne <roger.pau@entel.upc.edu>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agolibxl: Document API and ABI compatibility guarantees.
Ian Campbell [Mon, 19 Mar 2012 15:06:19 +0000 (15:06 +0000)]
libxl: Document API and ABI compatibility guarantees.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agolibxl: log device model arguments to aid debugging
Ian Campbell [Mon, 19 Mar 2012 14:24:01 +0000 (14:24 +0000)]
libxl: log device model arguments to aid debugging

At the moment the only easy way to get at these is to strace xl.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agotools: specify datadir for qemu-xen build to fix firmware loading
Olaf Hering [Tue, 3 Apr 2012 14:25:01 +0000 (15:25 +0100)]
tools: specify datadir for qemu-xen build to fix firmware loading

qemu-xen does currently not find the firmware files, such as
vgabios-cirrus.bin. The reason is that qemu-xen uses the default prefix
/usr/local. Use SHAREDIR/qemu-xen as directory so that it can coexist
with qemu-traditional which is installed in SHAREDIR/xen/qemu.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agotools/vtpm: use LDLIBS to pass -lgmp
Olaf Hering [Tue, 3 Apr 2012 14:12:21 +0000 (15:12 +0100)]
tools/vtpm: use LDLIBS to pass -lgmp

Linking tpmd will fail with recent toolchains because -lgmp is passed
via LDFLAGS instead of LDLIBS. With this change -lgpm is placed at the
end of the gcc cmdline and linking tpmd succeeds again.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agodocs: clarify documentation for the the dom0_mem command line option
David Vrabel [Tue, 3 Apr 2012 13:40:08 +0000 (14:40 +0100)]
docs: clarify documentation for the the dom0_mem command line option

This addresses Ian C's comments on v1 of a previous patch (which
was applied instead of v2).

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agoautoconf: fix python-dev detection on old python versions
Roger Pau Monne [Tue, 3 Apr 2012 13:28:45 +0000 (14:28 +0100)]
autoconf: fix python-dev detection on old python versions

Replaced the use of python-config (that is only present in Python >= 2.5.x)
with the distutils python module.

Signed-off-by: Roger Pau Monne <roger.pau@entel.upc.edu>
Cc: Zhang, Yang Z <yang.z.zhang@intel.com>
Tested-by: KUWAMURA Shin'ya <kuwa@jp.fujitsu.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agoremove ia64
Jan Beulich [Tue, 3 Apr 2012 10:35:35 +0000 (12:35 +0200)]
remove ia64

It retains IA64-specific bits in code imported from elsewhere (e.g.
ACPI, EFI) as well as in the public headers.

It also doesn't touch the tools, mini-os, and unmodified_drivers
sub-trees.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
13 years agoQEMU_TAG update
Ian Jackson [Mon, 2 Apr 2012 17:14:31 +0000 (18:14 +0100)]
QEMU_TAG update

13 years agolibxl: Use enum values for qemu version not raw numbers
Ian Campbell [Thu, 22 Mar 2012 09:02:29 +0000 (09:02 +0000)]
libxl: Use enum values for qemu version not raw numbers

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agolinux-xencommons: Load xen-acpi-processor
Konrad Rzeszutek Wilk [Fri, 23 Mar 2012 13:45:56 +0000 (09:45 -0400)]
linux-xencommons: Load xen-acpi-processor

Upstream the "xen/acpi-processor: C and P-state driver that
uploads said data to hypervisor." takes care of uploading power information
information that normally a cpu frequency scaling driver would using
in the initial domain. We want the hypervisor to take that data and
make good usage of it.

Fortunatly for us we do not have to worry about the native cpu frequency
scaling drivers being loaded first, as the upstream commit:
"xen/cpufreq: Disable the cpu frequency scaling drivers from loading."
takes care of that. Meaning we can load the xen-acpi-processor at any time.

By default that driver is built as a module - and since we are
the only user of it - we should load it.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agodocs: Remove qemu-upstream HowTo, and link to the wiki page.
Anthony PERARD [Mon, 2 Apr 2012 16:45:07 +0000 (17:45 +0100)]
docs: Remove qemu-upstream HowTo, and link to the wiki page.

Instead of having twice the same HowTo in tree and in the wiki, the one in tree
will become a link to the wiki.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agodocs: Document vcpu-pinning in guest config file
Dario Faggioli [Mon, 2 Apr 2012 16:43:06 +0000 (17:43 +0100)]
docs: Document vcpu-pinning in guest config file

Chageset 54000bca7a6a didn't affect xl.cfg.pod.5 properly.

Signed-off-by: Dario Faggioli <dario.faggioli@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agotools/libxc: send page-in requests in batches in linux_privcmd_map_foreign_bulk
Olaf Hering [Mon, 26 Mar 2012 13:22:18 +0000 (15:22 +0200)]
tools/libxc: send page-in requests in batches in linux_privcmd_map_foreign_bulk

One of the bottlenecks with foreign page-in request is the poor retry
handling in linux_privcmd_map_foreign_bulk(). It sends one request per
paged gfn at a time and it waits until the gfn is accessible. This
causes long delays in mmap requests from qemu-dm and xc_save.

Instead of sending one request at a time, walk the entire gfn list and
send batches of mmap requests. They will eventually end up in the pager's
request ring (if it has room again), and will fill up this ring so that
in turn the pager can also process page-in in batches.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agodocs: expand docs/INDEX, sort html index by title rather than filename
Ian Campbell [Mon, 26 Mar 2012 09:07:40 +0000 (10:07 +0100)]
docs: expand docs/INDEX, sort html index by title rather than filename

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agolibxl: support for "rtc_timeoffset" and "localtime"
Lin Ming [Mon, 2 Apr 2012 16:32:39 +0000 (17:32 +0100)]
libxl: support for "rtc_timeoffset" and "localtime"

Implement "rtc_timeoffset" and "localtime" options compatible as xm.

rtc_timeoffset is the offset between host time and guest time.
localtime means to specify whether the emulted RTC appears as UTC or is
offset by the host.

Acked-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Lin Ming <mlin@ss.pku.edu.cn>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
---
 docs/man/xl.cfg.pod.5       |    8 ++++++++
 tools/libxl/libxl_create.c  |   11 +++++++++++
 tools/libxl/libxl_dom.c     |    3 +++
 tools/libxl/libxl_types.idl |    2 ++
 tools/libxl/xl_cmdimpl.c    |    5 +++++
 5 files changed, 29 insertions(+), 0 deletions(-)

13 years agolibxl: Handle non-ballooned, zero slackmem properly for pci passthru
George Dunlap [Mon, 2 Apr 2012 16:22:31 +0000 (17:22 +0100)]
libxl: Handle non-ballooned, zero slackmem properly for pci passthru

The e820_sanitize() function in libxl_pci.c expects one of its arguments to
be non-zero; but since a recent changeset, it can typically expect *to be*
zero.  Since the zero case is handled properly, just remove the check.

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agoxl: do not include xenctrl.h
Ian Campbell [Tue, 27 Mar 2012 12:52:51 +0000 (13:52 +0100)]
xl: do not include xenctrl.h

Toolstacks which use libxl should not need to use libxc.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
13 years agoxl: provide a command to set the saved configuration for a running domain
Ian Campbell [Mon, 2 Apr 2012 16:07:04 +0000 (17:07 +0100)]
xl: provide a command to set the saved configuration for a running domain

Pickup this new configuration on reboot.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agoREADME: Document optional ocaml dependencies
Ian Campbell [Tue, 27 Mar 2012 10:36:54 +0000 (11:36 +0100)]
README: Document optional ocaml dependencies

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agodocs: Document some more hypercalls
Ian Jackson [Mon, 2 Apr 2012 16:02:45 +0000 (17:02 +0100)]
docs: Document some more hypercalls

Some of these could probably do with some review from people who know
what these hypercalls actually do.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
---
 xen/include/public/arch-x86/xen.h |   30 ++++++++++++++++++++++++++++++
 xen/include/public/arch-x86_64.h  |   16 ++++++++++++++++
 xen/include/public/platform.h     |    4 ++++
 3 files changed, 50 insertions(+), 0 deletions(-)

13 years agodocs: spelling and typoes in misc/xen-command-line.markdown
Ian Campbell [Mon, 26 Mar 2012 16:11:13 +0000 (17:11 +0100)]
docs: spelling and typoes in misc/xen-command-line.markdown

Run a spell checker over the doc and fix the typos and spelling it uncovers
(including a few I just added myself).

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
13 years agodocs: add some missing options to misc/xen-command-line.markdown
Ian Campbell [Mon, 26 Mar 2012 16:09:59 +0000 (17:09 +0100)]
docs: add some missing options to misc/xen-command-line.markdown

These were mostly ones from xen/arch/x86/boot/cmdline.S which are handled early
and therefore do not use the usual infrastructure and so got missed in the
initial trawl.

The document now contains (AFAICT) every still valid option which was
previously documented at:
http://wiki.xen.org/wiki?title=Xen_Hypervisor_Boot_Options&oldid=1379

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agodocs: wrap misc/xen-command-line.markdown to 80 columns
Ian Campbell [Mon, 26 Mar 2012 16:09:40 +0000 (17:09 +0100)]
docs: wrap misc/xen-command-line.markdown to 80 columns

Makes it more readable as a text document.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
13 years agodevice tree: print a warning if a node is nested too deep
David Vrabel [Mon, 2 Apr 2012 15:50:44 +0000 (16:50 +0100)]
device tree: print a warning if a node is nested too deep

Since device_tree_for_each_node() is called before printk() works, a
variable is used to switch between using early_printk() and printk().

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
13 years agoarm: add dom0_mem command line argument
David Vrabel [Mon, 2 Apr 2012 15:50:43 +0000 (16:50 +0100)]
arm: add dom0_mem command line argument

Add a simple dom0_mem command line argument.  It's not as flexible as
the x86 equivalent (the 'max' and 'min' prefixes are not supported).

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
13 years agoarm: use bootargs for the command line
David Vrabel [Mon, 2 Apr 2012 15:50:42 +0000 (16:50 +0100)]
arm: use bootargs for the command line

Use the /chosen node's bootargs parameter for the Xen command line.
Parse it early on before the serial console is setup.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
13 years agodevice tree,arm: supply a flat device tree to dom0
David Vrabel [Mon, 2 Apr 2012 15:50:42 +0000 (16:50 +0100)]
device tree,arm: supply a flat device tree to dom0

Build a flat device tree for dom0 based on the one supplied to Xen.
The following changes are made:

  * In the /chosen node, the xen,dom0-bootargs parameter is renamed to
    bootargs.

  * In all memory nodes, the reg parameters are adjusted to reflect
    the amount of memory dom0 can use.  The p2m is updated using this
    info.

Support for passing ATAGS to dom0 is removed.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
[ removed device_tree_dump call -- ijc ]
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>