arm.c (f444fea7896dbc267249d27f604082a51b8efca2) | arm.c (cf364e08ea1c5dd217afb658d510aaef7d0cc6f4) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Copyright (C) 2012 - Virtual Open Systems and Columbia University 4 * Author: Christoffer Dall <c.dall@virtualopensystems.com> 5 */ 6 7#include <linux/bug.h> 8#include <linux/cpu_pm.h> --- 80 unchanged lines hidden (view full) --- 89 return -EINVAL; 90 91 switch (cap->cap) { 92 case KVM_CAP_ARM_NISV_TO_USER: 93 r = 0; 94 kvm->arch.return_nisv_io_abort_to_user = true; 95 break; 96 case KVM_CAP_ARM_MTE: | 1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Copyright (C) 2012 - Virtual Open Systems and Columbia University 4 * Author: Christoffer Dall <c.dall@virtualopensystems.com> 5 */ 6 7#include <linux/bug.h> 8#include <linux/cpu_pm.h> --- 80 unchanged lines hidden (view full) --- 89 return -EINVAL; 90 91 switch (cap->cap) { 92 case KVM_CAP_ARM_NISV_TO_USER: 93 r = 0; 94 kvm->arch.return_nisv_io_abort_to_user = true; 95 break; 96 case KVM_CAP_ARM_MTE: |
97 mutex_lock(&kvm->lock); 98 if (!system_supports_mte() || kvm->created_vcpus) { 99 r = -EINVAL; 100 } else { 101 r = 0; 102 kvm->arch.mte_enabled = true; 103 } 104 mutex_unlock(&kvm->lock); | 97 if (!system_supports_mte() || kvm->created_vcpus) 98 return -EINVAL; 99 r = 0; 100 kvm->arch.mte_enabled = true; |
105 break; 106 default: 107 r = -EINVAL; 108 break; 109 } 110 111 return r; 112} --- 457 unchanged lines hidden (view full) --- 570 /* 571 * Now broadcast TLB + ICACHE invalidation over the inner 572 * shareable domain to make sure all data structures are 573 * clean. 574 */ 575 kvm_call_hyp(__kvm_flush_vm_context); 576 } 577 | 101 break; 102 default: 103 r = -EINVAL; 104 break; 105 } 106 107 return r; 108} --- 457 unchanged lines hidden (view full) --- 566 /* 567 * Now broadcast TLB + ICACHE invalidation over the inner 568 * shareable domain to make sure all data structures are 569 * clean. 570 */ 571 kvm_call_hyp(__kvm_flush_vm_context); 572 } 573 |
578 vmid->vmid = kvm_next_vmid; | 574 WRITE_ONCE(vmid->vmid, kvm_next_vmid); |
579 kvm_next_vmid++; 580 kvm_next_vmid &= (1 << kvm_get_vmid_bits()) - 1; 581 582 smp_wmb(); 583 WRITE_ONCE(vmid->vmid_gen, atomic64_read(&kvm_vmid_gen)); 584 585 spin_unlock(&kvm_vmid_lock); 586} --- 1607 unchanged lines hidden --- | 575 kvm_next_vmid++; 576 kvm_next_vmid &= (1 << kvm_get_vmid_bits()) - 1; 577 578 smp_wmb(); 579 WRITE_ONCE(vmid->vmid_gen, atomic64_read(&kvm_vmid_gen)); 580 581 spin_unlock(&kvm_vmid_lock); 582} --- 1607 unchanged lines hidden --- |