* [PATCH] x86: add hypercall to query current underlying pCPU's frequency
@ 2008-09-19 13:10 Jan Beulich
2008-09-20 8:34 ` Keir Fraser
0 siblings, 1 reply; 9+ messages in thread
From: Jan Beulich @ 2008-09-19 13:10 UTC (permalink / raw)
To: xen-devel
Signed-off-by: Jan Beulich <jbeulich@novell.com>
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;
};
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] x86: add hypercall to query current underlying pCPU's frequency
2008-09-19 13:10 [PATCH] x86: add hypercall to query current underlying pCPU's frequency Jan Beulich
@ 2008-09-20 8:34 ` Keir Fraser
2008-09-22 2:26 ` Tian, Kevin
2008-09-22 7:55 ` [PATCH] x86: add hypercall to query currentunderlying " Jan Beulich
0 siblings, 2 replies; 9+ messages in thread
From: Keir Fraser @ 2008-09-20 8:34 UTC (permalink / raw)
To: Jan Beulich, xen-devel
I still consider this not a useful or informative operation.
-- Keir
On 19/9/08 14:10, "Jan Beulich" <jbeulich@novell.com> wrote:
> Signed-off-by: Jan Beulich <jbeulich@novell.com>
>
> 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@lists.xensource.com
> http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* RE: [PATCH] x86: add hypercall to query current underlying pCPU's frequency
2008-09-20 8:34 ` Keir Fraser
@ 2008-09-22 2:26 ` Tian, Kevin
2008-09-22 7:04 ` Keir Fraser
2008-09-22 7:55 ` [PATCH] x86: add hypercall to query currentunderlying " Jan Beulich
1 sibling, 1 reply; 9+ messages in thread
From: Tian, Kevin @ 2008-09-22 2:26 UTC (permalink / raw)
To: 'Keir Fraser', Jan Beulich, xen-devel@lists.xensource.com
Cc: Lu, Guanqun
[-- Attachment #1: Type: text/plain, Size: 4610 bytes --]
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@novell.com> wrote:
>
>> Signed-off-by: Jan Beulich <jbeulich@novell.com>
>>
>> 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@lists.xensource.com
>> http://lists.xensource.com/xen-devel
>
>
>
>_______________________________________________
>Xen-devel mailing list
>Xen-devel@lists.xensource.com
>http://lists.xensource.com/xen-devel
>
[-- Attachment #2: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] x86: add hypercall to query current underlying pCPU's frequency
2008-09-22 2:26 ` Tian, Kevin
@ 2008-09-22 7:04 ` Keir Fraser
2008-09-22 7:18 ` Tian, Kevin
0 siblings, 1 reply; 9+ messages in thread
From: Keir Fraser @ 2008-09-22 7:04 UTC (permalink / raw)
To: Tian, Kevin, Jan Beulich, xen-devel@lists.xensource.com; +Cc: Lu, Guanqun
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@intel.com> 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@novell.com> wrote:
>>
>>> Signed-off-by: Jan Beulich <jbeulich@novell.com>
>>>
>>> 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@lists.xensource.com
>>> http://lists.xensource.com/xen-devel
>>
>>
>>
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@lists.xensource.com
>> http://lists.xensource.com/xen-devel
>>
^ permalink raw reply [flat|nested] 9+ messages in thread
* RE: [PATCH] x86: add hypercall to query current underlying pCPU's frequency
2008-09-22 7:04 ` Keir Fraser
@ 2008-09-22 7:18 ` Tian, Kevin
0 siblings, 0 replies; 9+ messages in thread
From: Tian, Kevin @ 2008-09-22 7:18 UTC (permalink / raw)
To: 'Keir Fraser', Jan Beulich, xen-devel@lists.xensource.com
Cc: Lu, Guanqun
[-- Attachment #1: Type: text/plain, Size: 5546 bytes --]
1st version would be a simple dump to hypercall content, with
some proper calculations added. This at least gives people
immediate chance for a summary. Later we'll then extend to
xentrace.
Thanks,
Kevin
>From: Keir Fraser [mailto:keir.fraser@eu.citrix.com]
>Sent: 2008年9月22日 15:05
>
>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@intel.com> 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@novell.com> wrote:
>>>
>>>> Signed-off-by: Jan Beulich <jbeulich@novell.com>
>>>>
>>>> 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@lists.xensource.com
>>>> http://lists.xensource.com/xen-devel
>>>
>>>
>>>
>>> _______________________________________________
>>> Xen-devel mailing list
>>> Xen-devel@lists.xensource.com
>>> http://lists.xensource.com/xen-devel
>>>
>
>
>
[-- Attachment #2: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] x86: add hypercall to query currentunderlying pCPU's frequency
2008-09-20 8:34 ` Keir Fraser
2008-09-22 2:26 ` Tian, Kevin
@ 2008-09-22 7:55 ` Jan Beulich
2008-09-22 8:47 ` Keir Fraser
1 sibling, 1 reply; 9+ messages in thread
From: Jan Beulich @ 2008-09-22 7:55 UTC (permalink / raw)
To: Keir Fraser; +Cc: xen-devel
Okay, in that case I'll have to raise a general infra-structural question: If
I'm convinced I/we want something like this for ease of use and consistency
with the native kernel, how would I (generally) add (sub-)hypercalls to
our Xen flavors without risking to ever collide with upstream? I'd consider
something like using (reserving) the number space starting with e.g. ASCII
'NW' (a traditional Novell prefix) in the upper 16 bits, but of course I'd
want to have formal insurance that this range would actually remain
reserved forever within each (sub-)hypercall ranges (and whatever else
may use [pseudo-]enumerated values).
Another alternative would obviously be to simply once again use an
enumeration of interested parties, who would then have a certain number
range globally (across all other [pseudo-]enumerations) reserved for their
purposes, i.e. with the upper so-many bits set to that 'vendor' enumerator.
Jan
>>> Keir Fraser <keir.fraser@eu.citrix.com> 20.09.08 10:34 >>>
I still consider this not a useful or informative operation.
-- Keir
On 19/9/08 14:10, "Jan Beulich" <jbeulich@novell.com> wrote:
> Signed-off-by: Jan Beulich <jbeulich@novell.com>
>
> 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@lists.xensource.com
> http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] x86: add hypercall to query currentunderlying pCPU's frequency
2008-09-22 7:55 ` [PATCH] x86: add hypercall to query currentunderlying " Jan Beulich
@ 2008-09-22 8:47 ` Keir Fraser
2008-09-22 9:18 ` [PATCH] x86: add hypercall to querycurrentunderlying " Jan Beulich
0 siblings, 1 reply; 9+ messages in thread
From: Keir Fraser @ 2008-09-22 8:47 UTC (permalink / raw)
To: Jan Beulich; +Cc: xen-devel
Well, I'm not personally against this, if used sensibly, but it sounds the
sort of thing the Advisory Board would have to be asked about, since it
could be considered to promote forking of the hypervisor interfaces.
-- Keir
On 22/9/08 08:55, "Jan Beulich" <jbeulich@novell.com> wrote:
> Okay, in that case I'll have to raise a general infra-structural question: If
> I'm convinced I/we want something like this for ease of use and consistency
> with the native kernel, how would I (generally) add (sub-)hypercalls to
> our Xen flavors without risking to ever collide with upstream? I'd consider
> something like using (reserving) the number space starting with e.g. ASCII
> 'NW' (a traditional Novell prefix) in the upper 16 bits, but of course I'd
> want to have formal insurance that this range would actually remain
> reserved forever within each (sub-)hypercall ranges (and whatever else
> may use [pseudo-]enumerated values).
>
> Another alternative would obviously be to simply once again use an
> enumeration of interested parties, who would then have a certain number
> range globally (across all other [pseudo-]enumerations) reserved for their
> purposes, i.e. with the upper so-many bits set to that 'vendor' enumerator.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] x86: add hypercall to querycurrentunderlying pCPU's frequency
2008-09-22 8:47 ` Keir Fraser
@ 2008-09-22 9:18 ` Jan Beulich
2008-09-22 9:24 ` Keir Fraser
0 siblings, 1 reply; 9+ messages in thread
From: Jan Beulich @ 2008-09-22 9:18 UTC (permalink / raw)
To: Keir Fraser; +Cc: xen-devel
What/who is the Advisory Board, and how would I forward the question to it/them? Jan
>>> Keir Fraser <keir.fraser@eu.citrix.com> 22.09.08 10:47 >>>
Well, I'm not personally against this, if used sensibly, but it sounds the
sort of thing the Advisory Board would have to be asked about, since it
could be considered to promote forking of the hypervisor interfaces.
-- Keir
On 22/9/08 08:55, "Jan Beulich" <jbeulich@novell.com> wrote:
> Okay, in that case I'll have to raise a general infra-structural question: If
> I'm convinced I/we want something like this for ease of use and consistency
> with the native kernel, how would I (generally) add (sub-)hypercalls to
> our Xen flavors without risking to ever collide with upstream? I'd consider
> something like using (reserving) the number space starting with e.g. ASCII
> 'NW' (a traditional Novell prefix) in the upper 16 bits, but of course I'd
> want to have formal insurance that this range would actually remain
> reserved forever within each (sub-)hypercall ranges (and whatever else
> may use [pseudo-]enumerated values).
>
> Another alternative would obviously be to simply once again use an
> enumeration of interested parties, who would then have a certain number
> range globally (across all other [pseudo-]enumerations) reserved for their
> purposes, i.e. with the upper so-many bits set to that 'vendor' enumerator.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] x86: add hypercall to querycurrentunderlying pCPU's frequency
2008-09-22 9:18 ` [PATCH] x86: add hypercall to querycurrentunderlying " Jan Beulich
@ 2008-09-22 9:24 ` Keir Fraser
0 siblings, 0 replies; 9+ messages in thread
From: Keir Fraser @ 2008-09-22 9:24 UTC (permalink / raw)
To: Jan Beulich; +Cc: xen-devel
There's a paragraph at:
http://www.xen.org/community/
Since the AB is involved in managing the Xen trademark, and this would be a
decision which is part of defining what Xen is, I think the decision rests
with them.
Their address is xen-advisory-board at same list server as xen-devel. Also
Novell is a member: I think the contact is Holger Dyroff.
-- Keir
On 22/9/08 10:18, "Jan Beulich" <jbeulich@novell.com> wrote:
> What/who is the Advisory Board, and how would I forward the question to
> it/them? Jan
>
>>>> Keir Fraser <keir.fraser@eu.citrix.com> 22.09.08 10:47 >>>
> Well, I'm not personally against this, if used sensibly, but it sounds the
> sort of thing the Advisory Board would have to be asked about, since it
> could be considered to promote forking of the hypervisor interfaces.
>
> -- Keir
>
> On 22/9/08 08:55, "Jan Beulich" <jbeulich@novell.com> wrote:
>
>> Okay, in that case I'll have to raise a general infra-structural question: If
>> I'm convinced I/we want something like this for ease of use and consistency
>> with the native kernel, how would I (generally) add (sub-)hypercalls to
>> our Xen flavors without risking to ever collide with upstream? I'd consider
>> something like using (reserving) the number space starting with e.g. ASCII
>> 'NW' (a traditional Novell prefix) in the upper 16 bits, but of course I'd
>> want to have formal insurance that this range would actually remain
>> reserved forever within each (sub-)hypercall ranges (and whatever else
>> may use [pseudo-]enumerated values).
>>
>> Another alternative would obviously be to simply once again use an
>> enumeration of interested parties, who would then have a certain number
>> range globally (across all other [pseudo-]enumerations) reserved for their
>> purposes, i.e. with the upper so-many bits set to that 'vendor' enumerator.
>
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2008-09-22 9:24 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-19 13:10 [PATCH] x86: add hypercall to query current underlying pCPU's frequency Jan Beulich
2008-09-20 8:34 ` Keir Fraser
2008-09-22 2:26 ` Tian, Kevin
2008-09-22 7:04 ` Keir Fraser
2008-09-22 7:18 ` Tian, Kevin
2008-09-22 7:55 ` [PATCH] x86: add hypercall to query currentunderlying " Jan Beulich
2008-09-22 8:47 ` Keir Fraser
2008-09-22 9:18 ` [PATCH] x86: add hypercall to querycurrentunderlying " Jan Beulich
2008-09-22 9:24 ` Keir Fraser
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.