[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen master] Remove in-tree mini-os directory



commit 7280bb923ad9853f541207f8e1aa1b4f1c513c91
Author:     Wei Liu <wei.liu2@xxxxxxxxxx>
AuthorDate: Fri Jan 30 16:03:18 2015 +0000
Commit:     Wei Liu <wei.liu2@xxxxxxxxxx>
CommitDate: Fri Feb 27 16:04:54 2015 +0000

    Remove in-tree mini-os directory

    Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
    Cc: Ian Campbell <ian.campbell@xxxxxxxxxx>
    Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
    Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
---
 extras/mini-os-intree/COPYING                      |   36 -
 extras/mini-os-intree/Config.mk                    |   99 --
 extras/mini-os-intree/Makefile                     |  224 ---
 extras/mini-os-intree/README                       |   46 -
 extras/mini-os-intree/app.lds                      |   11 -
 extras/mini-os-intree/arch/arm/arm32.S             |  294 ----
 extras/mini-os-intree/arch/arm/events.c            |   31 -
 extras/mini-os-intree/arch/arm/hypercalls32.S      |   64 -
 extras/mini-os-intree/arch/arm/minios-arm32.lds    |   83 --
 extras/mini-os-intree/arch/arm/mm.c                |  139 --
 extras/mini-os-intree/arch/arm/panic.c             |   98 --
 extras/mini-os-intree/arch/arm/sched.c             |   47 -
 extras/mini-os-intree/arch/arm/setup.c             |  119 --
 extras/mini-os-intree/arch/arm/time.c              |  136 --
 extras/mini-os-intree/arch/x86/Makefile            |   30 -
 extras/mini-os-intree/arch/x86/arch.mk             |   22 -
 extras/mini-os-intree/arch/x86/events.c            |   35 -
 extras/mini-os-intree/arch/x86/ioremap.c           |   75 -
 extras/mini-os-intree/arch/x86/iorw.c              |   35 -
 extras/mini-os-intree/arch/x86/minios-x86_32.lds   |   74 -
 extras/mini-os-intree/arch/x86/minios-x86_64.lds   |   74 -
 extras/mini-os-intree/arch/x86/mm.c                |  957 ------------
 extras/mini-os-intree/arch/x86/sched.c             |  139 --
 extras/mini-os-intree/arch/x86/setup.c             |  168 ---
 extras/mini-os-intree/arch/x86/time.c              |  238 ---
 extras/mini-os-intree/arch/x86/traps.c             |  333 -----
 extras/mini-os-intree/arch/x86/x86_32.S            |  305 ----
 extras/mini-os-intree/arch/x86/x86_64.S            |  383 -----
 extras/mini-os-intree/blkfront.c                   |  736 ----------
 extras/mini-os-intree/config/MiniOS.mk             |   10 -
 extras/mini-os-intree/config/StdGNU.mk             |   47 -
 extras/mini-os-intree/config/arm32.mk              |   22 -
 extras/mini-os-intree/config/arm64.mk              |   19 -
 extras/mini-os-intree/config/x86_32.mk             |   20 -
 extras/mini-os-intree/config/x86_64.mk             |   33 -
 extras/mini-os-intree/console/console.c            |  164 --
 extras/mini-os-intree/console/console.h            |    2 -
 extras/mini-os-intree/console/xenbus.c             |  195 ---
 extras/mini-os-intree/console/xencons_ring.c       |  195 ---
 extras/mini-os-intree/daytime.c                    |   67 -
 extras/mini-os-intree/domain_config                |   19 -
 extras/mini-os-intree/events.c                     |  269 ----
 extras/mini-os-intree/fbfront.c                    |  710 ---------
 extras/mini-os-intree/gntmap.c                     |  250 ----
 extras/mini-os-intree/gnttab.c                     |  196 ---
 extras/mini-os-intree/hypervisor.c                 |  132 --
 extras/mini-os-intree/include/arch/cc.h            |   87 --
 extras/mini-os-intree/include/arch/perf.h          |   15 -
 extras/mini-os-intree/include/arch/sys_arch.h      |   35 -
 extras/mini-os-intree/include/arm/arch_endian.h    |    7 -
 extras/mini-os-intree/include/arm/arch_limits.h    |    9 -
 extras/mini-os-intree/include/arm/arch_mm.h        |   38 -
 extras/mini-os-intree/include/arm/arch_sched.h     |   19 -
 extras/mini-os-intree/include/arm/arch_spinlock.h  |   36 -
 .../include/arm/arm32/arch_wordsize.h              |    1 -
 extras/mini-os-intree/include/arm/gic.h            |    1 -
 extras/mini-os-intree/include/arm/hypercall-arm.h  |   98 --
 extras/mini-os-intree/include/arm/os.h             |  216 ---
 extras/mini-os-intree/include/arm/traps.h          |   20 -
 extras/mini-os-intree/include/blkfront.h           |   54 -
 extras/mini-os-intree/include/byteorder.h          |   36 -
 extras/mini-os-intree/include/byteswap.h           |   39 -
 extras/mini-os-intree/include/compiler.h           |   10 -
 extras/mini-os-intree/include/console.h            |   89 --
 extras/mini-os-intree/include/ctype.h              |   60 -
 extras/mini-os-intree/include/endian.h             |   19 -
 extras/mini-os-intree/include/err.h                |   31 -
 extras/mini-os-intree/include/errno-base.h         |   39 -
 extras/mini-os-intree/include/errno.h              |  122 --
 extras/mini-os-intree/include/events.h             |   59 -
 extras/mini-os-intree/include/fbfront.h            |   46 -
 extras/mini-os-intree/include/fcntl.h              |   99 --
 extras/mini-os-intree/include/gntmap.h             |   35 -
 extras/mini-os-intree/include/gnttab.h             |   17 -
 extras/mini-os-intree/include/hypervisor.h         |   48 -
 extras/mini-os-intree/include/ioremap.h            |   33 -
 extras/mini-os-intree/include/iorw.h               |   16 -
 extras/mini-os-intree/include/kernel.h             |    9 -
 extras/mini-os-intree/include/lib-gpl.h            |   59 -
 extras/mini-os-intree/include/lib.h                |  230 ---
 extras/mini-os-intree/include/linux/types.h        |    5 -
 extras/mini-os-intree/include/lwipopts.h           |   23 -
 .../mini-os-intree/include/minios-external/README  |   24 -
 .../include/minios-external/bsd-COPYRIGHT          |  126 --
 .../include/minios-external/bsd-queue.3            | 1044 -------------
 .../minios-external/bsd-sys-queue-h-seddery        |   72 -
 .../include/minios-external/bsd-sys-queue.h        |  637 --------
 extras/mini-os-intree/include/mm.h                 |   82 -
 extras/mini-os-intree/include/netfront.h           |   24 -
 extras/mini-os-intree/include/pcifront.h           |   29 -
 extras/mini-os-intree/include/posix/arpa/inet.h    |    7 -
 extras/mini-os-intree/include/posix/dirent.h       |   24 -
 extras/mini-os-intree/include/posix/err.h          |   15 -
 extras/mini-os-intree/include/posix/fcntl.h        |   11 -
 extras/mini-os-intree/include/posix/limits.h       |   48 -
 extras/mini-os-intree/include/posix/net/if.h       |   85 --
 extras/mini-os-intree/include/posix/netdb.h        |    9 -
 extras/mini-os-intree/include/posix/netinet/in.h   |    7 -
 extras/mini-os-intree/include/posix/netinet/tcp.h  |    6 -
 extras/mini-os-intree/include/posix/poll.h         |    1 -
 extras/mini-os-intree/include/posix/pthread.h      |   64 -
 extras/mini-os-intree/include/posix/signal.h       |   10 -
 extras/mini-os-intree/include/posix/stdlib.h       |    8 -
 extras/mini-os-intree/include/posix/strings.h      |   12 -
 extras/mini-os-intree/include/posix/sys/ioctl.h    |   16 -
 extras/mini-os-intree/include/posix/sys/mman.h     |   22 -
 extras/mini-os-intree/include/posix/sys/poll.h     |   79 -
 extras/mini-os-intree/include/posix/sys/select.h   |    7 -
 extras/mini-os-intree/include/posix/sys/socket.h   |   31 -
 extras/mini-os-intree/include/posix/sys/stat.h     |    7 -
 extras/mini-os-intree/include/posix/syslog.h       |   37 -
 extras/mini-os-intree/include/posix/termios.h      |   87 --
 extras/mini-os-intree/include/posix/time.h         |   11 -
 extras/mini-os-intree/include/posix/unistd.h       |   16 -
 extras/mini-os-intree/include/sched.h              |   55 -
 extras/mini-os-intree/include/semaphore.h          |  110 --
 extras/mini-os-intree/include/spinlock.h           |   55 -
 extras/mini-os-intree/include/sys/lock.h           |   52 -
 extras/mini-os-intree/include/sys/time.h           |   47 -
 extras/mini-os-intree/include/time.h               |   63 -
 extras/mini-os-intree/include/tpm_tis.h            |   61 -
 extras/mini-os-intree/include/tpmback.h            |  104 --
 extras/mini-os-intree/include/tpmfront.h           |   97 --
 extras/mini-os-intree/include/types.h              |   74 -
 extras/mini-os-intree/include/wait.h               |  105 --
 extras/mini-os-intree/include/waittypes.h          |   32 -
 extras/mini-os-intree/include/x86/arch_endian.h    |    7 -
 extras/mini-os-intree/include/x86/arch_limits.h    |   20 -
 extras/mini-os-intree/include/x86/arch_mm.h        |  233 ---
 extras/mini-os-intree/include/x86/arch_sched.h     |   25 -
 extras/mini-os-intree/include/x86/arch_spinlock.h  |   94 --
 extras/mini-os-intree/include/x86/os.h             |  572 --------
 extras/mini-os-intree/include/x86/traps.h          |   78 -
 .../include/x86/x86_32/arch_wordsize.h             |    1 -
 .../include/x86/x86_32/hypercall-x86_32.h          |  337 -----
 .../include/x86/x86_64/arch_wordsize.h             |    2 -
 .../include/x86/x86_64/hypercall-x86_64.h          |  344 -----
 extras/mini-os-intree/include/xen/COPYING          |   38 -
 extras/mini-os-intree/include/xen/arch-arm.h       |  432 ------
 .../mini-os-intree/include/xen/arch-arm/hvm/save.h |   39 -
 extras/mini-os-intree/include/xen/arch-x86/cpuid.h |   90 --
 .../mini-os-intree/include/xen/arch-x86/hvm/save.h |  630 --------
 .../mini-os-intree/include/xen/arch-x86/xen-mca.h  |  440 ------
 .../include/xen/arch-x86/xen-x86_32.h              |  171 ---
 .../include/xen/arch-x86/xen-x86_64.h              |  202 ---
 extras/mini-os-intree/include/xen/arch-x86/xen.h   |  303 ----
 extras/mini-os-intree/include/xen/arch-x86_32.h    |   27 -
 extras/mini-os-intree/include/xen/arch-x86_64.h    |   43 -
 extras/mini-os-intree/include/xen/callback.h       |  121 --
 extras/mini-os-intree/include/xen/dom0_ops.h       |  120 --
 extras/mini-os-intree/include/xen/domctl.h         | 1154 ---------------
 extras/mini-os-intree/include/xen/elfnote.h        |  271 ----
 extras/mini-os-intree/include/xen/event_channel.h  |  385 -----
 extras/mini-os-intree/include/xen/features.h       |  114 --
 extras/mini-os-intree/include/xen/gcov.h           |  115 --
 extras/mini-os-intree/include/xen/grant_table.h    |  682 ---------
 extras/mini-os-intree/include/xen/hvm/e820.h       |   34 -
 .../include/xen/hvm/hvm_info_table.h               |   72 -
 extras/mini-os-intree/include/xen/hvm/hvm_op.h     |  402 -----
 .../include/xen/hvm/hvm_xs_strings.h               |   80 -
 extras/mini-os-intree/include/xen/hvm/ioreq.h      |  129 --
 extras/mini-os-intree/include/xen/hvm/params.h     |  199 ---
 extras/mini-os-intree/include/xen/hvm/pvdrivers.h  |   49 -
 extras/mini-os-intree/include/xen/hvm/save.h       |  111 --
 extras/mini-os-intree/include/xen/io/blkif.h       |  640 --------
 extras/mini-os-intree/include/xen/io/console.h     |   51 -
 extras/mini-os-intree/include/xen/io/fbif.h        |  176 ---
 extras/mini-os-intree/include/xen/io/fsif.h        |  192 ---
 extras/mini-os-intree/include/xen/io/kbdif.h       |  132 --
 extras/mini-os-intree/include/xen/io/libxenvchan.h |   97 --
 extras/mini-os-intree/include/xen/io/netif.h       |  305 ----
 extras/mini-os-intree/include/xen/io/pciif.h       |  125 --
 extras/mini-os-intree/include/xen/io/protocols.h   |   40 -
 extras/mini-os-intree/include/xen/io/ring.h        |  312 ----
 extras/mini-os-intree/include/xen/io/tpmif.h       |  143 --
 extras/mini-os-intree/include/xen/io/usbif.h       |  150 --
 extras/mini-os-intree/include/xen/io/vscsiif.h     |  260 ----
 extras/mini-os-intree/include/xen/io/xenbus.h      |   80 -
 extras/mini-os-intree/include/xen/io/xs_wire.h     |  149 --
 extras/mini-os-intree/include/xen/kexec.h          |  249 ----
 extras/mini-os-intree/include/xen/mem_event.h      |  134 --
 extras/mini-os-intree/include/xen/memory.h         |  587 --------
 extras/mini-os-intree/include/xen/nmi.h            |   85 --
 extras/mini-os-intree/include/xen/physdev.h        |  380 -----
 extras/mini-os-intree/include/xen/platform.h       |  606 --------
 extras/mini-os-intree/include/xen/sched.h          |  175 ---
 extras/mini-os-intree/include/xen/sysctl.h         |  719 ---------
 extras/mini-os-intree/include/xen/tmem.h           |  152 --
 extras/mini-os-intree/include/xen/trace.h          |  331 -----
 extras/mini-os-intree/include/xen/vcpu.h           |  240 ---
 extras/mini-os-intree/include/xen/version.h        |   96 --
 extras/mini-os-intree/include/xen/xen-compat.h     |   44 -
 extras/mini-os-intree/include/xen/xen.h            |  899 ------------
 extras/mini-os-intree/include/xen/xencomm.h        |   41 -
 extras/mini-os-intree/include/xen/xenoprof.h       |  152 --
 extras/mini-os-intree/include/xen/xsm/flask_op.h   |  201 ---
 extras/mini-os-intree/include/xenbus.h             |  120 --
 extras/mini-os-intree/include/xmalloc.h            |   44 -
 extras/mini-os-intree/kernel.c                     |  198 ---
 extras/mini-os-intree/lib/ctype.c                  |   29 -
 extras/mini-os-intree/lib/math.c                   |  426 ------
 extras/mini-os-intree/lib/printf.c                 |  786 ----------
 extras/mini-os-intree/lib/stack_chk_fail.c         |    8 -
 extras/mini-os-intree/lib/string.c                 |  228 ---
 extras/mini-os-intree/lib/sys.c                    | 1550 --------------------
 extras/mini-os-intree/lib/xmalloc.c                |  319 ----
 extras/mini-os-intree/lib/xs.c                     |  194 ---
 extras/mini-os-intree/lock.c                       |  112 --
 extras/mini-os-intree/lwip-arch.c                  |  293 ----
 extras/mini-os-intree/lwip-net.c                   |  386 -----
 extras/mini-os-intree/main.c                       |  193 ---
 extras/mini-os-intree/minios.mk                    |   76 -
 extras/mini-os-intree/mm.c                         |  441 ------
 extras/mini-os-intree/netfront.c                   |  675 ---------
 extras/mini-os-intree/pcifront.c                   |  616 --------
 extras/mini-os-intree/sched.c                      |  304 ----
 extras/mini-os-intree/test.c                       |  577 --------
 extras/mini-os-intree/tpm_tis.c                    | 1523 -------------------
 extras/mini-os-intree/tpmback.c                    | 1136 --------------
 extras/mini-os-intree/tpmfront.c                   |  631 --------
 extras/mini-os-intree/xenbus/xenbus.c              |  870 -----------
 221 files changed, 0 insertions(+), 40498 deletions(-)

diff --git a/extras/mini-os-intree/COPYING b/extras/mini-os-intree/COPYING
deleted file mode 100644
index 1d9df6c..0000000
--- a/extras/mini-os-intree/COPYING
+++ /dev/null
@@ -1,36 +0,0 @@
-Certain files in this directory are licensed by the GNU
-General Public License version 2 (GPLv2). By default these
-files are not built and linked into MiniOs. Enabling them
-will cause the whole work to become covered by the GPLv2.
-
-The current set of GPLv2 features are:
-CONFIG_TPMFRONT
-CONFIG_TPMBACK
-CONFIG_TPM_TIS
-
-Do not use these if you do not want your MiniOS build to become
-GPL licensed!
-
-Copyright (c) 2009 Citrix Systems, Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
diff --git a/extras/mini-os-intree/Config.mk b/extras/mini-os-intree/Config.mk
deleted file mode 100644
index e5d8ade..0000000
--- a/extras/mini-os-intree/Config.mk
+++ /dev/null
@@ -1,99 +0,0 @@
-#
-# Compare $(1) and $(2) and replace $(2) with $(1) if they differ
-#
-# Typically $(1) is a newly generated file and $(2) is the target file
-# being regenerated. This prevents changing the timestamp of $(2) only
-# due to being auto regenereated with the same contents.
-define move-if-changed
-        if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi
-endef
-
-# cc-option: Check if compiler supports first option, else fall back to second.
-#
-# This is complicated by the fact that unrecognised -Wno-* options:
-#   (a) are ignored unless the compilation emits a warning; and
-#   (b) even then produce a warning rather than an error
-# To handle this we do a test compile, passing the option-under-test, on a code
-# fragment that will always produce a warning (integer assigned to pointer).
-# We then grep for the option-under-test in the compiler's output, the presence
-# of which would indicate an "unrecognized command-line option" warning/error.
-#
-# Usage: cflags-y += $(call cc-option,$(CC),-march=winchip-c6,-march=i586)
-cc-option = $(shell if test -z "`echo 'void*p=1;' | \
-              $(1) $(2) -S -o /dev/null -x c - 2>&1 | grep -- $(2) -`"; \
-              then echo "$(2)"; else echo "$(3)"; fi ;)
-
-# Compatibility with Xen's stubdom build environment.  If we are building
-# stubdom, some XEN_ variables are set, set MINIOS_ variables accordingly.
-#
-ifneq ($(XEN_ROOT),)
-MINI-OS_ROOT=$(XEN_ROOT)/extras/mini-os
-else
-MINI-OS_ROOT=$(TOPLEVEL_DIR)
-endif
-export MINI-OS_ROOT
-
-ifneq ($(XEN_TARGET_ARCH),)
-MINIOS_TARGET_ARCH = $(XEN_TARGET_ARCH)
-else
-MINIOS_COMPILE_ARCH    ?= $(shell uname -m | sed -e s/i.86/x86_32/ \
-                            -e s/i86pc/x86_32/ -e s/amd64/x86_64/ \
-                            -e s/armv7.*/arm32/ -e s/armv8.*/arm64/ \
-                            -e s/aarch64/arm64/)
-
-MINIOS_TARGET_ARCH     ?= $(MINIOS_COMPILE_ARCH)
-endif
-
-libc = $(stubdom)
-
-XEN_INTERFACE_VERSION := 0x00030205
-export XEN_INTERFACE_VERSION
-
-# Try to find out the architecture family TARGET_ARCH_FAM.
-# First check whether x86_... is contained (for x86_32, x86_32y, x86_64).
-# If not x86 then use $(MINIOS_TARGET_ARCH)
-ifeq ($(findstring x86_,$(MINIOS_TARGET_ARCH)),x86_)
-TARGET_ARCH_FAM = x86
-else
-TARGET_ARCH_FAM = $(MINIOS_TARGET_ARCH)
-endif
-
-# The architecture family directory below mini-os.
-TARGET_ARCH_DIR := arch/$(TARGET_ARCH_FAM)
-
-# Export these variables for possible use in architecture dependent makefiles.
-export TARGET_ARCH_DIR
-export TARGET_ARCH_FAM
-
-# This is used for architecture specific links.
-# This can be overwritten from arch specific rules.
-ARCH_LINKS =
-
-# The path pointing to the architecture specific header files.
-ARCH_INC := $(TARGET_ARCH_FAM)
-
-# For possible special header directories.
-# This can be overwritten from arch specific rules.
-EXTRA_INC = $(ARCH_INC)
-
-# Include the architecture family's special makerules.
-# This must be before include minios.mk!
-include $(MINI-OS_ROOT)/$(TARGET_ARCH_DIR)/arch.mk
-
-extra_incl := $(foreach dir,$(EXTRA_INC),-isystem 
$(MINI-OS_ROOT)/include/$(dir))
-
-DEF_CPPFLAGS += -isystem $(MINI-OS_ROOT)/include
-DEF_CPPFLAGS += -D__MINIOS__
-
-ifeq ($(libc),y)
-DEF_CPPFLAGS += -DHAVE_LIBC
-DEF_CPPFLAGS += -isystem $(MINI-OS_ROOT)/include/posix
-DEF_CPPFLAGS += -isystem $(XEN_ROOT)/tools/xenstore/include
-endif
-
-ifneq ($(LWIPDIR),)
-lwip=y
-DEF_CPPFLAGS += -DHAVE_LWIP
-DEF_CPPFLAGS += -isystem $(LWIPDIR)/src/include
-DEF_CPPFLAGS += -isystem $(LWIPDIR)/src/include/ipv4
-endif
diff --git a/extras/mini-os-intree/Makefile b/extras/mini-os-intree/Makefile
deleted file mode 100644
index f16520e..0000000
--- a/extras/mini-os-intree/Makefile
+++ /dev/null
@@ -1,224 +0,0 @@
-# Common Makefile for mini-os.
-#
-# Every architecture directory below mini-os/arch has to have a
-# Makefile and a arch.mk.
-#
-
-OBJ_DIR=$(CURDIR)
-TOPLEVEL_DIR=$(CURDIR)
-
-ifeq ($(MINIOS_CONFIG),)
-include Config.mk
-else
-EXTRA_DEPS += $(MINIOS_CONFIG)
-include $(MINIOS_CONFIG)
-endif
-
-include $(MINI-OS_ROOT)/config/MiniOS.mk
-
-# Configuration defaults
-CONFIG_START_NETWORK ?= y
-CONFIG_SPARSE_BSS ?= y
-CONFIG_QEMU_XS_ARGS ?= n
-CONFIG_TEST ?= n
-CONFIG_PCIFRONT ?= n
-CONFIG_BLKFRONT ?= y
-CONFIG_TPMFRONT ?= n
-CONFIG_TPM_TIS ?= n
-CONFIG_TPMBACK ?= n
-CONFIG_NETFRONT ?= y
-CONFIG_FBFRONT ?= y
-CONFIG_KBDFRONT ?= y
-CONFIG_CONSFRONT ?= y
-CONFIG_XENBUS ?= y
-CONFIG_XC ?=y
-CONFIG_LWIP ?= $(lwip)
-
-# Export config items as compiler directives
-flags-$(CONFIG_START_NETWORK) += -DCONFIG_START_NETWORK
-flags-$(CONFIG_SPARSE_BSS) += -DCONFIG_SPARSE_BSS
-flags-$(CONFIG_QEMU_XS_ARGS) += -DCONFIG_QEMU_XS_ARGS
-flags-$(CONFIG_PCIFRONT) += -DCONFIG_PCIFRONT
-flags-$(CONFIG_BLKFRONT) += -DCONFIG_BLKFRONT
-flags-$(CONFIG_TPMFRONT) += -DCONFIG_TPMFRONT
-flags-$(CONFIG_TPM_TIS) += -DCONFIG_TPM_TIS
-flags-$(CONFIG_TPMBACK) += -DCONFIG_TPMBACK
-flags-$(CONFIG_NETFRONT) += -DCONFIG_NETFRONT
-flags-$(CONFIG_KBDFRONT) += -DCONFIG_KBDFRONT
-flags-$(CONFIG_FBFRONT) += -DCONFIG_FBFRONT
-flags-$(CONFIG_CONSFRONT) += -DCONFIG_CONSFRONT
-flags-$(CONFIG_XENBUS) += -DCONFIG_XENBUS
-
-DEF_CFLAGS += $(flags-y)
-
-# Symlinks and headers that must be created before building the C files
-GENERATED_HEADERS := include/list.h $(ARCH_LINKS) include/mini-os 
include/$(TARGET_ARCH_FAM)/mini-os
-
-EXTRA_DEPS += $(GENERATED_HEADERS)
-
-# Include common mini-os makerules.
-include minios.mk
-
-# Set tester flags
-# CFLAGS += -DBLKTEST_WRITE
-
-# Define some default flags for linking.
-LDLIBS :=
-APP_LDLIBS :=
-LDARCHLIB := -L$(OBJ_DIR)/$(TARGET_ARCH_DIR) -l$(ARCH_LIB_NAME)
-LDFLAGS_FINAL := -T $(TARGET_ARCH_DIR)/minios-$(MINIOS_TARGET_ARCH).lds
-
-# Prefix for global API names. All other symbols are localised before
-# linking with EXTRA_OBJS.
-GLOBAL_PREFIX := xenos_
-EXTRA_OBJS =
-
-TARGET := mini-os
-
-# Subdirectories common to mini-os
-SUBDIRS := lib xenbus console
-
-src-$(CONFIG_BLKFRONT) += blkfront.c
-src-$(CONFIG_TPMFRONT) += tpmfront.c
-src-$(CONFIG_TPM_TIS) += tpm_tis.c
-src-$(CONFIG_TPMBACK) += tpmback.c
-src-y += daytime.c
-src-y += events.c
-src-$(CONFIG_FBFRONT) += fbfront.c
-src-y += gntmap.c
-src-y += gnttab.c
-src-y += hypervisor.c
-src-y += kernel.c
-src-y += lock.c
-src-y += main.c
-src-y += mm.c
-src-$(CONFIG_NETFRONT) += netfront.c
-src-$(CONFIG_PCIFRONT) += pcifront.c
-src-y += sched.c
-src-$(CONFIG_TEST) += test.c
-
-src-y += lib/ctype.c
-src-y += lib/math.c
-src-y += lib/printf.c
-src-y += lib/stack_chk_fail.c
-src-y += lib/string.c
-src-y += lib/sys.c
-src-y += lib/xmalloc.c
-src-$(CONFIG_XENBUS) += lib/xs.c
-
-src-$(CONFIG_XENBUS) += xenbus/xenbus.c
-
-src-y += console/console.c
-src-y += console/xencons_ring.c
-src-$(CONFIG_CONSFRONT) += console/xenbus.c
-
-# The common mini-os objects to build.
-APP_OBJS :=
-OBJS := $(patsubst %.c,$(OBJ_DIR)/%.o,$(src-y))
-
-.PHONY: default
-default: $(OBJ_DIR)/$(TARGET)
-
-# Create special architecture specific links. The function arch_links
-# has to be defined in arch.mk (see include above).
-ifneq ($(ARCH_LINKS),)
-$(ARCH_LINKS):
-       $(arch_links)
-endif
-
-include/list.h: include/minios-external/bsd-sys-queue-h-seddery 
include/minios-external/bsd-sys-queue.h
-       perl $^ --prefix=minios  >$@.new
-       $(call move-if-changed,$@.new,$@)
-
-# Used by stubdom's Makefile
-.PHONY: links
-links: $(GENERATED_HEADERS)
-
-include/mini-os:
-       ln -sf . $@
-
-include/$(TARGET_ARCH_FAM)/mini-os:
-       ln -sf . $@
-
-.PHONY: arch_lib
-arch_lib:
-       $(MAKE) --directory=$(TARGET_ARCH_DIR) 
OBJ_DIR=$(OBJ_DIR)/$(TARGET_ARCH_DIR) || exit 1;
-
-ifeq ($(CONFIG_LWIP),y)
-# lwIP library
-LWC    := $(shell find $(LWIPDIR)/src -type f -name '*.c')
-LWC    := $(filter-out %6.c %ip6_addr.c %ethernetif.c, $(LWC))
-LWO    := $(patsubst %.c,%.o,$(LWC))
-LWO    += $(OBJ_DIR)/lwip-arch.o
-ifeq ($(CONFIG_NETFRONT),y)
-LWO += $(OBJ_DIR)/lwip-net.o
-endif
-
-$(OBJ_DIR)/lwip.a: $(LWO)
-       $(RM) $@
-       $(AR) cqs $@ $^
-
-OBJS += $(OBJ_DIR)/lwip.a
-endif
-
-OBJS := $(filter-out $(OBJ_DIR)/lwip%.o $(LWO), $(OBJS))
-
-ifeq ($(libc),y)
-ifeq ($(CONFIG_XC),y)
-APP_LDLIBS += -L$(XEN_ROOT)/stubdom/libxc-$(XEN_TARGET_ARCH) -whole-archive 
-lxenguest -lxenctrl -no-whole-archive
-endif
-APP_LDLIBS += -lpci
-APP_LDLIBS += -lz
-APP_LDLIBS += -lm
-LDLIBS += -lc
-endif
-
-ifneq ($(APP_OBJS)-$(lwip),-y)
-OBJS := $(filter-out $(OBJ_DIR)/daytime.o, $(OBJS))
-endif
-
-$(OBJ_DIR)/$(TARGET)_app.o: $(APP_OBJS) app.lds
-       $(LD) -r -d $(LDFLAGS) -\( $^ -\) $(APP_LDLIBS) --undefined main -o $@
-
-ifneq ($(APP_OBJS),)
-APP_O=$(OBJ_DIR)/$(TARGET)_app.o
-endif
-
-$(OBJ_DIR)/$(TARGET): $(OBJS) $(APP_O) arch_lib
-       $(LD) -r $(LDFLAGS) $(HEAD_OBJ) $(APP_O) $(OBJS) $(LDARCHLIB) $(LDLIBS) 
-o $@.o
-       $(OBJCOPY) -w -G $(GLOBAL_PREFIX)* -G _start $@.o $@.o
-       $(LD) $(LDFLAGS) $(LDFLAGS_FINAL) $@.o $(EXTRA_OBJS) -o $@
-       gzip -f -9 -c $@ >$@.gz
-
-.PHONY: clean arch_clean
-
-arch_clean:
-       $(MAKE) --directory=$(TARGET_ARCH_DIR) 
OBJ_DIR=$(OBJ_DIR)/$(TARGET_ARCH_DIR) clean || exit 1;
-
-clean: arch_clean
-       for dir in $(addprefix $(OBJ_DIR)/,$(SUBDIRS)); do \
-               rm -f $$dir/*.o; \
-       done
-       rm -f include/list.h
-       rm -f $(OBJ_DIR)/*.o *~ $(OBJ_DIR)/core $(OBJ_DIR)/$(TARGET).elf 
$(OBJ_DIR)/$(TARGET).raw $(OBJ_DIR)/$(TARGET) $(OBJ_DIR)/$(TARGET).gz
-       find . $(OBJ_DIR) -type l | xargs rm -f
-       $(RM) $(OBJ_DIR)/lwip.a $(LWO)
-       rm -f tags TAGS
-
-
-define all_sources
-     ( find . -follow -name SCCS -prune -o -name '*.[chS]' -print )
-endef
-
-.PHONY: cscope
-cscope:
-       $(all_sources) > cscope.files
-       cscope -k -b -q
-
-.PHONY: tags
-tags:
-       $(all_sources) | xargs ctags
-
-.PHONY: TAGS
-TAGS:
-       $(all_sources) | xargs etags
diff --git a/extras/mini-os-intree/README b/extras/mini-os-intree/README
deleted file mode 100644
index 7960314..0000000
--- a/extras/mini-os-intree/README
+++ /dev/null
@@ -1,46 +0,0 @@
- Minimal OS
- ----------
-
-This shows some of the stuff that any guest OS will have to set up.
-
-This includes:
-
- * installing a virtual exception table
- * handling virtual exceptions
- * handling asynchronous events
- * enabling/disabling async events
- * parsing start_info struct at start-of-day
- * registering virtual interrupt handlers (for timer interrupts)
- * a simple page and memory allocator
- * minimal libc support
- * minimal Copy-on-Write support
- * network, block, framebuffer support
- * transparent access to FileSystem exports (see tools/fs-back)
-
-- to build it just type make.
-
-- to build it with TCP/IP support, download LWIP 1.3.2 source code and type
-
-  make LWIPDIR=/path/to/lwip/source
-
-- to build it with much better libc support, see the stubdom/ directory
-
-- to start it do the following in domain0
-  # xl create -c domain_config
-
-This starts the kernel and prints out a bunch of stuff and then once every
-second the system time.
-
-If you have setup a disk in the config file (e.g.
-disk = [ 'file:/tmp/foo,hda,r' ] ), it will loop reading it.  If that disk is
-writable (e.g. disk = [ 'file:/tmp/foo,hda,w' ] ), it will write data patterns
-and re-read them.
-
-If you have setup a network in the config file (e.g. vif = [''] ), it will
-print incoming packets.
-
-If you have setup a VFB in the config file (e.g. vfb = ['type=sdl'] ), it will
-show a mouse with which you can draw color squares.
-
-If you have compiled it with TCP/IP support, it will run a daytime server on
-TCP port 13.
diff --git a/extras/mini-os-intree/app.lds b/extras/mini-os-intree/app.lds
deleted file mode 100644
index 4a48cc8..0000000
--- a/extras/mini-os-intree/app.lds
+++ /dev/null
@@ -1,11 +0,0 @@
-SECTIONS
-{
-        .app.bss : {
-                __app_bss_start = . ;
-                *(.bss .bss.*)
-                *(COMMON)
-                *(.lbss .lbss.*)
-                *(LARGE_COMMON)
-                __app_bss_end = . ;
-        }
-}
diff --git a/extras/mini-os-intree/arch/arm/arm32.S 
b/extras/mini-os-intree/arch/arm/arm32.S
deleted file mode 100644
index a08a170..0000000
--- a/extras/mini-os-intree/arch/arm/arm32.S
+++ /dev/null
@@ -1,294 +0,0 @@
-@ Offset of the kernel within the RAM. This is a Linux/zImage convention which 
we
-@ rely on for now.
-#define ZIMAGE_KERNEL_OFFSET 0x8000
-
-.section .text
-
-.globl _start
-_start:
-       @ zImage header
-.rept   8
-        mov     r0, r0
-.endr
-        b       reset
-        .word   0x016f2818      @ Magic numbers to help the loader
-        .word   0              @ zImage start address (0 = relocatable)
-        .word   _edata - _start @ zImage end address (excludes bss section)
-       @ end of zImage header
-
-@ Called at boot time. Sets up MMU, exception vectors and stack, and then 
calls C arch_init() function.
-@ => r2 -> DTB
-@ <= never returns
-@ Note: this boot code needs to be within the first (1MB - 
ZIMAGE_KERNEL_OFFSET) of _start.
-reset:
-       @ Problem: the C code wants to be at a known address (_start), but Xen 
might
-       @ load us anywhere. We initialise the MMU (mapping virtual to physical 
@ addresses)
-       @ so everything ends up where the code expects it to be.
-       @
-       @ We calculate the offet between where the linker thought _start would 
be and where
-       @ it actually is and initialise the page tables to have that offset for 
every page.
-       @
-       @ When we turn on the MMU, we're still executing at the old address. We 
don't want
-       @ the code to disappear from under us. So we have to do the mapping in 
stages:
-       @
-       @ 1. set up a mapping to our current page from both its current and 
desired addresses
-       @ 2. enable the MMU
-       @ 3. jump to the new address
-       @ 4. remap all the other pages with the calculated offset
-
-       adr     r1, _start              @ r1 = physical address of _start
-       ldr     r3, =_start             @ r3 = (desired) virtual address of 
_start
-       sub     r9, r1, r3              @ r9 = (physical - virtual) offset
-
-       ldr     r7, =_page_dir          @ r7 = (desired) virtual addr of 
translation table
-       add     r1, r7, r9              @ r1 = physical addr of translation 
table
-
-       @ Tell the system where our page table is located.
-       @ This is the 16 KB top-level translation table, in which
-       @ each word maps one 1MB virtual section to a physical section.
-       @ Note: We leave TTBCR as 0, meaning that only TTBR0 is used and
-       @ we use the short-descriptor format (32-bit physical addresses).
-       orr     r0, r1, #0b0001011      @ Sharable, Inner/Outer Write-Back 
Write-Allocate Cacheable
-       mcr     p15, 0, r0, c2, c0, 0   @ set TTBR0
-
-       @ Set access permission for domains.
-       @ Domains are deprecated, but we have to configure them anyway.
-       @ We mark every page as being domain 0 and set domain 0 to "client mode"
-       @ (client mode = use access flags in page table).
-       mov     r0, #1                  @ 1 = client
-       mcr     p15, 0, r0, c3, c0, 0   @ DACR
-
-       @ Template (flags) for a 1 MB page-table entry.
-       @ TEX[2:0] C B = 001 1 1 (outer and inner write-back, write-allocate)
-       ldr     r8, =(0x2 +             /* Section entry */ \
-                     0xc +             /* C B */ \
-                     (3 << 10) +       /* Read/write */ \
-                     (1 << 12) +       /* TEX */ \
-                     (1 << 16) +       /* Sharable */ \
-                     (1<<19))          /* Non-secure */
-       @ r8 = template page table entry
-
-       @ Add an entry for the current physical section, at the old and new
-       @ addresses. It's OK if they're the same.
-       mov     r0, pc, lsr#20
-       mov     r0, r0, lsl#20          @ r0 = physical address of this code's 
section start
-       orr     r3, r0, r8              @ r3 = table entry for this section
-       ldr     r4, =_start             @ r4 = desired virtual address of this 
section
-       str     r3, [r1, r4, lsr#18]    @ map desired virtual section to this 
code
-       str     r3, [r1, r0, lsr#18]    @ map current section to this code too
-
-       @ Invalidate TLB
-       dsb                             @ Caching is off, but must still 
prevent reordering
-       mcr     p15, 0, r1, c8, c7, 0   @ TLBIALL
-
-       @ Enable MMU / SCTLR
-       mrc     p15, 0, r1, c1, c0, 0   @ SCTLR
-       orr     r1, r1, #3 << 11        @ enable icache, branch prediction
-       orr     r1, r1, #4 + 1          @ enable dcache, MMU
-       mcr     p15, 0, r1, c1, c0, 0   @ SCTLR
-       isb
-
-       ldr     r1, =stage2             @ Virtual address of stage2
-       bx      r1
-
-@ Called once the MMU is enabled. The boot code and the page table are mapped,
-@ but nothing else is yet.
-@
-@ => r2 -> dtb (physical)
-@    r7 = virtual address of page table
-@    r8 = section entry template (flags)
-@    r9 = desired physical - virtual offset
-@    pc -> somewhere in newly-mapped virtual code section
-stage2:
-       @ Invalidate TLB
-       mcr     p15, 0, r1, c8, c7, 0   @ TLBIALL
-       isb
-
-       @ The new mapping has now taken effect:
-       @ r7 -> page_dir
-
-       @ Fill in the whole top-level translation table (at page_dir).
-       @ Populate the whole pagedir with 1MB section descriptors.
-
-       mov     r1, r7                  @ r1 -> first section entry
-       add     r3, r1, #4*4*1024       @ limit (4 GB address space, 4 byte 
entries)
-       orr     r0, r8, r9              @ r0 = entry mapping section zero to 
start of physical RAM
-1:
-       str     r0, [r1],#4             @ write the section entry
-       add     r0, r0, #1 << 20        @ next physical page (wraps)
-       cmp     r1, r3
-       bne     1b
-
-       @ Invalidate TLB
-       dsb
-       mcr     p15, 0, r1, c8, c7, 0   @ TLBIALL
-       isb
-
-       @ Set VBAR -> exception_vector_table
-       @ SCTLR.V = 0
-       adr     r0, exception_vector_table
-       mcr     p15, 0, r0, c12, c0, 0
-
-       @ Enable hardware floating point:
-       @ 1. Access to CP10 and CP11 must be enabled in the Coprocessor Access
-       @    Control Register (CP15.CACR):
-       mrc     p15, 0, r1, c1, c0, 2           @ CACR
-       orr     r1, r1, #(3 << 20) + (3 << 22)  @ full access for CP10 & CP11
-       mcr     p15, 0, r1, c1, c0, 2
-       @ 2. The EN bit in the FPEXC register must be set:
-       vmrs    r0, FPEXC
-       orr     r0, r0, #1<<30          @ EN (enable)
-       vmsr    FPEXC, r0
-
-       @ Initialise 16 KB stack
-       ldr     sp, =_boot_stack_end
-
-       sub     r0, r2, r9              @ r0 -> device tree (virtual address)
-       mov     r1, r9                  @ r1 = physical_address_offset
-
-       b       arch_init
-
-.pushsection .bss
-@ Note: calling arch_init zeroes out this region.
-.align 12
-.globl shared_info_page
-shared_info_page:
-       .fill (1024), 4, 0x0
-
-.align 3
-.globl irqstack
-.globl irqstack_end
-irqstack:
-       .fill (1024), 4, 0x0
-irqstack_end:
-
-fault_dump:
-       .fill 18, 4, 0x0                @ On fault, we save the registers + 
CPSR + handler address
-
-.popsection
-
-fault:
-       cpsid   aif                     @ Disable interrupts
-
-       ldr     r13, =fault_dump
-       stmia   r13, {r0-r12}           @ Dump the non-banked registers 
directly (well, unless from FIQ mode)
-       str     r14, [r13, #15 << 2]    @ Our r14 is the faulting r15
-       mov     r0, r13
-
-       @ Save the caller's CPSR (our SPSR) too.
-       mrs     r1, SPSR
-       str     r1, [r13, #16 << 2]
-
-       @ Switch to the mode we came from to get r13 and r14.
-       @ If coming from user mode, use System mode instead so we're still
-       @ privileged.
-       and     r1, r1, #0x1f           @ r1 = SPSR mode
-       cmp     r1, #0x10               @ If from User mode
-       moveq   r1, #0x1f               @ Then use System mode instead
-
-       mrs     r3, CPSR                @ r3 = our CPSR
-       bic     r2, r3, #0x1f
-       orr     r2, r2, r1
-       msr     CPSR, r2                @ Change to mode r1
-
-       @ Save old mode's r13, r14
-       str     r13, [r0, #13 << 2]
-       str     r14, [r0, #14 << 2]
-
-       msr     CPSR, r3                @ Back to fault mode
-
-       ldr     r1, [r0, #17 << 2]
-       sub     r1, r1, #12             @ Fix to point at start of handler
-       str     r1, [r0, #17 << 2]
-
-       @ Call C code to format the register dump.
-       @ Clobbers the stack, but we're not going to return anyway.
-       ldr     sp, =_boot_stack_end
-       bl      dump_registers
-       b       do_exit
-
-@ We want to store a unique value to identify this handler, without corrupting
-@ any of the registers. So, we store r15 (which will point just after the 
branch).
-@ Later, we subtract 12 so the user gets pointed at the start of the exception
-@ handler.
-#define FAULT(name)                    \
-.globl fault_##name;                   \
-fault_##name:                          \
-       ldr     r13, =fault_dump;       \
-       str     r15, [r13, #17 << 2];   \
-       b       fault
-
-FAULT(reset)
-FAULT(undefined_instruction)
-FAULT(svc)
-FAULT(prefetch_call)
-FAULT(prefetch_abort)
-FAULT(data_abort)
-
-@ exception base address
-.align 5
-.globl exception_vector_table
-@ Note: remember to call CLREX if returning from an exception:
-@ "The architecture enables the local monitor to treat any exclusive store as
-@  matching a previous LDREX address. For this reason, use of the CLREX
-@  instruction to clear an existing tag is required on context switches."
-@ -- ARM Cortex-A Series Programmerâ??s Guide (Version: 4.0)
-exception_vector_table:
-       b       fault_reset
-       b       fault_undefined_instruction
-       b       fault_svc
-       b       fault_prefetch_call
-       b       fault_prefetch_abort
-       b       fault_data_abort
-       b       irq_handler @ IRQ
-       .word 0xe7f000f0    @ abort on FIQ
-
-@ Call fault_undefined_instruction in "Undefined mode"
-bug:
-       .word   0xe7f000f0      @ und/udf - a "Permanently Undefined" 
instruction
-
-irq_handler:
-       ldr     sp, =irqstack_end
-       push    {r0 - r12, r14}
-
-       ldr     r0, IRQ_handler
-       cmp     r0, #0
-       beq     bug
-       blx     r0              @ call handler
-
-       @ Return from IRQ
-       pop     {r0 - r12, r14}
-       clrex
-       subs    pc, lr, #4
-
-.globl IRQ_handler
-IRQ_handler:
-       .long   0x0
-
-
-.globl __arch_switch_threads
-@ => r0 = &prev->sp
-@    r1 = &next->sp
-@ <= returns to next thread's saved return address
-__arch_switch_threads:
-       push    {r4-r11}        @ Store callee-saved registers to old thread's 
stack
-       stmia   r0, {sp, lr}    @ Store current sp and ip to prev's struct 
thread
-
-       ldmia   r1, {sp, lr}    @ Load new sp, ip from next's struct thread
-       pop     {r4-r11}        @ Load callee-saved registers from new thread's 
stack
-
-       bx      lr
-
-@ This is called if you try to divide by zero. For now, we make a supervisor 
call,
-@ which will make us halt.
-.globl raise
-raise:
-       svc     0
-
-.globl arm_start_thread
-arm_start_thread:
-       pop     {r0, r1}
-       @ r0 = user data
-       @ r1 -> thread's main function
-       ldr     lr, =exit_thread
-       bx      r1
diff --git a/extras/mini-os-intree/arch/arm/events.c 
b/extras/mini-os-intree/arch/arm/events.c
deleted file mode 100644
index 441010d..0000000
--- a/extras/mini-os-intree/arch/arm/events.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <mini-os/os.h>
-#include <mini-os/events.h>
-#include <mini-os/hypervisor.h>
-#include <mini-os/console.h>
-
-static void virq_debug(evtchn_port_t port, struct pt_regs *regs, void *params)
-{
-    printk("Received a virq_debug event\n");
-}
-
-evtchn_port_t debug_port = -1;
-void arch_init_events(void)
-{
-    debug_port = bind_virq(VIRQ_DEBUG, (evtchn_handler_t)virq_debug, 0);
-    if(debug_port == -1)
-        BUG();
-    unmask_evtchn(debug_port);
-}
-
-void arch_unbind_ports(void)
-{
-    if(debug_port != -1)
-    {
-        mask_evtchn(debug_port);
-        unbind_evtchn(debug_port);
-    }
-}
-
-void arch_fini_events(void)
-{
-}
diff --git a/extras/mini-os-intree/arch/arm/hypercalls32.S 
b/extras/mini-os-intree/arch/arm/hypercalls32.S
deleted file mode 100644
index af8e175..0000000
--- a/extras/mini-os-intree/arch/arm/hypercalls32.S
+++ /dev/null
@@ -1,64 +0,0 @@
-/******************************************************************************
- * hypercall.S
- *
- * Xen hypercall wrappers
- *
- * Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>, Citrix, 2012
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation; or, when distributed
- * separately from the Linux kernel or incorporated into other
- * software packages, subject to the following license:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this source file (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy, modify,
- * merge, publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-#include <xen/xen.h>
-
-#define __HVC(imm16) .long ((0xE1400070 | (((imm16) & 0xFFF0) << 4) | ((imm16) 
& 0x000F)) & 0xFFFFFFFF)
-
-#define XEN_IMM 0xEA1
-
-#define HYPERCALL_SIMPLE(hypercall)            \
-.globl HYPERVISOR_##hypercall;                 \
-.align 4,0x90;                                 \
-HYPERVISOR_##hypercall:                                \
-        mov r12, #__HYPERVISOR_##hypercall;    \
-        __HVC(XEN_IMM);                                \
-        mov pc, lr;
-
-#define _hypercall0 HYPERCALL_SIMPLE
-#define _hypercall1 HYPERCALL_SIMPLE
-#define _hypercall2 HYPERCALL_SIMPLE
-#define _hypercall3 HYPERCALL_SIMPLE
-#define _hypercall4 HYPERCALL_SIMPLE
-
-_hypercall2(sched_op);
-_hypercall2(memory_op);
-_hypercall2(event_channel_op);
-_hypercall2(xen_version);
-_hypercall3(console_io);
-_hypercall1(physdev_op);
-_hypercall3(grant_table_op);
-_hypercall3(vcpu_op);
-_hypercall1(sysctl);
-_hypercall1(domctl);
-_hypercall2(hvm_op);
-_hypercall1(xsm_op);
diff --git a/extras/mini-os-intree/arch/arm/minios-arm32.lds 
b/extras/mini-os-intree/arch/arm/minios-arm32.lds
deleted file mode 100755
index 9627162..0000000
--- a/extras/mini-os-intree/arch/arm/minios-arm32.lds
+++ /dev/null
@@ -1,83 +0,0 @@
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
-  /* Note: we currently assume that Xen will load the kernel image
-   * at start-of-RAM + 0x8000. We use this initial 32 KB for the stack
-   * and translation tables.
-   */
-  _boot_stack   = 0x400000;    /* 16 KB boot stack */
-  _boot_stack_end = 0x404000;
-  _page_dir      = 0x404000;   /* 16 KB translation table */
-  .             = 0x408000;
-  _text = .;                   /* Text and read-only data */
-  .text : {
-       *(.text)
-       *(.gnu.warning)
-       } = 0x9090
-
-  _etext = .;                  /* End of text section */
-
-  .rodata : { *(.rodata) *(.rodata.*) }
-  . = ALIGN(4096);
-  _erodata = .;
-
-  /* newlib initialization functions */
-  . = ALIGN(32 / 8);
-  PROVIDE (__preinit_array_start = .);
-  .preinit_array     : { *(.preinit_array) }
-  PROVIDE (__preinit_array_end = .);
-  PROVIDE (__init_array_start = .);
-  .init_array     : { *(.init_array) }
-  PROVIDE (__init_array_end = .);
-  PROVIDE (__fini_array_start = .);
-  .fini_array     : { *(.fini_array) }
-  PROVIDE (__fini_array_end = .);
-
-  .ctors : {
-        __CTOR_LIST__ = .;
-        *(.ctors)
-       CONSTRUCTORS
-        LONG(0)
-        __CTOR_END__ = .;
-        }
-
-  .dtors : {
-        __DTOR_LIST__ = .;
-        *(.dtors)
-        LONG(0)
-        __DTOR_END__ = .;
-        }
-
-  .data : {                    /* Data */
-       *(.data)
-       }
-
-  /* Note: linker will insert any extra sections here, just before .bss */
-
-  .bss : {
-       _edata = .;                     /* End of data included in image */
-       /* Nothing after here is included in the zImage's size */
-
-       __bss_start = .;
-       *(.bss)
-        *(.app.bss)
-       }
-  _end = . ;
-
-  /* Sections to be discarded */
-  /DISCARD/ : {
-       *(.text.exit)
-       *(.data.exit)
-       *(.exitcall.exit)
-       }
-
-  /* Stabs debugging sections.  */
-  .stab 0 : { *(.stab) }
-  .stabstr 0 : { *(.stabstr) }
-  .stab.excl 0 : { *(.stab.excl) }
-  .stab.exclstr 0 : { *(.stab.exclstr) }
-  .stab.index 0 : { *(.stab.index) }
-  .stab.indexstr 0 : { *(.stab.indexstr) }
-  .comment 0 : { *(.comment) }
-}
diff --git a/extras/mini-os-intree/arch/arm/mm.c 
b/extras/mini-os-intree/arch/arm/mm.c
deleted file mode 100644
index efecc51..0000000
--- a/extras/mini-os-intree/arch/arm/mm.c
+++ /dev/null
@@ -1,139 +0,0 @@
-#include <mini-os/console.h>
-#include <xen/memory.h>
-#include <arch_mm.h>
-#include <mini-os/hypervisor.h>
-#include <libfdt.h>
-#include <lib.h>
-
-uint32_t physical_address_offset;
-
-unsigned long allocate_ondemand(unsigned long n, unsigned long alignment)
-{
-    // FIXME
-    BUG();
-}
-
-void arch_init_mm(unsigned long *start_pfn_p, unsigned long *max_pfn_p)
-{
-    int memory;
-    int prop_len = 0;
-    const uint64_t *regs;
-
-    printk("    _text: %p(VA)\n", &_text);
-    printk("    _etext: %p(VA)\n", &_etext);
-    printk("    _erodata: %p(VA)\n", &_erodata);
-    printk("    _edata: %p(VA)\n", &_edata);
-    printk("    stack start: %p(VA)\n", _boot_stack);
-    printk("    _end: %p(VA)\n", &_end);
-
-    if (fdt_num_mem_rsv(device_tree) != 0)
-        printk("WARNING: reserved memory not supported!\n");
-
-    memory = fdt_node_offset_by_prop_value(device_tree, -1, "device_type", 
"memory", sizeof("memory"));
-    if (memory < 0) {
-        printk("No memory found in FDT!\n");
-        BUG();
-    }
-
-    /* Xen will always provide us at least one bank of memory.
-     * Mini-OS will use the first bank for the time-being. */
-    regs = fdt_getprop(device_tree, memory, "reg", &prop_len);
-
-    /* The property must contain at least the start address
-     * and size, each of which is 8-bytes. */
-    if (regs == NULL || prop_len < 16) {
-        printk("Bad 'reg' property: %p %d\n", regs, prop_len);
-        BUG();
-    }
-
-    unsigned int end = (unsigned int) &_end;
-    paddr_t mem_base = fdt64_to_cpu(regs[0]);
-    uint64_t mem_size = fdt64_to_cpu(regs[1]);
-    printk("Found memory at 0x%llx (len 0x%llx)\n",
-            (unsigned long long) mem_base, (unsigned long long) mem_size);
-
-    BUG_ON(to_virt(mem_base) > (void *) &_text);          /* Our image isn't 
in our RAM! */
-    *start_pfn_p = PFN_UP(to_phys(end));
-    uint64_t heap_len = mem_size - (PFN_PHYS(*start_pfn_p) - mem_base);
-    *max_pfn_p = *start_pfn_p + PFN_DOWN(heap_len);
-
-    printk("Using pages %lu to %lu as free space for heap.\n", *start_pfn_p, 
*max_pfn_p);
-
-    /* The device tree is probably in memory that we're about to hand over to 
the page
-     * allocator, so move it to the end and reserve that space.
-     */
-    uint32_t fdt_size = fdt_totalsize(device_tree);
-    void *new_device_tree = to_virt(((*max_pfn_p << PAGE_SHIFT) - fdt_size) & 
PAGE_MASK);
-    if (new_device_tree != device_tree) {
-        memmove(new_device_tree, device_tree, fdt_size);
-    }
-    device_tree = new_device_tree;
-    *max_pfn_p = to_phys(new_device_tree) >> PAGE_SHIFT;
-}
-
-void arch_init_p2m(unsigned long max_pfn)
-{
-}
-
-void arch_init_demand_mapping_area(unsigned long cur_pfn)
-{
-}
-
-/* Get Xen's suggested physical page assignments for the grant table. */
-static paddr_t get_gnttab_base(void)
-{
-    int hypervisor;
-    int len = 0;
-    const uint64_t *regs;
-    paddr_t gnttab_base;
-
-    hypervisor = fdt_node_offset_by_compatible(device_tree, -1, "xen,xen");
-    BUG_ON(hypervisor < 0);
-
-    regs = fdt_getprop(device_tree, hypervisor, "reg", &len);
-    /* The property contains the address and size, 8-bytes each. */
-    if (regs == NULL || len < 16) {
-        printk("Bad 'reg' property: %p %d\n", regs, len);
-        BUG();
-    }
-
-    gnttab_base = fdt64_to_cpu(regs[0]);
-
-    printk("FDT suggests grant table base %llx\n", (unsigned long long) 
gnttab_base);
-
-    return gnttab_base;
-}
-
-grant_entry_t *arch_init_gnttab(int nr_grant_frames)
-{
-    struct xen_add_to_physmap xatp;
-    struct gnttab_setup_table setup;
-    xen_pfn_t frames[nr_grant_frames];
-    paddr_t gnttab_table;
-    int i, rc;
-
-    gnttab_table = get_gnttab_base();
-
-    for (i = 0; i < nr_grant_frames; i++)
-    {
-        xatp.domid = DOMID_SELF;
-        xatp.size = 0;      /* Seems to be unused */
-        xatp.space = XENMAPSPACE_grant_table;
-        xatp.idx = i;
-        xatp.gpfn = (gnttab_table >> PAGE_SHIFT) + i;
-        rc = HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp);
-        BUG_ON(rc != 0);
-    }
-
-    setup.dom = DOMID_SELF;
-    setup.nr_frames = nr_grant_frames;
-    set_xen_guest_handle(setup.frame_list, frames);
-    HYPERVISOR_grant_table_op(GNTTABOP_setup_table, &setup, 1);
-    if (setup.status != 0)
-    {
-        printk("GNTTABOP_setup_table failed; status = %d\n", setup.status);
-        BUG();
-    }
-
-    return to_virt(gnttab_table);
-}
diff --git a/extras/mini-os-intree/arch/arm/panic.c 
b/extras/mini-os-intree/arch/arm/panic.c
deleted file mode 100644
index 0ac49ad..0000000
--- a/extras/mini-os-intree/arch/arm/panic.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/******************************************************************************
- * panic.c
- *
- * Displays a register dump and stack trace for debugging.
- *
- * Copyright (c) 2014, Thomas Leonard
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#include <mini-os/os.h>
-#include <mini-os/console.h>
-#include <arch_mm.h>
-
-extern int irqstack[];
-extern int irqstack_end[];
-
-typedef void handler(void);
-
-extern handler fault_reset;
-extern handler fault_undefined_instruction;
-extern handler fault_svc;
-extern handler fault_prefetch_call;
-extern handler fault_prefetch_abort;
-extern handler fault_data_abort;
-
-void dump_registers(int *saved_registers) {
-    static int in_dump = 0;
-    int *sp, *stack_top, *x;
-    char *fault_name;
-    void *fault_handler;
-    int i;
-
-    if (in_dump)
-    {
-        printk("Crash while in dump_registers! Not generating a second 
report.\n");
-        return;
-    }
-
-    in_dump = 1;
-
-    fault_handler = (handler *) saved_registers[17];
-    if (fault_handler == fault_reset)
-        fault_name = "reset";
-    else if (fault_handler == fault_undefined_instruction)
-        fault_name = "undefined_instruction";
-    else if (fault_handler == fault_svc)
-        fault_name = "svc";
-    else if (fault_handler == fault_prefetch_call)
-        fault_name = "prefetch_call";
-    else if (fault_handler == fault_prefetch_abort)
-        fault_name = "prefetch_abort";
-    else if (fault_handler == fault_data_abort)
-        fault_name = "data_abort";
-    else
-        fault_name = "unknown fault type!";
-
-    printk("Fault handler at %p called (%s)\n", fault_handler, fault_name);
-
-    for (i = 0; i < 16; i++) {
-        printk("r%d = %x\n", i, saved_registers[i]);
-    }
-    printk("CPSR = %x\n", saved_registers[16]);
-
-    printk("Stack dump (innermost last)\n");
-    sp = (int *) saved_registers[13];
-
-    if (sp >= _boot_stack && sp <= _boot_stack_end)
-        stack_top = _boot_stack_end;                    /* The boot stack */
-    else if (sp >= irqstack && sp <= irqstack_end)
-        stack_top = irqstack_end;                       /* The IRQ stack */
-    else
-        stack_top = (int *) ((((unsigned long) sp) | (__STACK_SIZE-1)) + 1);   
     /* A normal thread stack */
-
-    for (x = stack_top - 1; x >= sp; x--)
-    {
-        printk("  [%8p] %8x\n", x, *x);
-    }
-    printk("End of stack\n");
-
-    in_dump = 0;
-}
diff --git a/extras/mini-os-intree/arch/arm/sched.c 
b/extras/mini-os-intree/arch/arm/sched.c
deleted file mode 100644
index 8091566..0000000
--- a/extras/mini-os-intree/arch/arm/sched.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#include <mini-os/sched.h>
-#include <mini-os/xmalloc.h>
-#include <mini-os/console.h>
-
-void arm_start_thread(void);
-
-/* The AAPCS requires the callee (e.g. __arch_switch_threads) to preserve 
r4-r11. */
-#define CALLEE_SAVED_REGISTERS 8
-
-/* Architecture specific setup of thread creation */
-struct thread* arch_create_thread(char *name, void (*function)(void *),
-                                  void *data)
-{
-    struct thread *thread;
-
-    thread = xmalloc(struct thread);
-    /* We can't use lazy allocation here since the trap handler runs on the 
stack */
-    thread->stack = (char *)alloc_pages(STACK_SIZE_PAGE_ORDER);
-    thread->name = name;
-    printk("Thread \"%s\": pointer: 0x%p, stack: 0x%p\n", name, thread,
-            thread->stack);
-
-    /* Save pointer to the thread on the stack, used by current macro */
-    *((unsigned long *)thread->stack) = (unsigned long)thread;
-
-    /* Push the details to pass to arm_start_thread onto the stack. */
-    int *sp = (int *) (thread->stack + STACK_SIZE);
-    *(--sp) = (int) function;
-    *(--sp) = (int) data;
-
-    /* We leave room for the 8 callee-saved registers which we will
-     * try to restore on thread switch, even though they're not needed
-     * for the initial switch. */
-    thread->sp = (unsigned long) sp - 4 * CALLEE_SAVED_REGISTERS;
-
-    thread->ip = (unsigned long) arm_start_thread;
-
-    return thread;
-}
-
-void run_idle_thread(void)
-{
-    __asm__ __volatile__ ("mov sp, %0; bx %1"::
-            "r"(idle_thread->sp + 4 * CALLEE_SAVED_REGISTERS),
-            "r"(idle_thread->ip));
-    /* Never arrive here! */
-}
diff --git a/extras/mini-os-intree/arch/arm/setup.c 
b/extras/mini-os-intree/arch/arm/setup.c
deleted file mode 100644
index 06afe46..0000000
--- a/extras/mini-os-intree/arch/arm/setup.c
+++ /dev/null
@@ -1,119 +0,0 @@
-#include <mini-os/os.h>
-#include <mini-os/kernel.h>
-#include <mini-os/gic.h>
-#include <mini-os/console.h>
-#include <xen/xen.h>
-#include <xen/memory.h>
-#include <xen/hvm/params.h>
-#include <arch_mm.h>
-#include <libfdt.h>
-
-/*
- * This structure contains start-of-day info, such as pagetable base pointer,
- * address of the shared_info structure, and things like that.
- * On x86, the hypervisor passes it to us. On ARM, we fill it in ourselves.
- */
-union start_info_union start_info_union;
-
-/*
- * Shared page for communicating with the hypervisor.
- * Events flags go here, for example.
- */
-shared_info_t *HYPERVISOR_shared_info;
-
-extern char shared_info_page[PAGE_SIZE];
-
-void *device_tree;
-
-static int hvm_get_parameter(int idx, uint64_t *value)
-{
-    struct xen_hvm_param xhv;
-    int ret;
-
-    xhv.domid = DOMID_SELF;
-    xhv.index = idx;
-    ret = HYPERVISOR_hvm_op(HVMOP_get_param, &xhv);
-    if (ret < 0) {
-        BUG();
-    }
-    *value = xhv.value;
-    return ret;
-}
-
-static void get_console(void)
-{
-    uint64_t v = -1;
-
-    hvm_get_parameter(HVM_PARAM_CONSOLE_EVTCHN, &v);
-    start_info.console.domU.evtchn = v;
-
-    hvm_get_parameter(HVM_PARAM_CONSOLE_PFN, &v);
-    start_info.console.domU.mfn = v;
-
-    printk("Console is on port %d\n", start_info.console.domU.evtchn);
-    printk("Console ring is at mfn %lx\n", (unsigned long) 
start_info.console.domU.mfn);
-}
-
-void get_xenbus(void)
-{
-    uint64_t value;
-
-    if (hvm_get_parameter(HVM_PARAM_STORE_EVTCHN, &value))
-        BUG();
-
-    start_info.store_evtchn = (int)value;
-
-    if(hvm_get_parameter(HVM_PARAM_STORE_PFN, &value))
-        BUG();
-    start_info.store_mfn = (unsigned long)value;
-}
-
-/*
- * INITIAL C ENTRY POINT.
- */
-void arch_init(void *dtb_pointer, uint32_t physical_offset)
-{
-    struct xen_add_to_physmap xatp;
-    int r;
-
-    memset(&__bss_start, 0, &_end - &__bss_start);
-
-    physical_address_offset = physical_offset;
-
-    xprintk("Virtual -> physical offset = %x\n", physical_address_offset);
-
-    xprintk("Checking DTB at %p...\n", dtb_pointer);
-
-    if ((r = fdt_check_header(dtb_pointer))) {
-        xprintk("Invalid DTB from Xen: %s\n", fdt_strerror(r));
-        BUG();
-    }
-    device_tree = dtb_pointer;
-
-    /* Map shared_info page */
-    xatp.domid = DOMID_SELF;
-    xatp.idx = 0;
-    xatp.space = XENMAPSPACE_shared_info;
-    xatp.gpfn = virt_to_pfn(shared_info_page);
-    if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp) != 0)
-        BUG();
-    HYPERVISOR_shared_info = (struct shared_info *)shared_info_page;
-
-    /* Fill in start_info */
-    get_console();
-    get_xenbus();
-
-    gic_init();
-
-    start_kernel();
-}
-
-void
-arch_fini(void)
-{
-}
-
-void
-arch_do_exit(void)
-{
-}
diff --git a/extras/mini-os-intree/arch/arm/time.c 
b/extras/mini-os-intree/arch/arm/time.c
deleted file mode 100644
index a088981..0000000
--- a/extras/mini-os-intree/arch/arm/time.c
+++ /dev/null
@@ -1,136 +0,0 @@
-#include <mini-os/os.h>
-#include <mini-os/hypervisor.h>
-#include <mini-os/events.h>
-#include <mini-os/traps.h>
-#include <mini-os/types.h>
-#include <mini-os/time.h>
-#include <mini-os/lib.h>
-
-//#define VTIMER_DEBUG
-#ifdef VTIMER_DEBUG
-#define DEBUG(_f, _a...) \
-    printk("MINI_OS(file=vtimer.c, line=%d) " _f , __LINE__, ## _a)
-#else
-#define DEBUG(_f, _a...)    ((void)0)
-#endif
-
-/************************************************************************
- * Time functions
- *************************************************************************/
-
-static uint64_t cntvct_at_init;
-static uint32_t counter_freq;
-
-/* Compute with 96 bit intermediate result: (a*b)/c */
-uint64_t muldiv64(uint64_t a, uint32_t b, uint32_t c)
-{
-    union {
-        uint64_t ll;
-        struct {
-            uint32_t low, high;
-        } l;
-    } u, res;
-    uint64_t rl, rh;
-
-    u.ll = a;
-    rl = (uint64_t)u.l.low * (uint64_t)b;
-    rh = (uint64_t)u.l.high * (uint64_t)b;
-    rh += (rl >> 32);
-    res.l.high = rh / c;
-    res.l.low = (((rh % c) << 32) + (rl & 0xffffffff)) / c;
-    return res.ll;
-}
-
-static inline s_time_t ticks_to_ns(uint64_t ticks)
-{
-    return muldiv64(ticks, SECONDS(1), counter_freq);
-}
-
-static inline uint64_t ns_to_ticks(s_time_t ns)
-{
-    return muldiv64(ns, counter_freq, SECONDS(1));
-}
-
-/* Wall-clock time is not currently available on ARM, so this is always zero 
for now:
- * http://wiki.xenproject.org/wiki/Xen_ARM_TODO#Expose_Wallclock_time_to_guests
- */
-static struct timespec shadow_ts;
-
-static inline uint64_t read_virtual_count(void)
-{
-    uint32_t c_lo, c_hi;
-    __asm__ __volatile__("mrrc p15, 1, %0, %1, c14":"=r"(c_lo), "=r"(c_hi));
-    return (((uint64_t) c_hi) << 32) + c_lo;
-}
-
-/* monotonic_clock(): returns # of nanoseconds passed since time_init()
- *        Note: This function is required to return accurate
- *        time even in the absence of multiple timer ticks.
- */
-uint64_t monotonic_clock(void)
-{
-    return ticks_to_ns(read_virtual_count() - cntvct_at_init);
-}
-
-int gettimeofday(struct timeval *tv, void *tz)
-{
-    uint64_t nsec = monotonic_clock();
-    nsec += shadow_ts.tv_nsec;
-
-    tv->tv_sec = shadow_ts.tv_sec;
-    tv->tv_sec += NSEC_TO_SEC(nsec);
-    tv->tv_usec = NSEC_TO_USEC(nsec % 1000000000UL);
-
-    return 0;
-}
-
-/* Set the timer and mask. */
-void write_timer_ctl(uint32_t value) {
-    __asm__ __volatile__(
-            "mcr p15, 0, %0, c14, c3, 1\n"
-            "isb"::"r"(value));
-}
-
-void set_vtimer_compare(uint64_t value) {
-    DEBUG("New CompareValue : %llx\n", value);
-
-    __asm__ __volatile__("mcrr p15, 3, %0, %H0, c14"
-            ::"r"(value));
-
-    /* Enable timer and unmask the output signal */
-    write_timer_ctl(1);
-}
-
-void unset_vtimer_compare(void) {
-    /* Disable timer and mask the output signal */
-    write_timer_ctl(2);
-}
-
-void block_domain(s_time_t until)
-{
-    uint64_t until_count = ns_to_ticks(until) + cntvct_at_init;
-    ASSERT(irqs_disabled());
-    if (read_virtual_count() < until_count)
-    {
-        set_vtimer_compare(until_count);
-        __asm__ __volatile__("wfi");
-        unset_vtimer_compare();
-
-        /* Give the IRQ handler a chance to handle whatever woke us up. */
-        local_irq_enable();
-        local_irq_disable();
-    }
-}
-
-void init_time(void)
-{
-    printk("Initialising timer interface\n");
-
-    __asm__ __volatile__("mrc p15, 0, %0, c14, c0, 0":"=r"(counter_freq));
-    cntvct_at_init = read_virtual_count();
-    printk("Virtual Count register is %llx, freq = %d Hz\n", cntvct_at_init, 
counter_freq);
-}
-
-void fini_time(void)
-{
-}
diff --git a/extras/mini-os-intree/arch/x86/Makefile 
b/extras/mini-os-intree/arch/x86/Makefile
deleted file mode 100644
index 9f04a93..0000000
--- a/extras/mini-os-intree/arch/x86/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# x86 architecture specific makefiles.
-# It's is used for x86_32, x86_32y and x86_64
-#
-
-TOPLEVEL_DIR = $(CURDIR)/../..
-include ../../Config.mk
-
-# include arch.mk has to be before mini-os.mk!
-
-include arch.mk
-include ../../minios.mk
-
-# Sources here are all *.c *.S without $(MINIOS_TARGET_ARCH).S
-# This is handled in $(HEAD_ARCH_OBJ)
-ARCH_SRCS := $(wildcard *.c)
-
-# The objects built from the sources.
-ARCH_OBJS := $(patsubst %.c,$(OBJ_DIR)/%.o,$(ARCH_SRCS))
-
-all: $(OBJ_DIR)/$(ARCH_LIB)
-
-# $(HEAD_ARCH_OBJ) is only build here, needed on linking
-# in ../../Makefile.
-$(OBJ_DIR)/$(ARCH_LIB): $(ARCH_OBJS) $(OBJ_DIR)/$(HEAD_ARCH_OBJ)
-       $(AR) rv $(OBJ_DIR)/$(ARCH_LIB) $(ARCH_OBJS)
-
-clean:
-       rm -f $(OBJ_DIR)/$(ARCH_LIB) $(ARCH_OBJS) $(OBJ_DIR)/$(HEAD_ARCH_OBJ)
-
diff --git a/extras/mini-os-intree/arch/x86/arch.mk 
b/extras/mini-os-intree/arch/x86/arch.mk
deleted file mode 100644
index 81e8118..0000000
--- a/extras/mini-os-intree/arch/x86/arch.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Architecture special makerules for x86 family
-# (including x86_32, x86_32y and x86_64).
-#
-
-ifeq ($(MINIOS_TARGET_ARCH),x86_32)
-ARCH_CFLAGS  := -m32 -march=i686
-ARCH_LDFLAGS := -m elf_i386
-ARCH_ASFLAGS := -m32
-EXTRA_INC += $(TARGET_ARCH_FAM)/$(MINIOS_TARGET_ARCH)
-EXTRA_SRC += arch/$(EXTRA_INC)
-endif
-
-ifeq ($(MINIOS_TARGET_ARCH),x86_64)
-ARCH_CFLAGS := -m64 -mno-red-zone -fno-reorder-blocks
-ARCH_CFLAGS += -fno-asynchronous-unwind-tables
-ARCH_ASFLAGS := -m64
-ARCH_LDFLAGS := -m elf_x86_64
-EXTRA_INC += $(TARGET_ARCH_FAM)/$(MINIOS_TARGET_ARCH)
-EXTRA_SRC += arch/$(EXTRA_INC)
-endif
-
diff --git a/extras/mini-os-intree/arch/x86/events.c 
b/extras/mini-os-intree/arch/x86/events.c
deleted file mode 100644
index 5198cf3..0000000
--- a/extras/mini-os-intree/arch/x86/events.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <mini-os/os.h>
-#include <mini-os/mm.h>
-#include <mini-os/events.h>
-
-#if defined(__x86_64__)
-char irqstack[2 * STACK_SIZE];
-
-static struct pda
-{
-    int irqcount;       /* offset 0 (used in x86_64.S) */
-    char *irqstackptr;  /*        8 */
-} cpu0_pda;
-#endif
-
-void arch_init_events(void)
-{
-#if defined(__x86_64__)
-    asm volatile("movl %0,%%fs ; movl %0,%%gs" :: "r" (0));
-    wrmsrl(0xc0000101, &cpu0_pda); /* 0xc0000101 is MSR_GS_BASE */
-    cpu0_pda.irqcount = -1;
-    cpu0_pda.irqstackptr = (void*) (((unsigned long)irqstack + 2 * STACK_SIZE)
-                                    & ~(STACK_SIZE - 1));
-#endif
-}
-
-void arch_unbind_ports(void)
-{
-}
-
-void arch_fini_events(void)
-{
-#if defined(__x86_64__)
-    wrmsrl(0xc0000101, NULL); /* 0xc0000101 is MSR_GS_BASE */
-#endif
-}
diff --git a/extras/mini-os-intree/arch/x86/ioremap.c 
b/extras/mini-os-intree/arch/x86/ioremap.c
deleted file mode 100644
index 4384b1c..0000000
--- a/extras/mini-os-intree/arch/x86/ioremap.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2009,  Netronome Systems, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-
-#include <mini-os/types.h>
-#include <mini-os/lib.h>
-#include <mini-os/xmalloc.h>
-#include <mini-os/mm.h>
-#include <mini-os/ioremap.h>
-
-/* Map a physical address range into virtual address space with provided
- * flags. Return a virtual address range it is mapped to. */
-static void *__do_ioremap(unsigned long phys_addr, unsigned long size,
-                          unsigned long prot)
-{
-    unsigned long va;
-    unsigned long mfns, mfn;
-    unsigned long num_pages, offset;
-
-    /* allow non page aligned addresses but for mapping we need to align them 
*/
-    offset = (phys_addr & ~PAGE_MASK);
-    num_pages = (offset + size + PAGE_SIZE - 1) / PAGE_SIZE;
-    phys_addr &= PAGE_MASK;
-    mfns = mfn = phys_addr >> PAGE_SHIFT;
-
-    va = (unsigned long)map_frames_ex(&mfns, num_pages, 0, 1, 1,
-                                      DOMID_IO, NULL, prot);
-    return (void *)(va + offset);
-}
-
-void *ioremap(unsigned long phys_addr, unsigned long size)
-{
-    return __do_ioremap(phys_addr, size, IO_PROT);
-}
-
-void *ioremap_nocache(unsigned long phys_addr, unsigned long size)
-{
-    return __do_ioremap(phys_addr, size, IO_PROT_NOCACHE);
-}
-
-/* Un-map the io-remapped region. Currently no list of existing mappings is
- * maintained, so the caller has to supply the size */
-void iounmap(void *virt_addr, unsigned long size)
-{
-    unsigned long num_pages;
-    unsigned long va = (unsigned long)virt_addr;
-
-    /* work out number of frames to unmap */
-    num_pages = ((va & ~PAGE_MASK) + size + PAGE_SIZE - 1) / PAGE_SIZE;
-
-    unmap_frames(va & PAGE_MASK, num_pages);
-}
-
-
-
-/* -*-  Mode:C; c-basic-offset:4; tab-width:4 indent-tabs-mode:nil -*- */
diff --git a/extras/mini-os-intree/arch/x86/iorw.c 
b/extras/mini-os-intree/arch/x86/iorw.c
deleted file mode 100644
index 3080769..0000000
--- a/extras/mini-os-intree/arch/x86/iorw.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <mini-os/iorw.h>
-
-void iowrite8(volatile void* addr, uint8_t val)
-{
-   *((volatile uint8_t*)addr) = val;
-}
-void iowrite16(volatile void* addr, uint16_t val)
-{
-   *((volatile uint16_t*)addr) = val;
-}
-void iowrite32(volatile void* addr, uint32_t val)
-{
-   *((volatile uint32_t*)addr) = val;
-}
-void iowrite64(volatile void* addr, uint64_t val)
-{
-   *((volatile uint64_t*)addr) = val;
-}
-
-uint8_t ioread8(volatile void* addr)
-{
-   return *((volatile uint8_t*) addr);
-}
-uint16_t ioread16(volatile void* addr)
-{
-   return *((volatile uint16_t*) addr);
-}
-uint32_t ioread32(volatile void* addr)
-{
-   return *((volatile uint32_t*) addr);
-}
-uint64_t ioread64(volatile void* addr)
-{
-   return *((volatile uint64_t*) addr);
-}
diff --git a/extras/mini-os-intree/arch/x86/minios-x86_32.lds 
b/extras/mini-os-intree/arch/x86/minios-x86_32.lds
deleted file mode 100644
index f5cabb6..0000000
--- a/extras/mini-os-intree/arch/x86/minios-x86_32.lds
+++ /dev/null
@@ -1,74 +0,0 @@
-OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
-OUTPUT_ARCH(i386)
-ENTRY(_start)
-SECTIONS
-{
-  . = 0x0;
-  _text = .;                   /* Text and read-only data */
-  .text : {
-       *(.text)
-       *(.gnu.warning)
-       } = 0x9090
-
-  _etext = .;                  /* End of text section */
-
-  .rodata : { *(.rodata) *(.rodata.*) }
-  . = ALIGN(4096);
-  _erodata = .;
-
-  /* newlib initialization functions */
-  . = ALIGN(32 / 8);
-  PROVIDE (__preinit_array_start = .);
-  .preinit_array     : { *(.preinit_array) }
-  PROVIDE (__preinit_array_end = .);
-  PROVIDE (__init_array_start = .);
-  .init_array     : { *(.init_array) }
-  PROVIDE (__init_array_end = .);
-  PROVIDE (__fini_array_start = .);
-  .fini_array     : { *(.fini_array) }
-  PROVIDE (__fini_array_end = .);
-
-  .ctors : {
-        __CTOR_LIST__ = .;
-        *(.ctors)
-       CONSTRUCTORS
-        LONG(0)
-        __CTOR_END__ = .;
-        }
-
-  .dtors : {
-        __DTOR_LIST__ = .;
-        *(.dtors)
-        LONG(0)
-        __DTOR_END__ = .;
-        }
-
-  .data : {                    /* Data */
-       *(.data)
-       }
-
-  _edata = .;                  /* End of data section */
-
-  __bss_start = .;             /* BSS */
-  .bss : {
-       *(.bss)
-        *(.app.bss)
-       }
-  _end = . ;
-
-  /* Sections to be discarded */
-  /DISCARD/ : {
-       *(.text.exit)
-       *(.data.exit)
-       *(.exitcall.exit)
-       }
-
-  /* Stabs debugging sections.  */
-  .stab 0 : { *(.stab) }
-  .stabstr 0 : { *(.stabstr) }
-  .stab.excl 0 : { *(.stab.excl) }
-  .stab.exclstr 0 : { *(.stab.exclstr) }
-  .stab.index 0 : { *(.stab.index) }
-  .stab.indexstr 0 : { *(.stab.indexstr) }
-  .comment 0 : { *(.comment) }
-}
diff --git a/extras/mini-os-intree/arch/x86/minios-x86_64.lds 
b/extras/mini-os-intree/arch/x86/minios-x86_64.lds
deleted file mode 100644
index 3da0a9f..0000000
--- a/extras/mini-os-intree/arch/x86/minios-x86_64.lds
+++ /dev/null
@@ -1,74 +0,0 @@
-OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
-OUTPUT_ARCH(i386:x86-64)
-ENTRY(_start)
-SECTIONS
-{
-  . = 0x0;
-  _text = .;                   /* Text and read-only data */
-  .text : {
-       *(.text)
-       *(.gnu.warning)
-       } = 0x9090
-
-  _etext = .;                  /* End of text section */
-
-  .rodata : { *(.rodata) *(.rodata.*) }
-  . = ALIGN(4096);
-  _erodata = .;
-
-  /* newlib initialization functions */
-  . = ALIGN(64 / 8);
-  PROVIDE (__preinit_array_start = .);
-  .preinit_array     : { *(.preinit_array) }
-  PROVIDE (__preinit_array_end = .);
-  PROVIDE (__init_array_start = .);
-  .init_array     : { *(.init_array) }
-  PROVIDE (__init_array_end = .);
-  PROVIDE (__fini_array_start = .);
-  .fini_array     : { *(.fini_array) }
-  PROVIDE (__fini_array_end = .);
-
-  .ctors : {
-        __CTOR_LIST__ = .;
-        *(.ctors)
-       CONSTRUCTORS
-        QUAD(0)
-        __CTOR_END__ = .;
-        }
-
-  .dtors : {
-        __DTOR_LIST__ = .;
-        *(.dtors)
-        QUAD(0)
-        __DTOR_END__ = .;
-        }
-
-  .data : {                    /* Data */
-       *(.data)
-       }
-
-  _edata = .;                  /* End of data section */
-
-  __bss_start = .;             /* BSS */
-  .bss : {
-       *(.bss)
-        *(.app.bss)
-       }
-  _end = . ;
-
-  /* Sections to be discarded */
-  /DISCARD/ : {
-       *(.text.exit)
-       *(.data.exit)
-       *(.exitcall.exit)
-       }
-
-  /* Stabs debugging sections.  */
-  .stab 0 : { *(.stab) }
-  .stabstr 0 : { *(.stabstr) }
-  .stab.excl 0 : { *(.stab.excl) }
-  .stab.exclstr 0 : { *(.stab.exclstr) }
-  .stab.index 0 : { *(.stab.index) }
-  .stab.indexstr 0 : { *(.stab.indexstr) }
-  .comment 0 : { *(.comment) }
-}
diff --git a/extras/mini-os-intree/arch/x86/mm.c 
b/extras/mini-os-intree/arch/x86/mm.c
deleted file mode 100644
index 9c6d1b8..0000000
--- a/extras/mini-os-intree/arch/x86/mm.c
+++ /dev/null
@@ -1,957 +0,0 @@
-/*
- ****************************************************************************
- * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
- * (C) 2005 - Grzegorz Milos - Intel Research Cambridge
- ****************************************************************************
- *
- *        File: mm.c
- *      Author: Rolf Neugebauer (neugebar@xxxxxxxxxxxxx)
- *     Changes: Grzegorz Milos
- *
- *        Date: Aug 2003, chages Aug 2005
- *
- * Environment: Xen Minimal OS
- * Description: memory management related functions
- *              contains buddy page allocator from Xen.
- *
- ****************************************************************************
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#include <mini-os/os.h>
-#include <mini-os/hypervisor.h>
-#include <mini-os/mm.h>
-#include <mini-os/types.h>
-#include <mini-os/lib.h>
-#include <mini-os/xmalloc.h>
-#include <xen/memory.h>
-
-#ifdef MM_DEBUG
-#define DEBUG(_f, _a...) \
-    printk("MINI_OS(file=mm.c, line=%d) " _f "\n", __LINE__, ## _a)
-#else
-#define DEBUG(_f, _a...)    ((void)0)
-#endif
-
-unsigned long *phys_to_machine_mapping;
-unsigned long mfn_zero;
-extern char stack[];
-extern void page_walk(unsigned long va);
-
-/*
- * Make pt_pfn a new 'level' page table frame and hook it into the page
- * table at offset in previous level MFN (pref_l_mfn). pt_pfn is a guest
- * PFN.
- */
-static void new_pt_frame(unsigned long *pt_pfn, unsigned long prev_l_mfn,
-                         unsigned long offset, unsigned long level)
-{
-    pgentry_t *tab = (pgentry_t *)start_info.pt_base;
-    unsigned long pt_page = (unsigned long)pfn_to_virt(*pt_pfn);
-    pgentry_t prot_e, prot_t;
-    mmu_update_t mmu_updates[1];
-    int rc;
-
-    prot_e = prot_t = 0;
-    DEBUG("Allocating new L%d pt frame for pfn=%lx, "
-          "prev_l_mfn=%lx, offset=%lx",
-          level, *pt_pfn, prev_l_mfn, offset);
-
-    /* We need to clear the page, otherwise we might fail to map it
-       as a page table page */
-    memset((void*) pt_page, 0, PAGE_SIZE);
-
-    switch ( level )
-    {
-    case L1_FRAME:
-        prot_e = L1_PROT;
-        prot_t = L2_PROT;
-        break;
-    case L2_FRAME:
-        prot_e = L2_PROT;
-        prot_t = L3_PROT;
-        break;
-#if defined(__x86_64__)
-    case L3_FRAME:
-        prot_e = L3_PROT;
-        prot_t = L4_PROT;
-        break;
-#endif
-    default:
-        printk("new_pt_frame() called with invalid level number %d\n", level);
-        do_exit();
-        break;
-    }
-
-    /* Make PFN a page table page */
-#if defined(__x86_64__)
-    tab = pte_to_virt(tab[l4_table_offset(pt_page)]);
-#endif
-    tab = pte_to_virt(tab[l3_table_offset(pt_page)]);
-
-    mmu_updates[0].ptr = (tab[l2_table_offset(pt_page)] & PAGE_MASK) +
-        sizeof(pgentry_t) * l1_table_offset(pt_page);
-    mmu_updates[0].val = (pgentry_t)pfn_to_mfn(*pt_pfn) << PAGE_SHIFT |
-        (prot_e & ~_PAGE_RW);
-
-    if ( (rc = HYPERVISOR_mmu_update(mmu_updates, 1, NULL, DOMID_SELF)) < 0 )
-    {
-        printk("ERROR: PTE for new page table page could not be updated\n");
-        printk("       mmu_update failed with rc=%d\n", rc);
-        do_exit();
-    }
-
-    /* Hook the new page table page into the hierarchy */
-    mmu_updates[0].ptr =
-        ((pgentry_t)prev_l_mfn << PAGE_SHIFT) + sizeof(pgentry_t) * offset;
-    mmu_updates[0].val = (pgentry_t)pfn_to_mfn(*pt_pfn) << PAGE_SHIFT | prot_t;
-
-    if ( (rc = HYPERVISOR_mmu_update(mmu_updates, 1, NULL, DOMID_SELF)) < 0 )
-    {
-        printk("ERROR: mmu_update failed with rc=%d\n", rc);
-        do_exit();
-    }
-
-    *pt_pfn += 1;
-}
-
-/*
- * Checks if a pagetable frame is needed at 'level' to map a given
- * address. Note, this function is specific to the initial page table
- * building.
- */
-static int need_pt_frame(unsigned long va, int level)
-{
-    unsigned long hyp_virt_start = HYPERVISOR_VIRT_START;
-#if defined(__x86_64__)
-    unsigned long hyp_virt_end = HYPERVISOR_VIRT_END;
-#else
-    unsigned long hyp_virt_end = 0xffffffff;
-#endif
-
-    /* In general frames will _not_ be needed if they were already
-       allocated to map the hypervisor into our VA space */
-#if defined(__x86_64__)
-    if ( level == L3_FRAME )
-    {
-        if ( l4_table_offset(va) >=
-             l4_table_offset(hyp_virt_start) &&
-             l4_table_offset(va) <=
-             l4_table_offset(hyp_virt_end))
-            return 0;
-        return 1;
-    }
-    else
-#endif
-
-    if ( level == L2_FRAME )
-    {
-#if defined(__x86_64__)
-        if ( l4_table_offset(va) >=
-             l4_table_offset(hyp_virt_start) &&
-             l4_table_offset(va) <=
-             l4_table_offset(hyp_virt_end))
-#endif
-            if ( l3_table_offset(va) >=
-                 l3_table_offset(hyp_virt_start) &&
-                 l3_table_offset(va) <=
-                 l3_table_offset(hyp_virt_end))
-                return 0;
-
-        return 1;
-    }
-    else
-        /* Always need l1 frames */
-        if ( level == L1_FRAME )
-            return 1;
-
-    printk("ERROR: Unknown frame level %d, hypervisor %llx,%llx\n",
-           level, hyp_virt_start, hyp_virt_end);
-    return -1;
-}
-
-/*
- * Build the initial pagetable.
- */
-static void build_pagetable(unsigned long *start_pfn, unsigned long *max_pfn)
-{
-    unsigned long start_address, end_address;
-    unsigned long pfn_to_map, pt_pfn = *start_pfn;
-    static mmu_update_t mmu_updates[L1_PAGETABLE_ENTRIES + 1];
-    pgentry_t *tab = (pgentry_t *)start_info.pt_base, page;
-    unsigned long pt_mfn = pfn_to_mfn(virt_to_pfn(start_info.pt_base));
-    unsigned long offset;
-    int count = 0;
-    int rc;
-
-    pfn_to_map =
-        (start_info.nr_pt_frames - NOT_L1_FRAMES) * L1_PAGETABLE_ENTRIES;
-
-    if ( *max_pfn >= virt_to_pfn(HYPERVISOR_VIRT_START) )
-    {
-        printk("WARNING: Mini-OS trying to use Xen virtual space. "
-               "Truncating memory from %dMB to ",
-               ((unsigned long)pfn_to_virt(*max_pfn) -
-                (unsigned long)&_text)>>20);
-        *max_pfn = virt_to_pfn(HYPERVISOR_VIRT_START - PAGE_SIZE);
-        printk("%dMB\n",
-               ((unsigned long)pfn_to_virt(*max_pfn) -
-                (unsigned long)&_text)>>20);
-    }
-
-    start_address = (unsigned long)pfn_to_virt(pfn_to_map);
-    end_address = (unsigned long)pfn_to_virt(*max_pfn);
-
-    /* We worked out the virtual memory range to map, now mapping loop */
-    printk("Mapping memory range 0x%lx - 0x%lx\n", start_address, end_address);
-
-    while ( start_address < end_address )
-    {
-        tab = (pgentry_t *)start_info.pt_base;
-        pt_mfn = pfn_to_mfn(virt_to_pfn(start_info.pt_base));
-
-#if defined(__x86_64__)
-        offset = l4_table_offset(start_address);
-        /* Need new L3 pt frame */
-        if ( !(start_address & L3_MASK) )
-            if ( need_pt_frame(start_address, L3_FRAME) )
-                new_pt_frame(&pt_pfn, pt_mfn, offset, L3_FRAME);
-
-        page = tab[offset];
-        pt_mfn = pte_to_mfn(page);
-        tab = to_virt(mfn_to_pfn(pt_mfn) << PAGE_SHIFT);
-#endif
-        offset = l3_table_offset(start_address);
-        /* Need new L2 pt frame */
-        if ( !(start_address & L2_MASK) )
-            if ( need_pt_frame(start_address, L2_FRAME) )
-                new_pt_frame(&pt_pfn, pt_mfn, offset, L2_FRAME);
-
-        page = tab[offset];
-        pt_mfn = pte_to_mfn(page);
-        tab = to_virt(mfn_to_pfn(pt_mfn) << PAGE_SHIFT);
-        offset = l2_table_offset(start_address);
-        /* Need new L1 pt frame */
-        if ( !(start_address & L1_MASK) )
-            if ( need_pt_frame(start_address, L1_FRAME) )
-                new_pt_frame(&pt_pfn, pt_mfn, offset, L1_FRAME);
-
-        page = tab[offset];
-        pt_mfn = pte_to_mfn(page);
-        offset = l1_table_offset(start_address);
-
-        mmu_updates[count].ptr =
-            ((pgentry_t)pt_mfn << PAGE_SHIFT) + sizeof(pgentry_t) * offset;
-        mmu_updates[count].val =
-            (pgentry_t)pfn_to_mfn(pfn_to_map++) << PAGE_SHIFT | L1_PROT;
-        count++;
-        if ( count == L1_PAGETABLE_ENTRIES || pfn_to_map == *max_pfn )
-        {
-            rc = HYPERVISOR_mmu_update(mmu_updates, count, NULL, DOMID_SELF);
-            if ( rc < 0 )
-            {
-                printk("ERROR: build_pagetable(): PTE could not be updated\n");
-                printk("       mmu_update failed with rc=%d\n", rc);
-                do_exit();
-            }
-            count = 0;
-        }
-        start_address += PAGE_SIZE;
-    }
-
-    *start_pfn = pt_pfn;
-}
-
-/*
- * Mark portion of the address space read only.
- */
-extern struct shared_info shared_info;
-static void set_readonly(void *text, void *etext)
-{
-    unsigned long start_address =
-        ((unsigned long) text + PAGE_SIZE - 1) & PAGE_MASK;
-    unsigned long end_address = (unsigned long) etext;
-    static mmu_update_t mmu_updates[L1_PAGETABLE_ENTRIES + 1];
-    pgentry_t *tab = (pgentry_t *)start_info.pt_base, page;
-    unsigned long mfn = pfn_to_mfn(virt_to_pfn(start_info.pt_base));
-    unsigned long offset;
-    int count = 0;
-    int rc;
-
-    printk("setting %p-%p readonly\n", text, etext);
-
-    while ( start_address + PAGE_SIZE <= end_address )
-    {
-        tab = (pgentry_t *)start_info.pt_base;
-        mfn = pfn_to_mfn(virt_to_pfn(start_info.pt_base));
-
-#if defined(__x86_64__)
-        offset = l4_table_offset(start_address);
-        page = tab[offset];
-        mfn = pte_to_mfn(page);
-        tab = to_virt(mfn_to_pfn(mfn) << PAGE_SHIFT);
-#endif
-        offset = l3_table_offset(start_address);
-        page = tab[offset];
-        mfn = pte_to_mfn(page);
-        tab = to_virt(mfn_to_pfn(mfn) << PAGE_SHIFT);
-        offset = l2_table_offset(start_address);
-        page = tab[offset];
-        mfn = pte_to_mfn(page);
-        tab = to_virt(mfn_to_pfn(mfn) << PAGE_SHIFT);
-
-        offset = l1_table_offset(start_address);
-
-        if ( start_address != (unsigned long)&shared_info )
-        {
-            mmu_updates[count].ptr =
-                ((pgentry_t)mfn << PAGE_SHIFT) + sizeof(pgentry_t) * offset;
-            mmu_updates[count].val = tab[offset] & ~_PAGE_RW;
-            count++;
-        }
-        else
-            printk("skipped %p\n", start_address);
-
-        start_address += PAGE_SIZE;
-
-        if ( count == L1_PAGETABLE_ENTRIES ||
-             start_address + PAGE_SIZE > end_address )
-        {
-            rc = HYPERVISOR_mmu_update(mmu_updates, count, NULL, DOMID_SELF);
-            if ( rc < 0 )
-            {
-                printk("ERROR: set_readonly(): PTE could not be updated\n");
-                do_exit();
-            }
-            count = 0;
-        }
-    }
-
-    {
-        mmuext_op_t op = {
-            .cmd = MMUEXT_TLB_FLUSH_ALL,
-        };
-        int count;
-        HYPERVISOR_mmuext_op(&op, 1, &count, DOMID_SELF);
-    }
-}
-
-/*
- * A useful mem testing function. Write the address to every address in the
- * range provided and read back the value. If verbose, print page walk to
- * some VA
- *
- * If we get MEM_TEST_MAX_ERRORS we might as well stop
- */
-#define MEM_TEST_MAX_ERRORS 10
-int mem_test(unsigned long *start_va, unsigned long *end_va, int verbose)
-{
-    unsigned long mask = 0x10000;
-    unsigned long *pointer;
-    int error_count = 0;
-
-    /* write values and print page walks */
-    if ( verbose && (((unsigned long)start_va) & 0xfffff) )
-    {
-        printk("MemTest Start: 0x%lx\n", start_va);
-        page_walk((unsigned long)start_va);
-    }
-    for ( pointer = start_va; pointer < end_va; pointer++ )
-    {
-        if ( verbose && !(((unsigned long)pointer) & 0xfffff) )
-        {
-            printk("Writing to %lx\n", pointer);
-            page_walk((unsigned long)pointer);
-        }
-        *pointer = (unsigned long)pointer & ~mask;
-    }
-    if ( verbose && (((unsigned long)end_va) & 0xfffff) )
-    {
-        printk("MemTest End: %lx\n", end_va-1);
-        page_walk((unsigned long)end_va-1);
-    }
-
-    /* verify values */
-    for ( pointer = start_va; pointer < end_va; pointer++ )
-    {
-        if ( ((unsigned long)pointer & ~mask) != *pointer )
-        {
-            printk("Read error at 0x%lx. Read: 0x%lx, should read 0x%lx\n",
-                   (unsigned long)pointer, *pointer,
-                   ((unsigned long)pointer & ~mask));
-            error_count++;
-            if ( error_count >= MEM_TEST_MAX_ERRORS )
-            {
-                printk("mem_test: too many errors\n");
-                return -1;
-            }
-        }
-    }
-    return 0;
-}
-
-
-/*
- * get the PTE for virtual address va if it exists. Otherwise NULL.
- */
-static pgentry_t *get_pgt(unsigned long va)
-{
-    unsigned long mfn;
-    pgentry_t *tab;
-    unsigned offset;
-
-    tab = (pgentry_t *)start_info.pt_base;
-    mfn = virt_to_mfn(start_info.pt_base);
-
-#if defined(__x86_64__)
-    offset = l4_table_offset(va);
-    if ( !(tab[offset] & _PAGE_PRESENT) )
-        return NULL;
-    mfn = pte_to_mfn(tab[offset]);
-    tab = mfn_to_virt(mfn);
-#endif
-    offset = l3_table_offset(va);
-    if ( !(tab[offset] & _PAGE_PRESENT) )
-        return NULL;
-    mfn = pte_to_mfn(tab[offset]);
-    tab = mfn_to_virt(mfn);
-    offset = l2_table_offset(va);
-    if ( !(tab[offset] & _PAGE_PRESENT) )
-        return NULL;
-    mfn = pte_to_mfn(tab[offset]);
-    tab = mfn_to_virt(mfn);
-    offset = l1_table_offset(va);
-    return &tab[offset];
-}
-
-
-/*
- * return a valid PTE for a given virtual address. If PTE does not exist,
- * allocate page-table pages.
- */
-pgentry_t *need_pgt(unsigned long va)
-{
-    unsigned long pt_mfn;
-    pgentry_t *tab;
-    unsigned long pt_pfn;
-    unsigned offset;
-
-    tab = (pgentry_t *)start_info.pt_base;
-    pt_mfn = virt_to_mfn(start_info.pt_base);
-
-#if defined(__x86_64__)
-    offset = l4_table_offset(va);
-    if ( !(tab[offset] & _PAGE_PRESENT) )
-    {
-        pt_pfn = virt_to_pfn(alloc_page());
-        new_pt_frame(&pt_pfn, pt_mfn, offset, L3_FRAME);
-    }
-    ASSERT(tab[offset] & _PAGE_PRESENT);
-    pt_mfn = pte_to_mfn(tab[offset]);
-    tab = mfn_to_virt(pt_mfn);
-#endif
-    offset = l3_table_offset(va);
-    if ( !(tab[offset] & _PAGE_PRESENT) )
-    {
-        pt_pfn = virt_to_pfn(alloc_page());
-        new_pt_frame(&pt_pfn, pt_mfn, offset, L2_FRAME);
-    }
-    ASSERT(tab[offset] & _PAGE_PRESENT);
-    pt_mfn = pte_to_mfn(tab[offset]);
-    tab = mfn_to_virt(pt_mfn);
-    offset = l2_table_offset(va);
-    if ( !(tab[offset] & _PAGE_PRESENT) )
-    {
-        pt_pfn = virt_to_pfn(alloc_page());
-        new_pt_frame(&pt_pfn, pt_mfn, offset, L1_FRAME);
-    }
-    ASSERT(tab[offset] & _PAGE_PRESENT);
-    pt_mfn = pte_to_mfn(tab[offset]);
-    tab = mfn_to_virt(pt_mfn);
-
-    offset = l1_table_offset(va);
-    return &tab[offset];
-}
-
-/*
- * Reserve an area of virtual address space for mappings and Heap
- */
-static unsigned long demand_map_area_start;
-#ifdef __x86_64__
-#define DEMAND_MAP_PAGES ((128ULL << 30) / PAGE_SIZE)
-#else
-#define DEMAND_MAP_PAGES ((2ULL << 30) / PAGE_SIZE)
-#endif
-
-#ifndef HAVE_LIBC
-#define HEAP_PAGES 0
-#else
-unsigned long heap, brk, heap_mapped, heap_end;
-#ifdef __x86_64__
-#define HEAP_PAGES ((128ULL << 30) / PAGE_SIZE)
-#else
-#define HEAP_PAGES ((1ULL << 30) / PAGE_SIZE)
-#endif
-#endif
-
-void arch_init_demand_mapping_area(unsigned long cur_pfn)
-{
-    cur_pfn++;
-
-    demand_map_area_start = (unsigned long) pfn_to_virt(cur_pfn);
-    cur_pfn += DEMAND_MAP_PAGES;
-    printk("Demand map pfns at %lx-%lx.\n",
-           demand_map_area_start, pfn_to_virt(cur_pfn));
-
-#ifdef HAVE_LIBC
-    cur_pfn++;
-    heap_mapped = brk = heap = (unsigned long) pfn_to_virt(cur_pfn);
-    cur_pfn += HEAP_PAGES;
-    heap_end = (unsigned long) pfn_to_virt(cur_pfn);
-    printk("Heap resides at %lx-%lx.\n", brk, heap_end);
-#endif
-}
-
-unsigned long allocate_ondemand(unsigned long n, unsigned long alignment)
-{
-    unsigned long x;
-    unsigned long y = 0;
-
-    /* Find a properly aligned run of n contiguous frames */
-    for ( x = 0;
-          x <= DEMAND_MAP_PAGES - n;
-          x = (x + y + 1 + alignment - 1) & ~(alignment - 1) )
-    {
-        unsigned long addr = demand_map_area_start + x * PAGE_SIZE;
-        pgentry_t *pgt = get_pgt(addr);
-        for ( y = 0; y < n; y++, addr += PAGE_SIZE )
-        {
-            if ( !(addr & L1_MASK) )
-                pgt = get_pgt(addr);
-            if ( pgt )
-            {
-                if ( *pgt & _PAGE_PRESENT )
-                    break;
-                pgt++;
-            }
-        }
-        if ( y == n )
-            break;
-    }
-    if ( y != n )
-    {
-        printk("Failed to find %ld frames!\n", n);
-        return 0;
-    }
-    return demand_map_area_start + x * PAGE_SIZE;
-}
-
-/*
- * Map an array of MFNs contiguously into virtual address space starting at
- * va. map f[i*stride]+i*increment for i in 0..n-1.
- */
-#define MAP_BATCH ((STACK_SIZE / 2) / sizeof(mmu_update_t))
-void do_map_frames(unsigned long va,
-                   const unsigned long *mfns, unsigned long n,
-                   unsigned long stride, unsigned long incr,
-                   domid_t id, int *err, unsigned long prot)
-{
-    pgentry_t *pgt = NULL;
-    unsigned long done = 0;
-    unsigned long i;
-    int rc;
-
-    if ( !mfns )
-    {
-        printk("do_map_frames: no mfns supplied\n");
-        return;
-    }
-    DEBUG("va=%p n=0x%lx, mfns[0]=0x%lx stride=0x%lx incr=0x%lx prot=0x%lx\n",
-          va, n, mfns[0], stride, incr, prot);
-
-    if ( err )
-        memset(err, 0x00, n * sizeof(int));
-    while ( done < n )
-    {
-        unsigned long todo;
-
-        if ( err )
-            todo = 1;
-        else
-            todo = n - done;
-
-        if ( todo > MAP_BATCH )
-            todo = MAP_BATCH;
-
-        {
-            mmu_update_t mmu_updates[todo];
-
-            for ( i = 0; i < todo; i++, va += PAGE_SIZE, pgt++)
-            {
-                if ( !pgt || !(va & L1_MASK) )
-                    pgt = need_pgt(va);
-
-                mmu_updates[i].ptr = virt_to_mach(pgt) | MMU_NORMAL_PT_UPDATE;
-                mmu_updates[i].val = ((pgentry_t)(mfns[(done + i) * stride] +
-                                                  (done + i) * incr)
-                                      << PAGE_SHIFT) | prot;
-            }
-
-            rc = HYPERVISOR_mmu_update(mmu_updates, todo, NULL, id);
-            if ( rc < 0 )
-            {
-                if (err)
-                    err[done * stride] = rc;
-                else {
-                    printk("Map %ld (%lx, ...) at %p failed: %d.\n",
-                           todo, mfns[done * stride] + done * incr, va, rc);
-                    do_exit();
-                }
-            }
-        }
-        done += todo;
-    }
-}
-
-/*
- * Map an array of MFNs contiguous into virtual address space. Virtual
- * addresses are allocated from the on demand area.
- */
-void *map_frames_ex(const unsigned long *mfns, unsigned long n,
-                    unsigned long stride, unsigned long incr,
-                    unsigned long alignment,
-                    domid_t id, int *err, unsigned long prot)
-{
-    unsigned long va = allocate_ondemand(n, alignment);
-
-    if ( !va )
-        return NULL;
-
-    do_map_frames(va, mfns, n, stride, incr, id, err, prot);
-
-    return (void *)va;
-}
-
-/*
- * Unmap nun_frames frames mapped at virtual address va.
- */
-#define UNMAP_BATCH ((STACK_SIZE / 2) / sizeof(multicall_entry_t))
-int unmap_frames(unsigned long va, unsigned long num_frames)
-{
-    int n = UNMAP_BATCH;
-    multicall_entry_t call[n];
-    int ret;
-    int i;
-
-    ASSERT(!((unsigned long)va & ~PAGE_MASK));
-
-    DEBUG("va=%p, num=0x%lx\n", va, num_frames);
-
-    while ( num_frames ) {
-        if ( n > num_frames )
-            n = num_frames;
-
-        for ( i = 0; i < n; i++ )
-        {
-            int arg = 0;
-            /* simply update the PTE for the VA and invalidate TLB */
-            call[i].op = __HYPERVISOR_update_va_mapping;
-            call[i].args[arg++] = va;
-            call[i].args[arg++] = 0;
-#ifdef __i386__
-            call[i].args[arg++] = 0;
-#endif
-            call[i].args[arg++] = UVMF_INVLPG;
-
-            va += PAGE_SIZE;
-        }
-
-        ret = HYPERVISOR_multicall(call, n);
-        if ( ret )
-        {
-            printk("update_va_mapping hypercall failed with rc=%d.\n", ret);
-            return -ret;
-        }
-
-        for ( i = 0; i < n; i++ )
-        {
-            if ( call[i].result )
-            {
-                printk("update_va_mapping failed for with rc=%d.\n", ret);
-                return -(call[i].result);
-            }
-        }
-        num_frames -= n;
-    }
-    return 0;
-}
-
-/*
- * Allocate pages which are contiguous in machine memory.
- * Returns a VA to where they are mapped or 0 on failure.
- *
- * addr_bits indicates if the region has restrictions on where it is
- * located. Typical values are 32 (if for example PCI devices can't access
- * 64bit memory) or 0 for no restrictions.
- *
- * Allocated pages can be freed using the page allocators free_pages()
- * function.
- *
- * based on Linux function xen_create_contiguous_region()
- */
-#define MAX_CONTIG_ORDER 9 /* 2MB */
-unsigned long alloc_contig_pages(int order, unsigned int addr_bits)
-{
-    unsigned long in_va, va;
-    unsigned long in_frames[1UL << order], out_frames, mfn;
-    multicall_entry_t call[1UL << order];
-    unsigned int i, num_pages = 1UL << order;
-    int ret, exch_success;
-
-    /* pass in num_pages 'extends' of size 1 and
-     * request 1 extend of size 'order */
-    struct xen_memory_exchange exchange = {
-        .in = {
-            .nr_extents   = num_pages,
-            .extent_order = 0,
-            .domid        = DOMID_SELF
-        },
-        .out = {
-            .nr_extents   = 1,
-            .extent_order = order,
-            .address_bits = addr_bits,
-            .domid        = DOMID_SELF
-        },
-        .nr_exchanged = 0
-    };
-
-    if ( order > MAX_CONTIG_ORDER )
-    {
-        printk("alloc_contig_pages: order too large 0x%x > 0x%x\n",
-               order, MAX_CONTIG_ORDER);
-        return 0;
-    }
-
-    /* Allocate some potentially discontiguous pages */
-    in_va = alloc_pages(order);
-    if ( !in_va )
-    {
-        printk("alloc_contig_pages: could not get enough pages (order=0x%x\n",
-               order);
-        return 0;
-    }
-
-    /* set up arguments for exchange hyper call */
-    set_xen_guest_handle(exchange.in.extent_start, in_frames);
-    set_xen_guest_handle(exchange.out.extent_start, &out_frames);
-
-    /* unmap current frames, keep a list of MFNs */
-    for ( i = 0; i < num_pages; i++ )
-    {
-        int arg = 0;
-
-        va = in_va + (PAGE_SIZE * i);
-        in_frames[i] = virt_to_mfn(va);
-
-        /* update P2M mapping */
-        phys_to_machine_mapping[virt_to_pfn(va)] = INVALID_P2M_ENTRY;
-
-        /* build multi call */
-        call[i].op = __HYPERVISOR_update_va_mapping;
-        call[i].args[arg++] = va;
-        call[i].args[arg++] = 0;
-#ifdef __i386__
-        call[i].args[arg++] = 0;
-#endif
-        call[i].args[arg++] = UVMF_INVLPG;
-    }
-
-    ret = HYPERVISOR_multicall(call, i);
-    if ( ret )
-    {
-        printk("Odd, update_va_mapping hypercall failed with rc=%d.\n", ret);
-        return 0;
-    }
-
-    /* try getting a contig range of MFNs */
-    out_frames = virt_to_pfn(in_va); /* PFNs to populate */
-    ret = HYPERVISOR_memory_op(XENMEM_exchange, &exchange);
-    if ( ret ) {
-        printk("mem exchanged order=0x%x failed with rc=%d, nr_exchanged=%d\n",
-               order, ret, exchange.nr_exchanged);
-        /* we still need to return the allocated pages above to the pool
-         * ie. map them back into the 1:1 mapping etc. so we continue but
-         * in the end return the pages to the page allocator and return 0. */
-        exch_success = 0;
-    }
-    else
-        exch_success = 1;
-
-    /* map frames into 1:1 and update p2m */
-    for ( i = 0; i < num_pages; i++ )
-    {
-        int arg = 0;
-        pte_t pte;
-
-        va = in_va + (PAGE_SIZE * i);
-        mfn = i < exchange.nr_exchanged ? (out_frames + i) : in_frames[i];
-        pte = __pte(mfn << PAGE_SHIFT | L1_PROT);
-
-        /* update P2M mapping */
-        phys_to_machine_mapping[virt_to_pfn(va)] = mfn;
-
-        /* build multi call */
-        call[i].op = __HYPERVISOR_update_va_mapping;
-        call[i].args[arg++] = va;
-#ifdef __x86_64__
-        call[i].args[arg++] = (pgentry_t)pte.pte;
-#else
-        call[i].args[arg++] = pte.pte_low;
-        call[i].args[arg++] = pte.pte_high;
-#endif
-        call[i].args[arg++] = UVMF_INVLPG;
-    }
-    ret = HYPERVISOR_multicall(call, i);
-    if ( ret )
-    {
-        printk("update_va_mapping hypercall no. 2 failed with rc=%d.\n", ret);
-        return 0;
-    }
-
-    if ( !exch_success )
-    {
-        /* since the exchanged failed we just free the pages as well */
-        free_pages((void *) in_va, order);
-        return 0;
-    }
-
-    return in_va;
-}
-
-/*
- * Clear some of the bootstrap memory
- */
-static void clear_bootstrap(void)
-{
-    pte_t nullpte = { };
-    int rc;
-
-    /* Use first page as the CoW zero page */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.