[tip:WIP.x86/cpu 11/17] arch/x86/entry/entry_64.S:1214: Error: no such instruction: `save_and_set_gsbase scratch_reg=%rax save_reg=%rbx'

From: kbuild test robot
Date: Fri Jun 21 2019 - 14:38:07 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git WIP.x86/cpu
head: 707e6befd43ba8d754485d8d02ed4f49ec8ec667
commit: 54f792cc63c56d994651c8e83d059d6fac00fbf9 [11/17] x86/entry/64: Handle FSGSBASE enabled paranoid entry/exit
config: x86_64-kexec (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
git checkout 54f792cc63c56d994651c8e83d059d6fac00fbf9
# save the attached .config to linux build tree
make ARCH=x86_64

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

arch/x86/entry/entry_64.S: Assembler messages:
>> arch/x86/entry/entry_64.S:1214: Error: no such instruction: `save_and_set_gsbase scratch_reg=%rax save_reg=%rbx'

vim +1214 arch/x86/entry/entry_64.S

1165
1166 /*
1167 * Save all registers in pt_regs. Return GSBASE related information
1168 * in EBX depending on the availability of the FSGSBASE instructions:
1169 *
1170 * FSGSBASE R/EBX
1171 * N 0 -> SWAPGS on exit
1172 * 1 -> no SWAPGS on exit
1173 *
1174 * Y GSBASE value at entry, must be restored in paranoid_exit
1175 */
1176 ENTRY(paranoid_entry)
1177 UNWIND_HINT_FUNC
1178 cld
1179 PUSH_AND_CLEAR_REGS save_ret=1
1180 ENCODE_FRAME_POINTER 8
1181
1182 /*
1183 * Always stash CR3 in %r14. This value will be restored,
1184 * verbatim, at exit. Needed if paranoid_entry interrupted
1185 * another entry that already switched to the user CR3 value
1186 * but has not yet returned to userspace.
1187 *
1188 * This is also why CS (stashed in the "iret frame" by the
1189 * hardware at entry) can not be used: this may be a return
1190 * to kernel code, but with a user CR3 value.
1191 *
1192 * Switching CR3 does not depend on kernel GSBASE so it can
1193 * be done before switching to the kernel GSBASE. This is
1194 * required for FSGSBASE because the kernel GSBASE has to
1195 * be retrieved from a kernel internal table.
1196 */
1197 SAVE_AND_SWITCH_TO_KERNEL_CR3 scratch_reg=%rax save_reg=%r14
1198
1199 /*
1200 * Handling GSBASE depends on the availability of FSGSBASE.
1201 *
1202 * Without FSGSBASE the kernel enforces that negative GSBASE
1203 * values indicate kernel GSBASE. With FSGSBASE no assumptions
1204 * can be made about the GSBASE value when entering from user
1205 * space.
1206 */
1207 ALTERNATIVE "jmp .Lparanoid_entry_checkgs", "", X86_FEATURE_FSGSBASE
1208
1209 /*
1210 * Read the current GSBASE and store it in in %rbx unconditionally,
1211 * retrieve and set the current CPUs kernel GSBASE. The stored value
1212 * has to be restored in paranoid_exit unconditionally.
1213 */
> 1214 SAVE_AND_SET_GSBASE scratch_reg=%rax save_reg=%rbx
1215 ret
1216

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip