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 ---