[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210820192224.ytrr6ybuuwegbeov@treble>
Date: Fri, 20 Aug 2021 12:22:24 -0700
From: Josh Poimboeuf <jpoimboe@...hat.com>
To: Peter Zijlstra <peterz@...radead.org>
Cc: tglx@...utronix.de, linux-kernel@...r.kernel.org, joro@...tes.org,
boris.ostrovsky@...cle.com, jgross@...e.com, x86@...nel.org,
mbenes@...e.com, rostedt@...dmis.org, dvyukov@...gle.com,
elver@...gle.com
Subject: Re: [PATCH v2 01/24] x86/xen: Mark cpu_bringup_and_idle() as
dead_end_function
On Thu, Jun 24, 2021 at 11:41:00AM +0200, Peter Zijlstra wrote:
> The asm_cpu_bringup_and_idle() function is required to push the return
> value on the stack in order to make ORC happy, but the only reason
> objtool doesn't complain is because of a happy accident.
>
> The thing is that asm_cpu_bringup_and_idle() doesn't return, so
> validate_branch() never terminates and falls through to the next
> function, which in the normal case is the hypercall_page. And that, as
> it happens, is 4095 NOPs and a RET.
>
> Make asm_cpu_bringup_and_idle() terminate on it's own, by making the
> function it calls as a dead-end. This way we no longer rely on what
> code happens to come after.
>
> Fixes: c3881eb58d56 ("x86/xen: Make the secondary CPU idle tasks reliable")
> Signed-off-by: Peter Zijlstra (Intel) <peterz@...radead.org>
Looks right. Only problem is, with my assembler I get this:
arch/x86/kernel/head_64.o: warning: objtool: .text+0x5: unreachable instruction
Because gas insists on jumping over the page of nops...
0000000000000000 <asm_cpu_bringup_and_idle>:
0: e8 00 00 00 00 callq 5 <asm_cpu_bringup_and_idle+0x5>
1: R_X86_64_PLT32 cpu_bringup_and_idle-0x4
5: e9 f6 0f 00 00 jmpq 1000 <xen_hypercall_set_trap_table>
a: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1)
11: 00 00 00 00
15: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1)
1c: 00 00 00 00
20: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1)
27: 00 00 00 00
2b: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1)
32: 00 00 00 00
36: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1)
3d: 00 00 00 00
--
Josh
Powered by blists - more mailing lists