浏览代码

Merge tag 'kvm-arm-for-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD

KVM/ARM Changes for v4.6-rc1

Second round of patches for v4.6-rc1, fixing a small handful of issue:
 - disable preemption when calling smp_call_function_many
 - Make kvm_ksym_ref work on VHE systems again after KASRL breakage
 - Disable compiler instrumentation for hypervisor code that could make
   KVM/arm64 blow up.
Paolo Bonzini 9 年之前
父节点
当前提交
a471721828
共有 3 个文件被更改,包括 13 次插入1 次删除
  1. 2 0
      arch/arm/kvm/arm.c
  2. 7 1
      arch/arm64/include/asm/kvm_asm.h
  3. 4 0
      arch/arm64/kvm/hyp/Makefile

+ 2 - 0
arch/arm/kvm/arm.c

@@ -373,7 +373,9 @@ static void exit_vm_noop(void *info)
 
 void force_vm_exit(const cpumask_t *mask)
 {
+	preempt_disable();
 	smp_call_function_many(mask, exit_vm_noop, NULL, true);
+	preempt_enable();
 }
 
 /**

+ 7 - 1
arch/arm64/include/asm/kvm_asm.h

@@ -26,7 +26,13 @@
 #define KVM_ARM64_DEBUG_DIRTY_SHIFT	0
 #define KVM_ARM64_DEBUG_DIRTY		(1 << KVM_ARM64_DEBUG_DIRTY_SHIFT)
 
-#define kvm_ksym_ref(sym)		phys_to_virt((u64)&sym - kimage_voffset)
+#define kvm_ksym_ref(sym)						\
+	({								\
+		void *val = &sym;					\
+		if (!is_kernel_in_hyp_mode())				\
+			val = phys_to_virt((u64)&sym - kimage_voffset);	\
+		val;							\
+	 })
 
 #ifndef __ASSEMBLY__
 struct kvm;

+ 4 - 0
arch/arm64/kvm/hyp/Makefile

@@ -16,3 +16,7 @@ obj-$(CONFIG_KVM_ARM_HOST) += fpsimd.o
 obj-$(CONFIG_KVM_ARM_HOST) += tlb.o
 obj-$(CONFIG_KVM_ARM_HOST) += hyp-entry.o
 obj-$(CONFIG_KVM_ARM_HOST) += s2-setup.o
+
+GCOV_PROFILE	:= n
+KASAN_SANITIZE	:= n
+UBSAN_SANITIZE	:= n