Commit Graph
17032 Commits
Author SHA1 Message Date
Keir Fraser 03dc7c2feb [BUILD] Disable LOCALVERSION_AUTO in upstream Linux builds.
If this option is enabled then the Xen mercurial version ID gets
tacked onto the kernel version (e.g. 2.6.24-git22-hg2593b69b183b)
which is unlikely to be useful or desirable. All the trees which we
build using this method already have uniquely identifying versions
(e.g. 2.6.24-git22 or 2.6.24-mm1).

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
2008-02-12 14:59:22 +00:00
Keir Fraser 3eae93972b [BUILD] Fixup support for building upstream kernels.
In particular:
 - support merged x86 architecture. To facilitate this it made sense
   to encode some existing logic in shell scripts rather than
   increasing complicated make conditionals.
 - set CONFIG_PARAVIRT_GUEST=y which is required for newer kernels.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
2008-02-12 14:59:01 +00:00
Keir Fraser b650bde790 [BUILD] Add option to ensure kernel build is non-interactive.
This is useful for the non 2.6.18-xen builds where the defconfig at
any particular momement may require additional questions to be
answered.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
2008-02-12 14:57:36 +00:00
Keir Fraser 0243b256d6 Add stubdomain support. See stubdom/README for usage details.
- Move PAGE_SIZE and STACK_SIZE into __PAGE_SIZE and __STACK_SIZE in
  arch_limits.h so as to permit getting them from there without
  pulling all the internal Mini-OS defines.
- Setup a xen-elf cross-compilation environment in stubdom/cross-root
- Add a POSIX layer on top of Mini-OS by linking against the newlib C
  library and lwIP, and implementing the Unixish part in mini-os/lib/sys.c
- Cross-compile zlib and libpci too.
- Add an xs.h-compatible layer on top of Mini-OS' xenbus.
- Cross-compile libxc with an additional xc_minios.c and a few things
  disabled.
- Cross-compile ioemu with an additional block-vbd, but without sound,
  tpm and other details.  A few hacks are needed:
  - Align ide and scsi buffers at least on sector size to permit
  direct transmission to the block backend. While we are at it, just
  page-align it to possibly save a segment. Also, limit the scsi
  buffer size because of limitations of the block paravirtualization
  protocol.
  - Allocate big tables dynamically rather that letting them go to
  bss: when Mini-OS gets installed in memory, bss is not lazily
  allocated, and doing so during Mini-OS is unnecessarily trick while
  we can simply use malloc.
- Had to change the Mini-OS compilation somehow, so as to export
  Mini-OS compilation flags to the Makefiles of libxc and ioemu.

Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
2008-02-12 14:35:39 +00:00
Keir Fraser 67bfbd67d1 libxenctrl headers should not pollute macro namespace with
mb/rmb/wmb. Instead add a xen_ prefix. Modify Xen's public headers to
expect the prefixed names instead of bare mb/rmb/wmb, but gate this
expectation on a bump of __XEN_INTERFACE_VERSION__.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-12 11:37:45 +00:00
Keir Fraser b3a389fdfc device-dm: Use SIGHUP before SIGKILL
Make qemu unblock SIGHUP and make sure the default handler is in
place. Have the domain killer send SIGHUP to the device-model script,
allow the script 10s to clean up, and if still not dead, send
SIGKILL.

Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
2008-02-12 10:57:49 +00:00
Keir Fraser 5c22e77bb7 xend: Remove redundant check of maximum memory size.
Currently, a wrong value of maximum memory size is checked by
_safe_set_memory() and _memory_sanity_check().

Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
2008-02-12 10:19:12 +00:00
Keir Fraser 2bba474f8f Add timestamp option to xenconsoled
Similar to the --log option, --timestamp or -t takes:
- none : No timestamping
- hv   : Timestamp hypervisor logs
- guest: Timestamp guest logs
- all  : Timestamp guest and hypervisor logs

