diff options
author | kaf24@freefall.cl.cam.ac.uk <kaf24@freefall.cl.cam.ac.uk> | 2004-11-03 15:15:42 +0000 |
---|---|---|
committer | kaf24@freefall.cl.cam.ac.uk <kaf24@freefall.cl.cam.ac.uk> | 2004-11-03 15:15:42 +0000 |
commit | 357d5bcf213d01830c9b0334f578dc2df24ab849 (patch) | |
tree | 94ccb5565cac5c53b61e2d1615f1c849f8c92847 | |
parent | ef4355234b819275e98401bf3915fbda76b161c8 (diff) | |
parent | 7653ae61d89d9414a9c1835a1c2b08f487a9f3e6 (diff) | |
download | xen-357d5bcf213d01830c9b0334f578dc2df24ab849.tar.gz xen-357d5bcf213d01830c9b0334f578dc2df24ab849.tar.bz2 xen-357d5bcf213d01830c9b0334f578dc2df24ab849.zip |
bitkeeper revision 1.1159.1.352 (4188f61ewtUImmubGZcL4WKujNUhMg)
Merge freefall.cl.cam.ac.uk:/auto/groups/xeno/BK/xeno.bk
into freefall.cl.cam.ac.uk:/local/scratch/kaf24/xeno
-rw-r--r-- | .rootkeys | 1 | ||||
-rw-r--r-- | README | 65 | ||||
-rwxr-xr-x | tools/check/check_ssl_lib | 10 | ||||
-rw-r--r-- | xen/arch/x86/domain.c | 20 | ||||
-rw-r--r-- | xen/common/page_alloc.c | 11 | ||||
-rw-r--r-- | xen/include/asm-x86/apic.h | 3 |
6 files changed, 89 insertions, 21 deletions
@@ -299,7 +299,6 @@ 4124b307P3bZBkTFm6r-3XTbf0phAA tools/check/check_curl_lib 4124b307u-FeKvFP9kZnh0rLV0XjGg tools/check/check_logging 4124b307tRTjLqzRy60QrUoqN2Fhuw tools/check/check_python -4124b307KcYJMtZ7r48AF-wyhyw-SQ tools/check/check_ssl_lib 4124b307XdznSNCv97lrT3RpOdMM1A tools/check/check_twisted 4124b307lnAATmulpXYa0M-dzxLBDA tools/check/check_zlib_devel 4124b308ly20ptMKQoiztPyP_X68Mw tools/check/check_zlib_lib @@ -8,25 +8,74 @@ __ __ ____ ___ ############################### University of Cambridge Computer Laboratory -29 October 2004 +3 November 2004 http://www.cl.cam.ac.uk/netos/xen/ -About the Xen Virtual Machine Monitor -===================================== +What is Xen? +============ Xen is a Virtual Machine Monitor (VMM) originally developed by the Systems Research Group of the University of Cambridge Computer Laboratory, as part of the UK-EPSRC funded XenoServers project. +Xen is freely-distributable Open Source software, released under the +GNU GPL. The 2.0 release offers excellent performance, hardware support and enterprise-grade features such as live migration. Linux 2.6, 2.4 and NetBSD 2.0 are already available for Xen, with more operating system ports on the way. -Xen is freely-distributable Open Source software, released under the -GNU GPL. +This file contains some quick-start instructions to install Xen on +your system. For full documentation, see the Xen User Manual. If this +is a pre-built release then you can find the manual at: + dist/install/usr/share/doc/xen/pdf/user.pdf +If you have a source release, then 'make -C docs' will build the +manual at docs/pdf/user.pdf. + +Quick-Start Guide - Pre-Built Binary Release +============================================ + +[NB. Unless noted otherwise, all the following steps should be +performed with root privileges.] + +1. Install the binary distribution onto your filesystem: + # sh ./install.sh + Amongst other things, this will install Xen and XenLinux kernel + files in /boot, kernel modules and Python packages in /lib, and + various control tools in standard 'bin' directories. + +2. Configure your bootloader to boot Xen and an initial Linux virtual + machine. Note that Xen currently only works with GRUB: less common + alternatives such as LILO are *not* supported. You can most likely + find your GRUB menu file at /boot/grub/menu.lst: edit this file to + include an entry like the following: + # title Xen 2.0 / XenLinux 2.6.9 + # kernel /boot/xen.gz dom0_mem=<mem-kb> console=vga + # module /boot/vmlinuz-2.6.9-xen0 root=<root-dev> ro console=tty0 + For <mem-kb> you should specify the amount of memory, in kilobytes, + to allocate for use by your initial XenLinux virtual machine. Note + that Xen itself reserves about 32MB memory for internal use, which + is not available for allocation to virtual machines. + For <root-dev>, specify your usual root partition (e.g., /dev/hda1). + +3. Reboot your system and select the "Xen 2.0 / XenLinux 2.6.9" menu + option. After booting Xen, XenLinux will start and your + initialisation scripts should execute in the usual way. + +Quick-Start Guide - Source Release +================================== + +First, there are a number of prerequisites for building a Xen source +release. Make sure you have all the following installed, either by +visiting the project webpage or installing a pre-built package +provided by your Linux distributor: + * GCC (preferably v3.2.x or v3.3.x; older versions are unsupported) + * GNU Make + * GNU Binutils + * Development install of libcurl (e.g., libcurl-dev) + * Development install of zlib (e.g., zlib-dev) + * Development install of Python v2.2 or later (e.g., python-dev) -For full documentation, see the Xen User Manual in docs/pdf/user.pdf -(after running make -C docs) or the Documentation page on the Xen -website. +[NB. Unless noted otherwise, all the following steps should be +performed with root privileges.] diff --git a/tools/check/check_ssl_lib b/tools/check/check_ssl_lib deleted file mode 100755 index ecd64d4a54..0000000000 --- a/tools/check/check_ssl_lib +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# CHECK-BUILD CHECK-INSTALL - -function error { - echo "Check for ssl library failed." - exit 1 -} - -set -e -ldconfig -p | grep libssl.so || error
\ No newline at end of file diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index 784027fc11..84ce4afce9 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -699,7 +699,25 @@ int construct_dom0(struct domain *p, } /* Paranoia: scrub DOM0's memory allocation. */ - memset((void *)alloc_start, 0, alloc_end - alloc_start); + printk("Scrubbing DOM0 RAM: "); + dst = (char *)alloc_start; + while ( dst < (char *)alloc_end ) + { +#define SCRUB_BYTES (100 * 1024 * 1024) /* 100MB */ + printk("."); + touch_nmi_watchdog(); + if ( ((char *)alloc_end - dst) > SCRUB_BYTES ) + { + memset(dst, 0, SCRUB_BYTES); + dst += SCRUB_BYTES; + } + else + { + memset(dst, 0, (char *)alloc_end - dst); + break; + } + } + printk("done.\n"); /* Construct a frame-allocation list for the initial domain. */ for ( mfn = (alloc_start>>PAGE_SHIFT); diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index ccb7733846..c8c96dbee3 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -293,8 +293,17 @@ void scrub_heap_pages(void) void *p; unsigned long pfn, flags; + printk("Scrubbing Free RAM: "); + for ( pfn = 0; pfn < (bitmap_size * 8); pfn++ ) { + /* Every 100MB, print a progress dot and appease the watchdog. */ + if ( (pfn % ((100*1024*1024)/PAGE_SIZE)) == 0 ) + { + printk("."); + touch_nmi_watchdog(); + } + /* Quick lock-free check. */ if ( allocated_in_map(pfn) ) continue; @@ -311,6 +320,8 @@ void scrub_heap_pages(void) spin_unlock_irqrestore(&heap_lock, flags); } + + printk("done.\n"); } diff --git a/xen/include/asm-x86/apic.h b/xen/include/asm-x86/apic.h index 2c533fe0b2..54289910ab 100644 --- a/xen/include/asm-x86/apic.h +++ b/xen/include/asm-x86/apic.h @@ -77,7 +77,8 @@ extern void init_apic_mappings (void); extern void smp_local_timer_interrupt (struct xen_regs * regs); extern void setup_APIC_clocks (void); extern void setup_apic_nmi_watchdog (void); -extern inline void nmi_watchdog_tick (struct xen_regs * regs); +extern void nmi_watchdog_tick (struct xen_regs * regs); +extern void touch_nmi_watchdog(void); extern int APIC_init_uniprocessor (void); extern void disable_APIC_timer(void); extern void enable_APIC_timer(void); |