Re: [PATCH 01/43] x86/decoder: Add new TEST instruction pattern

From: Borislav Petkov
Date: Fri Nov 24 2017 - 05:38:31 EST


On Fri, Nov 24, 2017 at 10:14:06AM +0100, Ingo Molnar wrote:
> From: Masami Hiramatsu <mhiramat@xxxxxxxxxx>
>
> The kbuild test robot reported this build warning:
>
> Warning: arch/x86/tools/test_get_len found difference at <jump_table>:ffffffff8103dd2c
>
> Warning: ffffffff8103dd82: f6 09 d8 testb $0xd8,(%rcx)
> Warning: objdump says 3 bytes, but insn_get_length() says 2
> Warning: decoded and checked 1569014 instructions with 1 warnings
>
> This sequence seems to be a new instruction not in the opcode map in the Intel SDM.
>
> The instruction sequence is "F6 09 d8", means Group3(F6), MOD(00)REG(001)RM(001), and 0xd8.

So that's TEST Eb,Ib with ModRM.reg == 1b which is documented in the AMD APM but
not in the Intel SDM.

Maybe H.J. has some insights on why.

CCed and leaving in the rest for reference.

> Intel SDM vol2 A.4 Table A-6 said the table index in the group is "Encoding of Bits 5,4,3 of
> the ModR/M Byte (bits 2,1,0 in parenthesis)"
>
> In that table, opcodes listed by the index REG bits as:
>
> 000 001 010 011 100 101 110 111
> TEST Ib/Iz,(undefined),NOT,NEG,MUL AL/rAX,IMUL AL/rAX,DIV AL/rAX,IDIV AL/rAX
>
> So, it seems TEST Ib is assigned to 001.
>
> Add the new pattern.
>
> Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> Reported-by: kbuild test robot <fengguang.wu@xxxxxxxxx>
> Signed-off-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx>
> Cc: <stable@xxxxxxxxxxxxxxx>
> Cc: H. Peter Anvin <hpa@xxxxxxxxx>
> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>
> ---
> arch/x86/lib/x86-opcode-map.txt | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/lib/x86-opcode-map.txt b/arch/x86/lib/x86-opcode-map.txt
> index 12e377184ee4..c4d55919fac1 100644
> --- a/arch/x86/lib/x86-opcode-map.txt
> +++ b/arch/x86/lib/x86-opcode-map.txt
> @@ -896,7 +896,7 @@ EndTable
>
> GrpTable: Grp3_1
> 0: TEST Eb,Ib
> -1:
> +1: TEST Eb,Ib
> 2: NOT Eb
> 3: NEG Eb
> 4: MUL AL,Eb
> --
> 2.14.1
>

--
Regards/Gruss,
Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.