WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] Remove all CONFIG_VTI, VTI now works dynamically

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Remove all CONFIG_VTI, VTI now works dynamically
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 22 Sep 2005 20:02:21 +0000
Delivery-date: Thu, 22 Sep 2005 20:02:16 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User djm@xxxxxxxxxxxxxxx
# Node ID babbdd896024460e365332c0656706283a26f75a
# Parent  d2f2c1c26995d909f26c2ce821beff16294e74ad
Remove all CONFIG_VTI, VTI now works dynamically
1.remove vcpu_set_regs and element regs,which are never used
2.remove ia64_prepare_handle_privop,ia64_prepare_handle_break, 
ia64_prepare_handle_reflection, which are never used.
3.modify related macros for adapting to three level physical to machine table
4.remove all CONFIG_VIT
5.merge ia64_switch_to

Signed-off-by Anthony Xu <Anthony.xu@xxxxxxxxx>

diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/Makefile
--- a/xen/arch/ia64/Makefile    Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/Makefile    Thu Sep 22 12:59:57 2005
@@ -12,15 +12,10 @@
        irq_ia64.o irq_lsapic.o vhpt.o xenasm.o hyperprivop.o dom_fw.o \
        grant_table.o sn_console.o
 
-# TMP holder to contain *.0 moved out of CONFIG_VTI
-OBJS += vmx_init.o
-
-ifeq ($(CONFIG_VTI),y)
-OBJS += vmx_virt.o vmx_vcpu.o vmx_process.o vmx_vsa.o vmx_ivt.o\
+OBJS += vmx_init.o vmx_virt.o vmx_vcpu.o vmx_process.o vmx_vsa.o vmx_ivt.o\
        vmx_phy_mode.o vmx_utility.o vmx_interrupt.o vmx_entry.o vmmu.o \
        vtlb.o mmio.o vlsapic.o vmx_hypercall.o mm.o vmx_support.o \
        pal_emul.o vmx_irq_ia64.o
-endif
 
 # lib files from xen/arch/ia64/linux/ (linux/arch/ia64/lib)
 OBJS +=        bitop.o clear_page.o flush.o copy_page_mck.o                    
\
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/Rules.mk
--- a/xen/arch/ia64/Rules.mk    Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/Rules.mk    Thu Sep 22 12:59:57 2005
@@ -1,7 +1,7 @@
 ########################################
 # ia64-specific definitions
 
-CONFIG_VTI     ?= n
+VALIDATE_VT    ?= n
 ifneq ($(COMPILE_ARCH),$(TARGET_ARCH))
 CROSS_COMPILE ?= /usr/local/sp_env/v2.2.5/i686/bin/ia64-unknown-linux-
 endif
@@ -27,7 +27,7 @@
 CFLAGS  += -DIA64 -DXEN -DLINUX_2_6
 CFLAGS += -ffixed-r13 -mfixed-range=f12-f15,f32-f127
 CFLAGS += -w -g
-ifeq ($(CONFIG_VTI),y)
-CFLAGS  += -DCONFIG_VTI
+ifeq ($(VALIDATE_VT),y)
+CFLAGS  += -DVALIDATE_VT
 endif
 LDFLAGS := -g
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/asm-offsets.c
--- a/xen/arch/ia64/asm-offsets.c       Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/asm-offsets.c       Thu Sep 22 12:59:57 2005
@@ -9,10 +9,8 @@
 #include <asm/processor.h>
 #include <asm/ptrace.h>
 #include <public/xen.h>
-#ifdef CONFIG_VTI
 #include <asm/tlb.h>
 #include <asm/regs.h>
-#endif // CONFIG_VTI
 
 #define task_struct vcpu
 
@@ -222,14 +220,12 @@
 
        BLANK();
 
-#ifdef  CONFIG_VTI
        DEFINE(IA64_VPD_BASE_OFFSET, offsetof (struct vcpu, arch.privregs));
        DEFINE(IA64_VLSAPIC_INSVC_BASE_OFFSET, offsetof (struct vcpu, 
arch.insvc[0]));
        DEFINE(IA64_VPD_CR_VPTA_OFFSET, offsetof (cr_t, pta));
        DEFINE(XXX_THASH_SIZE, sizeof (thash_data_t));
 
        BLANK();
-#endif  //CONFIG_VTI
        //DEFINE(IA64_SIGCONTEXT_IP_OFFSET, offsetof (struct sigcontext, 
sc_ip));
        //DEFINE(IA64_SIGCONTEXT_AR_BSP_OFFSET, offsetof (struct sigcontext, 
sc_ar_bsp));
        //DEFINE(IA64_SIGCONTEXT_AR_FPSR_OFFSET, offsetof (struct sigcontext, 
sc_ar_fpsr));
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/asm-xsi-offsets.c
--- a/xen/arch/ia64/asm-xsi-offsets.c   Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/asm-xsi-offsets.c   Thu Sep 22 12:59:57 2005
@@ -32,10 +32,8 @@
 #include <asm/processor.h>
 #include <asm/ptrace.h>
 #include <public/xen.h>
-#ifdef CONFIG_VTI
 #include <asm/tlb.h>
 #include <asm/regs.h>
-#endif // CONFIG_VTI
 
 #define task_struct vcpu
 
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/linux-xen/entry.S
--- a/xen/arch/ia64/linux-xen/entry.S   Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/linux-xen/entry.S   Thu Sep 22 12:59:57 2005
@@ -223,9 +223,20 @@
 #else
        mov IA64_KR(CURRENT)=in0        // update "current" application register
 #endif
+#ifdef XEN          //for VTI domain current is save to 21 of bank0
+    ;;
+    bsw.0
+    ;;
        mov r8=r13                      // return pointer to previously running 
task
        mov r13=in0                     // set "current" pointer
-       ;;
+    mov r21=in0
+    ;;
+    bsw.1
+       ;;
+#else
+    mov r8=r13          // return pointer to previously running task
+    mov r13=in0         // set "current" pointer
+#endif
        DO_LOAD_SWITCH_STACK
 
 #ifdef CONFIG_SMP
@@ -632,12 +643,14 @@
 #ifdef XEN
        // new domains are cloned but not exec'ed so switch to user mode here
        cmp.ne pKStk,pUStk=r0,r0
-#ifdef CONFIG_VTI
-    br.cond.spnt ia64_leave_hypervisor
-#else // CONFIG_VTI
-    br.cond.spnt ia64_leave_kernel
-#endif // CONFIG_VTI
-
+    adds r16 = IA64_VCPU_FLAGS_OFFSET, r13
+    ;;
+    ld8 r16 = [r16]
+    ;;
+    cmp.ne p6,p7 = r16, r0
+ (p6) br.cond.spnt ia64_leave_hypervisor
+ (p7) br.cond.spnt ia64_leave_kernel
+    ;;
 //    adds r16 = IA64_VCPU_FLAGS_OFFSET, r13
 //    ;;
 //    ld8 r16 = [r16]
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/linux-xen/head.S
--- a/xen/arch/ia64/linux-xen/head.S    Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/linux-xen/head.S    Thu Sep 22 12:59:57 2005
@@ -259,7 +259,7 @@
        /*
         * Switch into virtual mode:
         */
-#if defined(XEN) && defined(CONFIG_VTI)
+#if defined(XEN) && defined(VALIDATE_VT)
        movl r16=(IA64_PSR_IT|IA64_PSR_IC|IA64_PSR_DT|IA64_PSR_RT|IA64_PSR_DFH\
                  |IA64_PSR_DI)
 #else
@@ -284,7 +284,7 @@
        ;;
 
        // set IVT entry point---can't access I/O ports without it
-#if defined(XEN) && defined(CONFIG_VTI)
+#if defined(XEN) && defined(VALIDATE_VT)
        movl r3=vmx_ia64_ivt
 #else
        movl r3=ia64_ivt
@@ -356,7 +356,7 @@
 
 .load_current:
        // load the "current" pointer (r13) and ar.k6 with the current task
-#if defined(XEN) && defined(CONFIG_VTI)
+#if defined(XEN) && defined(VALIDATE_VT)
        mov r21=r2
        ;;
        bsw.1
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/linux-xen/unaligned.c
--- a/xen/arch/ia64/linux-xen/unaligned.c       Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/linux-xen/unaligned.c       Thu Sep 22 12:59:57 2005
@@ -201,12 +201,11 @@
 
        RPT(r1), RPT(r2), RPT(r3),
 
-//#if defined(XEN) && defined(CONFIG_VTI)
 #if defined(XEN)
        RPT(r4), RPT(r5), RPT(r6), RPT(r7),
-#else   //CONFIG_VTI
+#else
        RSW(r4), RSW(r5), RSW(r6), RSW(r7),
-#endif  //CONFIG_VTI
+#endif
 
        RPT(r8), RPT(r9), RPT(r10), RPT(r11),
        RPT(r12), RPT(r13), RPT(r14), RPT(r15),
@@ -296,7 +295,6 @@
        return reg;
 }
 
-//#if defined(XEN) && defined(CONFIG_VTI)
 #if defined(XEN)
 void
 set_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long val, 
unsigned long nat)
@@ -414,7 +412,7 @@
     }
 }
 
-#else // CONFIG_VTI
+#else
 static void
 set_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long val, int 
nat)
 {
@@ -559,7 +557,7 @@
                *nat = 0;
        return;
 }
-#endif // CONFIG_VTI
+#endif
 
 
 #ifdef XEN
@@ -595,11 +593,11 @@
                unat = &sw->ar_unat;
        } else {
                addr = (unsigned long)regs;
-#if defined(XEN) && defined(CONFIG_VTI)
+#if defined(XEN)
                unat = &regs->eml_unat;
-#else //CONFIG_VTI
+#else
                unat = &sw->caller_unat;
-#endif  //CONFIG_VTI
+#endif
        }
        DPRINT("tmp_base=%lx switch_stack=%s offset=%d\n",
               addr, unat==&sw->ar_unat ? "yes":"no", GR_OFFS(regnum));
@@ -785,11 +783,11 @@
                unat = &sw->ar_unat;
        } else {
                addr = (unsigned long)regs;
-#if defined(XEN) && defined(CONFIG_VTI)
+#if defined(XEN)
                unat = &regs->eml_unat;;
-#else   //CONFIG_VTI
+#else
                unat = &sw->caller_unat;
-#endif  //CONFIG_VTI
+#endif
        }
 
        DPRINT("addr_base=%lx offset=0x%x\n", addr,  GR_OFFS(regnum));
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/vmx/mm.c
--- a/xen/arch/ia64/vmx/mm.c    Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/vmx/mm.c    Thu Sep 22 12:59:57 2005
@@ -100,8 +100,7 @@
         uregs->ptr is virtual address
         uregs->val is pte value
  */
