# HG changeset patch
# User Alex Williamson <alex.williamson@xxxxxx>
# Date 1193929227 21600
# Node ID 41c1731c9125b74a10c8ddf2b7cf0549afb59959
# Parent b235b68a0f4f4438d0d11b07c92146aa103f37ee
[IA64] Implement some PAL procedures
This patch implements:
- PAL_PREFETCH_VISIBILITY
- PAL_MC_DRAIN
- PAL_BRAND_INFO
- PAL_GET_PSTATE
- PAL_CACHE_SHARED_INFO
These PAL procedures are necessary for Windows 2008.
Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx>
---
xen/arch/ia64/xen/fw_emul.c | 41 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 41 insertions(+)
diff -r b235b68a0f4f -r 41c1731c9125 xen/arch/ia64/xen/fw_emul.c
--- a/xen/arch/ia64/xen/fw_emul.c Thu Nov 01 08:55:01 2007 -0600
+++ b/xen/arch/ia64/xen/fw_emul.c Thu Nov 01 09:00:27 2007 -0600
@@ -587,6 +587,19 @@ remote_pal_cache_flush(void *v)
&progress, NULL);
if (status != 0)
args->status = status;
+}
+
+static void
+remote_pal_prefetch_visibility(void *v)
+{
+ s64 trans_type = (s64)v;
+ ia64_pal_prefetch_visibility(trans_type);
+}
+
+static void
+remote_pal_mc_drain(void *v)
+{
+ ia64_pal_mc_drain();
}
struct ia64_pal_retval
@@ -850,7 +863,35 @@ xen_pal_emulator(unsigned long index, u6
status = PAL_STATUS_SUCCESS;
r9 = current->vcpu_id;
break;
+ case PAL_PREFETCH_VISIBILITY:
+ status = ia64_pal_prefetch_visibility(in1);
+ if (status == 0) {
+ /* must be performed on all remote processors
+ in the coherence domain. */
+ smp_call_function(remote_pal_prefetch_visibility,
+ (void *)in1, 1, 1);
+ status = 1; /* no more necessary on remote processor */
+ }
+ break;
+ case PAL_MC_DRAIN:
+ status = ia64_pal_mc_drain();
+ /* FIXME: All vcpus likely call PAL_MC_DRAIN.
+ That causes the congestion. */
+ smp_call_function(remote_pal_mc_drain, NULL, 1, 1);
+ break;
+ case PAL_BRAND_INFO:
+ if (in1 == 0) {
+ char brand_info[128];
+ status = ia64_pal_get_brand_info(brand_info);
+ if (status == PAL_STATUS_SUCCESS)
+ copy_to_user((void *)in2, brand_info, 128);
+ } else {
+ status = PAL_STATUS_EINVAL;
+ }
+ break;
case PAL_LOGICAL_TO_PHYSICAL:
+ case PAL_GET_PSTATE:
+ case PAL_CACHE_SHARED_INFO:
/* Optional, no need to complain about being unimplemented */
break;
default:
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|