Changes to Xen in support of Intel(R) Vanderpool Technology ------------------------------------------------------------- Our VT extensions to the Xen hypervisor provide full platform virtualization, including CPU(s), memory, and I/O infrastructure. The generic code in Xen handles and schedules those virtual machines as it does for the existing para-virtualized domains. Full virtualization required by the OS guests requires full device virtualization as well. The device models in BOCHS (http://bochs.sourceforge.net/) were decoupled from the CPU virtualization, and are used to virtualize the legacy devices (such as keyboard, mouse, VGA, IDE) in the PC platform. At this point, the device models run in user mode on domain 0, not in the Xen hypervisor. We would like to thank Ian Pratt and Keir Fraser for reviewing our design and code intensively, and for providing numerous useful suggestions to improve the architecture and code. We have a list of Intel team members who take credit for making this release happen: Yunhong Jiang, Nitin Kamble, Chengyuan Li, Xin Li, Xiaofeng Ling, Benjamin Liu, Asit Mallick, Jun Nakajima, Sunil Saxena, Arun Sharma, Edwin Zhai, Jeff Zheng, and Louis Zhuang. We'll continue to add more features to complete full virtualization in Xen using VT. The notes document the changes to the Xen hypervisor in order to add VT support. The changes to other areas, such as Control Panel will be added as we deliver the code. Summary of changes for the first release ---------------------------------------- December 15, 2004 * VT specific event handling and domain management were added. * Shadow mode was extended to support full 32-bit guests * Domain switching code was extended to support VT domain * I/O request handling was added to communicate with the device model * Domain builder was extended to provide the environment when the guest enters the protected mode, including E820 memory and VGA info, typically obtained by BIOS calls. New code: --------- VT (Vanderpool Technology) is based on the new VMX (Virtual Machine Extensions) architecture. The current release of the software supports 32-bit only. * arch/x86/vmx.[ch] and arch/x86/vmx_*.[ch]: created to handle VMX-specific events in order to provide virtual machine. * arch/x86/x86_32/entry.S: new code path was added to have the first-level handler from VM exits. The first-level handler calls the second-level handler in arch/x86/vmx.c. * arch/x86/setup.c: new function start_vmx() to init_intel() to enable VMX mode. * include/asm-x86/config.h: #ifdef CONFIG_VMX was added. * arch/x86/domain.c: new code patch was added to create a VMX domain given the flag from the control panel. * include/public/io/ioreq.h: A new data structure was added to define the I/O requests between the Xen hypervisor and the device models. Changes to the existing code: ----------------------------- * arch/x86/shadow.[ch]: new mode SHM_full_32 was added to support full virtualization. The current Xen code assumes that the guest page directory and tables have _machine_ (or host) physical page frame numbers, and the new code allows to support _guest_ physical page frame numbers * include/asm-x86/processor.h: struct arch_vmx_struct arch_vmx has been added to the thread_struct data structure. The arch_vmx has the addtional VMX-related CPU context. * arch/x86/io_apic.c: reverse mapping between vector and irq has been added. We will revisit this code when considering MSI support. --- Jun