diff options
Diffstat (limited to 'arch/x86/kernel/cpu/mshyperv.c')
| -rw-r--r-- | arch/x86/kernel/cpu/mshyperv.c | 17 | 
1 files changed, 15 insertions, 2 deletions
| diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c index ff55df60228f..5a99f993e639 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -18,6 +18,7 @@  #include <linux/kexec.h>  #include <linux/i8253.h>  #include <linux/random.h> +#include <linux/swiotlb.h>  #include <asm/processor.h>  #include <asm/hypervisor.h>  #include <asm/hyperv-tlfs.h> @@ -79,7 +80,7 @@ DEFINE_IDTENTRY_SYSVEC(sysvec_hyperv_stimer0)  	inc_irq_stat(hyperv_stimer0_count);  	if (hv_stimer0_handler)  		hv_stimer0_handler(); -	add_interrupt_randomness(HYPERV_STIMER0_VECTOR, 0); +	add_interrupt_randomness(HYPERV_STIMER0_VECTOR);  	ack_APIC_irq();  	set_irq_regs(old_regs); @@ -329,8 +330,20 @@ static void __init ms_hyperv_init_platform(void)  		pr_info("Hyper-V: Isolation Config: Group A 0x%x, Group B 0x%x\n",  			ms_hyperv.isolation_config_a, ms_hyperv.isolation_config_b); -		if (hv_get_isolation_type() == HV_ISOLATION_TYPE_SNP) +		if (hv_get_isolation_type() == HV_ISOLATION_TYPE_SNP) {  			static_branch_enable(&isolation_type_snp); +#ifdef CONFIG_SWIOTLB +			swiotlb_unencrypted_base = ms_hyperv.shared_gpa_boundary; +#endif +		} + +#ifdef CONFIG_SWIOTLB +		/* +		 * Enable swiotlb force mode in Isolation VM to +		 * use swiotlb bounce buffer for dma transaction. +		 */ +		swiotlb_force = SWIOTLB_FORCE; +#endif  	}  	if (hv_max_functions_eax >= HYPERV_CPUID_NESTED_FEATURES) { |