# 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
|