- 25 Oct, 2016 10 commits
-
-
Charlie Jacobsen authored
-
Charlie Jacobsen authored
-
Charlie Jacobsen authored
lcd_destroy => lcd_vmx_destroy. Pretty much a straight copy over, but removed some unneeded code.
-
Charles Jacobsen authored
Conditional compilation on number of autoload msr's. Untested.
-
Charlie Jacobsen authored
vmx_setup_vmcs ==> vmx_setup_vmcs_guest_settings and vmx_setup_vmcs_host. vmx_setup_vmcs_guest_settings -- execution control (e.g., interrupt handling) -- ept pointer -- %cr0 and %cr4 access control vmx_setup_vmcs_guest_regs -- initial %cr0, %cr4 -- segmentation--bases, limits, selectors -- guest EFER (long mode enabled, no syscall/sysret) -- initial activity and interrupt state vmx_setup_vmcs_host -- control and segmentation regs -- host EFER -- no saving of syscall/sysret msrs since these are disabled in guest -- no page attribute table
-
Charlie Jacobsen authored
lcd_create --> lcd_vmx_create, with a lot of code re-factored or removed for now, to keep it simple (no gdt, idt, isr, paging bitmap, address space init, etc.). -- basic ept initialization -- vmcs loading on a cpu -- re-factored __vmx_setup_cpu to use built-in segment descriptor access functions in desc.h -- removed host sys_enter storage, since this msr is disabled right now anyway -- more doc to understand vmcs load process
-
Charles Jacobsen authored
Added straight copy from old code of lcd_vmx_exit. Shifted lcd_vmx_init and lcd_vmx_exit to arch/x86/include/asm/lcd-vmx.h. Ideally, if we want this to be arch-independent, probably want to change header to asm/lcd.h, and routines to lcd_arch_init and lcd_arch_exit, or something similar.
-
Charles Jacobsen authored
Two components to the lcd build now: -- arch/x86/lcd/Makefile: for building x86 lcd code -- virt/lcd/Makefile: for building arch-indep lcd code Modified the build system just slightly for a cleaner build: -- virt/ directory treated like ipc/, usr/, etc. directories -- added Kconfig and Makefile to virt/, mirroring drivers/ -- updated top-level Makefile to include virt/ as vmlinux directory / dependency, so build system will recur into virt/ -- updated arch/x86/Kconfig to include virt/Kconfig, so it will be included as a menu item -- updated arch/x86/Kbuild to include arch/x86/lcd/ Removed old capabilities code in cap/. Removed lcd syscall. Temporarily turned off build for drivers/lcd. Fixed most bugs in lcd-vmx (still need to do lcd_vmx_exit). -- minor naming issues in lcd-vmx.h -- straight copy over of vmx_disable_intercepts_for_msr, but with more doc -- removed VMX_EPT_INDIVIDUAL_ADDR macro from vmx.h (where did this come from? it's not documented in the intel manual, nor is it used in kvm)
-
Charlie Jacobsen authored
Added a few missing macros to arch/x86/include/vmx.h, and RESERVED masks for easily determining which bits in a vmx control are reserved (needed in adjust_vmx_controls). Re-factored setup_vmcs_config and adjust_vmx_controls. setup_vmcs_config does pretty much the same thing, but it fails immediately if a control isn't available -- adjust_vmx_controls confirms that the exact desired controls are available, and sets the reserved bits to 1 or 0 as needed. Cleaner comments and organization. Re-factored the vmx basic settings to vmcs_config_basic_settings. Removed some of the vmx feature check code that was in the original lcd_vmx_init, as setup_vmcs_config now does that. Essentially a straight copy over of: -- __vmx_enable -- vmx_enable -- vmx_disable -- vmx_free_vmxon_areas -- __vmxon -- __vmxoff The only difference is I shifted tbl and cache invalidation to vmx_enable (originally in __vmx_enable) and added some comments. Straight copy over of -- vmx_alloc_vmcs -- vmx_free_vmcs -- invvpid, invept code, with slight renaming
-
Charlie Jacobsen authored
Arch-dependent code will go in arch/x86/lcd, and the header(s) will reside in arch/x86/include/asm. For now, I have only moved some of the arch-dependent junk that was in include/lcd/lcd.h into arch/x86/include/asm/lcd-vmx.h.
-