2 #include <linux/module.h>
3 #include <asm/hypervisor.h>
5 static void __wbinvd(void *dummy)
11 void wbinvd_on_cpu(int cpu)
13 smp_call_function_single(cpu, __wbinvd, NULL, 1);
15 EXPORT_SYMBOL(wbinvd_on_cpu);
18 int wbinvd_on_all_cpus(void)
20 struct mmuext_op op = { .cmd = MMUEXT_FLUSH_CACHE_GLOBAL };
22 if (HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF) == 0)
24 /* Best effort as fallback. */
25 return on_each_cpu(__wbinvd, NULL, 1);
27 EXPORT_SYMBOL(wbinvd_on_all_cpus);