[RESEND] i386/kvm: support guest access CORE cstate
diff mbox series

Message ID 1563154124-18579-1-git-send-email-wanpengli@tencent.com
State New
Headers show
Series
  • [RESEND] i386/kvm: support guest access CORE cstate
Related show

Commit Message

Wanpeng Li July 15, 2019, 1:28 a.m. UTC
From: Wanpeng Li <wanpengli@tencent.com>

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 <ehabkost@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
---
 linux-headers/linux/kvm.h | 4 +++-
 target/i386/kvm.c         | 3 ++-
 2 files changed, 5 insertions(+), 2 deletions(-)

Comments

Paolo Bonzini July 15, 2019, 9:16 a.m. UTC | #1
On 15/07/19 03:28, Wanpeng Li wrote:
> From: Wanpeng Li <wanpengli@tencent.com>
> 
> 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 <ehabkost@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Radim Krčmář <rkrcmar@redhat.com>
> Signed-off-by: Wanpeng Li <wanpengli@tencent.com>

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,
>
Wanpeng Li July 15, 2019, 9:22 a.m. UTC | #2
On Mon, 15 Jul 2019 at 17:16, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> On 15/07/19 03:28, Wanpeng Li wrote:
> > From: Wanpeng Li <wanpengli@tencent.com>
> >
> > 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 <ehabkost@redhat.com>
> > Cc: Paolo Bonzini <pbonzini@redhat.com>
> > Cc: Radim Krčmář <rkrcmar@redhat.com>
> > Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
>
> Hi,
>
> QEMU is in hard freeze now.  This will be applied after the release.

Thanks for the information. :)

Regards,
Wanpeng Li
Wanpeng Li Aug. 20, 2019, 7:16 a.m. UTC | #3
Kindly reminder, :)
On Mon, 15 Jul 2019 at 17:16, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> On 15/07/19 03:28, Wanpeng Li wrote:
> > From: Wanpeng Li <wanpengli@tencent.com>
> >
> > 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 <ehabkost@redhat.com>
> > Cc: Paolo Bonzini <pbonzini@redhat.com>
> > Cc: Radim Krčmář <rkrcmar@redhat.com>
> > Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
>
> 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,
> >
>
Paolo Bonzini Aug. 21, 2019, 7:55 a.m. UTC | #4
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 <pbonzini@redhat.com> wrote:
>>
>> On 15/07/19 03:28, Wanpeng Li wrote:
>>> From: Wanpeng Li <wanpengli@tencent.com>
>>>
>>> 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 <ehabkost@redhat.com>
>>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>>> Cc: Radim Krčmář <rkrcmar@redhat.com>
>>> Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
>>
>> 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,
>>>
>>
Wanpeng Li Aug. 22, 2019, 12:31 a.m. UTC | #5
On Wed, 21 Aug 2019 at 15:55, Paolo Bonzini <pbonzini@redhat.com> 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/qemu-devel@nongnu.org/msg638707.html ?
This patch is missing.

Regards,
Wanpeng Li
Paolo Bonzini Aug. 22, 2019, 8:07 a.m. UTC | #6
On 22/08/19 02:31, Wanpeng Li wrote:
> On Wed, 21 Aug 2019 at 15:55, Paolo Bonzini <pbonzini@redhat.com> 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/qemu-devel@nongnu.org/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

Patch
diff mbox series

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,