From: kernel test robot <lkp@intel.com>
To: Ravi Bangoria <ravi.bangoria@amd.com>,
tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
dave.hansen@linux.intel.com, seanjc@google.com,
pbonzini@redhat.com, thomas.lendacky@amd.com
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
ravi.bangoria@amd.com, hpa@zytor.com, rmk+kernel@armlinux.org.uk,
peterz@infradead.org, james.morse@arm.com,
lukas.bulwahn@gmail.com, arjan@linux.intel.com,
j.granados@samsung.com, sibs@chinatelecom.cn,
nik.borisov@suse.com, michael.roth@amd.com,
nikunj.dadhania@amd.com, babu.moger@amd.com, x86@kernel.org,
kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
santosh.shukla@amd.com, ananth.narayan@amd.com,
sandipan.das@amd.com, manali.shukla@amd.com, jmattson@google.com
Subject: Re: [PATCH v2 1/4] x86/split_lock: Move Split and Bus lock code to a dedicated file
Date: Sat, 13 Jul 2024 18:33:23 +0800 [thread overview]
Message-ID: <202407131818.mNFDcgjd-lkp@intel.com> (raw)
In-Reply-To: <20240712093943.1288-2-ravi.bangoria@amd.com>
Hi Ravi,
kernel test robot noticed the following build errors:
[auto build test ERROR on tip/master]
[also build test ERROR on next-20240712]
[cannot apply to tip/x86/core kvm/queue linus/master tip/auto-latest kvm/linux-next v6.10-rc7]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Ravi-Bangoria/x86-split_lock-Move-Split-and-Bus-lock-code-to-a-dedicated-file/20240712-175306
base: tip/master
patch link: https://lore.kernel.org/r/20240712093943.1288-2-ravi.bangoria%40amd.com
patch subject: [PATCH v2 1/4] x86/split_lock: Move Split and Bus lock code to a dedicated file
config: i386-buildonly-randconfig-002-20240713 (https://download.01.org/0day-ci/archive/20240713/202407131818.mNFDcgjd-lkp@intel.com/config)
compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240713/202407131818.mNFDcgjd-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/202407131818.mNFDcgjd-lkp@intel.com/
All errors (new ones prefixed by >>):
>> arch/x86/kernel/cpu/bus_lock.c:219:16: error: no member named 'reported_split_lock' in 'struct task_struct'
219 | if (!current->reported_split_lock)
| ~~~~~~~ ^
arch/x86/kernel/cpu/bus_lock.c:222:11: error: no member named 'reported_split_lock' in 'struct task_struct'
222 | current->reported_split_lock = 1;
| ~~~~~~~ ^
>> arch/x86/kernel/cpu/bus_lock.c:250:6: error: redefinition of 'handle_guest_split_lock'
250 | bool handle_guest_split_lock(unsigned long ip)
| ^
arch/x86/include/asm/cpu.h:42:20: note: previous definition is here
42 | static inline bool handle_guest_split_lock(unsigned long ip)
| ^
>> arch/x86/kernel/cpu/bus_lock.c:292:6: error: redefinition of 'handle_user_split_lock'
292 | bool handle_user_split_lock(struct pt_regs *regs, long error_code)
| ^
arch/x86/include/asm/cpu.h:37:20: note: previous definition is here
37 | static inline bool handle_user_split_lock(struct pt_regs *regs, long error_code)
| ^
>> arch/x86/kernel/cpu/bus_lock.c:300:6: error: redefinition of 'handle_bus_lock'
300 | void handle_bus_lock(struct pt_regs *regs)
| ^
arch/x86/include/asm/cpu.h:47:20: note: previous definition is here
47 | static inline void handle_bus_lock(struct pt_regs *regs) {}
| ^
>> arch/x86/kernel/cpu/bus_lock.c:401:13: error: redefinition of 'sld_setup'
401 | void __init sld_setup(struct cpuinfo_x86 *c)
| ^
arch/x86/include/asm/cpu.h:36:27: note: previous definition is here
36 | static inline void __init sld_setup(struct cpuinfo_x86 *c) {}
| ^
6 errors generated.
vim +219 arch/x86/kernel/cpu/bus_lock.c
213
214 static void split_lock_warn(unsigned long ip)
215 {
216 struct delayed_work *work;
217 int cpu;
218
> 219 if (!current->reported_split_lock)
220 pr_warn_ratelimited("#AC: %s/%d took a split_lock trap at address: 0x%lx\n",
221 current->comm, current->pid, ip);
222 current->reported_split_lock = 1;
223
224 if (sysctl_sld_mitigate) {
225 /*
226 * misery factor #1:
227 * sleep 10ms before trying to execute split lock.
228 */
229 if (msleep_interruptible(10) > 0)
230 return;
231 /*
232 * Misery factor #2:
233 * only allow one buslocked disabled core at a time.
234 */
235 if (down_interruptible(&buslock_sem) == -EINTR)
236 return;
237 work = &sl_reenable_unlock;
238 } else {
239 work = &sl_reenable;
240 }
241
242 cpu = get_cpu();
243 schedule_delayed_work_on(cpu, work, 2);
244
245 /* Disable split lock detection on this CPU to make progress */
246 sld_update_msr(false);
247 put_cpu();
248 }
249
> 250 bool handle_guest_split_lock(unsigned long ip)
251 {
252 if (sld_state == sld_warn) {
253 split_lock_warn(ip);
254 return true;
255 }
256
257 pr_warn_once("#AC: %s/%d %s split_lock trap at address: 0x%lx\n",
258 current->comm, current->pid,
259 sld_state == sld_fatal ? "fatal" : "bogus", ip);
260
261 current->thread.error_code = 0;
262 current->thread.trap_nr = X86_TRAP_AC;
263 force_sig_fault(SIGBUS, BUS_ADRALN, NULL);
264 return false;
265 }
266 EXPORT_SYMBOL_GPL(handle_guest_split_lock);
267
268 void bus_lock_init(void)
269 {
270 u64 val;
271
272 if (!boot_cpu_has(X86_FEATURE_BUS_LOCK_DETECT))
273 return;
274
275 rdmsrl(MSR_IA32_DEBUGCTLMSR, val);
276
277 if ((boot_cpu_has(X86_FEATURE_SPLIT_LOCK_DETECT) &&
278 (sld_state == sld_warn || sld_state == sld_fatal)) ||
279 sld_state == sld_off) {
280 /*
281 * Warn and fatal are handled by #AC for split lock if #AC for
282 * split lock is supported.
283 */
284 val &= ~DEBUGCTLMSR_BUS_LOCK_DETECT;
285 } else {
286 val |= DEBUGCTLMSR_BUS_LOCK_DETECT;
287 }
288
289 wrmsrl(MSR_IA32_DEBUGCTLMSR, val);
290 }
291
> 292 bool handle_user_split_lock(struct pt_regs *regs, long error_code)
293 {
294 if ((regs->flags & X86_EFLAGS_AC) || sld_state == sld_fatal)
295 return false;
296 split_lock_warn(regs->ip);
297 return true;
298 }
299
> 300 void handle_bus_lock(struct pt_regs *regs)
301 {
302 switch (sld_state) {
303 case sld_off:
304 break;
305 case sld_ratelimit:
306 /* Enforce no more than bld_ratelimit bus locks/sec. */
307 while (!__ratelimit(&bld_ratelimit))
308 msleep(20);
309 /* Warn on the bus lock. */
310 fallthrough;
311 case sld_warn:
312 pr_warn_ratelimited("#DB: %s/%d took a bus_lock trap at address: 0x%lx\n",
313 current->comm, current->pid, regs->ip);
314 break;
315 case sld_fatal:
316 force_sig_fault(SIGBUS, BUS_ADRALN, NULL);
317 break;
318 }
319 }
320
321 /*
322 * CPU models that are known to have the per-core split-lock detection
323 * feature even though they do not enumerate IA32_CORE_CAPABILITIES.
324 */
325 static const struct x86_cpu_id split_lock_cpu_ids[] __initconst = {
326 X86_MATCH_VFM(INTEL_ICELAKE_X, 0),
327 X86_MATCH_VFM(INTEL_ICELAKE_L, 0),
328 X86_MATCH_VFM(INTEL_ICELAKE_D, 0),
329 {}
330 };
331
332 static void __init split_lock_setup(struct cpuinfo_x86 *c)
333 {
334 const struct x86_cpu_id *m;
335 u64 ia32_core_caps;
336
337 if (boot_cpu_has(X86_FEATURE_HYPERVISOR))
338 return;
339
340 /* Check for CPUs that have support but do not enumerate it: */
341 m = x86_match_cpu(split_lock_cpu_ids);
342 if (m)
343 goto supported;
344
345 if (!cpu_has(c, X86_FEATURE_CORE_CAPABILITIES))
346 return;
347
348 /*
349 * Not all bits in MSR_IA32_CORE_CAPS are architectural, but
350 * MSR_IA32_CORE_CAPS_SPLIT_LOCK_DETECT is. All CPUs that set
351 * it have split lock detection.
352 */
353 rdmsrl(MSR_IA32_CORE_CAPS, ia32_core_caps);
354 if (ia32_core_caps & MSR_IA32_CORE_CAPS_SPLIT_LOCK_DETECT)
355 goto supported;
356
357 /* CPU is not in the model list and does not have the MSR bit: */
358 return;
359
360 supported:
361 cpu_model_supports_sld = true;
362 __split_lock_setup();
363 }
364
365 static void sld_state_show(void)
366 {
367 if (!boot_cpu_has(X86_FEATURE_BUS_LOCK_DETECT) &&
368 !boot_cpu_has(X86_FEATURE_SPLIT_LOCK_DETECT))
369 return;
370
371 switch (sld_state) {
372 case sld_off:
373 pr_info("disabled\n");
374 break;
375 case sld_warn:
376 if (boot_cpu_has(X86_FEATURE_SPLIT_LOCK_DETECT)) {
377 pr_info("#AC: crashing the kernel on kernel split_locks and warning on user-space split_locks\n");
378 if (cpuhp_setup_state(CPUHP_AP_ONLINE_DYN,
379 "x86/splitlock", NULL, splitlock_cpu_offline) < 0)
380 pr_warn("No splitlock CPU offline handler\n");
381 } else if (boot_cpu_has(X86_FEATURE_BUS_LOCK_DETECT)) {
382 pr_info("#DB: warning on user-space bus_locks\n");
383 }
384 break;
385 case sld_fatal:
386 if (boot_cpu_has(X86_FEATURE_SPLIT_LOCK_DETECT)) {
387 pr_info("#AC: crashing the kernel on kernel split_locks and sending SIGBUS on user-space split_locks\n");
388 } else if (boot_cpu_has(X86_FEATURE_BUS_LOCK_DETECT)) {
389 pr_info("#DB: sending SIGBUS on user-space bus_locks%s\n",
390 boot_cpu_has(X86_FEATURE_SPLIT_LOCK_DETECT) ?
391 " from non-WB" : "");
392 }
393 break;
394 case sld_ratelimit:
395 if (boot_cpu_has(X86_FEATURE_BUS_LOCK_DETECT))
396 pr_info("#DB: setting system wide bus lock rate limit to %u/sec\n", bld_ratelimit.burst);
397 break;
398 }
399 }
400
> 401 void __init sld_setup(struct cpuinfo_x86 *c)
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2024-07-13 10:34 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-12 9:39 [PATCH v2 0/4] x86/cpu: Add Bus Lock Detect support for AMD Ravi Bangoria
2024-07-12 9:39 ` [PATCH v2 1/4] x86/split_lock: Move Split and Bus lock code to a dedicated file Ravi Bangoria
2024-07-13 10:33 ` kernel test robot [this message]
2024-07-13 12:41 ` kernel test robot
2024-07-12 9:39 ` [PATCH v2 2/4] x86/bus_lock: Add support for AMD Ravi Bangoria
2024-07-12 9:39 ` [PATCH v2 3/4] KVM: SVM: Don't advertise Bus Lock Detect to guest if SVM support is missing Ravi Bangoria
2024-07-12 23:33 ` Jim Mattson
2024-07-12 9:39 ` [PATCH v2 4/4] KVM: SVM: Add Bus Lock Detect support Ravi Bangoria
2024-07-15 15:11 ` [PATCH v2 0/4] x86/cpu: Add Bus Lock Detect support for AMD Tom Lendacky
2024-07-15 15:18 ` Ravi Bangoria
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202407131818.mNFDcgjd-lkp@intel.com \
--to=lkp@intel.com \
--cc=ananth.narayan@amd.com \
--cc=arjan@linux.intel.com \
--cc=babu.moger@amd.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=j.granados@samsung.com \
--cc=james.morse@arm.com \
--cc=jmattson@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=lukas.bulwahn@gmail.com \
--cc=manali.shukla@amd.com \
--cc=michael.roth@amd.com \
--cc=mingo@redhat.com \
--cc=nik.borisov@suse.com \
--cc=nikunj.dadhania@amd.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=ravi.bangoria@amd.com \
--cc=rmk+kernel@armlinux.org.uk \
--cc=sandipan.das@amd.com \
--cc=santosh.shukla@amd.com \
--cc=seanjc@google.com \
--cc=sibs@chinatelecom.cn \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox