2019-07-15 01:29:37

by Wanpeng Li

[permalink] [raw]
Subject: [PATCH RESEND] i386/kvm: support guest access CORE cstate

From: Wanpeng Li <[email protected]>

Allow guest reads CORE cstate when exposing host CPU power management capabilities
to the guest. PKG cstate is restricted to avoid a guest to get the whole package
information in multi-tenant scenario.

Cc: Eduardo Habkost <[email protected]>
Cc: Paolo Bonzini <[email protected]>
Cc: Radim Krčmář <[email protected]>
Signed-off-by: Wanpeng Li <[email protected]>
---
linux-headers/linux/kvm.h | 4 +++-
target/i386/kvm.c | 3 ++-
2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
index b53ee59..d648fde 100644
--- a/linux-headers/linux/kvm.h
+++ b/linux-headers/linux/kvm.h
@@ -696,9 +696,11 @@ struct kvm_ioeventfd {
#define KVM_X86_DISABLE_EXITS_MWAIT (1 << 0)
#define KVM_X86_DISABLE_EXITS_HLT (1 << 1)
#define KVM_X86_DISABLE_EXITS_PAUSE (1 << 2)
+#define KVM_X86_DISABLE_EXITS_CSTATE (1 << 3)
#define KVM_X86_DISABLE_VALID_EXITS (KVM_X86_DISABLE_EXITS_MWAIT | \
KVM_X86_DISABLE_EXITS_HLT | \
- KVM_X86_DISABLE_EXITS_PAUSE)
+ KVM_X86_DISABLE_EXITS_PAUSE | \
+ KVM_X86_DISABLE_EXITS_CSTATE)

/* for KVM_ENABLE_CAP */
struct kvm_enable_cap {
diff --git a/target/i386/kvm.c b/target/i386/kvm.c
index 3b29ce5..49a0cc1 100644
--- a/target/i386/kvm.c
+++ b/target/i386/kvm.c
@@ -1645,7 +1645,8 @@ int kvm_arch_init(MachineState *ms, KVMState *s)
if (disable_exits) {
disable_exits &= (KVM_X86_DISABLE_EXITS_MWAIT |
KVM_X86_DISABLE_EXITS_HLT |
- KVM_X86_DISABLE_EXITS_PAUSE);
+ KVM_X86_DISABLE_EXITS_PAUSE |
+ KVM_X86_DISABLE_EXITS_CSTATE);
}

ret = kvm_vm_enable_cap(s, KVM_CAP_X86_DISABLE_EXITS, 0,
--
2.7.4


2019-07-15 09:19:29

by Paolo Bonzini

[permalink] [raw]
Subject: Re: [PATCH RESEND] i386/kvm: support guest access CORE cstate

On 15/07/19 03:28, Wanpeng Li wrote:
> From: Wanpeng Li <[email protected]>
>
> Allow guest reads CORE cstate when exposing host CPU power management capabilities
> to the guest. PKG cstate is restricted to avoid a guest to get the whole package
> information in multi-tenant scenario.
>
> Cc: Eduardo Habkost <[email protected]>
> Cc: Paolo Bonzini <[email protected]>
> Cc: Radim Krčmář <[email protected]>
> Signed-off-by: Wanpeng Li <[email protected]>

Hi,

QEMU is in hard freeze now. This will be applied after the release.

Thanks,

Paolo

> ---
> linux-headers/linux/kvm.h | 4 +++-
> target/i386/kvm.c | 3 ++-
> 2 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
> index b53ee59..d648fde 100644
> --- a/linux-headers/linux/kvm.h
> +++ b/linux-headers/linux/kvm.h
> @@ -696,9 +696,11 @@ struct kvm_ioeventfd {
> #define KVM_X86_DISABLE_EXITS_MWAIT (1 << 0)
> #define KVM_X86_DISABLE_EXITS_HLT (1 << 1)
> #define KVM_X86_DISABLE_EXITS_PAUSE (1 << 2)
> +#define KVM_X86_DISABLE_EXITS_CSTATE (1 << 3)
> #define KVM_X86_DISABLE_VALID_EXITS (KVM_X86_DISABLE_EXITS_MWAIT | \
> KVM_X86_DISABLE_EXITS_HLT | \
> - KVM_X86_DISABLE_EXITS_PAUSE)
> + KVM_X86_DISABLE_EXITS_PAUSE | \
> + KVM_X86_DISABLE_EXITS_CSTATE)
>
> /* for KVM_ENABLE_CAP */
> struct kvm_enable_cap {
> diff --git a/target/i386/kvm.c b/target/i386/kvm.c
> index 3b29ce5..49a0cc1 100644
> --- a/target/i386/kvm.c
> +++ b/target/i386/kvm.c
> @@ -1645,7 +1645,8 @@ int kvm_arch_init(MachineState *ms, KVMState *s)
> if (disable_exits) {
> disable_exits &= (KVM_X86_DISABLE_EXITS_MWAIT |
> KVM_X86_DISABLE_EXITS_HLT |
> - KVM_X86_DISABLE_EXITS_PAUSE);
> + KVM_X86_DISABLE_EXITS_PAUSE |
> + KVM_X86_DISABLE_EXITS_CSTATE);
> }
>
> ret = kvm_vm_enable_cap(s, KVM_CAP_X86_DISABLE_EXITS, 0,
>

2019-07-15 09:24:51

by Wanpeng Li

[permalink] [raw]
Subject: Re: [PATCH RESEND] i386/kvm: support guest access CORE cstate

On Mon, 15 Jul 2019 at 17:16, Paolo Bonzini <[email protected]> wrote:
>
> On 15/07/19 03:28, Wanpeng Li wrote:
> > From: Wanpeng Li <[email protected]>
> >
> > Allow guest reads CORE cstate when exposing host CPU power management capabilities
> > to the guest. PKG cstate is restricted to avoid a guest to get the whole package
> > information in multi-tenant scenario.
> >
> > Cc: Eduardo Habkost <[email protected]>
> > Cc: Paolo Bonzini <[email protected]>
> > Cc: Radim Krčmář <[email protected]>
> > Signed-off-by: Wanpeng Li <[email protected]>
>
> Hi,
>
> QEMU is in hard freeze now. This will be applied after the release.

Thanks for the information. :)

Regards,
Wanpeng Li

2019-08-20 07:17:51

by Wanpeng Li

[permalink] [raw]
Subject: Re: [PATCH RESEND] i386/kvm: support guest access CORE cstate

Kindly reminder, :)
On Mon, 15 Jul 2019 at 17:16, Paolo Bonzini <[email protected]> wrote:
>
> On 15/07/19 03:28, Wanpeng Li wrote:
> > From: Wanpeng Li <[email protected]>
> >
> > Allow guest reads CORE cstate when exposing host CPU power management capabilities
> > to the guest. PKG cstate is restricted to avoid a guest to get the whole package
> > information in multi-tenant scenario.
> >
> > Cc: Eduardo Habkost <[email protected]>
> > Cc: Paolo Bonzini <[email protected]>
> > Cc: Radim Krčmář <[email protected]>
> > Signed-off-by: Wanpeng Li <[email protected]>
>
> Hi,
>
> QEMU is in hard freeze now. This will be applied after the release.
>
> Thanks,
>
> Paolo
>
> > ---
> > linux-headers/linux/kvm.h | 4 +++-
> > target/i386/kvm.c | 3 ++-
> > 2 files changed, 5 insertions(+), 2 deletions(-)
> >
> > diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
> > index b53ee59..d648fde 100644
> > --- a/linux-headers/linux/kvm.h
> > +++ b/linux-headers/linux/kvm.h
> > @@ -696,9 +696,11 @@ struct kvm_ioeventfd {
> > #define KVM_X86_DISABLE_EXITS_MWAIT (1 << 0)
> > #define KVM_X86_DISABLE_EXITS_HLT (1 << 1)
> > #define KVM_X86_DISABLE_EXITS_PAUSE (1 << 2)
> > +#define KVM_X86_DISABLE_EXITS_CSTATE (1 << 3)
> > #define KVM_X86_DISABLE_VALID_EXITS (KVM_X86_DISABLE_EXITS_MWAIT | \
> > KVM_X86_DISABLE_EXITS_HLT | \
> > - KVM_X86_DISABLE_EXITS_PAUSE)
> > + KVM_X86_DISABLE_EXITS_PAUSE | \
> > + KVM_X86_DISABLE_EXITS_CSTATE)
> >
> > /* for KVM_ENABLE_CAP */
> > struct kvm_enable_cap {
> > diff --git a/target/i386/kvm.c b/target/i386/kvm.c
> > index 3b29ce5..49a0cc1 100644
> > --- a/target/i386/kvm.c
> > +++ b/target/i386/kvm.c
> > @@ -1645,7 +1645,8 @@ int kvm_arch_init(MachineState *ms, KVMState *s)
> > if (disable_exits) {
> > disable_exits &= (KVM_X86_DISABLE_EXITS_MWAIT |
> > KVM_X86_DISABLE_EXITS_HLT |
> > - KVM_X86_DISABLE_EXITS_PAUSE);
> > + KVM_X86_DISABLE_EXITS_PAUSE |
> > + KVM_X86_DISABLE_EXITS_CSTATE);
> > }
> >
> > ret = kvm_vm_enable_cap(s, KVM_CAP_X86_DISABLE_EXITS, 0,
> >
>

2019-08-21 07:57:30

by Paolo Bonzini

[permalink] [raw]
Subject: Re: [PATCH RESEND] i386/kvm: support guest access CORE cstate

On 20/08/19 09:16, Wanpeng Li wrote:
> Kindly reminder, :)

It's already in my pull request from yesterday.

Palo

> On Mon, 15 Jul 2019 at 17:16, Paolo Bonzini <[email protected]> wrote:
>>
>> On 15/07/19 03:28, Wanpeng Li wrote:
>>> From: Wanpeng Li <[email protected]>
>>>
>>> Allow guest reads CORE cstate when exposing host CPU power management capabilities
>>> to the guest. PKG cstate is restricted to avoid a guest to get the whole package
>>> information in multi-tenant scenario.
>>>
>>> Cc: Eduardo Habkost <[email protected]>
>>> Cc: Paolo Bonzini <[email protected]>
>>> Cc: Radim Krčmář <[email protected]>
>>> Signed-off-by: Wanpeng Li <[email protected]>
>>
>> Hi,
>>
>> QEMU is in hard freeze now. This will be applied after the release.
>>
>> Thanks,
>>
>> Paolo
>>
>>> ---
>>> linux-headers/linux/kvm.h | 4 +++-
>>> target/i386/kvm.c | 3 ++-
>>> 2 files changed, 5 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
>>> index b53ee59..d648fde 100644
>>> --- a/linux-headers/linux/kvm.h
>>> +++ b/linux-headers/linux/kvm.h
>>> @@ -696,9 +696,11 @@ struct kvm_ioeventfd {
>>> #define KVM_X86_DISABLE_EXITS_MWAIT (1 << 0)
>>> #define KVM_X86_DISABLE_EXITS_HLT (1 << 1)
>>> #define KVM_X86_DISABLE_EXITS_PAUSE (1 << 2)
>>> +#define KVM_X86_DISABLE_EXITS_CSTATE (1 << 3)
>>> #define KVM_X86_DISABLE_VALID_EXITS (KVM_X86_DISABLE_EXITS_MWAIT | \
>>> KVM_X86_DISABLE_EXITS_HLT | \
>>> - KVM_X86_DISABLE_EXITS_PAUSE)
>>> + KVM_X86_DISABLE_EXITS_PAUSE | \
>>> + KVM_X86_DISABLE_EXITS_CSTATE)
>>>
>>> /* for KVM_ENABLE_CAP */
>>> struct kvm_enable_cap {
>>> diff --git a/target/i386/kvm.c b/target/i386/kvm.c
>>> index 3b29ce5..49a0cc1 100644
>>> --- a/target/i386/kvm.c
>>> +++ b/target/i386/kvm.c
>>> @@ -1645,7 +1645,8 @@ int kvm_arch_init(MachineState *ms, KVMState *s)
>>> if (disable_exits) {
>>> disable_exits &= (KVM_X86_DISABLE_EXITS_MWAIT |
>>> KVM_X86_DISABLE_EXITS_HLT |
>>> - KVM_X86_DISABLE_EXITS_PAUSE);
>>> + KVM_X86_DISABLE_EXITS_PAUSE |
>>> + KVM_X86_DISABLE_EXITS_CSTATE);
>>> }
>>>
>>> ret = kvm_vm_enable_cap(s, KVM_CAP_X86_DISABLE_EXITS, 0,
>>>
>>

2019-08-22 02:34:31

by Wanpeng Li

[permalink] [raw]
Subject: Re: [PATCH RESEND] i386/kvm: support guest access CORE cstate

On Wed, 21 Aug 2019 at 15:55, Paolo Bonzini <[email protected]> wrote:
>
> On 20/08/19 09:16, Wanpeng Li wrote:
> > Kindly reminder, :)
>
> It's already in my pull request from yesterday.

Do you mean this pull
https://www.mail-archive.com/[email protected]/msg638707.html ?
This patch is missing.

Regards,
Wanpeng Li

2019-08-22 09:35:23

by Paolo Bonzini

[permalink] [raw]
Subject: Re: [PATCH RESEND] i386/kvm: support guest access CORE cstate

On 22/08/19 02:31, Wanpeng Li wrote:
> On Wed, 21 Aug 2019 at 15:55, Paolo Bonzini <[email protected]> wrote:
>>
>> On 20/08/19 09:16, Wanpeng Li wrote:
>>> Kindly reminder, :)
>>
>> It's already in my pull request from yesterday.
>
> Do you mean this pull
> https://www.mail-archive.com/[email protected]/msg638707.html ?
> This patch is missing.

Oops, you're right. I must have removed it by mistake while bisecting a
failure. I've added it back now.

Paolo