* [PATCH 1/4] KVM: Report hardware virtualization features
@ 2008-06-19 10:42 Yang, Sheng
2008-06-22 6:49 ` Avi Kivity
0 siblings, 1 reply; 8+ messages in thread
From: Yang, Sheng @ 2008-06-19 10:42 UTC (permalink / raw)
To: kvm
[-- Attachment #1: Type: text/plain, Size: 2463 bytes --]
From f02d2ccf01e8671d2da517f14a908d1df1cc42ad Mon Sep 17 00:00:00 2001
From: Sheng Yang <sheng.yang@intel.com>
Date: Thu, 19 Jun 2008 18:41:26 +0800
Subject: [PATCH] KVM: Report hardware virtualization features
The hardware virtualization technology evolves very fast. But currently it's
hard to tell if your CPU support certain kind of HW technology without dig
into the source code.
The patch introduced a virtual file called "kvm_hw_feature_report" under
/sys/devices/system/kvm/kvm0 to show the mainly important current hardware
virtualization feature, then it's pretty easy to tell if your CPU support
some advanced virtualization technology now.
Signed-off-by: Sheng Yang <sheng.yang@intel.com>
---
include/linux/kvm_host.h | 3 +++
virt/kvm/kvm_main.c | 26 ++++++++++++++++++++++++++
2 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index d220b49..654dba6 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -278,6 +278,9 @@ int kvm_cpu_has_interrupt(struct kvm_vcpu *v);
int kvm_cpu_has_pending_timer(struct kvm_vcpu *vcpu);
void kvm_vcpu_kick(struct kvm_vcpu *vcpu);
+int kvm_register_hw_feature_report(int (*show)(char *page));
+void kvm_unregister_hw_feature_report(void);
+
static inline void kvm_guest_enter(void)
{
account_system_vtime(current);
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 4f38f5c..8eb74e5 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -1518,6 +1518,32 @@ static struct sys_device kvm_sysdev = {
.cls = &kvm_sysdev_class,
};
+static int (*kvm_hw_fea_show_func)(char *);
+
+static ssize_t kvm_hw_feature_show(struct sys_device *dev, char *page)
+{
+ if (!kvm_hw_fea_show_func)
+ return 0;
+ return kvm_hw_fea_show_func(page);
+}
+
+static SYSDEV_ATTR(kvm_hw_feature_report, 0444, kvm_hw_feature_show, 0)
+
+int kvm_register_hw_feature_report(int (*show)(char *page))
+{
+ if (kvm_hw_fea_show_func)
+ sysdev_remove_file(&kvm_sysdev, &attr_kvm_hw_feature_report);
+ kvm_hw_fea_show_func = show;
+ return sysdev_create_file(&kvm_sysdev, &attr_kvm_hw_feature_report);
+}
+EXPORT_SYMBOL_GPL(kvm_register_hw_feature_report);
+
+void kvm_unregister_hw_feature_report(void)
+{
+ kvm_hw_fea_show_func = NULL;
+}
+EXPORT_SYMBOL_GPL(kvm_unregister_hw_feature_report);
+
struct page *bad_page;
pfn_t bad_pfn;
--
1.5.5
[-- Attachment #2: 0001-KVM-Report-hardware-virtualization-features.patch --]
[-- Type: text/x-diff, Size: 2466 bytes --]
From f02d2ccf01e8671d2da517f14a908d1df1cc42ad Mon Sep 17 00:00:00 2001
From: Sheng Yang <sheng.yang@intel.com>
Date: Thu, 19 Jun 2008 18:41:26 +0800
Subject: [PATCH] KVM: Report hardware virtualization features
The hardware virtualization technology evolves very fast. But currently it's
hard to tell if your CPU support certain kind of HW technology without dig into
the source code.
The patch introduced a virtual file called "kvm_hw_feature_report" under
/sys/devices/system/kvm/kvm0 to show the mainly important current hardware
virtualization feature, then it's pretty easy to tell if your CPU support
some advanced virtualization technology now.
Signed-off-by: Sheng Yang <sheng.yang@intel.com>
---
include/linux/kvm_host.h | 3 +++
virt/kvm/kvm_main.c | 26 ++++++++++++++++++++++++++
2 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index d220b49..654dba6 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -278,6 +278,9 @@ int kvm_cpu_has_interrupt(struct kvm_vcpu *v);
int kvm_cpu_has_pending_timer(struct kvm_vcpu *vcpu);
void kvm_vcpu_kick(struct kvm_vcpu *vcpu);
+int kvm_register_hw_feature_report(int (*show)(char *page));
+void kvm_unregister_hw_feature_report(void);
+
static inline void kvm_guest_enter(void)
{
account_system_vtime(current);
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 4f38f5c..8eb74e5 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -1518,6 +1518,32 @@ static struct sys_device kvm_sysdev = {
.cls = &kvm_sysdev_class,
};
+static int (*kvm_hw_fea_show_func)(char *);
+
+static ssize_t kvm_hw_feature_show(struct sys_device *dev, char *page)
+{
+ if (!kvm_hw_fea_show_func)
+ return 0;
+ return kvm_hw_fea_show_func(page);
+}
+
+static SYSDEV_ATTR(kvm_hw_feature_report, 0444, kvm_hw_feature_show, 0)
+
+int kvm_register_hw_feature_report(int (*show)(char *page))
+{
+ if (kvm_hw_fea_show_func)
+ sysdev_remove_file(&kvm_sysdev, &attr_kvm_hw_feature_report);
+ kvm_hw_fea_show_func = show;
+ return sysdev_create_file(&kvm_sysdev, &attr_kvm_hw_feature_report);
+}
+EXPORT_SYMBOL_GPL(kvm_register_hw_feature_report);
+
+void kvm_unregister_hw_feature_report(void)
+{
+ kvm_hw_fea_show_func = NULL;
+}
+EXPORT_SYMBOL_GPL(kvm_unregister_hw_feature_report);
+
struct page *bad_page;
pfn_t bad_pfn;
--
1.5.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] KVM: Report hardware virtualization features
2008-06-19 10:42 [PATCH 1/4] KVM: Report hardware virtualization features Yang, Sheng
@ 2008-06-22 6:49 ` Avi Kivity
2008-06-22 12:18 ` Dor Laor
0 siblings, 1 reply; 8+ messages in thread
From: Avi Kivity @ 2008-06-22 6:49 UTC (permalink / raw)
To: Yang, Sheng; +Cc: kvm
Yang, Sheng wrote:
> From f02d2ccf01e8671d2da517f14a908d1df1cc42ad Mon Sep 17 00:00:00 2001
> From: Sheng Yang <sheng.yang@intel.com>
> Date: Thu, 19 Jun 2008 18:41:26 +0800
> Subject: [PATCH] KVM: Report hardware virtualization features
>
> The hardware virtualization technology evolves very fast. But currently it's
> hard to tell if your CPU support certain kind of HW technology without dig
> into the source code.
>
> The patch introduced a virtual file called "kvm_hw_feature_report" under
> /sys/devices/system/kvm/kvm0 to show the mainly important current hardware
> virtualization feature, then it's pretty easy to tell if your CPU support
> some advanced virtualization technology now.
>
>
Yes, this is definitely helpful. However, I think that users will
expect cpu flags under /proc/cpuinfo.
Perhaps we should add a new line 'virt flags' to /proc/cpuinfo? I think
all the features are reported using msrs, so it can be done from
arch/x86/kernel/cpu/proc.c without involving kvm at all.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] KVM: Report hardware virtualization features
2008-06-22 6:49 ` Avi Kivity
@ 2008-06-22 12:18 ` Dor Laor
2008-06-22 12:21 ` Avi Kivity
0 siblings, 1 reply; 8+ messages in thread
From: Dor Laor @ 2008-06-22 12:18 UTC (permalink / raw)
To: Avi Kivity; +Cc: Yang, Sheng, kvm
On Sun, 2008-06-22 at 09:49 +0300, Avi Kivity wrote:
> Yang, Sheng wrote:
> > From f02d2ccf01e8671d2da517f14a908d1df1cc42ad Mon Sep 17 00:00:00 2001
> > From: Sheng Yang <sheng.yang@intel.com>
> > Date: Thu, 19 Jun 2008 18:41:26 +0800
> > Subject: [PATCH] KVM: Report hardware virtualization features
> >
> > The hardware virtualization technology evolves very fast. But currently it's
> > hard to tell if your CPU support certain kind of HW technology without dig
> > into the source code.
> >
> > The patch introduced a virtual file called "kvm_hw_feature_report" under
> > /sys/devices/system/kvm/kvm0 to show the mainly important current hardware
> > virtualization feature, then it's pretty easy to tell if your CPU support
> > some advanced virtualization technology now.
> >
> >
>
> Yes, this is definitely helpful. However, I think that users will
> expect cpu flags under /proc/cpuinfo.
>
> Perhaps we should add a new line 'virt flags' to /proc/cpuinfo? I think
> all the features are reported using msrs, so it can be done from
> arch/x86/kernel/cpu/proc.c without involving kvm at all.
>
while I agree with Avi, it would be nice thought to see them on older
kernels. At least sprinkle a printk message.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] KVM: Report hardware virtualization features
2008-06-22 12:18 ` Dor Laor
@ 2008-06-22 12:21 ` Avi Kivity
2008-06-23 1:46 ` Yang, Sheng
0 siblings, 1 reply; 8+ messages in thread
From: Avi Kivity @ 2008-06-22 12:21 UTC (permalink / raw)
To: dor.laor; +Cc: Yang, Sheng, kvm
Dor Laor wrote:
>>
>> Yes, this is definitely helpful. However, I think that users will
>> expect cpu flags under /proc/cpuinfo.
>>
>> Perhaps we should add a new line 'virt flags' to /proc/cpuinfo? I think
>> all the features are reported using msrs, so it can be done from
>> arch/x86/kernel/cpu/proc.c without involving kvm at all.
>>
>>
>
> while I agree with Avi, it would be nice thought to see them on older
> kernels. At least sprinkle a printk message.
>
Oh we'll certainly hack something for the external modules.
--
error compiling committee.c: too many arguments to function
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] KVM: Report hardware virtualization features
2008-06-22 12:21 ` Avi Kivity
@ 2008-06-23 1:46 ` Yang, Sheng
2008-06-23 2:40 ` Avi Kivity
0 siblings, 1 reply; 8+ messages in thread
From: Yang, Sheng @ 2008-06-23 1:46 UTC (permalink / raw)
To: Avi Kivity; +Cc: dor.laor, kvm
On Sunday 22 June 2008 20:21:37 Avi Kivity wrote:
> Dor Laor wrote:
> >> Yes, this is definitely helpful. However, I think that users will
> >> expect cpu flags under /proc/cpuinfo.
> >>
> >> Perhaps we should add a new line 'virt flags' to /proc/cpuinfo? I think
> >> all the features are reported using msrs, so it can be done from
> >> arch/x86/kernel/cpu/proc.c without involving kvm at all.
> >
> > while I agree with Avi, it would be nice thought to see them on older
> > kernels. At least sprinkle a printk message.
>
> Oh we'll certainly hack something for the external modules.
Yeah, add a virt flags is more directly, and I think it's not hard to be
accepted. I will do that.
And as Dor said, I think we also need a relative elegant method for the
modules. So maybe we can keep these patches? Without that bash script. :)
--
Thanks
Yang, Sheng
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] KVM: Report hardware virtualization features
2008-06-23 1:46 ` Yang, Sheng
@ 2008-06-23 2:40 ` Avi Kivity
2008-06-23 3:01 ` Yang, Sheng
0 siblings, 1 reply; 8+ messages in thread
From: Avi Kivity @ 2008-06-23 2:40 UTC (permalink / raw)
To: Yang, Sheng; +Cc: dor.laor, kvm
Yang, Sheng wrote:
> On Sunday 22 June 2008 20:21:37 Avi Kivity wrote:
>
>> Dor Laor wrote:
>>
>>>> Yes, this is definitely helpful. However, I think that users will
>>>> expect cpu flags under /proc/cpuinfo.
>>>>
>>>> Perhaps we should add a new line 'virt flags' to /proc/cpuinfo? I think
>>>> all the features are reported using msrs, so it can be done from
>>>> arch/x86/kernel/cpu/proc.c without involving kvm at all.
>>>>
>>> while I agree with Avi, it would be nice thought to see them on older
>>> kernels. At least sprinkle a printk message.
>>>
>> Oh we'll certainly hack something for the external modules.
>>
>
> Yeah, add a virt flags is more directly, and I think it's not hard to be
> accepted. I will do that.
>
>
Perhaps just adding to the standard flags line is best, since tools
already read it.
> And as Dor said, I think we also need a relative elegant method for the
> modules. So maybe we can keep these patches? Without that bash script. :)
>
>
I'll just copy the code that finally makes it and put it in
kernel/external-module-compat.c. Patches would stop applying soon.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] KVM: Report hardware virtualization features
2008-06-23 2:40 ` Avi Kivity
@ 2008-06-23 3:01 ` Yang, Sheng
2008-06-23 9:47 ` Yang, Sheng
0 siblings, 1 reply; 8+ messages in thread
From: Yang, Sheng @ 2008-06-23 3:01 UTC (permalink / raw)
To: Avi Kivity; +Cc: dor.laor, kvm
On Monday 23 June 2008 10:40:33 Avi Kivity wrote:
> Yang, Sheng wrote:
> > On Sunday 22 June 2008 20:21:37 Avi Kivity wrote:
> >> Dor Laor wrote:
> >>>> Yes, this is definitely helpful. However, I think that users will
> >>>> expect cpu flags under /proc/cpuinfo.
> >>>>
> >>>> Perhaps we should add a new line 'virt flags' to /proc/cpuinfo? I
> >>>> think all the features are reported using msrs, so it can be done from
> >>>> arch/x86/kernel/cpu/proc.c without involving kvm at all.
> >>>
> >>> while I agree with Avi, it would be nice thought to see them on older
> >>> kernels. At least sprinkle a printk message.
> >>
> >> Oh we'll certainly hack something for the external modules.
> >
> > Yeah, add a virt flags is more directly, and I think it's not hard to be
> > accepted. I will do that.
>
> Perhaps just adding to the standard flags line is best, since tools
> already read it.
I was thinking of it before, but later I think it's not very proper.
1. The standard flag covered upper level of cpu capability.
2. If we add virtual feature to standard flag, I am afraid it would grow too
fast.
So I prefer to add a new "virt flag".
>
> > And as Dor said, I think we also need a relative elegant method for the
> > modules. So maybe we can keep these patches? Without that bash script. :)
>
> I'll just copy the code that finally makes it and put it in
> kernel/external-module-compat.c. Patches would stop applying soon.
You means the current patchset or patch for /proc/cpuinfo? :)
--
Thanks
Yang, Sheng
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] KVM: Report hardware virtualization features
2008-06-23 3:01 ` Yang, Sheng
@ 2008-06-23 9:47 ` Yang, Sheng
0 siblings, 0 replies; 8+ messages in thread
From: Yang, Sheng @ 2008-06-23 9:47 UTC (permalink / raw)
To: Avi Kivity; +Cc: dor.laor, kvm, LKML
On Monday 23 June 2008 11:01:13 Yang, Sheng wrote:
> On Monday 23 June 2008 10:40:33 Avi Kivity wrote:
> > Yang, Sheng wrote:
> > > On Sunday 22 June 2008 20:21:37 Avi Kivity wrote:
> > >> Dor Laor wrote:
> > >>>> Yes, this is definitely helpful. However, I think that users will
> > >>>> expect cpu flags under /proc/cpuinfo.
> > >>>>
> > >>>> Perhaps we should add a new line 'virt flags' to /proc/cpuinfo? I
> > >>>> think all the features are reported using msrs, so it can be done
> > >>>> from arch/x86/kernel/cpu/proc.c without involving kvm at all.
> > >>>
> > >>> while I agree with Avi, it would be nice thought to see them on older
> > >>> kernels. At least sprinkle a printk message.
> > >>
> > >> Oh we'll certainly hack something for the external modules.
> > >
> > > Yeah, add a virt flags is more directly, and I think it's not hard to
> > > be accepted. I will do that.
> >
> > Perhaps just adding to the standard flags line is best, since tools
> > already read it.
>
> I was thinking of it before, but later I think it's not very proper.
> 1. The standard flag covered upper level of cpu capability.
> 2. If we add virtual feature to standard flag, I am afraid it would grow
> too fast.
>
> So I prefer to add a new "virt flag".
>
> > > And as Dor said, I think we also need a relative elegant method for the
> > > modules. So maybe we can keep these patches? Without that bash script.
> > > :)
> >
> > I'll just copy the code that finally makes it and put it in
> > kernel/external-module-compat.c. Patches would stop applying soon.
>
> You means the current patchset or patch for /proc/cpuinfo? :)
>
One of my colleague said that if we modify /proc/cpuinfo, it may cause some
trouble for some not well designed userspace parser... So he thought we
should be careful about modify this interface.
Add flag to standard flags can avoid this, but I still think it make some
different things mixture...
Maybe we should contact some guy on X86 side?
--
Thanks
Yang, Sheng
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2008-06-23 9:46 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-19 10:42 [PATCH 1/4] KVM: Report hardware virtualization features Yang, Sheng
2008-06-22 6:49 ` Avi Kivity
2008-06-22 12:18 ` Dor Laor
2008-06-22 12:21 ` Avi Kivity
2008-06-23 1:46 ` Yang, Sheng
2008-06-23 2:40 ` Avi Kivity
2008-06-23 3:01 ` Yang, Sheng
2008-06-23 9:47 ` Yang, Sheng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox