[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [IA64] Implement some PAL procedures
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |