* [intel-tdx:guest-kexec 1/2] arch/x86/kernel/relocate_kernel_64.S:151: Error: too many positional arguments
@ 2023-06-28 1:49 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2023-06-28 1:49 UTC (permalink / raw)
To: Kirill A. Shutemov; +Cc: oe-kbuild-all
tree: https://github.com/intel/tdx.git guest-kexec
head: ac18652a4806023b0986b468dc9061c640383279
commit: 0dc7dad5e4c5ab94e4429d16272f65de6307c5c0 [1/2] x86/kexec: Keep CR4.MCE during kexec for TDX guest
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20230628/202306280926.g6GuOctj-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce: (https://download.01.org/0day-ci/archive/20230628/202306280926.g6GuOctj-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/202306280926.g6GuOctj-lkp@intel.com/
All errors (new ones prefixed by >>):
arch/x86/kernel/relocate_kernel_64.S: Assembler messages:
>> arch/x86/kernel/relocate_kernel_64.S:151: Error: too many positional arguments
vim +151 arch/x86/kernel/relocate_kernel_64.S
114
115 SYM_CODE_START_LOCAL_NOALIGN(identity_mapped)
116 UNWIND_HINT_END_OF_STACK
117 /* set return address to 0 if not preserving context */
118 pushq $0
119 /* store the start address on the stack */
120 pushq %rdx
121
122 /*
123 * Clear X86_CR4_CET (if it was set) such that we can clear CR0_WP
124 * below.
125 */
126 movq %cr4, %rax
127 andq $~(X86_CR4_CET), %rax
128 movq %rax, %cr4
129
130 /*
131 * Set cr0 to a known state:
132 * - Paging enabled
133 * - Alignment check disabled
134 * - Write protect disabled
135 * - No task switch
136 * - Don't do FP software emulation.
137 * - Protected mode enabled
138 */
139 movq %cr0, %rax
140 andq $~(X86_CR0_AM | X86_CR0_WP | X86_CR0_TS | X86_CR0_EM), %rax
141 orl $(X86_CR0_PG | X86_CR0_PE), %eax
142 movq %rax, %cr0
143
144 /*
145 * Set cr4 to a known state:
146 * - physical address extension enabled
147 * - 5-level paging, if it was enabled before
148 * - Machine check exception on TDX guest. Clearing MCE is not allowed
149 * in TDX guests.
150 */
> 151 ALTERNATIVE "movl "$X86_CR4_PAE", %eax", \
152 "movl "$(X86_CR4_PAE | X86_CR4_MCE)", %eax", X86_FEATURE_TDX_GUEST
153 testq $X86_CR4_LA57, %r13
154 jz 1f
155 orl $X86_CR4_LA57, %eax
156 1:
157 movq %rax, %cr4
158
159 jmp 1f
160 1:
161
162 /* Flush the TLB (needed?) */
163 movq %r9, %cr3
164
165 /*
166 * If SME is active, there could be old encrypted cache line
167 * entries that will conflict with the now unencrypted memory
168 * used by kexec. Flush the caches before copying the kernel.
169 */
170 testq %r12, %r12
171 jz 1f
172 wbinvd
173 1:
174
175 movq %rcx, %r11
176 call swap_pages
177
178 /*
179 * To be certain of avoiding problems with self-modifying code
180 * I need to execute a serializing instruction here.
181 * So I flush the TLB by reloading %cr3 here, it's handy,
182 * and not processor dependent.
183 */
184 movq %cr3, %rax
185 movq %rax, %cr3
186
187 /*
188 * set all of the registers to known values
189 * leave %rsp alone
190 */
191
192 testq %r11, %r11
193 jnz 1f
194 xorl %eax, %eax
195 xorl %ebx, %ebx
196 xorl %ecx, %ecx
197 xorl %edx, %edx
198 xorl %esi, %esi
199 xorl %edi, %edi
200 xorl %ebp, %ebp
201 xorl %r8d, %r8d
202 xorl %r9d, %r9d
203 xorl %r10d, %r10d
204 xorl %r11d, %r11d
205 xorl %r12d, %r12d
206 xorl %r13d, %r13d
207 xorl %r14d, %r14d
208 xorl %r15d, %r15d
209
210 ANNOTATE_UNRET_SAFE
211 ret
212 int3
213
214 1:
215 popq %rdx
216 leaq PAGE_SIZE(%r10), %rsp
217 ANNOTATE_RETPOLINE_SAFE
218 call *%rdx
219
220 /* get the re-entry point of the peer system */
221 movq 0(%rsp), %rbp
222 leaq relocate_kernel(%rip), %r8
223 movq CP_PA_SWAP_PAGE(%r8), %r10
224 movq CP_PA_BACKUP_PAGES_MAP(%r8), %rdi
225 movq CP_PA_TABLE_PAGE(%r8), %rax
226 movq %rax, %cr3
227 lea PAGE_SIZE(%r8), %rsp
228 call swap_pages
229 movq $virtual_mapped, %rax
230 pushq %rax
231 ANNOTATE_UNRET_SAFE
232 ret
233 int3
234 SYM_CODE_END(identity_mapped)
235
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread
* [intel-tdx:guest-kexec 1/2] arch/x86/kernel/relocate_kernel_64.S:151: Error: too many positional arguments
@ 2023-06-28 1:38 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2023-06-28 1:38 UTC (permalink / raw)
To: Kirill A. Shutemov; +Cc: oe-kbuild-all
tree: https://github.com/intel/tdx.git guest-kexec
head: ac18652a4806023b0986b468dc9061c640383279
commit: 0dc7dad5e4c5ab94e4429d16272f65de6307c5c0 [1/2] x86/kexec: Keep CR4.MCE during kexec for TDX guest
config: x86_64-defconfig (https://download.01.org/0day-ci/archive/20230628/202306280925.r9Z2nppv-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce: (https://download.01.org/0day-ci/archive/20230628/202306280925.r9Z2nppv-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/202306280925.r9Z2nppv-lkp@intel.com/
All errors (new ones prefixed by >>):
arch/x86/kernel/relocate_kernel_64.S: Assembler messages:
>> arch/x86/kernel/relocate_kernel_64.S:151: Error: too many positional arguments
vim +151 arch/x86/kernel/relocate_kernel_64.S
114
115 SYM_CODE_START_LOCAL_NOALIGN(identity_mapped)
116 UNWIND_HINT_END_OF_STACK
117 /* set return address to 0 if not preserving context */
118 pushq $0
119 /* store the start address on the stack */
120 pushq %rdx
121
122 /*
123 * Clear X86_CR4_CET (if it was set) such that we can clear CR0_WP
124 * below.
125 */
126 movq %cr4, %rax
127 andq $~(X86_CR4_CET), %rax
128 movq %rax, %cr4
129
130 /*
131 * Set cr0 to a known state:
132 * - Paging enabled
133 * - Alignment check disabled
134 * - Write protect disabled
135 * - No task switch
136 * - Don't do FP software emulation.
137 * - Protected mode enabled
138 */
139 movq %cr0, %rax
140 andq $~(X86_CR0_AM | X86_CR0_WP | X86_CR0_TS | X86_CR0_EM), %rax
141 orl $(X86_CR0_PG | X86_CR0_PE), %eax
142 movq %rax, %cr0
143
144 /*
145 * Set cr4 to a known state:
146 * - physical address extension enabled
147 * - 5-level paging, if it was enabled before
148 * - Machine check exception on TDX guest. Clearing MCE is not allowed
149 * in TDX guests.
150 */
> 151 ALTERNATIVE "movl "$X86_CR4_PAE", %eax", \
152 "movl "$(X86_CR4_PAE | X86_CR4_MCE)", %eax", X86_FEATURE_TDX_GUEST
153 testq $X86_CR4_LA57, %r13
154 jz 1f
155 orl $X86_CR4_LA57, %eax
156 1:
157 movq %rax, %cr4
158
159 jmp 1f
160 1:
161
162 /* Flush the TLB (needed?) */
163 movq %r9, %cr3
164
165 /*
166 * If SME is active, there could be old encrypted cache line
167 * entries that will conflict with the now unencrypted memory
168 * used by kexec. Flush the caches before copying the kernel.
169 */
170 testq %r12, %r12
171 jz 1f
172 wbinvd
173 1:
174
175 movq %rcx, %r11
176 call swap_pages
177
178 /*
179 * To be certain of avoiding problems with self-modifying code
180 * I need to execute a serializing instruction here.
181 * So I flush the TLB by reloading %cr3 here, it's handy,
182 * and not processor dependent.
183 */
184 movq %cr3, %rax
185 movq %rax, %cr3
186
187 /*
188 * set all of the registers to known values
189 * leave %rsp alone
190 */
191
192 testq %r11, %r11
193 jnz 1f
194 xorl %eax, %eax
195 xorl %ebx, %ebx
196 xorl %ecx, %ecx
197 xorl %edx, %edx
198 xorl %esi, %esi
199 xorl %edi, %edi
200 xorl %ebp, %ebp
201 xorl %r8d, %r8d
202 xorl %r9d, %r9d
203 xorl %r10d, %r10d
204 xorl %r11d, %r11d
205 xorl %r12d, %r12d
206 xorl %r13d, %r13d
207 xorl %r14d, %r14d
208 xorl %r15d, %r15d
209
210 ANNOTATE_UNRET_SAFE
211 ret
212 int3
213
214 1:
215 popq %rdx
216 leaq PAGE_SIZE(%r10), %rsp
217 ANNOTATE_RETPOLINE_SAFE
218 call *%rdx
219
220 /* get the re-entry point of the peer system */
221 movq 0(%rsp), %rbp
222 leaq relocate_kernel(%rip), %r8
223 movq CP_PA_SWAP_PAGE(%r8), %r10
224 movq CP_PA_BACKUP_PAGES_MAP(%r8), %rdi
225 movq CP_PA_TABLE_PAGE(%r8), %rax
226 movq %rax, %cr3
227 lea PAGE_SIZE(%r8), %rsp
228 call swap_pages
229 movq $virtual_mapped, %rax
230 pushq %rax
231 ANNOTATE_UNRET_SAFE
232 ret
233 int3
234 SYM_CODE_END(identity_mapped)
235
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-06-28 1:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-28 1:49 [intel-tdx:guest-kexec 1/2] arch/x86/kernel/relocate_kernel_64.S:151: Error: too many positional arguments kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2023-06-28 1:38 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.