Commit Graph
22531 Commits
Author SHA1 Message Date
Keir Fraser d4f5ff0682 x86 hvm: Expose TSC_DEADLINE CPU feature to guests via CPUID.
Signed-off-by: Wei Gang <gang.wei@intel.com>
2010-12-15 11:09:02 +00:00
Keir Fraser 464242cd16 x86 hvm: Emulate MSR_IA32_TSC_DEADLINE
Accesses to MSR_IA32_TSC_DEADLINE are trapped, with value stored in a
new field vlapic->hw.tdt_msr. vlapic->pt is reused in one shot mode
for vtdt to trigger expire events.

For details, please refer to the Intel Architectures Software
Developer's Manual 3A, 10.5.4.1 TSC-Deadline Mode.

Signed-off-by: Wei Gang <gang.wei@intel.com>
2010-12-15 11:01:59 +00:00
Keir Fraser 3c5da143be x86: Define APIC_TIMER_MODE_xxx in apicdef.h
Signed-off-by: Wei Gang <gang.wei@intel.com>
2010-12-15 10:55:34 +00:00
Keir Fraser e9a67fa188 x86: Define a new function gtsc_to_gtime()
Define it to do the transform from guest tsc to guest time.

Fix the typo in gtime_to_gtsc() definition.

Signed-off-by: Wei Gang <gang.wei@intel.com>
2010-12-15 10:49:57 +00:00
Keir Fraser e28218a339 ept: Remove lock in ept_get_entry, replace with access-once semantics.
This mirrors the RVI/shadow situation, where p2m read access is
lockless because it's done in the hardware (linear map of the p2m
table).

This fixes the original bug (call it bug A) without introducing bug B
(a deadlock).

Bug A was caused by a race when updating p2m entries: between testing
if it's valid, and testing if it's populate-on-demand, it may have
been changed from populate-on-demand to valid.

My original patch simply introduced a lock into ept_get_entry, but
that caused bug B, caused by circular locking order: p2m_change_type
[grabs p2m lock] -> set_p2m_entry -> ept_set_entry ->
ept_set_middle_level -> p2m_alloc [grabs hap lock] write cr4 ->
hap_update_paging_modes [grabes hap lock] -> hap_update_cr3 ->
gfn_to_mfn -> ept_get_entry -> [grabs p2m lock]

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
2010-12-15 10:47:05 +00:00
Keir Fraser b406d3e356 tmem: two wrongs (or three lefts and a wrong) make a right
These two bugs apparently complement each other enough that
they escaped problems in my testing, but eventually gum
up the works and are obviously horribly wrong.

Found while developing tmem for native Linux.

Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
2010-12-15 10:27:18 +00:00
Keir Fraser e03284b00e hvm save: Introduce hvm_load_entry_zeroextend().
In certain cases this will allow us to load old HVM save images where
an HVM saved chunk has subsequently been extended with new
fields. Rather than fail to load the chunk, we can pad the extended
structure with zeroes, if the caller knows how to handle that.

Signed-off-by: Keir Fraser <keir@xen.org>
Acked-by: Tim Deegan <Tim.Deegan@citrix.com>
2010-12-15 10:21:05 +00:00
Keir Fraser 16f40060bc hvm save: Move some inline functions into common/hvm/save.c
Signed-off-by: Keir Fraser <keir@xen.org>
2010-12-15 10:15:45 +00:00
Stefano Stabellini 09ccf42995 libxl: return "tap" as backend type for PHYSTYPE_QCOW2
Return "tap" as backend type for PHYSTYPE_QCOW2.  This arranges that
qcow2 disks should work in xl.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 19:28:25 +00:00
Stefano Stabellini cd55de70ca libxl: do not assume target and freemem-slack are written at the same time
This improves robustness in some pathological configurations.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Tested-by: Christoph Egger <Christoph.Egger@amd.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 19:04:03 +00:00
Ian Campbell 78bae44397 libxc: remove comment obsoleted by addition of hypercall bounce buffer.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 18:59:44 +00:00
Ian Jackson e7da200f3d QEMU_TAG update 2010-12-14 18:56:35 +00:00
Stefano Stabellini daf41b00bf libxl: introduce libxl_need_xenpv_qemu
Introduce libxl_need_xenpv_qemu to detect if the caller needs to create
a pv qemu instance (using libxl_create_xenpv_qemu).
A positive reply depends on the number of pv console and vfbs, and the
type of disk backends.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 18:55:53 +00:00
Olaf Hering 6728b4d422 xenpaging: (sparse) documenation
Write up some sparse documentation about xenpaging usage.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 18:51:55 +00:00
Olaf Hering 01db5160f3 xenpaging: update xch usage
Instead of passing xch around, use the handle from xenpaging_t.
In the updated functions, use a local xch variable.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 18:51:26 +00:00
Olaf Hering fd0b80d8af xenpaging: do not use DPRINTF/ERROR if xch handle is unavailable
Fix DPRINTF/ERROR usage. Both macros reference a xch variable in local scope.
If xc_interface_open fails and after xc_interface_close, both can not be used
anymore. Use standard fprintf for this case.

