Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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);