Commit c5c5d6fa authored by Peter Xu's avatar Peter Xu Committed by Paolo Bonzini

KVM: VMX: Change ple_window type to unsigned int

The VMX ple_window is 32 bits wide, so logically it can overflow with
an int.  The module parameter is declared as unsigned int which is
good, however the dynamic variable is not.  Switching all the
ple_window references to use unsigned int.

The tracepoint changes will also affect SVM, but SVM is using an even
smaller width (16 bits) so it's always fine.
Suggested-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
Reviewed-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: default avatarPeter Xu <peterx@redhat.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 13a7e370
...@@ -891,14 +891,15 @@ TRACE_EVENT(kvm_pml_full, ...@@ -891,14 +891,15 @@ TRACE_EVENT(kvm_pml_full,
); );
TRACE_EVENT(kvm_ple_window, TRACE_EVENT(kvm_ple_window,
TP_PROTO(bool grow, unsigned int vcpu_id, int new, int old), TP_PROTO(bool grow, unsigned int vcpu_id, unsigned int new,
unsigned int old),
TP_ARGS(grow, vcpu_id, new, old), TP_ARGS(grow, vcpu_id, new, old),
TP_STRUCT__entry( TP_STRUCT__entry(
__field( bool, grow ) __field( bool, grow )
__field( unsigned int, vcpu_id ) __field( unsigned int, vcpu_id )
__field( int, new ) __field( unsigned int, new )
__field( int, old ) __field( unsigned int, old )
), ),
TP_fast_assign( TP_fast_assign(
...@@ -908,7 +909,7 @@ TRACE_EVENT(kvm_ple_window, ...@@ -908,7 +909,7 @@ TRACE_EVENT(kvm_ple_window,
__entry->old = old; __entry->old = old;
), ),
TP_printk("vcpu %u: ple_window %d (%s %d)", TP_printk("vcpu %u: ple_window %u (%s %u)",
__entry->vcpu_id, __entry->vcpu_id,
__entry->new, __entry->new,
__entry->grow ? "grow" : "shrink", __entry->grow ? "grow" : "shrink",
......
...@@ -5237,7 +5237,7 @@ static int handle_invalid_guest_state(struct kvm_vcpu *vcpu) ...@@ -5237,7 +5237,7 @@ static int handle_invalid_guest_state(struct kvm_vcpu *vcpu)
static void grow_ple_window(struct kvm_vcpu *vcpu) static void grow_ple_window(struct kvm_vcpu *vcpu)
{ {
struct vcpu_vmx *vmx = to_vmx(vcpu); struct vcpu_vmx *vmx = to_vmx(vcpu);
int old = vmx->ple_window; unsigned int old = vmx->ple_window;
vmx->ple_window = __grow_ple_window(old, ple_window, vmx->ple_window = __grow_ple_window(old, ple_window,
ple_window_grow, ple_window_grow,
...@@ -5252,7 +5252,7 @@ static void grow_ple_window(struct kvm_vcpu *vcpu) ...@@ -5252,7 +5252,7 @@ static void grow_ple_window(struct kvm_vcpu *vcpu)
static void shrink_ple_window(struct kvm_vcpu *vcpu) static void shrink_ple_window(struct kvm_vcpu *vcpu)
{ {
struct vcpu_vmx *vmx = to_vmx(vcpu); struct vcpu_vmx *vmx = to_vmx(vcpu);
int old = vmx->ple_window; unsigned int old = vmx->ple_window;
vmx->ple_window = __shrink_ple_window(old, ple_window, vmx->ple_window = __shrink_ple_window(old, ple_window,
ple_window_shrink, ple_window_shrink,
......
...@@ -253,7 +253,7 @@ struct vcpu_vmx { ...@@ -253,7 +253,7 @@ struct vcpu_vmx {
struct nested_vmx nested; struct nested_vmx nested;
/* Dynamic PLE window. */ /* Dynamic PLE window. */
int ple_window; unsigned int ple_window;
bool ple_window_dirty; bool ple_window_dirty;
bool req_immediate_exit; bool req_immediate_exit;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment