hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/arch/x86/kvm/hyperv.c
....@@ -1562,16 +1562,19 @@
15621562
15631563 cpumask_clear(&hv_vcpu->tlb_flush);
15641564
1565
- vcpu_mask = all_cpus ? NULL :
1566
- sparse_set_to_vcpu_mask(kvm, sparse_banks, valid_bank_mask,
1567
- vp_bitmap, vcpu_bitmap);
1568
-
15691565 /*
15701566 * vcpu->arch.cr3 may not be up-to-date for running vCPUs so we can't
15711567 * analyze it here, flush TLB regardless of the specified address space.
15721568 */
1573
- kvm_make_vcpus_request_mask(kvm, KVM_REQ_TLB_FLUSH_GUEST,
1574
- NULL, vcpu_mask, &hv_vcpu->tlb_flush);
1569
+ if (all_cpus) {
1570
+ kvm_make_all_cpus_request(kvm, KVM_REQ_TLB_FLUSH_GUEST);
1571
+ } else {
1572
+ vcpu_mask = sparse_set_to_vcpu_mask(kvm, sparse_banks, valid_bank_mask,
1573
+ vp_bitmap, vcpu_bitmap);
1574
+
1575
+ kvm_make_vcpus_request_mask(kvm, KVM_REQ_TLB_FLUSH_GUEST,
1576
+ NULL, vcpu_mask, &hv_vcpu->tlb_flush);
1577
+ }
15751578
15761579 ret_success:
15771580 /* We always do full TLB flush, set rep_done = rep_cnt. */