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

[Xen-changelog] [IA64] VM_SUMMARY and VM_INFO

# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID 918ce6a565b7c0d386e4d47c0b4f42d5bd18d180
# Parent  cae4f6e6deab3a75c7f580c1884767ddca0ab7c8
[IA64] VM_SUMMARY and VM_INFO

xen_pal_emulator: implements VM_SUMMARY and VM_INFO.

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

diff -r cae4f6e6deab -r 918ce6a565b7 xen/arch/ia64/xen/dom_fw.c
--- a/xen/arch/ia64/xen/dom_fw.c        Thu Apr 13 14:52:07 2006 -0600
+++ b/xen/arch/ia64/xen/dom_fw.c        Thu Apr 13 14:57:13 2006 -0600
@@ -200,7 +200,7 @@ xen_pal_emulator(unsigned long index, u6
        unsigned long r9  = 0;
        unsigned long r10 = 0;
        unsigned long r11 = 0;
-       long status = -1;
+       long status = PAL_STATUS_UNIMPLEMENTED;
 
        if (running_on_sim)
                return pal_emulator_static(index);
@@ -254,24 +254,83 @@ xen_pal_emulator(unsigned long index, u6
                status = ia64_pal_cache_summary(&r9,&r10);
                break;
            case PAL_VM_SUMMARY:
-               // FIXME: what should xen return for these, figure out later
-               // For now, linux does the right thing if pal call fails
-               // In particular, rid_size must be set properly!
-               //status = ia64_pal_vm_summary(
-               //              (pal_vm_info_1_u_t *) &r9,
-               //              (pal_vm_info_2_u_t *) &r10);
+               {
+                       /* Use xen-specific values.
+                          hash_tag_id is somewhat random! */
+                       const pal_vm_info_1_u_t v1 =
+                               {.pal_vm_info_1_s =
+                                { .vw = 1,
+                                  .phys_add_size = 44,
+                                  .key_size = 16,
+                                  .max_pkr = 15,
+                                  .hash_tag_id = 0x30,
+                                  .max_dtr_entry = NDTRS - 1,
+                                  .max_itr_entry = NITRS - 1,
+#ifdef VHPT_GLOBAL
+                                  .max_unique_tcs = 3,
+                                  .num_tc_levels = 2
+#else
+                                  .max_unique_tcs = 2,
+                                  .num_tc_levels = 1
+#endif
+                                }};
+                       const pal_vm_info_2_u_t v2 =
+                               { .pal_vm_info_2_s =
+                                 { .impl_va_msb = 50,
+                                   .rid_size = current->domain->arch.rid_bits,
+                                   .reserved = 0 }};
+                       r9 = v1.pvi1_val;
+                       r10 = v2.pvi2_val;
+                       status = PAL_STATUS_SUCCESS;
+               }
+               break;
+           case PAL_VM_INFO:
+#ifdef VHPT_GLOBAL
+               if (in1 == 0 && in2 == 2) {
+                       /* Level 1: VHPT  */
+                       const pal_tc_info_u_t v =
+                               { .pal_tc_info_s = {.num_sets = 128,
+                                                   .associativity = 1,
+                                                   .num_entries = 128,
+                                                   .pf = 1,
+                                                   .unified = 1,
+                                                   .reduce_tr = 0,
+                                                   .reserved = 0}};
+                       r9 = v.pti_val;
+                       /* Only support PAGE_SIZE tc.  */
+                       r10 = PAGE_SIZE;
+                       status = PAL_STATUS_SUCCESS;
+               }
+#endif
+               else if (
+#ifdef VHPT_GLOBAL 
+                       in1 == 1 /* Level 2. */
+#else
+                       in1 == 0 /* Level 1. */
+#endif
+                        && (in2 == 1 || in2 == 2))
+               {
+                       /* itlb/dtlb, 1 entry.  */
+                       const pal_tc_info_u_t v =
+                               { .pal_tc_info_s = {.num_sets = 1,
+                                                   .associativity = 1,
+                                                   .num_entries = 1,
+                                                   .pf = 1,
+                                                   .unified = 0,
+                                                   .reduce_tr = 0,
+                                                   .reserved = 0}};
+                       r9 = v.pti_val;
+                       /* Only support PAGE_SIZE tc.  */
+                       r10 = PAGE_SIZE;
+                       status = PAL_STATUS_SUCCESS;
+               }
+               else
+                       status = PAL_STATUS_EINVAL;
                break;
            case PAL_RSE_INFO:
                status = ia64_pal_rse_info(
                                &r9,
                                (pal_hints_u_t *) &r10);
-               break;
-           case PAL_VM_INFO:
-               status = ia64_pal_vm_info(
-                               in1,
-                               in2,
-                               (pal_tc_info_u_t *) &r9,
-                               &r10);
                break;
            case PAL_REGISTER_INFO:
                status = ia64_pal_register_info(in1, &r9, &r10);
@@ -296,7 +355,7 @@ xen_pal_emulator(unsigned long index, u6
                                while(1)
                                printk("xen_pal_emulator: PAL_PERF_MON_INFO "
                                        "can't copy to user!!!!\n");
-                               status = -1;
+                               status = PAL_STATUS_UNIMPLEMENTED;
                                break;
                        }
                }

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [IA64] VM_SUMMARY and VM_INFO, Xen patchbot -unstable <=