[mark:arm64/percpu-fixup 11/18] arch/arm64/kernel/entry.S:1064: Error: operand 1 must be an integer register -- `ldrh w,[,#320]'

kernel test robot <[email protected]> Tue, 04 Aug 2026 21:50:08 +0800
Newsgroups dev.linux.lists.oe-kbuild-all
Message-ID <[email protected]>
tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git arm64/percpu-fixup
head:   9e0b9ccad924850288def352da05df0b54fb8aa8
commit: 636f49109b313ff05fac31d2d369c535b399d9a1 [11/18] arm64: percpu: Add infrastructure for preemptible this_cpu_*() ops
config: arm64-randconfig-004-20260804 (https://download.01.org/0day-ci/archive/20260804/[email protected]/config)
compiler: aarch64-linux-gcc (GCC) 9.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260804/[email protected]/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 <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

All errors (new ones prefixed by >>):

   arch/arm64/kernel/entry.S: Assembler messages:
>> arch/arm64/kernel/entry.S:1064: Error: operand 1 must be an integer register -- `ldrh w,[,#320]'
>> arch/arm64/kernel/entry.S:1064: Error: operand 1 must be an integer register -- `strh w,[tsk,#28]'


vim +1064 arch/arm64/kernel/entry.S

  1040	
  1041		/*
  1042		 * We may have interrupted userspace, or a guest, or exit-from or
  1043		 * return-to either of these. Preserve the interrupted sp_el0, and
  1044		 * initialize sp_el0 to the current task.
  1045		 */
  1046		mrs	x20, sp_el0
  1047		ldr_this_cpu    dst=tsk, sym=__entry_task, tmp=x1
  1048		msr	sp_el0, tsk
  1049	
  1050		/* If we interrupted the kernel point to the previous stack/frame. */
  1051		and     x0, x3, #0xc
  1052		mrs     x1, CurrentEL
  1053		cmp     x0, x1
  1054		csel	x29, x29, xzr, eq	// fp, or zero
  1055		csel	x4, x2, xzr, eq		// elr, or zero
  1056	
  1057		stp	x29, x4, [sp, #-16]!
  1058		mov	x29, sp
  1059	
  1060		add	x0, x19, #SDEI_EVENT_INTREGS
  1061		mov	x1, x19
  1062		pcpu_gprs_entry tsk, x0, x2
  1063		bl	__sdei_handler
> 1064		pcpu_gprs_exit tsk
  1065	
  1066		msr	sp_el0, x20
  1067		/* restore regs >x17 that firmware won't restore */
  1068		mov	x4, x19         // keep x4 for __sdei_asm_exit_trampoline
  1069		ldp	x18, x19, [x4, #SDEI_EVENT_INTREGS + 16 * 9]
  1070		ldp	x20, x21, [x4, #SDEI_EVENT_INTREGS + 16 * 10]
  1071		ldp	x22, x23, [x4, #SDEI_EVENT_INTREGS + 16 * 11]
  1072		ldp	x24, x25, [x4, #SDEI_EVENT_INTREGS + 16 * 12]
  1073		ldp	x22, x27, [x4, #SDEI_EVENT_INTREGS + 16 * 13]
  1074		ldp	x28, x29, [x4, #SDEI_EVENT_INTREGS + 16 * 14]
  1075		ldp	lr, x1, [x4, #SDEI_EVENT_INTREGS + S_LR]
  1076		mov	sp, x1
  1077	
  1078		mov	x1, x0			// address to complete_and_resume
  1079		/* x0 = (x0 <= SDEI_EV_FAILED) ?
  1080		 * EVENT_COMPLETE:EVENT_COMPLETE_AND_RESUME
  1081		 */
  1082		cmp	x0, #SDEI_EV_FAILED
  1083		mov_q	x2, SDEI_1_0_FN_SDEI_EVENT_COMPLETE
  1084		mov_q	x3, SDEI_1_0_FN_SDEI_EVENT_COMPLETE_AND_RESUME
  1085		csel	x0, x2, x3, ls
  1086	
  1087		ldr_l	x2, sdei_exit_mode
  1088	
  1089		/* Clear the registered-event seen by crash_smp_send_stop() */
  1090		ldrb	w3, [x4, #SDEI_EVENT_PRIORITY]
  1091		cbnz	w3, 1f
  1092		adr_this_cpu dst=x5, sym=sdei_active_normal_event, tmp=x6
  1093		b	2f
  1094	1:	adr_this_cpu dst=x5, sym=sdei_active_critical_event, tmp=x6
  1095	2:	str	xzr, [x5]
  1096	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki