Update for release.

This commit is contained in:
Udo Steinberg 2009-12-21 16:23:33 +01:00
parent acba1f70a9
commit efcf8a5a75
64 changed files with 170 additions and 63 deletions

10
LICENSE
View File

@ -1,3 +1,13 @@
! NOTE !
This copyright does *not* cover user programs or virtual machines that use
the hypercall API to invoke microhypervisor operations or services provided
in other protection domains - this is merely considered normal use of the
API, and does *not* fall under the heading of "derived work".
============================================================================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991

97
README Normal file
View File

@ -0,0 +1,97 @@
#
# README
#
# Copyright (C) 2009, Udo Steinberg <udo@hypervisor.org>
#
# This file is part of the NOVA microhypervisor.
#
# NOVA 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.
#
# NOVA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License version 2 for more details.
#
About this code
===============
This is a prerelease of the NOVA microhypervisor. This code is experimental
and not feature complete. If it breaks, you get to keep both pieces.
Building from source code
=========================
You will need the following tools to build the source code.
* make 3.81
available from http://www.gnu.org/software/make/
* gcc 3.4 or higher
available from http://gcc.gnu.org/
* binutils 2.18.50.0.7 or higher
available from http://www.kernel.org/pub/linux/devel/binutils/
You can then build the binary by doing:
$ cd build; make
Booting
=======
The NOVA microhypervisor can be started from a multiboot-compliant
bootloader, such as GRUB or PXEGRUB as follows:
# Boot from harddisk 0, partition 0
title NOVA
kernel (hd0,0)/boot/tftp/nova/hypervisor
module (hd0,0)/...
...
# Boot from TFTP server aa.bb.cc.dd
title NOVA
tftpserver aa.bb.cc.dd
kernel (nd)/tftp/nova/hypervisor
module (nd)/...
...
Supported platforms
===================
NOVA runs on 32-bit Intel and AMD machines that support ACPI.
The virtualization features are available on:
* Intel CPUs with VMX
regardless of whether the CPU supports nested paging (EPT) or not.
* AMD CPUs with SVM
only when the CPU supports nested paging (NPT).
Issues
======
The following is a list of issues you may encounter.
* The code fails to compile.
Make sure your gcc and binutils meet the minimum requirements listed
above. If the problem persists, let us know.
* Virtualization does not work when running under QEMU.
QEMU supports SVM, but does not support NPT. Therefore, it does not meet
the platform requirements.
* My roottask fails to start and prints a "bad elf" message.
Make sure your roottask is linked such that it does not use a BSS.
When running "objdump -p" on your binary, filesz must be equal to memsz
for all loadable sections.
* The revoke hypercall is currently disabled.
Feedback
========
Feedback should be sent to <udo@hypervisor.org>.

View File

@ -1,7 +1,7 @@
#
# Makefile
#
# Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
# Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
#
# This file is part of the NOVA microhypervisor.
#

View File

@ -1,7 +1,7 @@
/*
* Advanced Configuration and Power Interface (ACPI)
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Advanced Configuration and Power Interface (ACPI)
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Advanced Configuration and Power Interface (ACPI)
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Advanced Configuration and Power Interface (ACPI)
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Advanced Configuration and Power Interface (ACPI)
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Advanced Configuration and Power Interface (ACPI)
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Advanced Configuration and Power Interface (ACPI)
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Advanced Programmable Interrupt Controller (APIC)
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Assertions
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Command Line Parser
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Compiler Macros
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Generic Console
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Serial Console
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* VGA Console
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Descriptor
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Executable and Linkable Format (ELF)
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* External Symbols
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Global Descriptor Table (GDT)
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Interrupt Descriptor Table (IDT)
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Static Initialization Priorities
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* I/O Ports
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Keyboard
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Generic Lock Guard
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Virtual-Memory Layout
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Model-Specific Registers (MSR)
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Multiboot Support
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* IA32 Paging Support
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* i8259A Programmable Interrupt Controller (PIC)
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* IA32 Boot Page Table
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Selectors
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Slab Allocator
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Generic Spinlock
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* String Functions
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Utility Functions
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Interrupt Vectors
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Advanced Configuration and Power Interface (ACPI)
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Advanced Configuration and Power Interface (ACPI)
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Advanced Configuration and Power Interface (ACPI)
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Advanced Configuration and Power Interface (ACPI)
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Advanced Configuration and Power Interface (ACPI)
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Advanced Configuration and Power Interface (ACPI)
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Bootstrap Code
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Command Line Parser
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Generic Console
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Serial Console
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* VGA Console
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Central Processing Unit (CPU)
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Entry Functions
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Global Descriptor Table (GDT)
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Linker Script
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Interrupt Descriptor Table (IDT)
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Initialization Code
*
* Copyright (C) 2005-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2005-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*
@ -34,7 +34,7 @@
#include "stdio.h"
#include "types.h"
char const *version = "NOVA 0.0.1";
char const *version = "NOVA 0.1 (Xmas Alpha)";
extern "C" INIT
mword kern_ptab_setup()

View File

@ -1,7 +1,7 @@
/*
* Keyboard
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Virtual-Memory Layout
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* IA32 Paging Support
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* i8259A Programmable Interrupt Controller (PIC)
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* IA32 Boot Page Table
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Slab Allocator
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Standard I/O
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* String Functions
*
* Copyright (C) 2007-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2007-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*

View File

@ -1,7 +1,7 @@
/*
* Task State Segment (TSS)
*
* Copyright (C) 2006-2008, Udo Steinberg <udo@hypervisor.org>
* Copyright (C) 2006-2009, Udo Steinberg <udo@hypervisor.org>
*
* This file is part of the NOVA microhypervisor.
*