Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Merge branch 'devel' of /home-remote/palacios/palacios into devel
Kyle Hale [Fri, 29 Apr 2011 22:16:39 +0000 (17:16 -0500)]
Conflicts:

Kconfig

merged

1  2 
Kconfig
palacios/src/palacios/Makefile
palacios/src/palacios/vmm_xed.c

diff --combined Kconfig
+++ b/Kconfig
@@@ -128,7 -128,7 +128,7 @@@ config MAX_CPU
  endmenu
  
  source "palacios/src/interfaces/Kconfig"
+ source "palacios/src/extensions/Kconfig"
  
  config TELEMETRY
        bool "Enable VMM telemetry support"
@@@ -171,31 -171,6 +171,31 @@@ config VNE
            Enable the Vnet in Palacios
  
  
 +config INSPECTOR
 +      bool "Enable VM inspection"
 +      depends on EXPERIMENTAL
 +      default n
 +      help 
 +        Enable inspection framework for vm internal state
 +
 +config SYSCALL_HIJACK
 +    bool "Enable System Call Interposition"
 +    depends on EXPERIMENTAL
 +    default n
 +    help
 +      Enable the VMM to hijack system calls executed by the guest.
 +      If enabled, the VMM will intercept software interrupt (INT) instructions,
 +      Fast-System Call instructions (SYSENTER, SYSCALL), and the LIDT instruction
 +
 +config HIJACK_SYSCALL_MSR
 +    bool "Intercept Syscall-related MSR reads & writes"
 +    depends on SYSCALL_HIJACK 
 +    default n
 +    help
 +      Allow the VMM to intercept reads and writes to MSRs
 +      related to SYSCALL and SYSENTER instructions. Specifically,
 +      it will intercept R/W to STAR, CSTAR, and LSTAR.
 +
  endmenu
  
  
@@@ -426,14 -401,6 +426,14 @@@ config DEBUG_VNE
          help
            Enable the Vnet debug in Palacios
  
 +config DEBUG_SYSCALL_HIJACK
 +        bool "Enable Syscall hijack Debug in Palacios"
 +        default n
 +        depends on EXPERIMENTAL && SYSCALL_HIJACK && DEBUG_ON
 +        help
 +          Enable Debugging printouts for syscall hijacking
 +          code in Palacios
 +
  endmenu
  
  
@@@ -31,7 -31,6 +31,6 @@@ obj-y := 
        vmm_binaries.o \
        vmm_cpuid.o \
        vmm_xml.o \
-       vmm_muxer.o \
        vmm_mem_hook.o \
        vmm_mptable.o \
        vmm_extensions.o \
@@@ -39,7 -38,6 +38,6 @@@
        vmm_multitree.o \
  
  
- obj-$(CONFIG_INSPECTOR) += vmm_inspector.o
  
  
  obj-$(CONFIG_XED) +=  vmm_xed.o
@@@ -59,6 -57,7 +57,7 @@@ obj-$(CONFIG_VMX) +=          vmx.o 
                        vmx_io.o \
                        vmx_lowlevel.o \
                        vmx_msr.o \
+                       vmx_hw_info.o \
                        vmcs.o \
                        vmx_ctrl_regs.o \
                        vmx_assist.o
@@@ -76,6 -75,5 +75,6 @@@ obj-$(CONFIG_SYMBIOTIC) += vmm_symbioti
  obj-$(CONFIG_SYMCALL) += vmm_symcall.o
  obj-$(CONFIG_SYMMOD) += vmm_symmod.o
  
 +obj-$(CONFIG_SYSCALL_HIJACK) += vmm_syscall_hijack.o
  
  obj-y += mmu/
@@@ -443,19 -443,6 +443,19 @@@ int v3_decode(struct guest_info * info
  
  
                case XED_OPERAND_IMM0:
 +                  {
 +                v3_op->size = xed_decoded_inst_get_immediate_width(&xed_instr);
 +
 +                if (v3_op->size > 4) {
 +                    PrintError("Unhandled 64 bit immediates\n");
 +                    return -1;
 +                }
 +                v3_op->operand = xed_decoded_inst_get_unsigned_immediate(&xed_instr);
 +
 +                v3_op->type = IMM_OPERAND;
 +
 +                  }
 +                  break;
                case XED_OPERAND_AGEN:
                case XED_OPERAND_PTR:
                case XED_OPERAND_RELBR:
            }
        }
  
-       V3_Print("Operand 0 mode: %s\n", xed_operand_action_enum_t2str(xed_operand_rw(op)));
+ //    V3_Print("Operand 0 mode: %s\n", xed_operand_action_enum_t2str(xed_operand_rw(op)));
  
  
        if (xed_operand_read(op)) {
            }
        }
  
-       V3_Print("Operand 1 mode: %s\n", xed_operand_action_enum_t2str(xed_operand_rw(op)));
+ //    V3_Print("Operand 1 mode: %s\n", xed_operand_action_enum_t2str(xed_operand_rw(op)));
  
        if (xed_operand_read(op)) {
            v3_op->read = 1;
  
            instr->third_operand.type = REG_OPERAND;
  
 -          PrintDebug("Operand 3 mode: %s\n", xed_operand_action_enum_t2str(xed_operand_rw(op)));
 +          PrintDebug("Operand 2 mode: %s\n", xed_operand_action_enum_t2str(xed_operand_rw(op)));
  
  
            if (xed_operand_read(op)) {
@@@ -1283,10 -1270,6 +1283,10 @@@ static v3_op_type_t get_opcode(xed_ifor
        case XED_IFORM_INVLPG_MEMb:
            return V3_OP_INVLPG;
  
 +    // KCH
 +    case XED_IFORM_INT_IMM:
 +        return V3_OP_INT;
 +
  
            /* Data Instructions */