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