@@ -2238,8 +2238,8 @@ static void vmx_vcpu_pi_load(struct kvm_vcpu *vcpu, int cpu)
2238
2238
new .ndst = (dest << 8 ) & 0xFF00 ;
2239
2239
2240
2240
new .sn = 0 ;
2241
- } while (cmpxchg (& pi_desc -> control , old .control ,
2242
- new .control ) != old .control );
2241
+ } while (cmpxchg64 (& pi_desc -> control , old .control ,
2242
+ new .control ) != old .control );
2243
2243
}
2244
2244
2245
2245
static void decache_tsc_multiplier (struct vcpu_vmx * vmx )
@@ -11730,8 +11730,8 @@ static void __pi_post_block(struct kvm_vcpu *vcpu)
11730
11730
11731
11731
/* set 'NV' to 'notification vector' */
11732
11732
new .nv = POSTED_INTR_VECTOR ;
11733
- } while (cmpxchg (& pi_desc -> control , old .control ,
11734
- new .control ) != old .control );
11733
+ } while (cmpxchg64 (& pi_desc -> control , old .control ,
11734
+ new .control ) != old .control );
11735
11735
11736
11736
if (!WARN_ON_ONCE (vcpu -> pre_pcpu == -1 )) {
11737
11737
spin_lock (& per_cpu (blocked_vcpu_on_cpu_lock , vcpu -> pre_pcpu ));
@@ -11800,8 +11800,8 @@ static int pi_pre_block(struct kvm_vcpu *vcpu)
11800
11800
11801
11801
/* set 'NV' to 'wakeup vector' */
11802
11802
new .nv = POSTED_INTR_WAKEUP_VECTOR ;
11803
- } while (cmpxchg (& pi_desc -> control , old .control ,
11804
- new .control ) != old .control );
11803
+ } while (cmpxchg64 (& pi_desc -> control , old .control ,
11804
+ new .control ) != old .control );
11805
11805
11806
11806
/* We should not block the vCPU if an interrupt is posted for it. */
11807
11807
if (pi_test_on (pi_desc ) == 1 )
0 commit comments