-#ifdef CONFIG_VTI
-int do_mmu_update(mmu_update_t *ureqs,u64 count,u64 *pdone,u64 foreigndom)
+int vmx_do_mmu_update(mmu_update_t *ureqs,u64 count,u64 *pdone,u64 foreigndom)
 {
     int i,cmd;
     u64 mfn, gpfn;
@@ -149,4 +148,3 @@
     }
     return 0;
 }
-#endif
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/vmx/vmmu.c
--- a/xen/arch/ia64/vmx/vmmu.c  Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/vmx/vmmu.c  Thu Sep 22 12:59:57 2005
@@ -220,6 +220,7 @@
  * by control panel. Dom0 has gpfn identical to mfn, which doesn't need
  * this interface at all.
  */
+#if 0
 void
 alloc_pmt(struct domain *d)
 {
@@ -234,7 +235,7 @@
     d->arch.pmt = page_to_virt(page);
     memset(d->arch.pmt, 0x55, d->max_pages * 8);
 }
-
+#endif
 /*
  * Insert guest TLB to machine TLB.
  *  data:   In TLB format
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/vmx/vmx_hypercall.c
--- a/xen/arch/ia64/vmx/vmx_hypercall.c Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/vmx/vmx_hypercall.c Thu Sep 22 12:59:57 2005
@@ -47,11 +47,13 @@
     vcpu_get_gr_nat(vcpu,17,&r33);
     vcpu_get_gr_nat(vcpu,18,&r34);
     vcpu_get_gr_nat(vcpu,19,&r35);
-    ret=do_mmu_update((mmu_update_t*)r32,r33,r34,r35);
-    vcpu_set_gr(vcpu, 8, ret, 0);
-    vmx_vcpu_increment_iip(vcpu);
-}
-
+    ret=vmx_do_mmu_update((mmu_update_t*)r32,r33,r34,r35);
+    vcpu_set_gr(vcpu, 8, ret, 0);
+    vmx_vcpu_increment_iip(vcpu);
+}
+/* turn off temporarily, we will merge hypercall parameter convention with 
xeno, when
+    VTI domain need to call hypercall */
+#if 0
 unsigned long __hypercall_create_continuation(
     unsigned int op, unsigned int nr_args, ...)
 {
@@ -87,7 +89,7 @@
     va_end(args);
     return op;
 }
-
+#endif
 void hyper_dom_mem_op(void)
 {
     VCPU *vcpu=current;
@@ -184,14 +186,13 @@
 
 static int do_set_shared_page(VCPU *vcpu, u64 gpa)
 {
-    u64 shared_info, o_info;
+    u64 o_info;
     struct domain *d = vcpu->domain;
     struct vcpu *v;
     if(vcpu->domain!=dom0)
         return -EPERM;
-    shared_info = __gpa_to_mpa(vcpu->domain, gpa);
     o_info = (u64)vcpu->domain->shared_info;
-    d->shared_info= (shared_info_t *)__va(shared_info);
+    d->shared_info= (shared_info_t *)domain_mpa_to_imva(vcpu->domain, gpa);
 
     /* Copy existing shared info into new page */
     if (o_info) {
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/vmx/vmx_init.c
--- a/xen/arch/ia64/vmx/vmx_init.c      Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/vmx/vmx_init.c      Thu Sep 22 12:59:57 2005
@@ -163,7 +163,8 @@
        }
 
        /* FIXME: only support PMT table continuously by far */
-       d->arch.pmt = __va(c->pt_base);
+//     d->arch.pmt = __va(c->pt_base);
+
 
        vmx_final_setup_domain(d);
 }
@@ -209,7 +210,6 @@
 }
 
 
-#ifdef CONFIG_VTI
 /*
  * Create a VP on intialized VMX environment.
  */
@@ -333,7 +333,6 @@
                                  pte_xen, pte_vhpt);
 }
 #endif // XEN_DBL_MAPPING
-#endif // CONFIG_VTI
 
 /*
  * Initialize VMX envirenment for guest. Only the 1st vp/vcpu
@@ -355,7 +354,11 @@
     v->arch.privregs = vpd;
        vpd->virt_env_vaddr = vm_buffer;
 
-#ifdef CONFIG_VTI
+       /* Per-domain vTLB and vhpt implementation. Now vmx domain will stick
+        * to this solution. Maybe it can be deferred until we know created
+        * one as vmx domain */
+       v->arch.vtlb = init_domain_tlb(v);
+
        /* v->arch.schedule_tail = arch_vmx_do_launch; */
        vmx_create_vp(v);
 
@@ -369,7 +372,6 @@
 
        vlsapic_reset(v);
        vtm_init(v);
-#endif
 
        /* Other vmx specific initialization work */
 }
@@ -483,7 +485,7 @@
            for (j = io_ranges[i].start;
                 j < io_ranges[i].start + io_ranges[i].size;
                 j += PAGE_SIZE)
-               map_domain_io_page(d, j);
+               map_domain_page(d, j, io_ranges[i].type);
        }
 
        set_bit(ARCH_VMX_CONTIG_MEM, &v->arch.arch_vmx.flags);
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/vmx/vmx_irq_ia64.c
--- a/xen/arch/ia64/vmx/vmx_irq_ia64.c  Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/vmx/vmx_irq_ia64.c  Thu Sep 22 12:59:57 2005
@@ -36,7 +36,6 @@
 
 #define IRQ_DEBUG      0
 
