ia64/xen-unstable

changeset 16177:98ac6d05aed2

[IA64] Enable switch to PHY_D mmu mode

Last patch for PHY_D mmu mode

Signed-off-by: Tristan Gingold <tgingold@free.fr>
author Alex Williamson <alex.williamson@hp.com>
date Sun Oct 21 15:58:00 2007 -0600 (2007-10-21)
parents da8e527d20bd
children 7e69ca25c278
files xen/arch/ia64/vmx/optvfault.S xen/arch/ia64/vmx/vmx_phy_mode.c
line diff
     1.1 --- a/xen/arch/ia64/vmx/optvfault.S	Sun Oct 21 15:56:36 2007 -0600
     1.2 +++ b/xen/arch/ia64/vmx/optvfault.S	Sun Oct 21 15:58:00 2007 -0600
     1.3 @@ -209,9 +209,9 @@ GLOBAL_ENTRY(vmx_asm_rsm)
     1.4      tbit.z.or p6,p0=r26,IA64_PSR_DT_BIT
     1.5      (p6) br.dptk vmx_resume_to_guest  // DT not cleared or already in phy mode
     1.6      ;;
     1.7 -    // Switch to meta physical mode.
     1.8 -    add r26=IA64_VCPU_META_RID_DT_OFFSET,r21
     1.9 -    mov r23=VMX_MMU_PHY_DT
    1.10 +    // Switch to meta physical mode D.
    1.11 +    add r26=IA64_VCPU_META_RID_D_OFFSET,r21
    1.12 +    mov r23=VMX_MMU_PHY_D
    1.13      ;;
    1.14      ld8 r26=[r26]
    1.15      st1 [r22]=r23 
    1.16 @@ -338,10 +338,10 @@ vmx_asm_mov_to_psr_back:
    1.17      cmp.eq p6,p7=r28,r27 // (new_vpsr & (dt+rt+it)) == (dt+rt+it)
    1.18      (p5) br.many vmx_asm_mov_to_psr_1 // no change
    1.19      ;;
    1.20 -    //virtual to physical
    1.21 -    (p7) add r26=IA64_VCPU_META_RID_DT_OFFSET,r21
    1.22 -    (p7) add r27=IA64_VCPU_META_RID_DT_OFFSET,r21
    1.23 -    (p7) mov r23=VMX_MMU_PHY_DT
    1.24 +    //virtual to physical D
    1.25 +    (p7) add r26=IA64_VCPU_META_RID_D_OFFSET,r21
    1.26 +    (p7) add r27=IA64_VCPU_META_RID_D_OFFSET,r21
    1.27 +    (p7) mov r23=VMX_MMU_PHY_D
    1.28      ;;
    1.29      //physical to virtual
    1.30      (p6) add r26=IA64_VCPU_META_SAVED_RR0_OFFSET,r21
     2.1 --- a/xen/arch/ia64/vmx/vmx_phy_mode.c	Sun Oct 21 15:56:36 2007 -0600
     2.2 +++ b/xen/arch/ia64/vmx/vmx_phy_mode.c	Sun Oct 21 15:58:00 2007 -0600
     2.3 @@ -235,10 +235,13 @@ switch_mm_mode(VCPU *vcpu, IA64_PSR old_
     2.4      perfc_incra(vmx_switch_mm_mode, act);
     2.5      switch (act) {
     2.6      case SW_V2P_DT:
     2.7 +        vcpu->arch.arch_vmx.mmu_mode = VMX_MMU_PHY_DT;
     2.8 +        switch_to_physical_rid(vcpu);
     2.9 +        break;
    2.10      case SW_V2P_D:
    2.11 -//        printk("V -> P mode transition: (0x%lx -> 0x%lx)\n",
    2.12 +//        printk("V -> P_D mode transition: (0x%lx -> 0x%lx)\n",
    2.13  //               old_psr.val, new_psr.val);
    2.14 -        vcpu->arch.arch_vmx.mmu_mode = VMX_MMU_PHY_DT;
    2.15 +        vcpu->arch.arch_vmx.mmu_mode = VMX_MMU_PHY_D;
    2.16          switch_to_physical_rid(vcpu);
    2.17          break;
    2.18      case SW_P2V: