Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: arm64: Move virt/kvm/arm to arch/arm64

Now that the 32bit KVM/arm host is a distant memory, let's move the
whole of the KVM/arm64 code into the arm64 tree.

As they said in the song: Welcome Home (Sanitarium).

Signed-off-by: Marc Zyngier <maz@kernel.org>
Acked-by: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20200513104034.74741-1-maz@kernel.org

+253 -257
-1
MAINTAINERS
··· 9295 9295 F: arch/arm64/include/uapi/asm/kvm* 9296 9296 F: arch/arm64/kvm/ 9297 9297 F: include/kvm/arm_* 9298 - F: virt/kvm/arm/ 9299 9298 9300 9299 KERNEL VIRTUAL MACHINE FOR MIPS (KVM/mips) 9301 9300 L: linux-mips@vger.kernel.org
+22 -22
arch/arm64/kvm/Makefile
··· 3 3 # Makefile for Kernel-based Virtual Machine module 4 4 # 5 5 6 - ccflags-y += -I $(srctree)/$(src) -I $(srctree)/virt/kvm/arm/vgic 6 + ccflags-y += -I $(srctree)/$(src) 7 7 8 8 KVM=../../../virt/kvm 9 9 10 10 obj-$(CONFIG_KVM_ARM_HOST) += kvm.o 11 11 obj-$(CONFIG_KVM_ARM_HOST) += hyp/ 12 12 13 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o $(KVM)/eventfd.o $(KVM)/vfio.o 14 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/arm.o $(KVM)/arm/mmu.o $(KVM)/arm/mmio.o 15 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/psci.o $(KVM)/arm/perf.o 16 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/hypercalls.o 17 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/pvtime.o 13 + kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o 14 + kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/eventfd.o $(KVM)/vfio.o $(KVM)/irqchip.o 15 + kvm-$(CONFIG_KVM_ARM_HOST) += arm.o mmu.o mmio.o 16 + kvm-$(CONFIG_KVM_ARM_HOST) += psci.o perf.o 17 + kvm-$(CONFIG_KVM_ARM_HOST) += hypercalls.o 18 + kvm-$(CONFIG_KVM_ARM_HOST) += pvtime.o 18 19 19 20 kvm-$(CONFIG_KVM_ARM_HOST) += inject_fault.o regmap.o va_layout.o 20 21 kvm-$(CONFIG_KVM_ARM_HOST) += hyp.o hyp-init.o handle_exit.o 21 22 kvm-$(CONFIG_KVM_ARM_HOST) += guest.o debug.o reset.o sys_regs.o sys_regs_generic_v8.o 22 23 kvm-$(CONFIG_KVM_ARM_HOST) += vgic-sys-reg-v3.o fpsimd.o pmu.o 23 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/aarch32.o 24 + kvm-$(CONFIG_KVM_ARM_HOST) += aarch32.o 25 + kvm-$(CONFIG_KVM_ARM_HOST) += arch_timer.o 26 + kvm-$(CONFIG_KVM_ARM_PMU) += pmu-emul.o 24 27 25 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/vgic/vgic.o 26 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/vgic/vgic-init.o 27 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/vgic/vgic-irqfd.o 28 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/vgic/vgic-v2.o 29 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/vgic/vgic-v3.o 30 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/vgic/vgic-v4.o 31 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/vgic/vgic-mmio.o 32 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/vgic/vgic-mmio-v2.o 33 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/vgic/vgic-mmio-v3.o 34 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/vgic/vgic-kvm-device.o 35 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/vgic/vgic-its.o 36 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/vgic/vgic-debug.o 37 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/irqchip.o 38 - kvm-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/arch_timer.o 39 - kvm-$(CONFIG_KVM_ARM_PMU) += $(KVM)/arm/pmu.o 28 + kvm-$(CONFIG_KVM_ARM_HOST) += vgic/vgic.o 29 + kvm-$(CONFIG_KVM_ARM_HOST) += vgic/vgic-init.o 30 + kvm-$(CONFIG_KVM_ARM_HOST) += vgic/vgic-irqfd.o 31 + kvm-$(CONFIG_KVM_ARM_HOST) += vgic/vgic-v2.o 32 + kvm-$(CONFIG_KVM_ARM_HOST) += vgic/vgic-v3.o 33 + kvm-$(CONFIG_KVM_ARM_HOST) += vgic/vgic-v4.o 34 + kvm-$(CONFIG_KVM_ARM_HOST) += vgic/vgic-mmio.o 35 + kvm-$(CONFIG_KVM_ARM_HOST) += vgic/vgic-mmio-v2.o 36 + kvm-$(CONFIG_KVM_ARM_HOST) += vgic/vgic-mmio-v3.o 37 + kvm-$(CONFIG_KVM_ARM_HOST) += vgic/vgic-kvm-device.o 38 + kvm-$(CONFIG_KVM_ARM_HOST) += vgic/vgic-its.o 39 + kvm-$(CONFIG_KVM_ARM_HOST) += vgic/vgic-debug.o
+1 -1
arch/arm64/kvm/handle_exit.c
··· 23 23 #include <kvm/arm_hypercalls.h> 24 24 25 25 #define CREATE_TRACE_POINTS 26 - #include "trace.h" 26 + #include "trace_handle_exit.h" 27 27 28 28 typedef int (*exit_handle_fn)(struct kvm_vcpu *, struct kvm_run *); 29 29
+3 -6
arch/arm64/kvm/hyp/Makefile
··· 6 6 ccflags-y += -fno-stack-protector -DDISABLE_BRANCH_PROFILING \ 7 7 $(DISABLE_STACKLEAK_PLUGIN) 8 8 9 - KVM=../../../../virt/kvm 10 - 11 - obj-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/hyp/vgic-v3-sr.o 12 - obj-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/hyp/timer-sr.o 13 - obj-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/hyp/aarch32.o 14 - 9 + obj-$(CONFIG_KVM_ARM_HOST) += vgic-v3-sr.o 10 + obj-$(CONFIG_KVM_ARM_HOST) += timer-sr.o 11 + obj-$(CONFIG_KVM_ARM_HOST) += aarch32.o 15 12 obj-$(CONFIG_KVM_ARM_HOST) += vgic-v2-cpuif-proxy.o 16 13 obj-$(CONFIG_KVM_ARM_HOST) += sysreg-sr.o 17 14 obj-$(CONFIG_KVM_ARM_HOST) += debug-sr.o
+4 -212
arch/arm64/kvm/trace.h
··· 1 1 /* SPDX-License-Identifier: GPL-2.0 */ 2 - #if !defined(_TRACE_ARM64_KVM_H) || defined(TRACE_HEADER_MULTI_READ) 2 + #ifndef _TRACE_ARM64_KVM_H 3 3 #define _TRACE_ARM64_KVM_H 4 4 5 - #include <linux/tracepoint.h> 6 - #include "sys_regs.h" 5 + #include "trace_arm.h" 6 + #include "trace_handle_exit.h" 7 7 8 - #undef TRACE_SYSTEM 9 - #define TRACE_SYSTEM kvm 10 - 11 - TRACE_EVENT(kvm_wfx_arm64, 12 - TP_PROTO(unsigned long vcpu_pc, bool is_wfe), 13 - TP_ARGS(vcpu_pc, is_wfe), 14 - 15 - TP_STRUCT__entry( 16 - __field(unsigned long, vcpu_pc) 17 - __field(bool, is_wfe) 18 - ), 19 - 20 - TP_fast_assign( 21 - __entry->vcpu_pc = vcpu_pc; 22 - __entry->is_wfe = is_wfe; 23 - ), 24 - 25 - TP_printk("guest executed wf%c at: 0x%08lx", 26 - __entry->is_wfe ? 'e' : 'i', __entry->vcpu_pc) 27 - ); 28 - 29 - TRACE_EVENT(kvm_hvc_arm64, 30 - TP_PROTO(unsigned long vcpu_pc, unsigned long r0, unsigned long imm), 31 - TP_ARGS(vcpu_pc, r0, imm), 32 - 33 - TP_STRUCT__entry( 34 - __field(unsigned long, vcpu_pc) 35 - __field(unsigned long, r0) 36 - __field(unsigned long, imm) 37 - ), 38 - 39 - TP_fast_assign( 40 - __entry->vcpu_pc = vcpu_pc; 41 - __entry->r0 = r0; 42 - __entry->imm = imm; 43 - ), 44 - 45 - TP_printk("HVC at 0x%08lx (r0: 0x%08lx, imm: 0x%lx)", 46 - __entry->vcpu_pc, __entry->r0, __entry->imm) 47 - ); 48 - 49 - TRACE_EVENT(kvm_arm_setup_debug, 50 - TP_PROTO(struct kvm_vcpu *vcpu, __u32 guest_debug), 51 - TP_ARGS(vcpu, guest_debug), 52 - 53 - TP_STRUCT__entry( 54 - __field(struct kvm_vcpu *, vcpu) 55 - __field(__u32, guest_debug) 56 - ), 57 - 58 - TP_fast_assign( 59 - __entry->vcpu = vcpu; 60 - __entry->guest_debug = guest_debug; 61 - ), 62 - 63 - TP_printk("vcpu: %p, flags: 0x%08x", __entry->vcpu, __entry->guest_debug) 64 - ); 65 - 66 - TRACE_EVENT(kvm_arm_clear_debug, 67 - TP_PROTO(__u32 guest_debug), 68 - TP_ARGS(guest_debug), 69 - 70 - TP_STRUCT__entry( 71 - __field(__u32, guest_debug) 72 - ), 73 - 74 - TP_fast_assign( 75 - __entry->guest_debug = guest_debug; 76 - ), 77 - 78 - TP_printk("flags: 0x%08x", __entry->guest_debug) 79 - ); 80 - 81 - TRACE_EVENT(kvm_arm_set_dreg32, 82 - TP_PROTO(const char *name, __u32 value), 83 - TP_ARGS(name, value), 84 - 85 - TP_STRUCT__entry( 86 - __field(const char *, name) 87 - __field(__u32, value) 88 - ), 89 - 90 - TP_fast_assign( 91 - __entry->name = name; 92 - __entry->value = value; 93 - ), 94 - 95 - TP_printk("%s: 0x%08x", __entry->name, __entry->value) 96 - ); 97 - 98 - TRACE_DEFINE_SIZEOF(__u64); 99 - 100 - TRACE_EVENT(kvm_arm_set_regset, 101 - TP_PROTO(const char *type, int len, __u64 *control, __u64 *value), 102 - TP_ARGS(type, len, control, value), 103 - TP_STRUCT__entry( 104 - __field(const char *, name) 105 - __field(int, len) 106 - __array(u64, ctrls, 16) 107 - __array(u64, values, 16) 108 - ), 109 - TP_fast_assign( 110 - __entry->name = type; 111 - __entry->len = len; 112 - memcpy(__entry->ctrls, control, len << 3); 113 - memcpy(__entry->values, value, len << 3); 114 - ), 115 - TP_printk("%d %s CTRL:%s VALUE:%s", __entry->len, __entry->name, 116 - __print_array(__entry->ctrls, __entry->len, sizeof(__u64)), 117 - __print_array(__entry->values, __entry->len, sizeof(__u64))) 118 - ); 119 - 120 - TRACE_EVENT(trap_reg, 121 - TP_PROTO(const char *fn, int reg, bool is_write, u64 write_value), 122 - TP_ARGS(fn, reg, is_write, write_value), 123 - 124 - TP_STRUCT__entry( 125 - __field(const char *, fn) 126 - __field(int, reg) 127 - __field(bool, is_write) 128 - __field(u64, write_value) 129 - ), 130 - 131 - TP_fast_assign( 132 - __entry->fn = fn; 133 - __entry->reg = reg; 134 - __entry->is_write = is_write; 135 - __entry->write_value = write_value; 136 - ), 137 - 138 - TP_printk("%s %s reg %d (0x%08llx)", __entry->fn, __entry->is_write?"write to":"read from", __entry->reg, __entry->write_value) 139 - ); 140 - 141 - TRACE_EVENT(kvm_handle_sys_reg, 142 - TP_PROTO(unsigned long hsr), 143 - TP_ARGS(hsr), 144 - 145 - TP_STRUCT__entry( 146 - __field(unsigned long, hsr) 147 - ), 148 - 149 - TP_fast_assign( 150 - __entry->hsr = hsr; 151 - ), 152 - 153 - TP_printk("HSR 0x%08lx", __entry->hsr) 154 - ); 155 - 156 - TRACE_EVENT(kvm_sys_access, 157 - TP_PROTO(unsigned long vcpu_pc, struct sys_reg_params *params, const struct sys_reg_desc *reg), 158 - TP_ARGS(vcpu_pc, params, reg), 159 - 160 - TP_STRUCT__entry( 161 - __field(unsigned long, vcpu_pc) 162 - __field(bool, is_write) 163 - __field(const char *, name) 164 - __field(u8, Op0) 165 - __field(u8, Op1) 166 - __field(u8, CRn) 167 - __field(u8, CRm) 168 - __field(u8, Op2) 169 - ), 170 - 171 - TP_fast_assign( 172 - __entry->vcpu_pc = vcpu_pc; 173 - __entry->is_write = params->is_write; 174 - __entry->name = reg->name; 175 - __entry->Op0 = reg->Op0; 176 - __entry->Op0 = reg->Op0; 177 - __entry->Op1 = reg->Op1; 178 - __entry->CRn = reg->CRn; 179 - __entry->CRm = reg->CRm; 180 - __entry->Op2 = reg->Op2; 181 - ), 182 - 183 - TP_printk("PC: %lx %s (%d,%d,%d,%d,%d) %s", 184 - __entry->vcpu_pc, __entry->name ?: "UNKN", 185 - __entry->Op0, __entry->Op1, __entry->CRn, 186 - __entry->CRm, __entry->Op2, 187 - __entry->is_write ? "write" : "read") 188 - ); 189 - 190 - TRACE_EVENT(kvm_set_guest_debug, 191 - TP_PROTO(struct kvm_vcpu *vcpu, __u32 guest_debug), 192 - TP_ARGS(vcpu, guest_debug), 193 - 194 - TP_STRUCT__entry( 195 - __field(struct kvm_vcpu *, vcpu) 196 - __field(__u32, guest_debug) 197 - ), 198 - 199 - TP_fast_assign( 200 - __entry->vcpu = vcpu; 201 - __entry->guest_debug = guest_debug; 202 - ), 203 - 204 - TP_printk("vcpu: %p, flags: 0x%08x", __entry->vcpu, __entry->guest_debug) 205 - ); 206 - 207 - 208 - #endif /* _TRACE_ARM64_KVM_H */ 209 - 210 - #undef TRACE_INCLUDE_PATH 211 - #define TRACE_INCLUDE_PATH . 212 - #undef TRACE_INCLUDE_FILE 213 - #define TRACE_INCLUDE_FILE trace 214 - 215 - /* This part must be outside protection */ 216 - #include <trace/define_trace.h> 8 + #endif /* _TRACE_ARM64_KVM_H */
+215
arch/arm64/kvm/trace_handle_exit.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 */ 2 + #if !defined(_TRACE_HANDLE_EXIT_ARM64_KVM_H) || defined(TRACE_HEADER_MULTI_READ) 3 + #define _TRACE_HANDLE_EXIT_ARM64_KVM_H 4 + 5 + #include <linux/tracepoint.h> 6 + #include "sys_regs.h" 7 + 8 + #undef TRACE_SYSTEM 9 + #define TRACE_SYSTEM kvm 10 + 11 + TRACE_EVENT(kvm_wfx_arm64, 12 + TP_PROTO(unsigned long vcpu_pc, bool is_wfe), 13 + TP_ARGS(vcpu_pc, is_wfe), 14 + 15 + TP_STRUCT__entry( 16 + __field(unsigned long, vcpu_pc) 17 + __field(bool, is_wfe) 18 + ), 19 + 20 + TP_fast_assign( 21 + __entry->vcpu_pc = vcpu_pc; 22 + __entry->is_wfe = is_wfe; 23 + ), 24 + 25 + TP_printk("guest executed wf%c at: 0x%08lx", 26 + __entry->is_wfe ? 'e' : 'i', __entry->vcpu_pc) 27 + ); 28 + 29 + TRACE_EVENT(kvm_hvc_arm64, 30 + TP_PROTO(unsigned long vcpu_pc, unsigned long r0, unsigned long imm), 31 + TP_ARGS(vcpu_pc, r0, imm), 32 + 33 + TP_STRUCT__entry( 34 + __field(unsigned long, vcpu_pc) 35 + __field(unsigned long, r0) 36 + __field(unsigned long, imm) 37 + ), 38 + 39 + TP_fast_assign( 40 + __entry->vcpu_pc = vcpu_pc; 41 + __entry->r0 = r0; 42 + __entry->imm = imm; 43 + ), 44 + 45 + TP_printk("HVC at 0x%08lx (r0: 0x%08lx, imm: 0x%lx)", 46 + __entry->vcpu_pc, __entry->r0, __entry->imm) 47 + ); 48 + 49 + TRACE_EVENT(kvm_arm_setup_debug, 50 + TP_PROTO(struct kvm_vcpu *vcpu, __u32 guest_debug), 51 + TP_ARGS(vcpu, guest_debug), 52 + 53 + TP_STRUCT__entry( 54 + __field(struct kvm_vcpu *, vcpu) 55 + __field(__u32, guest_debug) 56 + ), 57 + 58 + TP_fast_assign( 59 + __entry->vcpu = vcpu; 60 + __entry->guest_debug = guest_debug; 61 + ), 62 + 63 + TP_printk("vcpu: %p, flags: 0x%08x", __entry->vcpu, __entry->guest_debug) 64 + ); 65 + 66 + TRACE_EVENT(kvm_arm_clear_debug, 67 + TP_PROTO(__u32 guest_debug), 68 + TP_ARGS(guest_debug), 69 + 70 + TP_STRUCT__entry( 71 + __field(__u32, guest_debug) 72 + ), 73 + 74 + TP_fast_assign( 75 + __entry->guest_debug = guest_debug; 76 + ), 77 + 78 + TP_printk("flags: 0x%08x", __entry->guest_debug) 79 + ); 80 + 81 + TRACE_EVENT(kvm_arm_set_dreg32, 82 + TP_PROTO(const char *name, __u32 value), 83 + TP_ARGS(name, value), 84 + 85 + TP_STRUCT__entry( 86 + __field(const char *, name) 87 + __field(__u32, value) 88 + ), 89 + 90 + TP_fast_assign( 91 + __entry->name = name; 92 + __entry->value = value; 93 + ), 94 + 95 + TP_printk("%s: 0x%08x", __entry->name, __entry->value) 96 + ); 97 + 98 + TRACE_DEFINE_SIZEOF(__u64); 99 + 100 + TRACE_EVENT(kvm_arm_set_regset, 101 + TP_PROTO(const char *type, int len, __u64 *control, __u64 *value), 102 + TP_ARGS(type, len, control, value), 103 + TP_STRUCT__entry( 104 + __field(const char *, name) 105 + __field(int, len) 106 + __array(u64, ctrls, 16) 107 + __array(u64, values, 16) 108 + ), 109 + TP_fast_assign( 110 + __entry->name = type; 111 + __entry->len = len; 112 + memcpy(__entry->ctrls, control, len << 3); 113 + memcpy(__entry->values, value, len << 3); 114 + ), 115 + TP_printk("%d %s CTRL:%s VALUE:%s", __entry->len, __entry->name, 116 + __print_array(__entry->ctrls, __entry->len, sizeof(__u64)), 117 + __print_array(__entry->values, __entry->len, sizeof(__u64))) 118 + ); 119 + 120 + TRACE_EVENT(trap_reg, 121 + TP_PROTO(const char *fn, int reg, bool is_write, u64 write_value), 122 + TP_ARGS(fn, reg, is_write, write_value), 123 + 124 + TP_STRUCT__entry( 125 + __field(const char *, fn) 126 + __field(int, reg) 127 + __field(bool, is_write) 128 + __field(u64, write_value) 129 + ), 130 + 131 + TP_fast_assign( 132 + __entry->fn = fn; 133 + __entry->reg = reg; 134 + __entry->is_write = is_write; 135 + __entry->write_value = write_value; 136 + ), 137 + 138 + TP_printk("%s %s reg %d (0x%08llx)", __entry->fn, __entry->is_write?"write to":"read from", __entry->reg, __entry->write_value) 139 + ); 140 + 141 + TRACE_EVENT(kvm_handle_sys_reg, 142 + TP_PROTO(unsigned long hsr), 143 + TP_ARGS(hsr), 144 + 145 + TP_STRUCT__entry( 146 + __field(unsigned long, hsr) 147 + ), 148 + 149 + TP_fast_assign( 150 + __entry->hsr = hsr; 151 + ), 152 + 153 + TP_printk("HSR 0x%08lx", __entry->hsr) 154 + ); 155 + 156 + TRACE_EVENT(kvm_sys_access, 157 + TP_PROTO(unsigned long vcpu_pc, struct sys_reg_params *params, const struct sys_reg_desc *reg), 158 + TP_ARGS(vcpu_pc, params, reg), 159 + 160 + TP_STRUCT__entry( 161 + __field(unsigned long, vcpu_pc) 162 + __field(bool, is_write) 163 + __field(const char *, name) 164 + __field(u8, Op0) 165 + __field(u8, Op1) 166 + __field(u8, CRn) 167 + __field(u8, CRm) 168 + __field(u8, Op2) 169 + ), 170 + 171 + TP_fast_assign( 172 + __entry->vcpu_pc = vcpu_pc; 173 + __entry->is_write = params->is_write; 174 + __entry->name = reg->name; 175 + __entry->Op0 = reg->Op0; 176 + __entry->Op0 = reg->Op0; 177 + __entry->Op1 = reg->Op1; 178 + __entry->CRn = reg->CRn; 179 + __entry->CRm = reg->CRm; 180 + __entry->Op2 = reg->Op2; 181 + ), 182 + 183 + TP_printk("PC: %lx %s (%d,%d,%d,%d,%d) %s", 184 + __entry->vcpu_pc, __entry->name ?: "UNKN", 185 + __entry->Op0, __entry->Op1, __entry->CRn, 186 + __entry->CRm, __entry->Op2, 187 + __entry->is_write ? "write" : "read") 188 + ); 189 + 190 + TRACE_EVENT(kvm_set_guest_debug, 191 + TP_PROTO(struct kvm_vcpu *vcpu, __u32 guest_debug), 192 + TP_ARGS(vcpu, guest_debug), 193 + 194 + TP_STRUCT__entry( 195 + __field(struct kvm_vcpu *, vcpu) 196 + __field(__u32, guest_debug) 197 + ), 198 + 199 + TP_fast_assign( 200 + __entry->vcpu = vcpu; 201 + __entry->guest_debug = guest_debug; 202 + ), 203 + 204 + TP_printk("vcpu: %p, flags: 0x%08x", __entry->vcpu, __entry->guest_debug) 205 + ); 206 + 207 + #endif /* _TRACE_HANDLE_EXIT_ARM64_KVM_H */ 208 + 209 + #undef TRACE_INCLUDE_PATH 210 + #define TRACE_INCLUDE_PATH . 211 + #undef TRACE_INCLUDE_FILE 212 + #define TRACE_INCLUDE_FILE trace_handle_exit 213 + 214 + /* This part must be outside protection */ 215 + #include <trace/define_trace.h>
+1 -1
arch/arm64/kvm/vgic-sys-reg-v3.c
··· 7 7 #include <linux/kvm.h> 8 8 #include <linux/kvm_host.h> 9 9 #include <asm/kvm_emulate.h> 10 - #include "vgic.h" 10 + #include "vgic/vgic.h" 11 11 #include "sys_regs.h" 12 12 13 13 static bool access_gic_ctlr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
virt/kvm/arm/aarch32.c arch/arm64/kvm/aarch32.c
virt/kvm/arm/arch_timer.c arch/arm64/kvm/arch_timer.c
+1 -1
virt/kvm/arm/arm.c arch/arm64/kvm/arm.c
··· 22 22 #include <trace/events/kvm.h> 23 23 24 24 #define CREATE_TRACE_POINTS 25 - #include "trace.h" 25 + #include "trace_arm.h" 26 26 27 27 #include <linux/uaccess.h> 28 28 #include <asm/ptrace.h>
virt/kvm/arm/hyp/aarch32.c arch/arm64/kvm/hyp/aarch32.c
virt/kvm/arm/hyp/timer-sr.c arch/arm64/kvm/hyp/timer-sr.c
-4
virt/kvm/arm/hyp/vgic-v3-sr.c arch/arm64/kvm/hyp/vgic-v3-sr.c
··· 431 431 write_gicreg(vmcr, ICH_VMCR_EL2); 432 432 } 433 433 434 - #ifdef CONFIG_ARM64 435 - 436 434 static int __hyp_text __vgic_v3_bpr_min(void) 437 435 { 438 436 /* See Pseudocode for VPriorityGroup */ ··· 1124 1126 1125 1127 return 1; 1126 1128 } 1127 - 1128 - #endif
virt/kvm/arm/hypercalls.c arch/arm64/kvm/hypercalls.c
virt/kvm/arm/mmio.c arch/arm64/kvm/mmio.c
virt/kvm/arm/mmu.c arch/arm64/kvm/mmu.c
virt/kvm/arm/perf.c arch/arm64/kvm/perf.c
virt/kvm/arm/pmu.c arch/arm64/kvm/pmu-emul.c
virt/kvm/arm/psci.c arch/arm64/kvm/psci.c
virt/kvm/arm/pvtime.c arch/arm64/kvm/pvtime.c
+5 -6
virt/kvm/arm/trace.h arch/arm64/kvm/trace_arm.h
··· 1 1 /* SPDX-License-Identifier: GPL-2.0 */ 2 - #if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ) 3 - #define _TRACE_KVM_H 2 + #if !defined(_TRACE_ARM_ARM64_KVM_H) || defined(TRACE_HEADER_MULTI_READ) 3 + #define _TRACE_ARM_ARM64_KVM_H 4 4 5 5 #include <kvm/arm_arch_timer.h> 6 6 #include <linux/tracepoint.h> 7 - #include <asm/kvm_arm.h> 8 7 9 8 #undef TRACE_SYSTEM 10 9 #define TRACE_SYSTEM kvm ··· 367 368 __entry->timer_idx, __entry->should_fire) 368 369 ); 369 370 370 - #endif /* _TRACE_KVM_H */ 371 + #endif /* _TRACE_ARM_ARM64_KVM_H */ 371 372 372 373 #undef TRACE_INCLUDE_PATH 373 - #define TRACE_INCLUDE_PATH ../../virt/kvm/arm 374 + #define TRACE_INCLUDE_PATH . 374 375 #undef TRACE_INCLUDE_FILE 375 - #define TRACE_INCLUDE_FILE trace 376 + #define TRACE_INCLUDE_FILE trace_arm 376 377 377 378 /* This part must be outside protection */ 378 379 #include <trace/define_trace.h>
+1 -1
virt/kvm/arm/vgic/trace.h arch/arm64/kvm/vgic/trace.h
··· 30 30 #endif /* _TRACE_VGIC_H */ 31 31 32 32 #undef TRACE_INCLUDE_PATH 33 - #define TRACE_INCLUDE_PATH ../../virt/kvm/arm/vgic 33 + #define TRACE_INCLUDE_PATH ../../arch/arm64/kvm/vgic 34 34 #undef TRACE_INCLUDE_FILE 35 35 #define TRACE_INCLUDE_FILE trace 36 36
virt/kvm/arm/vgic/vgic-debug.c arch/arm64/kvm/vgic/vgic-debug.c
virt/kvm/arm/vgic/vgic-init.c arch/arm64/kvm/vgic/vgic-init.c
virt/kvm/arm/vgic/vgic-irqfd.c arch/arm64/kvm/vgic/vgic-irqfd.c
virt/kvm/arm/vgic/vgic-its.c arch/arm64/kvm/vgic/vgic-its.c
virt/kvm/arm/vgic/vgic-kvm-device.c arch/arm64/kvm/vgic/vgic-kvm-device.c
virt/kvm/arm/vgic/vgic-mmio-v2.c arch/arm64/kvm/vgic/vgic-mmio-v2.c
virt/kvm/arm/vgic/vgic-mmio-v3.c arch/arm64/kvm/vgic/vgic-mmio-v3.c
virt/kvm/arm/vgic/vgic-mmio.c arch/arm64/kvm/vgic/vgic-mmio.c
virt/kvm/arm/vgic/vgic-mmio.h arch/arm64/kvm/vgic/vgic-mmio.h
virt/kvm/arm/vgic/vgic-v2.c arch/arm64/kvm/vgic/vgic-v2.c
-2
virt/kvm/arm/vgic/vgic-v3.c arch/arm64/kvm/vgic/vgic-v3.c
··· 630 630 if (kvm_vgic_global_state.vcpu_base == 0) 631 631 kvm_info("disabling GICv2 emulation\n"); 632 632 633 - #ifdef CONFIG_ARM64 634 633 if (cpus_have_const_cap(ARM64_WORKAROUND_CAVIUM_30115)) { 635 634 group0_trap = true; 636 635 group1_trap = true; 637 636 } 638 - #endif 639 637 640 638 if (group0_trap || group1_trap || common_trap) { 641 639 kvm_info("GICv3 sysreg trapping enabled ([%s%s%s], reduced performance)\n",
virt/kvm/arm/vgic/vgic-v4.c arch/arm64/kvm/vgic/vgic-v4.c
virt/kvm/arm/vgic/vgic.c arch/arm64/kvm/vgic/vgic.c
virt/kvm/arm/vgic/vgic.h arch/arm64/kvm/vgic/vgic.h