[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [IA64] Minimal long vhpt format support
# HG changeset patch # User Alex Williamson <alex.williamson@xxxxxx> # Date 1186942402 21600 # Node ID 54c721bb6d452d8eb97a151c847c9276868ae5c5 # Parent 82f5fbe59e264465397d757b70874f45dd8c2b6c [IA64] Minimal long vhpt format support Signed-off-by: Juergen Gross juergen.gross@xxxxxxxxxxxxxxxxxxx --- xen/arch/ia64/xen/hyperprivop.S | 10 +++++----- xen/arch/ia64/xen/vcpu.c | 16 +++++++--------- 2 files changed, 12 insertions(+), 14 deletions(-) diff -r 82f5fbe59e26 -r 54c721bb6d45 xen/arch/ia64/xen/hyperprivop.S --- a/xen/arch/ia64/xen/hyperprivop.S Sun Aug 12 12:06:43 2007 -0600 +++ b/xen/arch/ia64/xen/hyperprivop.S Sun Aug 12 12:13:22 2007 -0600 @@ -844,19 +844,19 @@ fast_tlb_no_tr_match: 1: // check the guest VHPT adds r19 = XSI_PTA_OFS-XSI_PSR_IC_OFS, r18;; - ld8 r19=[r19];; - tbit.nz p7,p0=r19,IA64_PTA_VF_BIT;; // long format VHPT -(p7) br.cond.spnt.few page_fault;; + ld8 r19=[r19] // if (!rr.ve || !(pta & IA64_PTA_VE)) take slow way for now // FIXME: later, we deliver an alt_d/i vector after thash and itir - tbit.z p7,p0=r19,IA64_PTA_VE_BIT -(p7) br.cond.spnt.few page_fault;; extr.u r25=r17,61,3 adds r21=XSI_RR0_OFS-XSI_PSR_IC_OFS,r18 ;; shl r25=r25,3;; add r21=r21,r25;; ld8 r22=[r21];; tbit.z p7,p0=r22,0 +(p7) br.cond.spnt.few page_fault;; + tbit.z p7,p0=r19,IA64_PTA_VE_BIT +(p7) br.cond.spnt.few page_fault;; + tbit.nz p7,p0=r19,IA64_PTA_VF_BIT // long format VHPT (p7) br.cond.spnt.few page_fault;; // compute and save away itir (r22 & RR_PS_MASK) diff -r 82f5fbe59e26 -r 54c721bb6d45 xen/arch/ia64/xen/vcpu.c --- a/xen/arch/ia64/xen/vcpu.c Sun Aug 12 12:06:43 2007 -0600 +++ b/xen/arch/ia64/xen/vcpu.c Sun Aug 12 12:13:22 2007 -0600 @@ -49,7 +49,6 @@ typedef union { #define IA64_PTA_SZ_BIT 2 #define IA64_PTA_VF_BIT 8 #define IA64_PTA_BASE_BIT 15 -#define IA64_PTA_LFMT (1UL << IA64_PTA_VF_BIT) #define IA64_PTA_SZ(x) (x##UL << IA64_PTA_SZ_BIT) #define IA64_PSR_NON_VIRT_BITS \ @@ -755,10 +754,6 @@ IA64FAULT vcpu_set_iva(VCPU * vcpu, u64 IA64FAULT vcpu_set_pta(VCPU * vcpu, u64 val) { - if (val & IA64_PTA_LFMT) { - printk("*** No support for VHPT long format yet!!\n"); - return IA64_ILLOP_FAULT; - } if (val & (0x3f << 9)) /* reserved fields */ return IA64_RSVDREG_FAULT; if (val & 2) /* reserved fields */ @@ -1753,10 +1748,6 @@ IA64FAULT vcpu_translate(VCPU * vcpu, u6 /* check guest VHPT */ pta = PSCB(vcpu, pta); - if (pta & IA64_PTA_VF) { /* long format VHPT - not implemented */ - panic_domain(vcpu_regs(vcpu), "can't do long format VHPT\n"); - //return is_data ? IA64_DATA_TLB_VECTOR:IA64_INST_TLB_VECTOR; - } *itir = rr & (RR_RID_MASK | RR_PS_MASK); // note: architecturally, iha is optionally set for alt faults but @@ -1778,6 +1769,13 @@ IA64FAULT vcpu_translate(VCPU * vcpu, u6 IA64_ALT_INST_TLB_VECTOR; } + if (pta & IA64_PTA_VF) { /* long format VHPT - not implemented */ + /* + * minimal support: vhpt walker is really dumb and won't find + * anything + */ + return is_data ? IA64_DATA_TLB_VECTOR : IA64_INST_TLB_VECTOR; + } /* avoid recursively walking (short format) VHPT */ if (((address ^ pta) & ((itir_mask(pta) << 3) >> 3)) == 0) return is_data ? IA64_DATA_TLB_VECTOR : IA64_INST_TLB_VECTOR; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |