On Tue, Dec 16, 2025 at 02:29:29PM +0800, kernel test robot wrote:
> Hi Mukesh,
>
> kernel test robot noticed the following build warnings:
>
> [auto build test WARNING on powerpc/next]
> [also build test WARNING on powerpc/fixes linus/master v6.19-rc1]
> [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/Mukesh-Kumar-Chaurasiya/powerpc-rename-arch_irq_disabled_regs/20251214-210813
> base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
> patch link:
> https://lore.kernel.org/r/20251214130245.43664-8-mkchauras%40linux.ibm.com
> patch subject: [PATCH v2 7/8] powerpc: Enable IRQ generic entry/exit path.
> config: powerpc-randconfig-r072-20251215
> (https://download.01.org/0day-ci/archive/20251216/[email protected]/config)
> compiler: powerpc-linux-gcc (GCC) 8.5.0
>
> 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 <[email protected]>
> | Closes:
> https://lore.kernel.org/oe-kbuild-all/[email protected]/
>
> smatch warnings:
> arch/powerpc/include/asm/entry-common.h:433 arch_enter_from_user_mode() warn:
> inconsistent indenting
>
> vim +433 arch/powerpc/include/asm/entry-common.h
>
> 2b0f05f77f11f8 Mukesh Kumar Chaurasiya 2025-12-14 396
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 397 static
> __always_inline void arch_enter_from_user_mode(struct pt_regs *regs)
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 398 {
> 37ad0d88d9bff7 Mukesh Kumar Chaurasiya 2025-12-14 399 kuap_lock();
> 37ad0d88d9bff7 Mukesh Kumar Chaurasiya 2025-12-14 400
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 401 if
> (IS_ENABLED(CONFIG_PPC_IRQ_SOFT_MASK_DEBUG))
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 402
> BUG_ON(irq_soft_mask_return() != IRQS_ALL_DISABLED);
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 403
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 404
> BUG_ON(regs_is_unrecoverable(regs));
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 405
> BUG_ON(!user_mode(regs));
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 406
> BUG_ON(regs_irqs_disabled(regs));
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 407
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 408 #ifdef CONFIG_PPC_PKEY
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 409 if
> (mmu_has_feature(MMU_FTR_PKEY) && trap_is_syscall(regs)) {
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 410
> unsigned long amr, iamr;
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 411 bool
> flush_needed = false;
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 412 /*
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 413 * When
> entering from userspace we mostly have the AMR/IAMR
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 414 *
> different from kernel default values. Hence don't compare.
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 415 */
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 416 amr =
> mfspr(SPRN_AMR);
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 417 iamr =
> mfspr(SPRN_IAMR);
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 418
> regs->amr = amr;
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 419
> regs->iamr = iamr;
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 420 if
> (mmu_has_feature(MMU_FTR_KUAP)) {
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 421
> mtspr(SPRN_AMR, AMR_KUAP_BLOCKED);
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 422
> flush_needed = true;
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 423 }
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 424 if
> (mmu_has_feature(MMU_FTR_BOOK3S_KUEP)) {
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 425
> mtspr(SPRN_IAMR, AMR_KUEP_BLOCKED);
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 426
> flush_needed = true;
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 427 }
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 428 if
> (flush_needed)
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 429
> isync();
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 430 } else
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 431 #endif
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 432
> kuap_assert_locked();
Will fix this in next iteration.
Regards,
Mukesh
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 @433
> booke_restore_dbcr0();
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 434
> account_cpu_user_entry();
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 435
> account_stolen_time();
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 436
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 437 /*
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 438 * This is not
> required for the syscall exit path, but makes the
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 439 * stack frame
> look nicer. If this was initialised in the first stack
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 440 * frame, or if
> the unwinder was taught the first stack frame always
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 441 * returns to
> user with IRQS_ENABLED, this store could be avoided!
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 442 */
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 443
> irq_soft_mask_regs_set_state(regs, IRQS_ENABLED);
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 444
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 445 /*
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 446 * If system
> call is called with TM active, set _TIF_RESTOREALL to
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 447 * prevent
> RFSCV being used to return to userspace, because POWER9
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 448 * TM
> implementation has problems with this instruction returning to
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 449 *
> transactional state. Final register values are not relevant because
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 450 * the
> transaction will be aborted upon return anyway. Or in the case
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 451 * of
> unsupported_scv SIGILL fault, the return state does not much
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 452 * matter
> because it's an edge case.
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 453 */
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 454 if
> (IS_ENABLED(CONFIG_PPC_TRANSACTIONAL_MEM) &&
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 455
> unlikely(MSR_TM_TRANSACTIONAL(regs->msr)))
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 456
> set_bits(_TIF_RESTOREALL, ¤t_thread_info()->flags);
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 457
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 458 /*
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 459 * If the
> system call was made with a transaction active, doom it and
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 460 * return
> without performing the system call. Unless it was an
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 461 * unsupported
> scv vector, in which case it's treated like an illegal
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 462 * instruction.
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 463 */
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 464 #ifdef
> CONFIG_PPC_TRANSACTIONAL_MEM
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 465 if
> (unlikely(MSR_TM_TRANSACTIONAL(regs->msr)) &&
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 466
> !trap_is_unsupported_scv(regs)) {
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 467 /*
> Enable TM in the kernel, and disable EE (for scv) */
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 468
> hard_irq_disable();
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 469
> mtmsr(mfmsr() | MSR_TM);
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 470
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 471 /*
> tabort, this dooms the transaction, nothing else */
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 472 asm
> volatile(".long 0x7c00071d | ((%0) << 16)"
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 473
> :: "r"(TM_CAUSE_SYSCALL | TM_CAUSE_PERSISTENT));
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 474
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 475 /*
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 476 *
> Userspace will never see the return value. Execution will
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 477 *
> resume after the tbegin. of the aborted transaction with the
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 478 *
> checkpointed register state. A context switch could occur
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 479 * or
> signal delivered to the process before resuming the
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 480 *
> doomed transaction context, but that should all be handled
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 481 * as
> expected.
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 482 */
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 483 return;
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 484 }
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 485 #endif /*
> CONFIG_PPC_TRANSACTIONAL_MEM */
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 486 }
> 1a5661537226c3 Mukesh Kumar Chaurasiya 2025-12-14 487
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki