* [openeuler:OLK-6.6 1636/1636] arch/loongarch/kernel/paravirt.c:74:13: error: redefinition of 'steal_acc'
@ 2024-12-13 23:09 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-12-13 23:09 UTC (permalink / raw)
To: kernel, Xianglai Li; +Cc: oe-kbuild-all
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: d68dc6ee371ec5466be9b2d76bdca0b360940adc
commit: 2ee1b090fed0f14944d85db83f5dbc33fbe812ec [1636/1636] LoongArch: KVM: Add PV steal time support in guest side
config: loongarch-randconfig-002-20241213 (https://download.01.org/0day-ci/archive/20241214/202412140757.roYzDP2E-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241214/202412140757.roYzDP2E-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202412140757.roYzDP2E-lkp@intel.com/
All errors (new ones prefixed by >>):
>> arch/loongarch/kernel/paravirt.c:74:13: error: redefinition of 'steal_acc'
74 | static bool steal_acc = true;
| ^~~~~~~~~
arch/loongarch/kernel/paravirt.c:23:13: note: previous definition of 'steal_acc' with type 'bool' {aka '_Bool'}
23 | static bool steal_acc = true;
| ^~~~~~~~~
>> arch/loongarch/kernel/paravirt.c:76:19: error: redefinition of 'parse_no_stealacc'
76 | static int __init parse_no_stealacc(char *arg)
| ^~~~~~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:24:19: note: previous definition of 'parse_no_stealacc' with type 'int(char *)'
24 | static int __init parse_no_stealacc(char *arg)
| ^~~~~~~~~~~~~~~~~
In file included from include/linux/printk.h:6,
from include/linux/kernel.h:30,
from include/linux/interrupt.h:6,
from arch/loongarch/kernel/paravirt.c:4:
>> include/linux/init.h:335:27: error: redefinition of '__setup_str_parse_no_stealacc'
335 | static const char __setup_str_##unique_id[] __initconst \
| ^~~~~~~~~~~~
include/linux/init.h:357:9: note: in expansion of macro '__setup_param'
357 | __setup_param(str, fn, fn, 1)
| ^~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:81:1: note: in expansion of macro 'early_param'
81 | early_param("no-steal-acc", parse_no_stealacc);
| ^~~~~~~~~~~
include/linux/init.h:335:27: note: previous definition of '__setup_str_parse_no_stealacc' with type 'const char[13]'
335 | static const char __setup_str_##unique_id[] __initconst \
| ^~~~~~~~~~~~
include/linux/init.h:357:9: note: in expansion of macro '__setup_param'
357 | __setup_param(str, fn, fn, 1)
| ^~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:29:1: note: in expansion of macro 'early_param'
29 | early_param("no-steal-acc", parse_no_stealacc);
| ^~~~~~~~~~~
>> include/linux/init.h:337:40: error: redefinition of '__setup_parse_no_stealacc'
337 | static struct obs_kernel_param __setup_##unique_id \
| ^~~~~~~~
include/linux/init.h:357:9: note: in expansion of macro '__setup_param'
357 | __setup_param(str, fn, fn, 1)
| ^~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:81:1: note: in expansion of macro 'early_param'
81 | early_param("no-steal-acc", parse_no_stealacc);
| ^~~~~~~~~~~
include/linux/init.h:337:40: note: previous definition of '__setup_parse_no_stealacc' with type 'struct obs_kernel_param'
337 | static struct obs_kernel_param __setup_##unique_id \
| ^~~~~~~~
include/linux/init.h:357:9: note: in expansion of macro '__setup_param'
357 | __setup_param(str, fn, fn, 1)
| ^~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:29:1: note: in expansion of macro 'early_param'
29 | early_param("no-steal-acc", parse_no_stealacc);
| ^~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:102:13: error: redefinition of 'steal_acc'
102 | static bool steal_acc = true;
| ^~~~~~~~~
arch/loongarch/kernel/paravirt.c:74:13: note: previous definition of 'steal_acc' with type 'bool' {aka '_Bool'}
74 | static bool steal_acc = true;
| ^~~~~~~~~
arch/loongarch/kernel/paravirt.c:104:19: error: redefinition of 'parse_no_stealacc'
104 | static int __init parse_no_stealacc(char *arg)
| ^~~~~~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:76:19: note: previous definition of 'parse_no_stealacc' with type 'int(char *)'
76 | static int __init parse_no_stealacc(char *arg)
| ^~~~~~~~~~~~~~~~~
>> include/linux/init.h:335:27: error: redefinition of '__setup_str_parse_no_stealacc'
335 | static const char __setup_str_##unique_id[] __initconst \
| ^~~~~~~~~~~~
include/linux/init.h:357:9: note: in expansion of macro '__setup_param'
357 | __setup_param(str, fn, fn, 1)
| ^~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:109:1: note: in expansion of macro 'early_param'
109 | early_param("no-steal-acc", parse_no_stealacc);
| ^~~~~~~~~~~
include/linux/init.h:335:27: note: previous definition of '__setup_str_parse_no_stealacc' with type 'const char[13]'
335 | static const char __setup_str_##unique_id[] __initconst \
| ^~~~~~~~~~~~
include/linux/init.h:357:9: note: in expansion of macro '__setup_param'
357 | __setup_param(str, fn, fn, 1)
| ^~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:81:1: note: in expansion of macro 'early_param'
81 | early_param("no-steal-acc", parse_no_stealacc);
| ^~~~~~~~~~~
>> include/linux/init.h:337:40: error: redefinition of '__setup_parse_no_stealacc'
337 | static struct obs_kernel_param __setup_##unique_id \
| ^~~~~~~~
include/linux/init.h:357:9: note: in expansion of macro '__setup_param'
357 | __setup_param(str, fn, fn, 1)
| ^~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:109:1: note: in expansion of macro 'early_param'
109 | early_param("no-steal-acc", parse_no_stealacc);
| ^~~~~~~~~~~
include/linux/init.h:337:40: note: previous definition of '__setup_parse_no_stealacc' with type 'struct obs_kernel_param'
337 | static struct obs_kernel_param __setup_##unique_id \
| ^~~~~~~~
include/linux/init.h:357:9: note: in expansion of macro '__setup_param'
357 | __setup_param(str, fn, fn, 1)
| ^~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:81:1: note: in expansion of macro 'early_param'
81 | early_param("no-steal-acc", parse_no_stealacc);
| ^~~~~~~~~~~
>> arch/loongarch/kernel/paravirt.c:111:12: error: redefinition of 'paravt_steal_clock'
111 | static u64 paravt_steal_clock(int cpu)
| ^~~~~~~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:83:12: note: previous definition of 'paravt_steal_clock' with type 'u64(int)' {aka 'long long unsigned int(int)'}
83 | static u64 paravt_steal_clock(int cpu)
| ^~~~~~~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c: In function 'pv_send_ipi_single':
arch/loongarch/kernel/paravirt.c:141:24: error: 'KVM_HCALL_FUNC_PV_IPI' undeclared (first use in this function); did you mean 'KVM_HCALL_FUNC_IPI'?
141 | kvm_hypercall3(KVM_HCALL_FUNC_PV_IPI, 1, 0, min);
| ^~~~~~~~~~~~~~~~~~~~~
| KVM_HCALL_FUNC_IPI
arch/loongarch/kernel/paravirt.c:141:24: note: each undeclared identifier is reported only once for each function it appears in
arch/loongarch/kernel/paravirt.c: In function 'pv_send_ipi_mask':
arch/loongarch/kernel/paravirt.c:175:40: error: 'KVM_HCALL_FUNC_PV_IPI' undeclared (first use in this function); did you mean 'KVM_HCALL_FUNC_IPI'?
175 | kvm_hypercall3(KVM_HCALL_FUNC_PV_IPI,
| ^~~~~~~~~~~~~~~~~~~~~
| KVM_HCALL_FUNC_IPI
arch/loongarch/kernel/paravirt.c: At top level:
>> arch/loongarch/kernel/paravirt.c:363:13: error: redefinition of 'pv_disable_steal_time'
363 | static void pv_disable_steal_time(void)
| ^~~~~~~~~~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:224:13: note: previous definition of 'pv_disable_steal_time' with type 'void(void)'
224 | static void pv_disable_steal_time(void)
| ^~~~~~~~~~~~~~~~~~~~~
>> arch/loongarch/kernel/paravirt.c:393:13: error: redefinition of 'pv_cpu_reboot'
393 | static void pv_cpu_reboot(void *unused)
| ^~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:289:13: note: previous definition of 'pv_cpu_reboot' with type 'void(void *)'
289 | static void pv_cpu_reboot(void *unused)
| ^~~~~~~~~~~~~
>> arch/loongarch/kernel/paravirt.c:398:12: error: redefinition of 'pv_reboot_notify'
398 | static int pv_reboot_notify(struct notifier_block *nb, unsigned long code, void *unused)
| ^~~~~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:294:12: note: previous definition of 'pv_reboot_notify' with type 'int(struct notifier_block *, long unsigned int, void *)'
294 | static int pv_reboot_notify(struct notifier_block *nb, unsigned long code,
| ^~~~~~~~~~~~~~~~
>> arch/loongarch/kernel/paravirt.c:404:30: error: redefinition of 'pv_reboot_nb'
404 | static struct notifier_block pv_reboot_nb = {
| ^~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:301:30: note: previous definition of 'pv_reboot_nb' with type 'struct notifier_block'
301 | static struct notifier_block pv_reboot_nb = {
| ^~~~~~~~~~~~
>> arch/loongarch/kernel/paravirt.c:408:12: error: redefinition of 'pv_time_init'
408 | int __init pv_time_init(void)
| ^~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:305:12: note: previous definition of 'pv_time_init' with type 'int(void)'
305 | int __init pv_time_init(void)
| ^~~~~~~~~~~~
>> arch/loongarch/kernel/paravirt.c:453:12: error: redefinition of 'pv_enable_steal_time'
453 | static int pv_enable_steal_time(void)
| ^~~~~~~~~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:339:12: note: previous definition of 'pv_enable_steal_time' with type 'int(void)'
339 | static int pv_enable_steal_time(void)
| ^~~~~~~~~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:477:13: error: redefinition of 'pv_disable_steal_time'
477 | static void pv_disable_steal_time(void)
| ^~~~~~~~~~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:363:13: note: previous definition of 'pv_disable_steal_time' with type 'void(void)'
363 | static void pv_disable_steal_time(void)
| ^~~~~~~~~~~~~~~~~~~~~
>> arch/loongarch/kernel/paravirt.c:484:12: error: redefinition of 'pv_time_cpu_online'
484 | static int pv_time_cpu_online(unsigned int cpu)
| ^~~~~~~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:370:12: note: previous definition of 'pv_time_cpu_online' with type 'int(unsigned int)'
370 | static int pv_time_cpu_online(unsigned int cpu)
| ^~~~~~~~~~~~~~~~~~
>> arch/loongarch/kernel/paravirt.c:495:12: error: redefinition of 'pv_time_cpu_down_prepare'
495 | static int pv_time_cpu_down_prepare(unsigned int cpu)
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:381:12: note: previous definition of 'pv_time_cpu_down_prepare' with type 'int(unsigned int)'
381 | static int pv_time_cpu_down_prepare(unsigned int cpu)
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:507:13: error: redefinition of 'pv_cpu_reboot'
507 | static void pv_cpu_reboot(void *unused)
| ^~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:393:13: note: previous definition of 'pv_cpu_reboot' with type 'void(void *)'
393 | static void pv_cpu_reboot(void *unused)
| ^~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:512:12: error: redefinition of 'pv_reboot_notify'
512 | static int pv_reboot_notify(struct notifier_block *nb, unsigned long code, void *unused)
| ^~~~~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:398:12: note: previous definition of 'pv_reboot_notify' with type 'int(struct notifier_block *, long unsigned int, void *)'
398 | static int pv_reboot_notify(struct notifier_block *nb, unsigned long code, void *unused)
| ^~~~~~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:518:30: error: redefinition of 'pv_reboot_nb'
518 | static struct notifier_block pv_reboot_nb = {
| ^~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:404:30: note: previous definition of 'pv_reboot_nb' with type 'struct notifier_block'
404 | static struct notifier_block pv_reboot_nb = {
| ^~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:522:12: error: redefinition of 'pv_time_init'
522 | int __init pv_time_init(void)
| ^~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:305:12: note: previous definition of 'pv_time_init' with type 'int(void)'
305 | int __init pv_time_init(void)
| ^~~~~~~~~~~~
arch/loongarch/kernel/paravirt.c:83:12: warning: 'paravt_steal_clock' defined but not used [-Wunused-function]
83 | static u64 paravt_steal_clock(int cpu)
| ^~~~~~~~~~~~~~~~~~
vim +/steal_acc +74 arch/loongarch/kernel/paravirt.c
73
> 74 static bool steal_acc = true;
75
> 76 static int __init parse_no_stealacc(char *arg)
77 {
78 steal_acc = false;
79 return 0;
80 }
> 81 early_param("no-steal-acc", parse_no_stealacc);
82
83 static u64 paravt_steal_clock(int cpu)
84 {
85 int version;
86 u64 steal;
87 struct kvm_steal_time *src;
88
89 src = &per_cpu(steal_time, cpu);
90 do {
91
92 version = src->version;
93 virt_rmb(); /* Make sure that the version is read before the steal */
94 steal = src->steal;
95 virt_rmb(); /* Make sure that the steal is read before the next version */
96
97 } while ((version & 1) || (version != src->version));
98
99 return steal;
100 }
101
102 static bool steal_acc = true;
103
104 static int __init parse_no_stealacc(char *arg)
105 {
106 steal_acc = false;
107 return 0;
108 }
109 early_param("no-steal-acc", parse_no_stealacc);
110
> 111 static u64 paravt_steal_clock(int cpu)
112 {
113 int version;
114 u64 steal;
115 struct kvm_steal_time *src;
116
117 src = &per_cpu(steal_time, cpu);
118 do {
119
120 version = src->version;
121 virt_rmb(); /* Make sure that the version is read before the steal */
122 steal = src->steal;
123 virt_rmb(); /* Make sure that the steal is read before the next version */
124
125 } while ((version & 1) || (version != src->version));
126
127 return steal;
128 }
129
130 #ifdef CONFIG_SMP
131 static void pv_send_ipi_single(int cpu, unsigned int action)
132 {
133 unsigned int min, old;
134 irq_cpustat_t *info = &per_cpu(irq_stat, cpu);
135
136 old = atomic_fetch_or(BIT(action), &info->message);
137 if (old)
138 return;
139
140 min = cpu_logical_map(cpu);
> 141 kvm_hypercall3(KVM_HCALL_FUNC_PV_IPI, 1, 0, min);
142 }
143
144 #define KVM_IPI_CLUSTER_SIZE (2 * BITS_PER_LONG)
145 static void pv_send_ipi_mask(const struct cpumask *mask, unsigned int action)
146 {
147 unsigned int cpu, i, min = 0, max = 0, old;
148 __uint128_t bitmap = 0;
149 irq_cpustat_t *info;
150
151 if (cpumask_empty(mask))
152 return;
153
154 action = BIT(action);
155 for_each_cpu(i, mask) {
156 info = &per_cpu(irq_stat, i);
157 old = atomic_fetch_or(action, &info->message);
158 if (old)
159 continue;
160
161 cpu = cpu_logical_map(i);
162 if (!bitmap) {
163 min = max = cpu;
164 } else if (cpu > min && cpu < min + KVM_IPI_CLUSTER_SIZE) {
165 max = cpu > max ? cpu : max;
166 } else if (cpu < min && (max - cpu) < KVM_IPI_CLUSTER_SIZE) {
167 bitmap <<= min - cpu;
168 min = cpu;
169 } else {
170 /*
171 * Physical cpuid is sorted in ascending order ascend
172 * for the next mask calculation, send IPI here
173 * directly and skip the remainding cpus
174 */
175 kvm_hypercall3(KVM_HCALL_FUNC_PV_IPI,
176 (unsigned long)bitmap,
177 (unsigned long)(bitmap >> BITS_PER_LONG), min);
178 min = max = cpu;
179 bitmap = 0;
180 }
181 __set_bit(cpu - min, (unsigned long *)&bitmap);
182 }
183
184 if (bitmap)
185 kvm_hypercall3(KVM_HCALL_FUNC_PV_IPI, (unsigned long)bitmap,
186 (unsigned long)(bitmap >> BITS_PER_LONG), min);
187 }
188
189 static irqreturn_t loongson_do_swi(int irq, void *dev)
190 {
191 irq_cpustat_t *info;
192 long action;
193
194 /* Clear swi interrupt */
195 clear_csr_estat(1 << INT_SWI0);
196 info = this_cpu_ptr(&irq_stat);
197 action = atomic_xchg(&info->message, 0);
198 if (action & SMP_CALL_FUNCTION) {
199 generic_smp_call_function_interrupt();
200 info->ipi_irqs[IPI_CALL_FUNCTION]++;
201 }
202
203 if (action & SMP_RESCHEDULE) {
204 scheduler_ipi();
205 info->ipi_irqs[IPI_RESCHEDULE]++;
206 }
207
208 return IRQ_HANDLED;
209 }
210
211 static void pv_init_ipi(void)
212 {
213 int r, swi0;
214
215 swi0 = get_percpu_irq(INT_SWI0);
216 if (swi0 < 0)
217 panic("SWI0 IRQ mapping failed\n");
218 irq_set_percpu_devid(swi0);
219 r = request_percpu_irq(swi0, loongson_do_swi, "SWI0", &irq_stat);
220 if (r < 0)
221 panic("SWI0 IRQ request failed\n");
222 }
223
> 224 static void pv_disable_steal_time(void)
225 {
226 if (has_steal_clock)
227 kvm_hypercall2(KVM_HCALL_FUNC_NOTIFY, KVM_FEATURE_STEAL_TIME, 0);
228 }
229
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-12-13 23:10 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-13 23:09 [openeuler:OLK-6.6 1636/1636] arch/loongarch/kernel/paravirt.c:74:13: error: redefinition of 'steal_acc' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.