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-ppc-devel

[XenPPC] [xenppc-unstable] [IA64] Add ptc.l emulation

To: xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
Subject: [XenPPC] [xenppc-unstable] [IA64] Add ptc.l emulation
From: Xen patchbot-xenppc-unstable <patchbot-xenppc-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 02 Jun 2006 17:56:17 +0000
Delivery-date: Fri, 02 Jun 2006 10:58:01 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-ppc-devel-request@lists.xensource.com?subject=help>
List-id: Xen PPC development <xen-ppc-devel.lists.xensource.com>
List-post: <mailto:xen-ppc-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ppc-devel>, <mailto:xen-ppc-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ppc-devel>, <mailto:xen-ppc-devel-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-ppc-devel-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID 29d31af10e57c275e112236cd7d9a12440e4856a
# Parent  83c0449db67ac3c9b5e04c91ed042a0629ff48d8
[IA64] Add ptc.l emulation

This patch adds support for ptc.l emulation for xenlinux. 
In 2.6.16 kernel it flush_tlb_range will call global_tlb_purge 
directly, so ptc.l shouldn't be used when CONFIG_SMP enable.
But in order to enhance performance (maybe), 2.6.17 kernel in 
smp environment will do mm check first. If mm is current->active_mm 
and the mm (corresponding process) just runs on the local processor, 
kernel only needs to do ptc.l at local processor instead of global purge. 
So ptc.l emulation is necessary for 2.6.17 kernel.
 
Signed-off-by: Kevin Tian <kevin.tian@xxxxxxxxx>
Signed-off-by: Zhang Xiantao <xiantao.zhang@xxxxxxxxx>
---
 xen/arch/ia64/xen/privop.c  |    8 ++++----
 xen/arch/ia64/xen/vcpu.c    |   17 +++++++++++------
 xen/include/asm-ia64/vcpu.h |    2 +-
 3 files changed, 16 insertions(+), 11 deletions(-)

diff -r 83c0449db67a -r 29d31af10e57 xen/arch/ia64/xen/privop.c
--- a/xen/arch/ia64/xen/privop.c        Tue May 23 17:05:27 2006 -0600
+++ b/xen/arch/ia64/xen/privop.c        Wed May 24 08:48:21 2006 -0600
@@ -129,10 +129,10 @@ IA64FAULT priv_ptc_l(VCPU *vcpu, INST64 
 IA64FAULT priv_ptc_l(VCPU *vcpu, INST64 inst)
 {
        UINT64 vadr = vcpu_get_gr(vcpu,inst.M45.r3);
-       UINT64 addr_range;
-
-       addr_range = 1 << ((vcpu_get_gr(vcpu,inst.M45.r2) & 0xfc) >> 2);
-       return vcpu_ptc_l(vcpu,vadr,addr_range);
+       UINT64 log_range;
+
+       log_range = ((vcpu_get_gr(vcpu,inst.M45.r2) & 0xfc) >> 2);
+       return vcpu_ptc_l(vcpu,vadr,log_range);
 }
 
 IA64FAULT priv_ptc_e(VCPU *vcpu, INST64 inst)
diff -r 83c0449db67a -r 29d31af10e57 xen/arch/ia64/xen/vcpu.c
--- a/xen/arch/ia64/xen/vcpu.c  Tue May 23 17:05:27 2006 -0600
+++ b/xen/arch/ia64/xen/vcpu.c  Wed May 24 08:48:21 2006 -0600
@@ -1848,12 +1848,17 @@ IA64FAULT vcpu_itc_i(VCPU *vcpu, UINT64 
        return IA64_NO_FAULT;
 }
 
-IA64FAULT vcpu_ptc_l(VCPU *vcpu, UINT64 vadr, UINT64 addr_range)
-{
-       printk("vcpu_ptc_l: called, not implemented yet\n");
-       return IA64_ILLOP_FAULT;
-}
-
+IA64FAULT vcpu_ptc_l(VCPU *vcpu, UINT64 vadr, UINT64 log_range)
+{
+       /* Purge TC  */
+       vcpu_purge_tr_entry(&PSCBX(vcpu,dtlb));
+       vcpu_purge_tr_entry(&PSCBX(vcpu,itlb));
+       
+       /*Purge all tlb and vhpt*/
+       vcpu_flush_tlb_vhpt_range (vadr, log_range);
+
+       return IA64_NO_FAULT;
+}
 // At privlvl=0, fc performs no access rights or protection key checks, while
 // at privlvl!=0, fc performs access rights checks as if it were a 1-byte
 // read but no protection key check.  Thus in order to avoid an unexpected
diff -r 83c0449db67a -r 29d31af10e57 xen/include/asm-ia64/vcpu.h
--- a/xen/include/asm-ia64/vcpu.h       Tue May 23 17:05:27 2006 -0600
+++ b/xen/include/asm-ia64/vcpu.h       Wed May 24 08:48:21 2006 -0600
@@ -145,7 +145,7 @@ extern IA64FAULT vcpu_itr_i(VCPU *vcpu, 
                UINT64 itir, UINT64 ifa);
 extern IA64FAULT vcpu_itc_d(VCPU *vcpu, UINT64 padr, UINT64 itir, UINT64 ifa);
 extern IA64FAULT vcpu_itc_i(VCPU *vcpu, UINT64 padr, UINT64 itir, UINT64 ifa);
-extern IA64FAULT vcpu_ptc_l(VCPU *vcpu, UINT64 vadr, UINT64 addr_range);
+extern IA64FAULT vcpu_ptc_l(VCPU *vcpu, UINT64 vadr, UINT64 log_range);
 extern IA64FAULT vcpu_ptc_e(VCPU *vcpu, UINT64 vadr);
 extern IA64FAULT vcpu_ptc_g(VCPU *vcpu, UINT64 vadr, UINT64 addr_range);
 extern IA64FAULT vcpu_ptc_ga(VCPU *vcpu, UINT64 vadr, UINT64 addr_range);

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

<Prev in Thread] Current Thread [Next in Thread>
  • [XenPPC] [xenppc-unstable] [IA64] Add ptc.l emulation, Xen patchbot-xenppc-unstable <=