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

RE: [Xen-ia64-devel][Patch]Add two PAL calls whichfixSMPwindowsinstallation crashing bug



On Mon, 2007-04-02 at 14:47 +0800, Xu, Anthony wrote:
> Hi Alex,
> 
> We did some experiments on this.
> We found when installing windows on madison with 4 processors, only 2 
> processors are running inside linux OS,
> the other two are idling inside SAL, it is same with VTI-domain applying 
> kouya's patch.
> That means windows doesn't support SMP installation on madison.
> Yes providing SCST processor for VTI-domain or domU is good for overall 
> performance, especially for process schedule.
> And we don't have SCST Montecito, we donât know how to emulate Monticito's 
> SCST information.
> 
> We still want to emulate DCST Montecito, as we know, Dual Core impact 
> perfomance very little.
> 
> If you agree, please check in this patch.
> 
> And we will send out emulating SAL_PHYSICAL_ID_INFO patch ASAP,
> 
> This SAL call is used to identity host bus controller.
> At current stage of xen, we only support one host bus controller.
> That means this SAL call will return a hardcode value.

Hi Anthony,

   I've been experimenting too.  I found a system with a single core
Montecito and extracted the return from PAL_LOGICAL_TO_PHYSICAL.  It
does something like shown in code below.  I can't quite figure out why
it reports 3 for log_overview.num_log, but that's what it does.  With
this patch, I can install win2003 as a 2-way guest.  If I add more CPUs
it panics.  After I install, I can configure it up to an 8-way guest.
More than that, and it panics in a very similar way to the installer
panic.  However a Linux guest will go up to 16 vCPUs, maybe more.

   I would guess that I'm probably using an "Enterprise Edition" license
for my installation, which only supports up to 8 processors.  It seems
like the way it's handling the extra CPUs beyond 8 in the post-install
case is the same thing it's doing with extra CPUs beyond 2 during the
install in your testing.  This suggests to me that maybe it's not the
dual-core vs single-core that's really causing problems, but something
windows does with "extra" CPUs that we aren't emulating.  Thanks,

        Alex


diff -r fc9e2f7920c9 xen/arch/ia64/xen/fw_emul.c
--- a/xen/arch/ia64/xen/fw_emul.c       Fri Mar 30 17:18:42 2007 -0600
+++ b/xen/arch/ia64/xen/fw_emul.c       Mon Apr 02 13:30:39 2007 -0600
@@ -367,6 +367,9 @@ sal_emulator (long index, unsigned long 
                        status = 0;
                }
                break;
+           case SAL_PHYSICAL_ID_INFO:
+               r9 = 0;
+               break;
            case SAL_CACHE_INIT:
                printk("*** CALLED SAL_CACHE_INIT.  IGNORED...\n");
                break;
@@ -468,6 +471,7 @@ remote_pal_cache_flush(void *v)
                args->status = status;
 }
 
+
 struct ia64_pal_retval
 xen_pal_emulator(unsigned long index, u64 in1, u64 in2, u64 in3)
 {
@@ -486,6 +490,25 @@ xen_pal_emulator(unsigned long index, u6
        // at every context switch
        //efi_map_pal_code();
        switch (index) {
+           case PAL_LOGICAL_TO_PHYSICAL:
+               if (in1 > 2) {
+                       status = PAL_STATUS_EINVAL;
+                       break;
+               }
+
+               status = 0;
+
+               // Single Core, no threads
+               r9 = ((unsigned long)current->vcpu_id << 48) | 0x100010003;
+               r10 = (in1 == 2) ? 1 : 0;
+               r11 = current->vcpu_id;
+               break;
+           case PAL_FIXED_ADDR:
+               status = 0;
+               r9 = current->vcpu_id;
+               r10 = 0;
+               r11 = 0;
+               break;
            case PAL_MEM_ATTRIB:
                status = ia64_pal_mem_attrib(&r9);
                break;
@@ -744,9 +767,6 @@ xen_pal_emulator(unsigned long index, u6
                if (VMX_DOMAIN(current))
                        status = PAL_STATUS_SUCCESS;
                break;
-           case PAL_LOGICAL_TO_PHYSICAL:
-               /* Optional, no need to complain about being unimplemented */
-               break;
            default:
                printk("xen_pal_emulator: UNIMPLEMENTED PAL CALL %lu!!!!\n",
                                index);



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


 


Rackspace

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