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