at master 872 B view raw
1// SPDX-License-Identifier: GPL-2.0 2#include <asm/paravirt.h> 3#include <linux/smp.h> 4#include <linux/export.h> 5#include <linux/kvm_types.h> 6 7static void __wbinvd(void *dummy) 8{ 9 wbinvd(); 10} 11 12void wbinvd_on_cpu(int cpu) 13{ 14 smp_call_function_single(cpu, __wbinvd, NULL, 1); 15} 16EXPORT_SYMBOL_FOR_KVM(wbinvd_on_cpu); 17 18void wbinvd_on_all_cpus(void) 19{ 20 on_each_cpu(__wbinvd, NULL, 1); 21} 22EXPORT_SYMBOL(wbinvd_on_all_cpus); 23 24void wbinvd_on_cpus_mask(struct cpumask *cpus) 25{ 26 on_each_cpu_mask(cpus, __wbinvd, NULL, 1); 27} 28EXPORT_SYMBOL_FOR_KVM(wbinvd_on_cpus_mask); 29 30static void __wbnoinvd(void *dummy) 31{ 32 wbnoinvd(); 33} 34 35void wbnoinvd_on_all_cpus(void) 36{ 37 on_each_cpu(__wbnoinvd, NULL, 1); 38} 39EXPORT_SYMBOL_FOR_KVM(wbnoinvd_on_all_cpus); 40 41void wbnoinvd_on_cpus_mask(struct cpumask *cpus) 42{ 43 on_each_cpu_mask(cpus, __wbnoinvd, NULL, 1); 44} 45EXPORT_SYMBOL_FOR_KVM(wbnoinvd_on_cpus_mask);