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

[Xen-changelog] Fix PAL_PTCE_INFO and cpuid (pfmon now works)



# HG changeset patch
# User djm@xxxxxxxxxxxxxxx
# Node ID d4ecbd89d954f34271f80fca2be6982fa3d08b21
# Parent  a87242c444173c9b5e7d77ab09864395bd9c34cb

Fix PAL_PTCE_INFO and cpuid (pfmon now works)

diff -r a87242c44417 -r d4ecbd89d954 xen/arch/ia64/vcpu.c
--- a/xen/arch/ia64/vcpu.c      Wed Jul 13 13:43:49 2005
+++ b/xen/arch/ia64/vcpu.c      Wed Jul 13 20:12:00 2005
@@ -1499,20 +1499,24 @@
        // if reg > 3
        switch(reg) {
            case 0:
+               memcpy(pval,"Xen/ia64",8);
+               break;
            case 1:
-               memcpy(pval,"Xen/ia64",8);
+               *pval = 0;
                break;
            case 2:
                *pval = 0;
                break;
            case 3:
-               *pval = 0;  //FIXME: See vol1, 3.1.11
+               *pval = ia64_get_cpuid(3);
                break;
            case 4:
-               *pval = 1;  //FIXME: See vol1, 3.1.11
+               *pval = ia64_get_cpuid(4);
                break;
            default:
-               *pval = 0;  //FIXME: See vol1, 3.1.11
+               if (reg > (ia64_get_cpuid(3) & 0xff))
+                       return IA64_RSVDREG_FAULT;
+               *pval = ia64_get_cpuid(reg);
                break;
        }
        return (IA64_NO_FAULT);
diff -r a87242c44417 -r d4ecbd89d954 xen/arch/ia64/dom_fw.c
--- a/xen/arch/ia64/dom_fw.c    Wed Jul 13 13:43:49 2005
+++ b/xen/arch/ia64/dom_fw.c    Wed Jul 13 20:12:00 2005
@@ -313,7 +313,14 @@
                status = ia64_pal_freq_ratios(&r9,&r10,&r11);
                break;
            case PAL_PTCE_INFO:
-               status = ia64_get_ptce(&r9);
+               {
+                       ia64_ptce_info_t ptce;
+                       status = ia64_get_ptce(&ptce);
+                       if (status != 0) break;
+                       r9 = ptce.base;
+                       r10 = (ptce.count[0]<<32)|(ptce.count[1]&0xffffffffL);
+                       r11 = (ptce.stride[0]<<32)|(ptce.stride[1]&0xffffffffL);
+               }
                break;
            case PAL_VERSION:
                status = ia64_pal_version(&r9,&r10);
@@ -340,18 +347,30 @@
                status = ia64_pal_register_info(in1,&r9,&r10);
                break;
            case PAL_CACHE_FLUSH:
-               return pal_emulator_static(index); /* FIXME */
+               /* FIXME */
+               printk("PAL_CACHE_FLUSH NOT IMPLEMENTED!\n");
+               BUG();
                break;
            case PAL_PERF_MON_INFO:
                {
                        unsigned long pm_buffer[16];
+                       int i;
                        status = ia64_pal_perf_mon_info(pm_buffer,&r9);
-                       if (status != 0) break;
+                       if (status != 0) {
+                               while(1)
+                               printk("PAL_PERF_MON_INFO fails 
ret=%d\n",status);
+                               break;
+                       }
                        if (copy_to_user((void __user *)in1,pm_buffer,128)) {
+                               while(1)
                                printk("xen_pal_emulator: PAL_PERF_MON_INFO "
                                        "can't copy to user!!!!\n");
                                status = -1;
+                               break;
                        }
+                       printk("PAL_PERF_MON_INFO succeeds! r9=%lx\n",r9);
+                       for (i=0; i<16;i++)
+                       printk("pm_buffer[i]=%lx\n",pm_buffer[i]);
                }
                break;
            case PAL_CACHE_INFO:
@@ -364,8 +383,10 @@
                }
                break;
            case PAL_VM_TR_READ:        /* FIXME: vcpu_get_tr?? */
+               printk("PAL_VM_TR_READ NOT IMPLEMENTED, IGNORED!\n");
                break;
            case PAL_HALT_INFO:         /* inappropriate info for guest? */
+               printk("PAL_HALT_INFO NOT IMPLEMENTED, IGNORED!\n");
                break;
            default:
                printk("xen_pal_emulator: UNIMPLEMENTED PAL CALL %d!!!!\n",

_______________________________________________
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®.