Remove the code to print the exit value, its not really useful.
Its a left-over for debugging from an earlier patch.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 18:50:49 +00:00
Olaf Hering 77f428d660 xenpaging: remove duplicate xc_interface_close call
Fix double-free in xc_interface_close() because xenpaging_teardown()
releases the *xch already. Remove second xc_interface_close() call.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 18:50:16 +00:00
Olaf Hering db0dcdffc0 xenpaging: print number of evicted pages
Print number of evicted pages after evict loop.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 18:49:40 +00:00
Olaf Hering 8fa232693d xenpaging: print DPRINTF ouput if XENPAGING_DEBUG is in environment
No DPRINTF output is logged because the default loglevel is to low in
libxc. Recognize the XENPAGING_DEBUG environment variable to change the
default loglevel at runtime.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 18:48:44 +00:00
Olaf Hering ea9ae21f70 xenpaging: remove perror usage in xenpaging_init error path
Use the libxc error macro to report errors if initialising xenpaging
fails. Also report the actual errno string.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 18:47:52 +00:00
Olaf Hering c759627d41 xenpaging: close xch handle in xenpaging_init error path
Just for correctness, close the xch handle in the error path.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 18:47:10 +00:00
Ian Jackson 6e22a6ba68 tools/hotplug: Do not mind if "ip link set" fails on vif backends
Most versions of netback do not support setting the MAC address.  This
means that c/s 937488219719 causes the hotplug script to break for
vifs, even as it fixes the bridge-wrong-MAC-address problem for tap
devices (used for emulated nics).

The mac-setting operation is not necessary for vifs since they are
hardcoded to fe:ff* anyway.

As a band-aid, add "|| true" to the call to ip link, so that this
error does not cause the hotplug operation to fail.  There will still
be an error message printed until we can fix this better.

Suggested-by: Ian Campbell <Ian.Campbell@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 17:38:18 +00:00
Kouya Shimura 6250b87dcd tools/hotplug/Linux: forced to release lock if holder process is gone
When a script using locking.sh is stopped by ctrl-C, the lock file remains.
We have to wait 100 seconds for releasing the lock at the next time.

Signed-off-by: Kouya Shimura <kouya@jp.fujitsu.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 17:15:48 +00:00
Ian Jackson d310383831 xenstore: new XS_OPEN_SOCKETONLY flag; honour "-s" on tools' cmdline
The "-s" option to xenstore-ls is used by the xencommons startup
script to check whether xenstored is already running, before starting
it.

Since 22498:a40455ae9ad3, "-s" has been a no-op, and libxenstore will
always fall back to using xenbus.  The combined effect is that the
xencommons script deadlocks: xenstore-ls hangs waiting for xenstored,
which isn't started by xencommons because xencommons is waiting for
xenstore-ls.

In this patch, we:
 * Introduce a new XS_OPEN_SOCKETONLY flag which disables the
   fallback behaviour;
 * Make the xenstore command line tools use the new xs_open call
   rather than the old, deprecated xs_open_* calls (which are
   now identical).
 * Plumb the xenstore command line tools "-s" option to set the
   XS_OPEN_SOCKETONLY flag.
 * Change the type of the XS_OPEN_* flags so that they naturally have
   type unsigned long.

The "-s" option to xenstore-ls et al, and the XS_OPEN_SOCKETONLY flag,
are intended for use by toolstack infrastructure and should not
normally be used by higher-level code.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-14 16:56:54 +00:00
Keir Fraser 467a09d50d x86/iommu: account for necessary allocations when calculating Dom0's initial allocation size
As of c/s 21812:e382656e4dcc, IOMMU related allocations for Dom0
happen only after it got all of its memory allocated, and hence the
reserve (mainly for setting up its swiotlb) may get exhausted without
accounting for the necessary allocations up front.