-#ifdef  CONFIG_VTI
 #define vmx_irq_enter()                \
        add_preempt_count(HARDIRQ_OFFSET);
 
@@ -130,4 +129,3 @@
        if ( wake_dom0 && current != dom0 ) 
                vcpu_wake(dom0->vcpu[0]);
 }
-#endif
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/vmx/vmx_process.c
--- a/xen/arch/ia64/vmx/vmx_process.c   Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/vmx/vmx_process.c   Thu Sep 22 12:59:57 2005
@@ -314,11 +314,12 @@
 //    prepare_if_physical_mode(v);
 
     if(data=vtlb_lookup_ex(vtlb, vrr.rid, vadr,type)){
-        if(v->domain!=dom0&&type==DSIDE_TLB && __gpfn_is_io(v->domain, 
data->ppn>>(PAGE_SHIFT-12))){
+        if(v->domain!=dom0&&type==DSIDE_TLB && 
__gpfn_is_io(v->domain,data->ppn>>(PAGE_SHIFT-12))){
             
vadr=(vadr&((1UL<<data->ps)-1))+(data->ppn>>(data->ps-12)<<data->ps);
             emulate_io_inst(v, vadr, data->ma);
             return IA64_FAULT;
         }
+
        if ( data->ps != vrr.ps ) {
                machine_tlb_insert(v, data);
        }
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/xen/domain.c
--- a/xen/arch/ia64/xen/domain.c        Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/xen/domain.c        Thu Sep 22 12:59:57 2005
@@ -7,7 +7,7 @@
  *  Copyright (C) 2005 Intel Co
  *     Kun Tian (Kevin Tian) <kevin.tian@xxxxxxxxx>
  *
- * 05/04/29 Kun Tian (Kevin Tian) <kevin.tian@xxxxxxxxx> Add CONFIG_VTI domain 
support
+ * 05/04/29 Kun Tian (Kevin Tian) <kevin.tian@xxxxxxxxx> Add VTI domain support
  */
 
 #include <xen/config.h>
@@ -203,13 +203,6 @@
        v->vcpu_info = &(d->shared_info->vcpu_data[0]);
 
        d->max_pages = (128UL*1024*1024)/PAGE_SIZE; // 128MB default // FIXME
-
-#ifdef CONFIG_VTI
-       /* Per-domain vTLB and vhpt implementation. Now vmx domain will stick
-        * to this solution. Maybe it can be deferred until we know created
-        * one as vmx domain */
-       v->arch.vtlb = init_domain_tlb(v);
-#endif
 
        /* We may also need emulation rid for region4, though it's unlikely
         * to see guest issue uncacheable access in metaphysical mode. But
@@ -361,7 +354,6 @@
        regs->ar_fpsr = FPSR_DEFAULT;
 
        if (VMX_DOMAIN(v)) {
-#ifdef CONFIG_VTI
                vmx_init_all_rr(v);
                if (d == dom0)
 //                 VCPU(v,vgr[12]) = dom_fw_setup(d,saved_command_line,256L);
@@ -369,7 +361,6 @@
                /* Virtual processor context setup */
                VCPU(v, vpsr) = IA64_PSR_BN;
                VCPU(v, dcr) = 0;
-#endif
        } else {
                init_all_rr(v);
                if (d == dom0) 
@@ -480,7 +471,7 @@
        }
        else printk("map_domain_page: mpaddr %lx already mapped!\n",mpaddr);
 }
-
+#if 0
 /* map a physical address with specified I/O flag */
 void map_domain_io_page(struct domain *d, unsigned long mpaddr, unsigned long 
flags)
 {
@@ -517,7 +508,7 @@
        }
        else printk("map_domain_page: mpaddr %lx already mapped!\n",mpaddr);
 }
-
+#endif
 void mpafoo(unsigned long mpaddr)
 {
        extern unsigned long privop_trace;
@@ -571,7 +562,7 @@
 }
 
 // FIXME: ONLY USE FOR DOMAIN PAGE_SIZE == PAGE_SIZE
-#ifndef CONFIG_VTI
+#if 1
 unsigned long domain_mpa_to_imva(struct domain *d, unsigned long mpaddr)
 {
        unsigned long pte = lookup_domain_mpa(d,mpaddr);
@@ -582,14 +573,14 @@
        imva |= mpaddr & ~PAGE_MASK;
        return(imva);
 }
-#else // CONFIG_VTI
+#else
 unsigned long domain_mpa_to_imva(struct domain *d, unsigned long mpaddr)
 {
     unsigned long imva = __gpa_to_mpa(d, mpaddr);
 
     return __va(imva);
 }
-#endif // CONFIG_VTI
+#endif
 
 // remove following line if not privifying in memory
 //#define HAVE_PRIVIFY_MEMORY
@@ -860,7 +851,7 @@
        if ( rc != 0 )
            return rc;
 
-#ifdef CONFIG_VTI
+#ifdef VALIDATE_VT
        /* Temp workaround */
        if (running_on_sim)
            dsi.xen_section_string = (char *)1;
@@ -920,7 +911,7 @@
        for ( i = 1; i < MAX_VIRT_CPUS; i++ )
            d->shared_info->vcpu_data[i].evtchn_upcall_mask = 1;
 
-#ifdef CONFIG_VTI
+#ifdef VALIDATE_VT 
        /* Construct a frame-allocation list for the initial domain, since these
         * pages are allocated by boot allocator and pfns are not set properly
         */
@@ -938,10 +929,6 @@
            machine_to_phys_mapping[mfn] = mfn;
        }
 
-       /* Dom0's pfn is equal to mfn, so there's no need to allocate pmt
-        * for dom0
-        */
-       d->arch.pmt = NULL;
 #endif
 
        /* Copy the OS image. */
@@ -1162,12 +1149,8 @@
 void sync_vcpu_execstate(struct vcpu *v)
 {
        ia64_save_fpu(v->arch._thread.fph);
-#ifdef CONFIG_VTI
        if (VMX_DOMAIN(v))
                vmx_save_state(v);
-#else
-       if (0) do {} while(0);
-#endif
        else {
                if (IA64_HAS_EXTRA_STATE(v))
                        ia64_save_extra(v);
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/xen/grant_table.c
--- a/xen/arch/ia64/xen/grant_table.c   Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/xen/grant_table.c   Thu Sep 22 12:59:57 2005
@@ -1,4 +1,3 @@
-#ifndef CONFIG_VTI
 // temporarily in arch/ia64 until can merge into common/grant_table.c
 /******************************************************************************
  * common/grant_table.c
@@ -1452,7 +1451,6 @@
 {
     /* Nothing. */
 }
-#endif
 
 /*
  * Local variables:
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/xen/hypercall.c
--- a/xen/arch/ia64/xen/hypercall.c     Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/xen/hypercall.c     Thu Sep 22 12:59:57 2005
@@ -178,11 +178,9 @@
                regs->r8 = do_event_channel_op(regs->r14);
                break;
 
-#ifndef CONFIG_VTI
            case __HYPERVISOR_grant_table_op:
                regs->r8 = do_grant_table_op(regs->r14, regs->r15, regs->r16);
                break;
-#endif
 
            case __HYPERVISOR_console_io:
                regs->r8 = do_console_io(regs->r14, regs->r15, regs->r16);
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/xen/privop.c
--- a/xen/arch/ia64/xen/privop.c        Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/xen/privop.c        Thu Sep 22 12:59:57 2005
@@ -726,7 +726,6 @@
                return IA64_ILLOP_FAULT;
        }
        //if (isrcode != 1 && isrcode != 2) return 0;
-       vcpu_set_regs(vcpu,regs);
        privlvl = (ipsr & IA64_PSR_CPL) >> IA64_PSR_CPL0_BIT;
        // its OK for a privified-cover to be executed in user-land
        fault = priv_handle_op(vcpu,regs,privlvl);
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/xen/process.c
--- a/xen/arch/ia64/xen/process.c       Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/xen/process.c       Thu Sep 22 12:59:57 2005
@@ -67,14 +67,14 @@
        unsigned long rr7;
        //printk("current=%lx,shared_info=%lx\n",current,current->vcpu_info);
        //printk("next=%lx,shared_info=%lx\n",next,next->vcpu_info);
-#ifdef CONFIG_VTI
        /* rr7 will be postponed to last point when resuming back to guest */
-       vmx_load_all_rr(current);
-#else // CONFIG_VTI
-       if (rr7 = load_region_regs(current)) {
-               printk("schedule_tail: change to rr7 not yet implemented\n");
-       }
-#endif // CONFIG_VTI
+    if(VMX_DOMAIN(current)){
+       vmx_load_all_rr(current);
+    }else{
+           if (rr7 = load_region_regs(current)) {
+                   printk("schedule_tail: change to rr7 not yet 
implemented\n");
+       }
+    }
 }
 
 void tdpfoo(void) { }
@@ -755,7 +755,7 @@
 {
     struct mc_state *mcs = &mc_state[smp_processor_id()];
     VCPU *vcpu = current;
-    struct cpu_user_regs *regs = vcpu->arch.regs;
+    struct cpu_user_regs *regs = vcpu_regs(vcpu);
     unsigned int i;
     va_list args;
 
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/xen/regionreg.c
--- a/xen/arch/ia64/xen/regionreg.c     Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/xen/regionreg.c     Thu Sep 22 12:59:57 2005
@@ -227,7 +227,7 @@
                return 0;
        }
 
-#ifdef CONFIG_VTI
+#if 0
        memrrv.rrval = rrv.rrval;
        if (rreg == 7) {
                newrrv.rid = newrid;
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/xen/vcpu.c
--- a/xen/arch/ia64/xen/vcpu.c  Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/xen/vcpu.c  Thu Sep 22 12:59:57 2005
@@ -1977,7 +1977,3 @@
        return (IA64_ILLOP_FAULT);
 }
 
-void vcpu_set_regs(VCPU *vcpu, REGS *regs)
-{
-       vcpu->arch.regs = regs;
-}
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/xen/xenmem.c
--- a/xen/arch/ia64/xen/xenmem.c        Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/xen/xenmem.c        Thu Sep 22 12:59:57 2005
@@ -28,17 +28,13 @@
 /*
  * Set up the page tables.
  */
-#ifdef CONFIG_VTI
 unsigned long *mpt_table;
 unsigned long mpt_table_size;
-#endif // CONFIG_VTI
 
 void
 paging_init (void)
 {
        struct pfn_info *pg;
-
-#ifdef CONFIG_VTI
        unsigned int mpt_order;
        /* Create machine to physical mapping table
         * NOTE: similar to frame table, later we may need virtually
@@ -53,8 +49,6 @@
 
        printk("machine to physical table: 0x%lx\n", (u64)mpt_table);
        memset(mpt_table, INVALID_M2P_ENTRY, mpt_table_size);
-#endif // CONFIG_VTI
-
        /* Other mapping setup */
 
        zero_page_memmap_ptr = virt_to_page(ia64_imva(empty_zero_page));
diff -r d2f2c1c26995 -r babbdd896024 xen/arch/ia64/xen/xenmisc.c
--- a/xen/arch/ia64/xen/xenmisc.c       Wed Sep 21 21:13:16 2005
+++ b/xen/arch/ia64/xen/xenmisc.c       Thu Sep 22 12:59:57 2005
@@ -65,7 +65,7 @@
 
 void sync_lazy_execstate_cpu(unsigned int cpu) {}
 
-#ifdef CONFIG_VTI
+#if 0
 int grant_table_create(struct domain *d) { return 0; }
 void grant_table_destroy(struct domain *d) { return; }
 #endif
@@ -77,7 +77,6 @@
        raise_softirq(AC_TIMER_SOFTIRQ);
 }
 
-#ifndef CONFIG_VTI
 unsigned long
 __gpfn_to_mfn_foreign(struct domain *d, unsigned long gpfn)
 {
@@ -93,7 +92,7 @@
                return ((pte & _PFN_MASK) >> PAGE_SHIFT);
        }
 }
-
+#if 0
 u32
 __mfn_to_gpfn(struct domain *d, unsigned long frame)
 {
@@ -288,14 +287,14 @@
 //if (prev->domain->domain_id == 1 && next->domain->domain_id == 0) cs10foo();
 //if (prev->domain->domain_id == 0 && next->domain->domain_id == 1) cs01foo();
 //printk("@@sw %d->%d\n",prev->domain->domain_id,next->domain->domain_id);
-#ifdef CONFIG_VTI
-       vtm_domain_out(prev);
-#endif
+    if(VMX_DOMAIN(prev)){
+       vtm_domain_out(prev);
+    }
        context_switch_count++;
        switch_to(prev,next,prev);
-#ifdef CONFIG_VTI
-        vtm_domain_in(current);
-#endif
+    if(VMX_DOMAIN(current)){
+        vtm_domain_in(current);
+    }
 
 // leave this debug for now: it acts as a heartbeat when more than
 // one domain is active
@@ -307,16 +306,15 @@
 if (!i--) { printk("+",id); i = 1000000; }
 }
 
-#ifdef CONFIG_VTI
-       if (VMX_DOMAIN(current))
+       if (VMX_DOMAIN(current)){
                vmx_load_all_rr(current);
-#else
-       if (!is_idle_task(current->domain)) {
-               load_region_regs(current);
-               if (vcpu_timer_expired(current)) vcpu_pend_timer(current);
-       }
-       if (vcpu_timer_expired(current)) vcpu_pend_timer(current);
-#endif
+    }else{
+       if (!is_idle_task(current->domain)) {
+               load_region_regs(current);
+                   if (vcpu_timer_expired(current)) vcpu_pend_timer(current);
+       }
+           if (vcpu_timer_expired(current)) vcpu_pend_timer(current);
+    }
 }
 
 void context_switch_finalise(struct vcpu *next)
diff -r d2f2c1c26995 -r babbdd896024 xen/include/asm-ia64/config.h
--- a/xen/include/asm-ia64/config.h     Wed Sep 21 21:13:16 2005
+++ b/xen/include/asm-ia64/config.h     Thu Sep 22 12:59:57 2005
@@ -199,11 +199,11 @@
      access_ok(type,addr,count*size))
 
 // see drivers/char/console.c
-#ifndef CONFIG_VTI
+#ifndef VALIDATE_VT
 #define        OPT_CONSOLE_STR "com1"
-#else // CONFIG_VTI
+#else
 #define        OPT_CONSOLE_STR "com2"
-#endif // CONFIG_VTI
+#endif
 
 #define __attribute_used__     __attribute__ ((unused))
 #define __nocast
diff -r d2f2c1c26995 -r babbdd896024 xen/include/asm-ia64/domain.h
--- a/xen/include/asm-ia64/domain.h     Wed Sep 21 21:13:16 2005
+++ b/xen/include/asm-ia64/domain.h     Thu Sep 22 12:59:57 2005
@@ -25,7 +25,6 @@
     int breakimm;
 
     int imp_va_msb;
-    unsigned long *pmt;        /* physical to machine table */
     /* System pages out of guest memory, like for xenstore/console */
     unsigned long sys_pgnr;
     unsigned long max_pfn; /* Max pfn including I/O holes */
@@ -62,7 +61,6 @@
        unsigned long xen_itm;
        unsigned long xen_timer_interval;
 #endif
-    void *regs;        /* temporary until find a better way to do privops */
     mapped_regs_t *privregs; /* save the state of vcpu */
     int metaphysical_rr0;              // from arch_domain (so is pinned)
     int metaphysical_rr4;              // from arch_domain (so is pinned)
