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

[Xen-ia64-devel] PATCH: PAL_VM_SUMMARY and PAL_VM_INFO


Hi,

this patch implements PAL_VM_SUMMARY and PAL_VM_INFO using Xen parameters.

Tested by boot+halt of dom0+domU and read of /proc/pal/cpu0/vm_info.

Tristan.
# HG changeset patch
# User tristan.gingold@xxxxxxxx
# Node ID 0a93b24399b4e1acc26f576703734c52d220890f
# Parent  7b272e8de8289517da9e7bb477118545d6014c4d
xen_pal_emulator: implements VM_SUMMARY and VM_INFO.

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

diff -r 7b272e8de828 -r 0a93b24399b4 xen/arch/ia64/xen/dom_fw.c
--- a/xen/arch/ia64/xen/dom_fw.c	Thu Apr  6 04:51:55 2006
+++ b/xen/arch/ia64/xen/dom_fw.c	Thu Apr  6 06:57:02 2006
@@ -200,7 +200,7 @@
 	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,53 @@
 		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,
+				   .max_unique_tcs = 2,
+				   .num_tc_levels = 1}};
+			const pal_vm_info_2_u_t v2 =
+				{ .pal_vm_info_2_s = { .impl_va_msb = 50,
+						       .rid_size = 18,
+						       .reserved = 0 }};
+			r9 = v1.pvi1_val;
+			r10 = v2.pvi2_val;
+			status = PAL_STATUS_SUCCESS;
+		}
+		break;
+	    case PAL_VM_INFO:
+		if (in1 != 0 || in2 == 0 || in2 > 2) {
+			/* There is only one level.  */
+			status = PAL_STATUS_EINVAL;
+		}
+		else {
+			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;
+		}
 		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 +325,7 @@
 				while(1)
 				printk("xen_pal_emulator: PAL_PERF_MON_INFO "
 					"can't copy to user!!!!\n");
-				status = -1;
+				status = PAL_STATUS_UNIMPLEMENTED;
 				break;
 			}
 		}
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel


This mailing list archive is a service of Copilotco.