While not precise, the estimate has been found to be within a couple
of pages for the systems it got tested on.

For the calculation to be reasonably correct, this depends on the
patch titled "x86/iommu: don't map RAM holes above 4G" sent out
yesterday.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
2010-12-14 09:54:10 +00:00
Keir Fraser ae33959c12 amd-iov: eliminate open-coded PCI bus scan
Instead, use scan_pci_devices() just like VT-d does. This at once
allows making {alloc,free}_pdev() static.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
2010-12-14 09:53:41 +00:00
Keir Fraser 3bc257c211 x86/iommu: don't map RAM holes above 4G
Matching the comment in iommu_set_dom0_mapping(), map only actual RAM
from the address range starting at 4G. It's not clear though whether
that comment is actually correct (which is why I'm sending this as
RFC), but it is certain that on systems with sparse physical memory
map we're currently wasting a potentially significant amount of memory
for setting up IOMMU page tables that will never be used.

The main question is what happens for MMIO ranges living above 4G. Of
course, the same issue would currently exist for any such ranges
sitting beyon the end of RAM.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
2010-12-14 09:52:57 +00:00
Juergen Gross 18ed5fb3b5 add missing libxl__free_all() calls
In various libxl functions libxl__free_all() was missing before return

Signed-off-by: juergen.gross@ts.fujitsu.com
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
2010-12-09 14:50:56 +01:00
Anthony PERARD 5f258c9e43 libxl: Makes libxl be able to call Qemu upstream for XenPV guest.
In libxl_build_device_model_args_new:
  - Adds -xen-attach options to the list of arguments to Qemu.
  - Adds -vga xenfb options when vnc and sdl are not set.
  - Remove disk list from the command line for XenPV as they will be
    read from xenstore by Qemu.


Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---
 tools/libxl/libxl.c |   30 +++++++++++++++++++++---------
 1 files changed, 21 insertions(+), 9 deletions(-)
2010-12-13 17:59:45 +00:00
Anthony PERARD 5b4d52decb libxl: strdup disk path before put it in qemu args array.
In libxl_build_device_model_args_new, the path to the disk image are
freeed before there was actually use to make the arguments list of Qemu.
The patch strdups it.

This patch also changes argv[0] of the device model.
Now, it is the conventional argv[0], so is value come from
info->device_model.


Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---
 tools/libxl/libxl.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)
2010-12-13 17:59:02 +00:00
Anthony PERARD 3c97df22be libxl: fix double free of ifname, when makes args for qemu.
In libxl_build_device_model_args_new, vifs[i].ifname can be free two
times, by the gc, and by freeing the vifs structures. This patch avoids
this.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---
 tools/libxl/libxl.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)
2010-12-13 17:58:20 +00:00
Chunyan Liu f662bb114a Fix /vm/uuid xenstore leak on tapdisk2 device cleanup
While doing block-detach blktap2 disk, tap2 device info is not cleared from
xenstore /vm/uuid/xxx. The reason is in xen-hotplug-cleanup script: when $vm_dev
does not exist, $(xenstore-read "$vm_dev" 2>/dev/null) is also "", won't enter
the block. So, change to use cmd return value to check existence.

Signed-off-by Chunyan Liu <cyliu@novell.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
2010-12-13 17:39:27 +00:00
Stefano Stabellini 999241f7aa Adds an open xenstore connection function which tries to use the xenbus
interface (xs_domain_open) when the socket interface (xs_daemon_opn)
fails.

Signed-off-by: Mihir Nanavati <mihirn@cs.ubc.ca>
Acked-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-12-13 17:15:31 +00:00
Ian Campbell 2610f0b28d libxc: allow caller to specify no re-entrancy protection when opening the interface
Used by language bindings which provide their own re-entrancy which conflicts
with pthreads.

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-12-02 12:49:00 +00:00
Ian Campbell 0bba6abe98 libxc: rename safe_strerror to xc_strerror and pass in an XC handle for future use.
Make the function public since I have future patches which depend on this.

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-12-02 12:49:00 +00:00
Ian Campbell 77fcd869a7 libxc: NetBSD: implement xc_evtchn_bind_unbound_port.
Doesn't actually appear to be used anywhere but is defined for other
OSes.

