Re: [RFC][PATCH 0/9] Variable size jump_label support
From: Ingo Molnar
Date: Mon Oct 07 2019 - 07:26:13 EST
[ Sorry, fixed the Cc:lkml line. ]
* Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> These here patches are something I've been poking at for a while,
> enabling jump_label to use 2 byte jumps/nops.
>
> It _almost_ works :-/
>
> That is, you can build some kernels with it (x86_64-defconfig for
> example works just fine).
>
> The problem comes when GCC generates a branch into another section,
> mostly .text.unlikely. At that point GAS just gives up and throws a fit
> (more details in the last patch).
>
> Aside from anyone coming up with a really clever GAS trick, I don't see
> how we can do this other than:
> - use 'jmp' and get objtool to rewrite the text. Steven has earlier proposed
> something like that (using recordmcount) and Linus hated that.
As long as GCC+GAS correctly generates a 2-byte or 5-byte JMP depending
on the target distance, the objtool solution should work fine, shouldn't
it?
I can see the recordmcount solution sucking, it would depend on early
kernel patchery. But build time patchery is something we already depend
on, so assuming some objtool catastrophy it's a more robust solution,
isn't it?
Thanks,
Ingo