[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86: add hypercall to query current underlying pCPU's frequency
My guess is that Jan would like to export this via sysfs, and hence doesn't legitimately have access to domctl/sysctl. I don't agree with the overall motivation though. I prefer this 'lspm' utility and also integration with xentrace. -- Keir On 22/9/08 03:26, "Tian, Kevin" <kevin.tian@xxxxxxxxx> wrote: > Guanqun will make out a simple dom0 utility to the list > by utilizing sysctl this week. maybe call it 'lspm'. > > Thanks, > Kevin > >> From: Keir Fraser >> Sent: 2008年9月20日 16:34 >> >> I still consider this not a useful or informative operation. >> >> -- Keir >> >> On 19/9/08 14:10, "Jan Beulich" <jbeulich@xxxxxxxxxx> wrote: >> >>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx> >>> >>> Index: 2008-09-19/xen/arch/x86/platform_hypercall.c >>> =================================================================== >>> --- 2008-09-19.orig/xen/arch/x86/platform_hypercall.c 2008-09-19 >>> 14:12:02.000000000 +0200 >>> +++ 2008-09-19/xen/arch/x86/platform_hypercall.c 2008-09-19 >> 14:12:56.000000000 >>> +0200 >>> @@ -21,7 +21,7 @@ >>> #include <xen/acpi.h> >>> #include <asm/current.h> >>> #include <public/platform.h> >>> -#include <acpi/cpufreq/processor_perf.h> >>> +#include <acpi/cpufreq/cpufreq.h> >>> #include <asm/edd.h> >>> #include <asm/mtrr.h> >>> #include "cpu/mtrr/mtrr.h" >>> @@ -55,6 +55,7 @@ static long cpu_frequency_change_helper( >>> ret_t do_platform_op(XEN_GUEST_HANDLE(xen_platform_op_t) u_xenpf_op) >>> { >>> ret_t ret = 0; >>> + struct vcpu *v; >>> struct xen_platform_op curop, *op = &curop; >>> >>> if ( !IS_PRIV(current->domain) ) >>> @@ -312,7 +313,6 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xe >>> { >>> uint32_t cpu; >>> uint64_t idletime, now = NOW(); >>> - struct vcpu *v; >>> struct xenctl_cpumap ctlmap; >>> cpumask_t cpumap; >>> XEN_GUEST_HANDLE(uint8) cpumap_bitmap; >>> @@ -482,6 +482,20 @@ ret_t do_platform_op(XEN_GUEST_HANDLE(xe >>> break; >>> } >>> break; >>> + >>> + case XENPF_get_cpu_freq: >>> + if ( op->u.get_cpu_freq.vcpu >= MAX_VIRT_CPUS || >>> + !(v = current->domain->vcpu[op->u.get_cpu_freq.vcpu]) ) >>> + { >>> + ret = -EINVAL; >>> + break; >>> + } >>> + >>> + op->u.get_cpu_freq.freq = cpufreq_cpu_policy[v->processor] ? >>> + cpufreq_cpu_policy[v->processor]->cur : 0; >>> + if ( copy_field_to_guest(u_xenpf_op, op, >> u.get_cpu_freq.freq) ) >>> + ret = -EFAULT; >>> + break; >>> >>> default: >>> ret = -ENOSYS; >>> Index: 2008-09-19/xen/arch/x86/x86_64/platform_hypercall.c >>> =================================================================== >>> --- 2008-09-19.orig/xen/arch/x86/x86_64/platform_hypercall.c >> 2008-09-19 >>> 14:12:02.000000000 +0200 >>> +++ 2008-09-19/xen/arch/x86/x86_64/platform_hypercall.c 2008-09-19 >>> 13:59:35.000000000 +0200 >>> @@ -21,6 +21,8 @@ DEFINE_XEN_GUEST_HANDLE(compat_platform_ >>> #define xen_processor_power_t compat_processor_power_t >>> #define set_cx_pminfo compat_set_cx_pminfo >>> >>> +#define xenpf_get_cpu_freq compat_pf_get_cpu_freq >>> + >>> #define xenpf_enter_acpi_sleep compat_pf_enter_acpi_sleep >>> >>> #define COMPAT >>> Index: 2008-09-19/xen/include/public/platform.h >>> =================================================================== >>> --- 2008-09-19.orig/xen/include/public/platform.h 2008-09-19 >>> 14:12:02.000000000 +0200 >>> +++ 2008-09-19/xen/include/public/platform.h 2008-09-19 >> 13:59:35.000000000 >>> +0200 >>> @@ -312,6 +312,16 @@ struct xenpf_set_processor_pminfo { >>> typedef struct xenpf_set_processor_pminfo >> xenpf_set_processor_pminfo_t; >>> DEFINE_XEN_GUEST_HANDLE(xenpf_set_processor_pminfo_t); >>> >>> +#define XENPF_get_cpu_freq 55 >>> +struct xenpf_get_cpu_freq { >>> + /* IN variables */ >>> + uint32_t vcpu; >>> + /* OUT variables */ >>> + uint32_t freq; /* in kHz */ >>> +}; >>> +typedef struct xenpf_get_cpu_freq xenpf_get_cpu_freq_t; >>> +DEFINE_XEN_GUEST_HANDLE(xenpf_get_cpu_freq_t); >>> + >>> struct xen_platform_op { >>> uint32_t cmd; >>> uint32_t interface_version; /* XENPF_INTERFACE_VERSION */ >>> @@ -327,6 +337,7 @@ struct xen_platform_op { >>> struct xenpf_change_freq change_freq; >>> struct xenpf_getidletime getidletime; >>> struct xenpf_set_processor_pminfo set_pminfo; >>> + struct xenpf_get_cpu_freq get_cpu_freq; >>> uint8_t pad[128]; >>> } u; >>> }; >>> >>> >>> >>> >>> _______________________________________________ >>> Xen-devel mailing list >>> Xen-devel@xxxxxxxxxxxxxxxxxxx >>> http://lists.xensource.com/xen-devel >> >> >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@xxxxxxxxxxxxxxxxxxx >> http://lists.xensource.com/xen-devel >> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |