From patchwork Wed Jun 14 14:35:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Zijlstra X-Patchwork-Id: 108012 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp34799vqr; Wed, 14 Jun 2023 08:33:35 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6TTCeHi7wOCkW7e07WhZ0shzO2R/OCptOkA2xRUlIv2PmG72pgQuoXdpeAUM5UzT4ASDlb X-Received: by 2002:a05:6a00:15ce:b0:662:5a84:be2a with SMTP id o14-20020a056a0015ce00b006625a84be2amr2305071pfu.31.1686756815337; Wed, 14 Jun 2023 08:33:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686756815; cv=none; d=google.com; s=arc-20160816; b=Wfr+Na4Jy6FVFPL1V5bN/lpK9ZI6b/uAYAhumhN3dBfozzOXgyKFgz/VZLASIwikUO htg6hnw9gJFYDk7RkmRruRSDCuKyjLJ9ERC67Lw9aZy+dM/CLe4CkhQ4RLPN8tL/FsU1 T6lmKJTBzSNU+yf/Zp5ORQ6Y3GIM/IlURZ7LaBah0F+NZJ5lTM/fPAp69p7zBgYjS+k4 dXPawO+5eTZOYkw8e/9GzkRmvirGHfZSAwLfBicSGYacWKwx6cu6B8lUc2adR+stlb13 3L/zQcaVJfW9a/czMc4A5xHsKkoaXiHJW1yaDzFaXjAKWqioLby64Qsw+6sNM9ovCmzq S8Hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-disposition:mime-version:message-id :subject:cc:to:from:date:dkim-signature; bh=88ZKgCe2//v5jmKae4EuHHnmVgU2x6s/oducDio9McM=; b=bEo8CHVCDymwLOoS9Lu6JEbwcQHkdcI1MroXcGKYr25s/HfRFAU/7h1IgUwapCLtQ+ J4dsN1f6hEfkfDzrKEUc6ZiabDEAlJ8sh7iTlGIjUxq/8UcbNqtGF5KLyasRqUoJckRg jG9ik2EbvTc7OwPAtCdhlT+78B0JCAYUtTMB9zgUZnH96YJsg74BtWrKwpM0qTp8x5i6 v/N7SnASRyPNDqju/TGKFXVikEchOzzl1S1OWiBh3QrEXVaq4Rcckyam/Ge4zrn5fHi9 8Jey4iMPzu8W3Ojl77PQoE9gY1yRNq1GHzg+a1E/USymg5l+sBVzNtmIBNLGheahsX7i gDlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=casper.20170209 header.b=VrhpZbue; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v3-20020a655c43000000b00543ed7b1396si11200644pgr.627.2023.06.14.08.32.15; Wed, 14 Jun 2023 08:33:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=casper.20170209 header.b=VrhpZbue; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244192AbjFNOgD (ORCPT + 99 others); Wed, 14 Jun 2023 10:36:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58112 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236343AbjFNOf6 (ORCPT ); Wed, 14 Jun 2023 10:35:58 -0400 Received: from casper.infradead.org (casper.infradead.org [IPv6:2001:8b0:10b:1236::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BAABC195 for ; Wed, 14 Jun 2023 07:35:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Type:MIME-Version:Message-ID: Subject:Cc:To:From:Date:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:In-Reply-To:References; bh=88ZKgCe2//v5jmKae4EuHHnmVgU2x6s/oducDio9McM=; b=VrhpZbueTpAwrvJGMU003DGQRZ mdpH8af1Idf+HjZeHMMzdlZMyVJ5mnE0IjiK11Ao9rDgknd7MnQhZlxYsPh+yAT+JBFr5F7rH4vj/ fIrusPPfEHm1CnV4cpbnskrDJNcVHI3T5nGOgpFmxxNzRAk56ZwPlTkh67Sn6e9Z61nVtar7YKJlA D/5A0IxGOec+pHz7QcvzMoHyBnS0rlaooOWFJg3WuIRW9WiUudyrWFdWdXKlkPs1rgVKZe6WpHH+c qu4jXDDoQ1X+iYKh8E0nhLfOq8ARUB68QoF5C5UQfaPACPEDGkwJjgQ5KP8lCJvzrevVsJx7veQiU aOn4FMPQ==; Received: from j130084.upc-j.chello.nl ([24.132.130.84] helo=noisy.programming.kicks-ass.net) by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1q9RbE-006QUv-KZ; Wed, 14 Jun 2023 14:35:52 +0000 Received: from hirez.programming.kicks-ass.net (hirez.programming.kicks-ass.net [192.168.1.225]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (Client did not present a certificate) by noisy.programming.kicks-ass.net (Postfix) with ESMTPS id 1B2F0300188; Wed, 14 Jun 2023 16:35:51 +0200 (CEST) Received: by hirez.programming.kicks-ass.net (Postfix, from userid 1000) id 018C827F86ACC; Wed, 14 Jun 2023 16:35:50 +0200 (CEST) Date: Wed, 14 Jun 2023 16:35:50 +0200 From: Peter Zijlstra To: Borislav Petkov Cc: linux-kernel@vger.kernel.org, x86@kernel.org Subject: [PATCH] x86/alternative: PAUSE is not a NOP Message-ID: <20230614143550.GL1639749@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Disposition: inline X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768692714052952674?= X-GMAIL-MSGID: =?utf-8?q?1768692714052952674?= Subject: x86/alternative: PAUSE is not a NOP From: Peter Zijlstra Date: Wed Jun 14 16:31:35 CEST 2023 While chasing ghosts, I did notice that optimize_nops() was replacing 'REP NOP' aka 'PAUSE' with NOP2. This is clearly not right. Fixes: 6c480f222128 ("x86/alternative: Rewrite optimize_nops() some") Signed-off-by: Peter Zijlstra (Intel) Link: https://lore.kernel.org/linux-next/20230524130104.GR83892@hirez.programming.kicks-ass.net/ --- arch/x86/kernel/alternative.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --- a/arch/x86/kernel/alternative.c +++ b/arch/x86/kernel/alternative.c @@ -169,9 +169,12 @@ void text_poke_early(void *addr, const v */ static bool insn_is_nop(struct insn *insn) { - if (insn->opcode.bytes[0] == 0x90) + /* Anything NOP, but no REP NOP */ + if (insn->opcode.bytes[0] == 0x90 && + (!insn->prefixes.nbytes || insn->prefixes.bytes[0] != 0xF3)) return true; + /* NOPL */ if (insn->opcode.bytes[0] == 0x0F && insn->opcode.bytes[1] == 0x1F) return true;