Pull kvm fixes from Paolo Bonzini: "ARM64: - Fix pKVM error path on init, making sure we do not change critical system registers as we're about to fail - Make sure that the host's vector length is at capped by a value common to all CPUs - Fix kvm_has_feat*() handling of "negative" features, as the current code is pretty broken - Promote Joey to the status of official reviewer, while James steps down -- hopefully only temporarly x86: - Fix compilation with KVM_INTEL=KVM_AMD=n - Fix disabling KVM_X86_QUIRK_SLOT_ZAP_ALL when shadow MMU is in use Selftests: - Fix compilation on non-x86 architectures" * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: x86/reboot: emergency callbacks are now registered by common KVM code KVM: x86: leave kvm.ko out of the build if no vendor module is requested KVM: x86/mmu: fix KVM_X86_QUIRK_SLOT_ZAP_ALL for shadow MMU KVM: arm64: Fix kvm_has_feat*() handling of negative features KVM: selftests: Fix build on architectures other than x86_64 KVM: arm64: Another reviewer reshuffle KVM: arm64: Constrain the host to the maximum shared SVE VL with pKVM KVM: arm64: Fix __pkvm_init_vcpu cptr_el2 error path
Showing the changes to tools (2 of 12 files). Show all
Unified · Split
| @@ -169,12 +169,14 @@ int main(int argc, char *argv[]) · 168 unmodified lines | |||
| 169 | case 'i': | 169 | case 'i': |
| 170 | p.nr_iterations = atoi_positive("Number of iterations", optarg); | 170 | p.nr_iterations = atoi_positive("Number of iterations", optarg); |
| 171 | break; | 171 | break; |
| 172 | #ifdef __x86_64__ | ||
| 172 | case 'q': | 173 | case 'q': |
| 173 | p.disable_slot_zap_quirk = true; | 174 | p.disable_slot_zap_quirk = true; |
| 174 | 175 | ||
| 175 | TEST_REQUIRE(kvm_check_cap(KVM_CAP_DISABLE_QUIRKS2) & | 176 | TEST_REQUIRE(kvm_check_cap(KVM_CAP_DISABLE_QUIRKS2) & |
| 176 | KVM_X86_QUIRK_SLOT_ZAP_ALL); | 177 | KVM_X86_QUIRK_SLOT_ZAP_ALL); |
| 177 | break; | 178 | break; |
| 179 | #endif | ||
| 178 | case 'h': | 180 | case 'h': |
| 179 | default: | 181 | default: |
| 180 | help(argv[0]); | 182 | help(argv[0]); |
| @@ -113,7 +113,9 @@ static_assert(ATOMIC_BOOL_LOCK_FREE == 2, "atomic bool is not lockless"); · 112 unmodified lines | |||
| 113 | static sem_t vcpu_ready; | 113 | static sem_t vcpu_ready; |
| 114 | 114 | ||
| 115 | static bool map_unmap_verify; | 115 | static bool map_unmap_verify; |
| 116 | #ifdef __x86_64__ | ||
| 116 | static bool disable_slot_zap_quirk; | 117 | static bool disable_slot_zap_quirk; |
| 118 | #endif | ||
| 117 | 119 | ||
| 118 | static bool verbose; | 120 | static bool verbose; |
| 119 | #define pr_info_v(...) \ | 121 | #define pr_info_v(...) \ |
| @@ -579,8 +581,10 @@ static bool test_memslot_move_prepare(struct vm_data *data, · 459 unmodified lines | |||
| 579 | uint32_t guest_page_size = data->vm->page_size; | 581 | uint32_t guest_page_size = data->vm->page_size; |
| 580 | uint64_t movesrcgpa, movetestgpa; | 582 | uint64_t movesrcgpa, movetestgpa; |
| 581 | 583 | ||
| 584 | #ifdef __x86_64__ | ||
| 582 | if (disable_slot_zap_quirk) | 585 | if (disable_slot_zap_quirk) |
| 583 | vm_enable_cap(data->vm, KVM_CAP_DISABLE_QUIRKS2, KVM_X86_QUIRK_SLOT_ZAP_ALL); | 586 | vm_enable_cap(data->vm, KVM_CAP_DISABLE_QUIRKS2, KVM_X86_QUIRK_SLOT_ZAP_ALL); |
| 587 | #endif | ||
| 584 | 588 | ||
| 585 | movesrcgpa = vm_slot2gpa(data, data->nslots - 1); | 589 | movesrcgpa = vm_slot2gpa(data, data->nslots - 1); |
| 586 | 590 | ||
| @@ -971,11 +975,13 @@ static bool parse_args(int argc, char *argv[], · 384 unmodified lines | |||
| 971 | case 'd': | 975 | case 'd': |
| 972 | map_unmap_verify = true; | 976 | map_unmap_verify = true; |
| 973 | break; | 977 | break; |
| 978 | #ifdef __x86_64__ | ||
| 974 | case 'q': | 979 | case 'q': |
| 975 | disable_slot_zap_quirk = true; | 980 | disable_slot_zap_quirk = true; |
| 976 | TEST_REQUIRE(kvm_check_cap(KVM_CAP_DISABLE_QUIRKS2) & | 981 | TEST_REQUIRE(kvm_check_cap(KVM_CAP_DISABLE_QUIRKS2) & |
| 977 | KVM_X86_QUIRK_SLOT_ZAP_ALL); | 982 | KVM_X86_QUIRK_SLOT_ZAP_ALL); |
| 978 | break; | 983 | break; |
| 984 | #endif | ||
| 979 | case 's': | 985 | case 's': |
| 980 | targs->nslots = atoi_paranoid(optarg); | 986 | targs->nslots = atoi_paranoid(optarg); |
| 981 | if (targs->nslots <= 1 && targs->nslots != -1) { | 987 | if (targs->nslots <= 1 && targs->nslots != -1) { |