Messages in this thread | | | From | Nick Desaulniers <> | Date | Tue, 8 Jun 2021 11:18:15 -0700 | Subject | Re: [PATCH v3 16/16] objtool,x86: Rewrite retpoline thunk calls |
| |
On Tue, Jun 8, 2021 at 10:30 AM Nathan Chancellor <nathan@kernel.org> wrote: > > On 6/8/2021 10:22 AM, Peter Zijlstra wrote: > > On Tue, Jun 08, 2021 at 09:58:03AM -0700, Nathan Chancellor wrote: > >> On 6/7/2021 1:54 PM, 'Nick Desaulniers' via Clang Built Linux wrote: > >>> Nathan, > >>> Can you please test the below diff and see if that resolves your boot > >>> issue reported in: > >>> https://github.com/ClangBuiltLinux/linux/issues/1384 > >> > >> Unfortunately, it does not appear to resolve that issue. > >> > >> $ git log -2 --decorate=no --oneline > >> eea6a9d6d277 Peter's fix > >> 614124bea77e Linux 5.13-rc5 > >> > >> $ strings /mnt/c/Users/natec/Linux/kernel-investigation | grep microsoft > >> 5.13.0-rc5-microsoft-standard-WSL2-00001-geea6a9d6d277 > >> (nathan@archlinux-ax161) #3 SMP Tue Jun 8 09:46:19 MST 2021 > >> > >> My VM still never makes it to userspace. > > > > Since it's a VM, can you use the gdb-stub to ask it where it's stuck? > > > > Unfortunately, this is the VM provided by the Windows Subsystem for > Linux so examining it is nigh-impossible :/ I am considering bisecting > the transforms that objtool does to try and figure out the one that > causes the machine to fail to boot or try to reproduce in a different > hypervisor, unless you have any other ideas.
Assuming this is an optimization and not required to boot/run; you could test that quickly by putting a return statement as the first statement in the list_for_each_entry loop in arch_rewrite_retpolines. If that works, you could instead use a counter to try to see which symbol is bad; once you bisect a counter value where things start/stop booting, you could try to print the corresponding symbol (ie `name`). (Optimization Fuel) (Sorry if any of that is unclear, let's follow up off thread if so). Maybe that symbol will give us further clues? I think that would tell us whether it's a problematic jump vs call, and via which register. -- Thanks, ~Nick Desaulniers
| |