diff -r d2f2c1c26995 -r babbdd896024 xen/include/asm-ia64/ia64_int.h
--- a/xen/include/asm-ia64/ia64_int.h   Wed Sep 21 21:13:16 2005
+++ b/xen/include/asm-ia64/ia64_int.h   Thu Sep 22 12:59:57 2005
@@ -45,7 +45,7 @@
 #define        IA64_DISIST_FAULT       (IA64_GENEX_VECTOR | 0x40)
 #define        IA64_ILLDEP_FAULT       (IA64_GENEX_VECTOR | 0x80)
 #define        IA64_DTLB_FAULT         (IA64_DATA_TLB_VECTOR)
-#define IA64_VHPT_FAULT     (IA64_VHPT_TRANS_VECTOR | 0x10)
+#define IA64_VHPT_FAULT     (IA64_VHPT_TRANS_VECTOR | 0x7)
 #if !defined(__ASSEMBLY__)
 typedef unsigned long IA64FAULT;
 typedef unsigned long IA64INTVECTOR;
diff -r d2f2c1c26995 -r babbdd896024 xen/include/asm-ia64/mm.h
--- a/xen/include/asm-ia64/mm.h Wed Sep 21 21:13:16 2005
+++ b/xen/include/asm-ia64/mm.h Thu Sep 22 12:59:57 2005
@@ -134,7 +134,7 @@
 
 static inline void put_page(struct pfn_info *page)
 {
-#ifdef CONFIG_VTI      // doesn't work with non-VTI in grant tables yet
+#ifdef VALIDATE_VT     // doesn't work with non-VTI in grant tables yet
     u32 nx, x, y = page->count_info;
 
     do {
@@ -152,7 +152,7 @@
 static inline int get_page(struct pfn_info *page,
                            struct domain *domain)
 {
-#ifdef CONFIG_VTI
+#ifdef VALIDATE_VT
     u64 x, nx, y = *((u64*)&page->count_info);
     u32 _domain = pickle_domptr(domain);
 
@@ -404,7 +404,6 @@
 extern unsigned long totalram_pages;
 extern int nr_swap_pages;
 
-#ifdef CONFIG_VTI
 extern unsigned long *mpt_table;
 #undef machine_to_phys_mapping
 #define machine_to_phys_mapping        mpt_table
@@ -415,34 +414,29 @@
 /* If pmt table is provided by control pannel later, we need __get_user
 * here. However if it's allocated by HV, we should access it directly
 */
-#define get_mfn_from_pfn(d, gpfn)                      \
-    ((d) == dom0 ? gpfn :                                      \
-       (gpfn <= d->arch.max_pfn ? (d)->arch.pmt[(gpfn)] :      \
-               INVALID_MFN))
 
 #define __mfn_to_gpfn(_d, mfn)                 \
     machine_to_phys_mapping[(mfn)]
 
 #define __gpfn_to_mfn(_d, gpfn)                        \
-    get_mfn_from_pfn((_d), (gpfn))
+    __gpfn_to_mfn_foreign((_d), (gpfn))
 
 #define __gpfn_invalid(_d, gpfn)                       \
-       (__gpfn_to_mfn((_d), (gpfn)) & GPFN_INV_MASK)
+       (lookup_domain_mpa((_d), ((gpfn)<<PAGE_SHIFT)) & GPFN_INV_MASK)
 
 #define __gpfn_valid(_d, gpfn) !__gpfn_invalid(_d, gpfn)
 
 /* Return I/O type if trye */
 #define __gpfn_is_io(_d, gpfn)                         \
        (__gpfn_valid(_d, gpfn) ?                       \
-       (__gpfn_to_mfn((_d), (gpfn)) & GPFN_IO_MASK) : 0)
+       (lookup_domain_mpa((_d), ((gpfn)<<PAGE_SHIFT)) & GPFN_IO_MASK) : 0)
 
 #define __gpfn_is_mem(_d, gpfn)                                \
        (__gpfn_valid(_d, gpfn) ?                       \
-       ((__gpfn_to_mfn((_d), (gpfn)) & GPFN_IO_MASK) == GPFN_MEM) : 0)
-
-
-#define __gpa_to_mpa(_d, gpa)   \
-    ((__gpfn_to_mfn((_d),(gpa)>>PAGE_SHIFT)<<PAGE_SHIFT)|((gpa)&~PAGE_MASK))
-#endif // CONFIG_VTI
+       (lookup_domain_mpa((_d), ((gpfn)<<PAGE_SHIFT) & GPFN_IO_MASK) == 
GPFN_MEM) : 0)
+
+
+//#define __gpa_to_mpa(_d, gpa)   \
+//    ((__gpfn_to_mfn((_d),(gpa)>>PAGE_SHIFT)<<PAGE_SHIFT)|((gpa)&~PAGE_MASK))
 
 #endif /* __ASM_IA64_MM_H__ */
diff -r d2f2c1c26995 -r babbdd896024 xen/include/asm-ia64/privop.h
--- a/xen/include/asm-ia64/privop.h     Wed Sep 21 21:13:16 2005
+++ b/xen/include/asm-ia64/privop.h     Thu Sep 22 12:59:57 2005
@@ -2,11 +2,8 @@
 #define _XEN_IA64_PRIVOP_H
 
 #include <asm/ia64_int.h>
-//#ifdef CONFIG_VTI
 #include <asm/vmx_vcpu.h>
-//#else //CONFIG_VTI
 #include <asm/vcpu.h>
-//#endif //CONFIG_VTI
 
 typedef unsigned long IA64_INST;
 
diff -r d2f2c1c26995 -r babbdd896024 xen/include/asm-ia64/vmx_vcpu.h
--- a/xen/include/asm-ia64/vmx_vcpu.h   Wed Sep 21 21:13:16 2005
+++ b/xen/include/asm-ia64/vmx_vcpu.h   Thu Sep 22 12:59:57 2005
@@ -62,7 +62,7 @@
 extern u64 set_isr_for_na_inst(VCPU *vcpu, int op);
 
 
-/* next all for CONFIG_VTI APIs definition */
+/* next all for VTI domain APIs definition */
 extern void vmx_vcpu_set_psr(VCPU *vcpu, unsigned long value);
 extern UINT64 vmx_vcpu_sync_mpsr(UINT64 mipsr, UINT64 value);
 extern void vmx_vcpu_set_psr_sync_mpsr(VCPU * vcpu, UINT64 value);
@@ -252,12 +252,9 @@
 vmx_vcpu_set_itm(VCPU *vcpu, u64 val)
 {
     vtime_t     *vtm;
-    
     vtm=&(vcpu->arch.arch_vmx.vtm);
     VCPU(vcpu,itm)=val;
-#ifdef CONFIG_VTI
     vtm_interruption_update(vcpu, vtm);
-#endif
     return IA64_NO_FAULT;
 }
 static inline
@@ -292,9 +289,7 @@
 IA64FAULT
 vmx_vcpu_set_eoi(VCPU *vcpu, u64 val)
 {
-#ifdef CONFIG_VTI
     guest_write_eoi(vcpu);
-#endif
     return IA64_NO_FAULT;
 }
 
@@ -304,9 +299,7 @@
 {
 
     VCPU(vcpu,itv)=val;
-#ifdef CONFIG_VTI
     vtm_set_itv(vcpu);
-#endif
     return IA64_NO_FAULT;
 }
 static inline
@@ -347,17 +340,13 @@
 static inline
 IA64FAULT vmx_vcpu_set_itc(VCPU *vcpu, UINT64 val)
 {
-#ifdef CONFIG_VTI
     vtm_set_itc(vcpu, val);
-#endif
     return  IA64_NO_FAULT;
 }
 static inline
 IA64FAULT vmx_vcpu_get_itc(VCPU *vcpu,UINT64 *val)
 {
-#ifdef CONFIG_VTI
     *val = vtm_get_itc(vcpu);
-#endif
     return  IA64_NO_FAULT;
 }
 static inline
diff -r d2f2c1c26995 -r babbdd896024 xen/include/asm-ia64/xensystem.h
--- a/xen/include/asm-ia64/xensystem.h  Wed Sep 21 21:13:16 2005
+++ b/xen/include/asm-ia64/xensystem.h  Thu Sep 22 12:59:57 2005
@@ -34,7 +34,7 @@
 #define IA64_HAS_EXTRA_STATE(t) 0
 
 #undef __switch_to
-#ifdef CONFIG_VTI
+#if     1
 extern struct task_struct *vmx_ia64_switch_to (void *next_task);
 #define __switch_to(prev,next,last) do {       \
        ia64_save_fpu(prev->arch._thread.fph);  \
@@ -51,10 +51,13 @@
                if (IA64_HAS_EXTRA_STATE(next)) \
                        ia64_save_extra(next);  \
        }                                       \