The NetBSD evtchn.h contains comments "Return allocated port" for
several ioctls which currently return the allocated port as a member
of the argument structure and not as the ioctl return value (I think
this is a cut and paste error).

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Acked-by: Christoph Egger <Christoph.Egger@amd.com>
committer: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
2010-12-02 12:33:01 +00:00
Keir Fraser df402317ce etherboot: Download ipxe from XEN_EXTFILES_URL
Allows us to build even if the ipxe git server is down. We still fall
back to the git server if we cannot download a suitably named tarball
from our own URL.

Signed-off-by: Keir Fraser <keir@xen.org>
2010-12-10 19:38:30 +00:00
Ian Campbell 6824dea08b tools/hotplug/Linux: Ensure tap devices receive a dummy MAC address.
If a tap device is not given an explicit MAC address it will generate
one randomly.

The behaviour of the Linux bridge is to pickup the lowest MAC address
of any port for use in for ARP, STP etc. If the tap device's randomly
generated MAC address happens to be the lowest then this can cause all
manner of strange networking glitches in both domain 0 and guests when
the bridge suddenly takes over from the previously used MAC address.

We choose FE:FF:FF:FF:FF:FF as it the numerically largest
non-broadcast address. This ensures that the physical NIC device's
port will have the lowest MAC address and therefore be the one picked
up by the bridge.

vif devices already have a MAC address of FE:FF:FF:FF:FF:FF set by
netback already but there is no harm in forcing it a second time in
the hotplug script.

tap devices are added by the "add" event and therefore we should call
setup_bridge_port then as well as for "online" which is caused by vif
devices.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-10 18:44:07 +00:00
Ian Campbell 1e48dfc63c libxl: "Device model is a stubdom" is not an error
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-10 18:30:45 +00:00
Ian Campbell c17ffaf89f libxl: return an error if connection to xenstore fails
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-10 18:29:50 +00:00
Ian Jackson af14d5a195 Merge 2010-12-10 18:27:54 +00:00
Jan Beulich c88b07f045 libxc: correct bounce direction for debug-key handling
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Acked-by: Ian Campbell <Ian.Campbell@citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-10 18:27:17 +00:00
Keir Fraser a53f1cd767 mem_event: Remove unused fields and definitions.
Signed-off-by: Keir Fraser <keir@xen.org>
2010-12-10 18:20:25 +00:00
Wei Gang 3b45ec8c70 tools/ocaml: fix a typo in xc_lib.c:xc_domain_set_vpt_align
Fix a typo in xc_lib.c.

Signed-off-by: Wei Gang <gang.wei@intel.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-10 18:16:07 +00:00
Juergen Gross 8e6048545a tools/python: Rebuild python extensions if depends have changed
Adds depends information for building python extensions.
The extensions depend on the library binaries they are using.

Signed-off-by: juergen.gross@ts.fujitsu.com
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-10 18:13:15 +00:00
Jan Beulich d3d32407be xend: fix "xm block-detach 0 ..." for extended-ID devices
Simply taking stat()'s st_rdev doesn't work here, as the minor is
split into two parts, the major is present, and the "extended" bit
isn't set.

Rather than fixing this in a way that would likely be OS-dependent,
simply remove the access to the device file, and instead just parse
the provided string (as is done e.g. for block-attach).

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2010-12-10 18:08:19 +00:00
Keir Fraser d3361c48d3 hvm vlapic: Fix tmcct read logic when in periodic mode.
Signed-off-by: Keir Fraser <keir@xen.org>
2010-12-10 16:49:05 +00:00
Keir Fraser 4000f53bc2 x86: acpi: Fix reboot attempt sequence.
Signed-off-by: Keir Fraser <keir@xen.org>
2010-12-10 16:40:05 +00:00
Keir Fraser 40bb4af7c0 x86 acpi: Follow Windows behaviour more closely during reset.
This follows some changes proposed for upstream Linux:
 1. Do not check the FADT reset register size/offset
 2. Try ACPI poking twice during our reset attempt sequence

Hopefully this will help us reset reliably on a wider range of
platforms.

Signed-off-by: Keir Fraser <keir@xen.org>
2010-12-10 11:32:19 +00:00
Keir Fraser ac989b123e tmem: Use of 'new' clashes with C++ reserved namespace.
Rename to 'creat', which does not conflict.

Signed-off-by: Keir Fraser <keir@xen.org>
2010-12-10 11:01:19 +00:00