From: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-12 10:16:20 +00:00
Keir Fraser f029add7ef Rendezvous selected cpus in softirq (stop_machine).
This is similar to stop_machine_run stub from Linux, to pull
selected cpus in rendezvous point and the do some batch work
under a safe environment. Current one usage is from S3 path,
where individual cpu is pulled down with related online
footprints being cleared. It's dangerous to have other cpus
checking clobbered data structure in the middle, such as
cpu_online_map, cpu_sibling_map, etc.

Signed-off-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-11 15:59:49 +00:00
Keir Fraser 6abc7e7e8c ioemu: Dynamic VNC colour depth.
The qemu vnc server changes its internal colour depth based on the
client request. This way just one colour conversion is done: the one
in  vga_template.h, from the guest colour depth and the vnc server
internal colour depth.

This patch is meant to remove this colour conversion to improve
performances. It accomplishes the goal making the qemu internal colour
depth always the same as the guest colour depth.
The basic idea is that the vnc client is the one that should do the
colour conversion, if necessary. In general it should accept the pixel
format suggested by the server during the initial negotiation. This
behaviour can be set in most vnc clients (vncviewer included).

If the guest changes colour depth, the qemu vnc server changes colour
depth too and notifies the client. The problem is that the vnc
protocol doesn't provide a message from the server to the client to
ask for a colour depth change. So what I am doing is either:

1) quietly starting to do the conversion on vnc server (not gaining
   any performance here);

2) closing the vnc connection with the client, so the client can
   reconnect and choose the new pixel format.

By default I am doing 1), however the second choice can be enabled
passing the -vnc-switch-bpp command line option.
In order to do the colour conversion on the vnc server I had to
improve the colour conversion code already in place because it only
supported conversions from 32 bpp. The patch adds colour conversion
code that support conversions from any resolution to any resolution.

A last note: to get most out of this patch it is best to set Windows
to 16 bit colour depth, because the 24 bit mode is 24 bit depth and 24
bpp, meaning no alpha channel. The vnc protocol doesn't support 24
bpp, only 32 bpp, so this conversion is unavoidable.

From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-11 14:55:33 +00:00
Keir Fraser 283dddae87 xen-api: Fix some errors in Xen-API's PBD class.
Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
2008-02-11 14:51:22 +00:00
Keir Fraser c35e8672fb xen-api: Add TOC and hyperlink cross reference to xen-api document
Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
2008-02-11 14:50:50 +00:00
Keir Fraser 7a26ce5af3 ioemu: save 3MB of ioport tables (on 64bit machines)
by keeping then initialized to NULL and check for it in the handlers.

Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
2008-02-11 14:47:19 +00:00
Keir Fraser 6193b2034d ioemu: cope with partial reads/writes when using the read()/write()
syscall interfaces.
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
2008-02-11 14:47:06 +00:00
Keir Fraser 3f8e22de79 x86 hvm: Allow HPET to be configured as a per-domain config option.
A new platform variable 'hpet' is added, which defaults to 0 for new
guests (that is, hpet disabled). Default is off (no hpet) because
hpet is currently less accurate in keeping time than PIT (because no
timer_mode adjustments).

Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-11 14:45:29 +00:00
Keir Fraser 81375c4b06 xend: Better support for legacy HVM config with hvmloader configured
via the 'kernel' config option:
 1. Look for any string containing 'hvmloader'.
 2. The 'kernel' option must be scrubbed to avoid taking
 PV-kernel-loading paths during later guest setup.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-11 14:42:52 +00:00
Keir Fraser 25c2136e0d x86: Compile fix for p2m audit code.
From Tom Woller.
Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com>
2008-02-11 10:57:17 +00:00
Keir Fraser be0999cb87 vt-d: Remap interrupt for passthru device if such HW is detected on VT-d platforms.
Signed-off-by: Allen Kay <allen.m.kay@intel.com>
2008-02-11 10:51:41 +00:00
Keir Fraser b65a97ff73 x86: Fix build after xentrace changes.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-11 10:50:57 +00:00
Keir Fraser 9990562d74 Document XenStore's new SET_TARGET message
Signed-off-by: Ryan O'Connor <colossus@interchange.ubc.ca>
2008-02-11 10:20:31 +00:00
Keir Fraser 670d6b908f x86 shadow: Move the shadow linear mapping for n-on-3-on-4 shadows so
that guest mappings of the bottom 4GB are not reflected in the monitor
pagetable. This ensures in particular that page 0 is not mapped,
allowing us to catch NULL dereferences in the hypervisor.

Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com>
2008-02-11 10:16:53 +00:00
Keir Fraser ce49af7f2c xend: Remove redundant xc.domain_setcpuweight() all the way down to libxenctrl.
Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-11 10:15:07 +00:00
Keir Fraser 250e4ae1c7 domain builder: make vfb = [ 'type=sdl' ] work
When setting

vfb = [ 'type=sdl' ]

in a domain config file, qemu seems to be still using vnc. Make it use
sdl as expected.

Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
2008-02-11 10:06:51 +00:00
Keir Fraser 0d037cb707 ioemu stubdom: make daemonize optional
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
2008-02-11 10:03:48 +00:00
Keir Fraser a20ab8a007 ioemu: some ifndef NO_UNIX_SOCKETS were missing
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
2008-02-11 10:03:19 +00:00
Keir Fraser a408cea205 ioemu: make AIO optional (already done upstream)
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
2008-02-11 10:03:05 +00:00
Keir Fraser 3988274ce7 ioemu: fix compilation without softfloat
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
2008-02-11 10:02:39 +00:00
Keir Fraser b108e29009 ioemu stubdom: make TPM optional
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
2008-02-11 10:01:42 +00:00
Keir Fraser 0c55a3582f qemu: Queue mouse clicks.
qemu doesn't enqueue mouse events, just records the latest mouse
state. This can cause some lost mouse double clicks if the events are
not processed fast enought. This patch implements a simple queue for
left mouse click events.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
2008-02-11 09:57:38 +00:00
Keir Fraser e1b02119e6 xentrace: Remove redundant tb_done_init checks, and add missing ones.
Hand inspection of gcc -02 output confirms significantly shorter
codepaths for inactive (i.e. normal case) tracing.

Signed-off-by: Michael A Fetterman <Michael.Fetterman@cl.cam.ac.uk>
2008-02-11 09:47:19 +00:00
Keir Fraser 1c8d4c1040 xentrace: Improve xentrace to use VIRQ_TBUF interrupts as well as a
user-specified polling interval in order to determine when to empty
the trace buffers. Removed the old and unused/unimplemented
new_data_threshold logic.

Signed-off-by: Michael A Fetterman <Michael.Fetterman@cl.cam.ac.uk>
2008-02-11 09:46:53 +00:00
Keir Fraser d37035e9f9 xentrace: Allow xentrace to handle >4G of trace data.
It was previously assert'ing when it hit 4G.

Also, because the trace buffer is not a power of 2 in size,
using modulo arithmetic to address the buffer does not work
when the index wraps around 2^32.

This patch fixes both issues, and as a side effect, removes all
integer division from the hypervisor side of the trace mechanism.

Signed-off-by: Michael A Fetterman <Michael.Fetterman@cl.cam.ac.uk>
2008-02-11 09:46:21 +00:00
Keir Fraser 4be9201e8c xentrace: Fix bug in logic for bytes_to_wrap in trace buffer.
Admittedly, the bug could only be manifest with much larger trace
records than are currently allowed (or equivalently, much smaller
trace buffers), but the old code was harder to read, and thus hid the
logic bug well, too.

