Merge branch 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 hyperv update from Ingo Molnar: "Enable PCID support on Hyper-V guests" * 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/hyperv: Stop suppressing X86_FEATURE_PCID
This commit is contained in:
commit
72906f3893
|
@ -137,7 +137,12 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info->mm) {
|
if (info->mm) {
|
||||||
|
/*
|
||||||
|
* AddressSpace argument must match the CR3 with PCID bits
|
||||||
|
* stripped out.
|
||||||
|
*/
|
||||||
flush->address_space = virt_to_phys(info->mm->pgd);
|
flush->address_space = virt_to_phys(info->mm->pgd);
|
||||||
|
flush->address_space &= CR3_ADDR_MASK;
|
||||||
flush->flags = 0;
|
flush->flags = 0;
|
||||||
} else {
|
} else {
|
||||||
flush->address_space = 0;
|
flush->address_space = 0;
|
||||||
|
@ -219,7 +224,12 @@ static void hyperv_flush_tlb_others_ex(const struct cpumask *cpus,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info->mm) {
|
if (info->mm) {
|
||||||
|
/*
|
||||||
|
* AddressSpace argument must match the CR3 with PCID bits
|
||||||
|
* stripped out.
|
||||||
|
*/
|
||||||
flush->address_space = virt_to_phys(info->mm->pgd);
|
flush->address_space = virt_to_phys(info->mm->pgd);
|
||||||
|
flush->address_space &= CR3_ADDR_MASK;
|
||||||
flush->flags = 0;
|
flush->flags = 0;
|
||||||
} else {
|
} else {
|
||||||
flush->address_space = 0;
|
flush->address_space = 0;
|
||||||
|
@ -278,8 +288,6 @@ void hyperv_setup_mmu_ops(void)
|
||||||
if (!(ms_hyperv.hints & HV_X64_REMOTE_TLB_FLUSH_RECOMMENDED))
|
if (!(ms_hyperv.hints & HV_X64_REMOTE_TLB_FLUSH_RECOMMENDED))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
setup_clear_cpu_cap(X86_FEATURE_PCID);
|
|
||||||
|
|
||||||
if (!(ms_hyperv.hints & HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED)) {
|
if (!(ms_hyperv.hints & HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED)) {
|
||||||
pr_info("Using hypercall for remote TLB flush\n");
|
pr_info("Using hypercall for remote TLB flush\n");
|
||||||
pv_mmu_ops.flush_tlb_others = hyperv_flush_tlb_others;
|
pv_mmu_ops.flush_tlb_others = hyperv_flush_tlb_others;
|
||||||
|
|
Loading…
Reference in New Issue