-       ia64_psr(ia64_task_regs(next))->dfh = !ia64_is_local_fpu_owner(next); \
-       (last) = vmx_ia64_switch_to((next));        \
+       /*ia64_psr(ia64_task_regs(next))->dfh = 
!ia64_is_local_fpu_owner(next);*/                        \
+       (last) = ia64_switch_to((next));        \
+       if (!VMX_DOMAIN(current)){                   \
+          vcpu_set_next_timer(current);                \
+       }                                       \
 } while (0)
-#else // CONFIG_VTI
+#else
 #define __switch_to(prev,next,last) do {                                       
                 \
        ia64_save_fpu(prev->arch._thread.fph);                                  
                \
        ia64_load_fpu(next->arch._thread.fph);                                  
                \
@@ -66,7 +69,7 @@
        (last) = ia64_switch_to((next));                                        
                 \
        vcpu_set_next_timer(current);                                           
                \
 } while (0)
-#endif // CONFIG_VTI
+#endif
 
 #undef switch_to
 // FIXME SMP... see system.h, does this need to be different?
diff -r d2f2c1c26995 -r babbdd896024 xen/include/public/arch-ia64.h
--- a/xen/include/public/arch-ia64.h    Wed Sep 21 21:13:16 2005
+++ b/xen/include/public/arch-ia64.h    Thu Sep 22 12:59:57 2005
@@ -232,13 +232,9 @@
                // FIXME: tmp[8] temp'ly being used for virtual psr.pp
          };
         };
-#if 0
-#ifdef CONFIG_VTI
        unsigned long           reserved6[3456];
        unsigned long           vmm_avail[128];
        unsigned long           reserved7[4096];
-#endif
-#endif
 } mapped_regs_t;
 
 typedef struct {

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Remove all CONFIG_VTI, VTI now works dynamically, Xen patchbot -unstable <=