Signed-off-by: Michael A Fetterman <Michael.Fetterman@cl.cam.ac.uk>
2008-02-11 09:45:36 +00:00
Keir Fraser cb87e2c31a x86_emulate: Fix IMUL r/m8 emulation.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-07 19:30:36 +00:00
Keir Fraser 690e710ebf vmx realmode: Add REP MOVS handler.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-07 18:57:12 +00:00
Keir Fraser 23c077d931 x86_emulate: Handle rep_ins, rep_outs, rep_movs hook failure and fall
back to slow path.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-07 18:56:47 +00:00
Keir Fraser 785137cb6b x86_emulate: Fix MUL emulation.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-07 18:00:44 +00:00
Keir Fraser 46bb4b6f02 ioemu: use POSIX int type.
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
2008-02-07 13:21:38 +00:00
Keir Fraser fac0dfc5b3 x86: physaddr_bitsize must always be initialised for 32-on-64 dom0.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-07 13:20:15 +00:00
Keir Fraser ca208ca88e ioemu: Fix build after LIST->QEMU_LIST changes.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-07 13:19:19 +00:00
Keir Fraser d710279403 vmx: Clean up VPMU code a little and remove noisy printk.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-07 10:47:20 +00:00
Keir Fraser 3cbf7c82e1 hvm: Clean up CPUID_0000_0001 return values.
The fix to EBX.ApicID was pointed out by Andre Przywara
<andre.przywara@amd.com>.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-07 10:31:48 +00:00
Keir Fraser e63b739dff Add 'coredump-destroy' and 'coredump-restart' actions for crashed domains.
Xen-API already specifies these actions for the 'on_crash' domain exit
event. This patch makes them available for use in traditional domU
config files and through the xm tool as well.

Signed-off-by: Jim Fehlig <jfehlig@novell.com>
2008-02-07 09:28:55 +00:00
Keir Fraser c5b5f2e9ff xm reboot: Fix wait option of xm reboot command
When I rebooted a domain by xm reboot command with wait option,
I saw the following message.  But, rebooting the domain succeeded.
 Domain vm1 destroyed for failed in rebooting

The cause why the message was shown is the domain is destroyed
temporarily by processing of xm reboot command.  The domain
information is not gotten from Xend by server.xend.domains()
function till recreating the domain is completed.
This patch fixes processing of xm reboot command in Xm side.
It waits just a bit till recreating the domain is completed,
then it measures the success or failure of the reboot of the
domain.

Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
2008-02-07 09:27:46 +00:00
Keir Fraser 47ea4d5c24 ioemu: avoid name clashes due to LIST_* macros
Here is what I wrote in my submission to qemu upstream:

 qemu's audio subdirectory contains a copy of BSD's sys-queue.h, which
 defines a bunch of LIST_ macros.  This makes it difficult to build a
 program made partly out of qemu and partly out of the Linux
 kernel[1], since Linux has a different set of LIST_ macros.  It might
 also cause trouble when mixing with BSD-derived code.

 Under the circumstances it's probably best to rename the versions in
 qemu.  The attached patch does this.

 [1] You might well ask why anyone would want to do this.  In Xen we
 are moving our emulation of IO devices from processes which run on
 the host into a dedicated VM (one per actual VM) which we call a
 `stub domain'.  This dedicated VM runs a very cut-down `operating
 system' which uses some code from Linux.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2008-02-07 09:21:19 +00:00
Keir Fraser 7189dd2eeb ioemu: config cleanup re AF_UNIX sockets on non-Windows
Here is what I wrote in my submission to qemu upstream:

 The patch below makes it possible to disable AF_UNIX (unix-domain)
 sockets in host environments which do not define _WIN32, by adding
 -DNO_UNIX_SOCKETS to the compiler flags.  This is useful in the
 effectively-embedded qemu host which are going to be using for device
 emulation in Xen.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
2008-02-07 09:19:12 +00:00
Keir Fraser 9ea04252b6 minios: Fix blkfront grant map leak
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
2008-02-07 09:16:20 +00:00
Keir Fraser 563f5ebfcc minios: Support net/block backend in domU
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
2008-02-07 09:15:59 +00:00
Keir Fraser 399874b1de hvmloader: Remove dead function check_amd().
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-06 18:31:02 +00:00
Keir Fraser 50b12df836 x86 vmx: Remove vmxassist.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
2008-02-06 12:07:55 +00:00