Received: by 2002:ab2:6203:0:b0:1f5:f2ab:c469 with SMTP id o3csp245690lqt; Thu, 18 Apr 2024 13:54:39 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUCEd/QY9SxS2tOqHlQ5ZqLcEc+bpq/8WqmOB8u6xUtMNWuYRyMNutiARFqEcI1Rd8RPYNIlQ4FndWjeEKbFuO4eQt36Fb6rEv1dPq4tA== X-Google-Smtp-Source: AGHT+IF5bo/b4s4JBUj2rbpoOWUGMEh2Mp3/od6yjj5rCA/xWKlOH1erqHWgMeQ2V8AWmD6MDNCz X-Received: by 2002:a05:6a00:4b14:b0:6ec:ebf4:439a with SMTP id kq20-20020a056a004b1400b006ecebf4439amr313689pfb.5.1713473679343; Thu, 18 Apr 2024 13:54:39 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713473679; cv=pass; d=google.com; s=arc-20160816; b=XP4ODkJrPGrVx2WDNaeuWIaLAOSn76VibdMqmseccxFODEebXd1WZqkOQzpzdefzkj fdCqJnWjV5MoOPXJJaOD85DuU5S0hq9m6w4O2bhxYhEnqKO0SINNLjiX0hLrPmzsBSa9 GVQ3N7rSvtwxGReaPoa2S5LGqyjLeZuKonA8S9szikolveemKKRRsFX/uYfjPnT4VJHc ywDI9j/ZFytKbW4CL7BKrd3g9jITY3w1+GG6ym+z5UiCBJGJN6C0NHFSwU+a0seYmM7L nDn2qbNhSW89o9Hkl/a5xUwmhkc4TNyGQNIhTl8pxFDVzSJS797M+l0ypCzCW6482X64 cdKw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from:dkim-signature; bh=WlIVDozCVY/JGZQYSCf78/za9Pzo0Vj4c3aiYXZpVpw=; fh=fTsvBGRCJ30wcbM+qukBwV1mBYwq/gxe2+STlSGXKvg=; b=j5G/nNdoitwJTHL5jwKRbN3J7isLKp+56ZcYO/blCyIncUCEpx7rS6HdH2UxIwYJfN BAVU3SnNr375uZYYMR2cvraOF+cMJsPKpb70pkdSSH3GalsweVpWQL/TXYYr9UomyeLl etflyj+UCCdnEm+nMxhJECR8rFraIKiBXF9m7VkvgatfLohHrldk9DyNp1wh/7haCCp6 CGBp2igqxUSLCv873/4NIT4zmKIygTR3rO1dUvx1jhhEpvM1DAYLqm8SD/vPJdLF1N4k kdaMP7EpNjjITZ8t/WErLda/S1OnnVhkx2b5mA1ayO6DD3NJtKPhlV7or2BhFvp9R96+ I6+g==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@xry111.site header.s=default header.b=HyY6KTKb; arc=pass (i=1 spf=pass spfdomain=xry111.site dkim=pass dkdomain=xry111.site dmarc=pass fromdomain=xry111.site); spf=pass (google.com: domain of linux-kernel+bounces-150775-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-150775-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=xry111.site Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id y14-20020a62b50e000000b006eaada3b713si2049959pfe.147.2024.04.18.13.54.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Apr 2024 13:54:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-150775-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@xry111.site header.s=default header.b=HyY6KTKb; arc=pass (i=1 spf=pass spfdomain=xry111.site dkim=pass dkdomain=xry111.site dmarc=pass fromdomain=xry111.site); spf=pass (google.com: domain of linux-kernel+bounces-150775-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-150775-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=xry111.site Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id CCEDC281834 for ; Thu, 18 Apr 2024 20:54:38 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2E2E819068F; Thu, 18 Apr 2024 20:54:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=xry111.site header.i=@xry111.site header.b="HyY6KTKb" Received: from xry111.site (xry111.site [89.208.246.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ADC441836EE for ; Thu, 18 Apr 2024 20:54:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=89.208.246.23 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713473674; cv=none; b=sC5IhxQRen9qaDUcWnUs7KI3C5zwHr20MCy2d1fUc4pUaEzki1A/H74a470HPkeJj7AxzG80U/Wxr3vHGkG8GrvKCU+65Ux/16T6NPicok2UnR7v6HCqeCTIJ9eoOFO6iWzGi4fpYsnz1mgujcB5wLHQBx0XU/TcykdywI0Iph0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713473674; c=relaxed/simple; bh=UXijQCiAnsNtHaRSQd/EDzkWLeezaosMUAopyhq0jDc=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=t7QwmduB9DPSfUjVPky2jVhZOdH3W31kzzXhHDS9H5aTzJD9dwiyN76rbUwMzHpDBGK6JRhg3LQrg/7Yoj4aBATJtnby36TqZq3NmDY8wMhTqv37hOgtmp+32qAfEiWAKPYla+dJS92c6sBkFdWbLjntfHd/E0DW9jLhVWSkeVY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=xry111.site; spf=pass smtp.mailfrom=xry111.site; dkim=pass (1024-bit key) header.d=xry111.site header.i=@xry111.site header.b=HyY6KTKb; arc=none smtp.client-ip=89.208.246.23 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=xry111.site Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=xry111.site DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1713473668; bh=UXijQCiAnsNtHaRSQd/EDzkWLeezaosMUAopyhq0jDc=; h=From:To:Cc:Subject:Date:From; b=HyY6KTKbLf8yanAKDPZURcDCRycwCpI2ijEd2CVHTEYp+bQzwXNTAwxZDhCbJUkGg Hmxymo8sqrmUTi7sgrgTBXUTvx5z+vAGTeIiE/1OQ5ToFUSmD7foK4ZfcWFkNP8vdN bHAnvNoOjza0B7RbjadJXa0sbxPSHwit4kP67xcM= Received: from stargazer.. (unknown [IPv6:240e:358:1129:f600:dc73:854d:832e:7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) (Authenticated sender: xry111@xry111.site) by xry111.site (Postfix) with ESMTPSA id 7A1801A4051; Thu, 18 Apr 2024 16:54:22 -0400 (EDT) From: Xi Ruoyao To: Dave Hansen , Michael Kelley , Pawan Gupta Cc: Andy Lutomirski , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , x86@kernel.org, linux-kernel@vger.kernel.org, Xi Ruoyao , Sean Christopherson , Andrew Cooper Subject: [PATCH v9 1/2] x86/mm: Don't disable PCID if "incomplete Global INVLPG flushes" is fixed by microcode Date: Fri, 19 Apr 2024 04:54:13 +0800 Message-ID: <20240418205414.67735-1-xry111@xry111.site> X-Mailer: git-send-email 2.44.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Per the "Processor Specification Update" documentations referred by the intel-microcode-20240312 release note, this microcode release has fixed the issue for all affected models. So don't disable PCID if the microcode is new enough. The precise minimum microcode revision fixing the issue is provided by engineer from Intel. Cc: Dave Hansen Cc: Michael Kelley Cc: Pawan Gupta Cc: Sean Christopherson Cc: Andrew Cooper Link: https://lore.kernel.org/all/168436059559.404.13934972543631851306.tip-bot2@tip-bot2/ Link: https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/releases/tag/microcode-20240312 Link: https://cdrdv2.intel.com/v1/dl/getContent/740518 # RPL042, rev. 13 Link: https://cdrdv2.intel.com/v1/dl/getContent/682436 # ADL063, rev. 24 Link: https://lore.kernel.org/all/20240325231300.qrltbzf6twm43ftb@desk/ Signed-off-by: Xi Ruoyao --- arch/x86/mm/init.c | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c index 679893ea5e68..c318cdc35467 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c @@ -261,33 +261,43 @@ static void __init probe_page_size_mask(void) } } -#define INTEL_MATCH(_model) { .vendor = X86_VENDOR_INTEL, \ - .family = 6, \ - .model = _model, \ - } +#define INTEL_MATCH(_model, _fixed_microcode) \ + { \ + .vendor = X86_VENDOR_INTEL, \ + .family = 6, \ + .model = _model, \ + .driver_data = _fixed_microcode, \ + } + /* * INVLPG may not properly flush Global entries - * on these CPUs when PCIDs are enabled. + * on these CPUs when PCIDs are enabled and the + * microcode is not updated to fix the issue. */ static const struct x86_cpu_id invlpg_miss_ids[] = { - INTEL_MATCH(INTEL_FAM6_ALDERLAKE ), - INTEL_MATCH(INTEL_FAM6_ALDERLAKE_L ), - INTEL_MATCH(INTEL_FAM6_ATOM_GRACEMONT ), - INTEL_MATCH(INTEL_FAM6_RAPTORLAKE ), - INTEL_MATCH(INTEL_FAM6_RAPTORLAKE_P), - INTEL_MATCH(INTEL_FAM6_RAPTORLAKE_S), + INTEL_MATCH(INTEL_FAM6_ALDERLAKE, 0x2e), + INTEL_MATCH(INTEL_FAM6_ALDERLAKE_L, 0x42c), + INTEL_MATCH(INTEL_FAM6_ATOM_GRACEMONT, 0x11), + INTEL_MATCH(INTEL_FAM6_RAPTORLAKE, 0x118), + INTEL_MATCH(INTEL_FAM6_RAPTORLAKE_P, 0x4117), + INTEL_MATCH(INTEL_FAM6_RAPTORLAKE_S, 0x2e), {} }; static void setup_pcid(void) { + const struct x86_cpu_id *invlpg_miss_match; + if (!IS_ENABLED(CONFIG_X86_64)) return; if (!boot_cpu_has(X86_FEATURE_PCID)) return; - if (x86_match_cpu(invlpg_miss_ids)) { + invlpg_miss_match = x86_match_cpu(invlpg_miss_ids); + + if (invlpg_miss_match && + boot_cpu_data.microcode < invlpg_miss_match->driver_data) { pr_info("Incomplete global flushes, disabling PCID"); setup_clear_cpu_cap(X86_FEATURE_PCID); return; -- 2.44.0