In the Linux kernel, the following vulnerability has been resolved:
powerpc/64: Init jump labels before parseearlyparam()
On 64-bit, calling jumplabelinit() in setupfeaturekeys() is too late because static keys may be used in subroutines of parseearlyparam() which is again subroutine of earlyinitdevtree().
For example booting with "threadirqs":
statickeyenablecpuslocked(): static key '0xc000000002953260' used before call to jumplabelinit() WARNING: CPU: 0 PID: 0 at kernel/jumplabel.c:166 statickeyenablecpuslocked+0xfc/0x120 ... NIP statickeyenablecpuslocked+0xfc/0x120 LR statickeyenablecpuslocked+0xf8/0x120 Call Trace: statickeyenablecpuslocked+0xf8/0x120 (unreliable) statickeyenable+0x30/0x50 setupforcedirqthreads+0x28/0x40 doearlyparam+0xa0/0x108 parseargs+0x290/0x4e0 parseearlyoptions+0x48/0x5c parseearlyparam+0x58/0x84 earlyinitdevtree+0xd4/0x518 earlysetup+0xb4/0x214
So call jumplabelinit() just before parseearlyparam() in earlyinitdevtree().
[mpe: Add call trace to change log and minor wording edits.]