[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [IA64] smp boot speed-up (sal cache flush, itc/itv messages)



# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID d23c088eac6dcc79c8319775bfe51c3e12103702
# Parent  63af1c14fa18fe5ce7a6dd76bbd69d80aec6ae98
[IA64] smp boot speed-up (sal cache flush, itc/itv messages)

Use sal_cache_flush to emulate SAL_CACHE_FLUSH instead of fc.
Only prints one vcpu_set_itc message, do not print set itv message.

Signed-off-by: Tristan Gingold <tristan.gingold@xxxxxxxx>

diff -r 63af1c14fa18 -r d23c088eac6d xen/arch/ia64/xen/dom_fw.c
--- a/xen/arch/ia64/xen/dom_fw.c        Tue Apr 25 22:30:07 2006 -0600
+++ b/xen/arch/ia64/xen/dom_fw.c        Tue Apr 25 22:32:14 2006 -0600
@@ -222,9 +222,18 @@ sal_emulator (long index, unsigned long 
                printf("*** CALLED SAL_MC_SET_PARAMS.  IGNORED...\n");
                break;
            case SAL_CACHE_FLUSH:
-               /*  The best we can do is to flush with fc all the domain.  */
-               domain_cache_flush (current->domain, in1 == 4 ? 1 : 0);
-               status = 0;
+               if (1) {
+                       /*  Flush using SAL.
+                           This method is faster but has a side effect on
+                           other vcpu running on this cpu.  */
+                       status = ia64_sal_cache_flush (in1);
+               }
+               else {
+                       /*  Flush with fc all the domain.
+                           This method is slower but has no side effects.  */
+                       domain_cache_flush (current->domain, in1 == 4 ? 1 : 0);
+                       status = 0;
+               }
                break;
            case SAL_CACHE_INIT:
                printf("*** CALLED SAL_CACHE_INIT.  IGNORED...\n");
diff -r 63af1c14fa18 -r d23c088eac6d xen/arch/ia64/xen/vcpu.c
--- a/xen/arch/ia64/xen/vcpu.c  Tue Apr 25 22:30:07 2006 -0600
+++ b/xen/arch/ia64/xen/vcpu.c  Tue Apr 25 22:32:14 2006 -0600
@@ -965,13 +965,12 @@ IA64FAULT vcpu_set_lrr1(VCPU *vcpu, UINT
 
 IA64FAULT vcpu_set_itv(VCPU *vcpu, UINT64 val)
 {
-//extern unsigned long privop_trace;
-//privop_trace=1;
-       if (val & 0xef00) return (IA64_ILLOP_FAULT);
+       /* Check reserved fields.  */
+       if (val & 0xef00)
+               return (IA64_ILLOP_FAULT);
        PSCB(vcpu,itv) = val;
        if (val & 0x10000) {
-               printf("**** vcpu_set_itv(%lu): vitm=%lx, setting to 0\n",
-                      val,PSCBX(vcpu,domain_itm));
+               /* Disable itm.  */
                PSCBX(vcpu,domain_itm) = 0;
        }
        else vcpu_set_next_timer(vcpu);
@@ -1091,7 +1090,12 @@ IA64FAULT vcpu_set_itc(VCPU *vcpu, UINT6
 {
 #define DISALLOW_SETTING_ITC_FOR_NOW
 #ifdef DISALLOW_SETTING_ITC_FOR_NOW
-printf("vcpu_set_itc: Setting ar.itc is currently disabled\n");
+       static int did_print;
+       if (!did_print) {
+               printf("vcpu_set_itc: Setting ar.itc is currently disabled\n");
+               printf("(this message is only displayed one)\n");
+               did_print = 1;
+       }
 #else
        UINT64 oldnow = ia64_get_itc();
        UINT64 olditm = PSCBX(vcpu,domain_itm);

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.