Message ID | 1563154124-18579-1-git-send-email-wanpengli@tencent.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [RESEND] i386/kvm: support guest access CORE cstate | expand |
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, >
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
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, > > >
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, >>> >>
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
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
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,