• Jinghao Jia's avatar
    x86/kprobes: Boost more instructions from grp2/3/4/5 · 290eb13f
    Jinghao Jia authored
    With the instruction decoder, we are now able to decode and recognize
    instructions with opcode extensions. There are more instructions in
    these groups that can be boosted:
    
    Group 2: ROL, ROR, RCL, RCR, SHL/SAL, SHR, SAR
    Group 3: TEST, NOT, NEG, MUL, IMUL, DIV, IDIV
    Group 4: INC, DEC (byte operation)
    Group 5: INC, DEC (word/doubleword/quadword operation)
    
    These instructions are not boosted previously because there are reserved
    opcodes within the groups, e.g., group 2 with ModR/M.nnn == 110 is
    unmapped. As a result, kprobes attached to them requires two int3 traps
    as being non-boostable also prevents jump-optimization.
    
    Some simple tests on QEMU show that after boosting and jump-optimization
    a single kprobe on these instructions with an empty pre-handler runs 10x
    faster (~1000 cycles vs. ~100 cycles).
    
    Since these instructions are mostly ALU operations and do not touch
    special registers like RIP, let's boost them so that we get the
    performance benefit.
    
    Link: https://lore.kernel.org/all/20240204031300.830475-4-jinghao7@illinois.edu/Signed-off-by: default avatarJinghao Jia <jinghao7@illinois.edu>
    Signed-off-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
    290eb13f
core.c 31.8 KB