From patchwork Tue Feb 2 14:57:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 41896 X-Patchwork-Delegate: carlos@redhat.com Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 64AEC386F022; Tue, 2 Feb 2021 14:57:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 64AEC386F022 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1612277860; bh=4wJKGvkpTKielGwiyAd5kqaQUsVmVc1JAp5qaRAPlRc=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=be3A6hdadWudBsrJDHmjYdMvJg+kA8GUIfBrOK5oeTKQa2rSMeFXc5NmVCIvucKb+ e2KDtv/Z8jlnzZpF5UhsrJBC883gmFaGbzV033W3QNjP4mTpFKJLFf5KCocfwTzAPb VcfvGUMV3hEBaQ6vMj7wZm7OEpi+O9t/8efsVg7I= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pf1-x431.google.com (mail-pf1-x431.google.com [IPv6:2607:f8b0:4864:20::431]) by sourceware.org (Postfix) with ESMTPS id BDC733857004 for ; Tue, 2 Feb 2021 14:57:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org BDC733857004 Received: by mail-pf1-x431.google.com with SMTP id e19so14480187pfh.6 for ; Tue, 02 Feb 2021 06:57:37 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=4wJKGvkpTKielGwiyAd5kqaQUsVmVc1JAp5qaRAPlRc=; b=JtJU/e0kXupdaaUysvs5vj9u3nqO24ci5h5EBqRVXZtG/a17HTQwHBRCMMCvawDRHk sYe9JjqeMLx2HvMRb9ugRYynrNsEZVvRX7xEAQc5FFt7sGNJaNrcfXawkBed1MQnI6Fl Sp9D3k42q3D5UeVMQfvZuJAc2jbZFRf4eVEZeLOCaXjxjVxH9EK2GC9xWuxK6AFtfBDU MwhFWjQkhj7LpVXCcSGcVEs+LA5DT2TFemvtXtAezsVn7cgDPGtTYyy2xwa7dNRH8F/9 UO2fTbxA2UASaCjpy5l56oVU6M670F7OmVZENhILUic3Oa0w56GE6Fx1KrVNOfnjgdUH H4kw== X-Gm-Message-State: AOAM533W4rMI5gGqrPc5WxBoPcxoTM6vqecdVY0sQk1mGYuTEmGFEQP8 RpB1Gtyx+KEtx7+JzALOTWNDZpLNL1I= X-Google-Smtp-Source: ABdhPJyxHl1mKBFQTpB36rGIUgziPHR3/28dXTyezu5ydzaL82HZ/6bgmjSBVGXtp5Y5rVqq5XH5bg== X-Received: by 2002:a63:1159:: with SMTP id 25mr22538848pgr.321.1612277856567; Tue, 02 Feb 2021 06:57:36 -0800 (PST) Received: from gnu-cfl-2.localdomain (c-69-181-90-243.hsd1.ca.comcast.net. [69.181.90.243]) by smtp.gmail.com with ESMTPSA id i22sm15714066pfo.106.2021.02.02.06.57.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Feb 2021 06:57:35 -0800 (PST) Received: from gnu-cfl-2.localdomain (localhost [IPv6:::1]) by gnu-cfl-2.localdomain (Postfix) with ESMTP id 0B3851A020E for ; Tue, 2 Feb 2021 06:57:35 -0800 (PST) To: libc-alpha@sourceware.org Subject: [PATCH v2] x86: Check SSBD and STIBP only on Intel CPUs Date: Tue, 2 Feb 2021 06:57:33 -0800 Message-Id: <20210202145733.545020-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 X-Spam-Status: No, score=-3039.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: "H.J. Lu via Libc-alpha" From: "H.J. Lu" Reply-To: "H.J. Lu" Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" 1. Since /proc/cpuinfo reports different SSBD and STIBP on AMD CPUs, check SSBD and STIBP only on Intel CPUs. 2. Since init_speculation_control() in Linux kernel maps SPEC_CTRL (aka IBRS_IBPB) to IBRS and IBPB, skip IBRS_IBPB. 3. Remove "#if 0" on OSXSAVE with a comment. --- sysdeps/x86/tst-cpu-features-cpuinfo.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/sysdeps/x86/tst-cpu-features-cpuinfo.c b/sysdeps/x86/tst-cpu-features-cpuinfo.c index 3c2fa7d9b6..95cefb5738 100644 --- a/sysdeps/x86/tst-cpu-features-cpuinfo.c +++ b/sysdeps/x86/tst-cpu-features-cpuinfo.c @@ -16,7 +16,7 @@ License along with the GNU C Library; if not, see . */ -#include +#include #include #include #include @@ -99,6 +99,7 @@ static int do_test (int argc, char **argv) { int fails = 0; + const struct cpu_features *cpu_features = __get_cpu_features (); get_cpuinfo (); fails += CHECK_PROC (acpi, ACPI); @@ -159,7 +160,8 @@ do_test (int argc, char **argv) fails += CHECK_PROC (hle, HLE); fails += CHECK_PROC (ht, HTT); fails += CHECK_PROC (hybrid, HYBRID); - fails += CHECK_PROC (ibrs, IBRS_IBPB); + /* NB: Skip IBRS_IBPB since init_speculation_control() in Linux kernel + maps SPEC_CTRL (aka IBRS_IBPB) to IBRS and IBPB. */ fails += CHECK_PROC (ibt, IBT); fails += CHECK_PROC (invariant_tsc, INVARIANT_TSC); fails += CHECK_PROC (invpcid, INVPCID); @@ -181,10 +183,7 @@ do_test (int argc, char **argv) fails += CHECK_PROC (mtrr, MTRR); fails += CHECK_PROC (nx, NX); fails += CHECK_PROC (ospke, OSPKE); -#if 0 - /* NB: /proc/cpuinfo doesn't report this feature. */ - fails += CHECK_PROC (osxsave, OSXSAVE); -#endif + /* NB: Skip OSXSAVE since /proc/cpuinfo doesn't report this feature. */ fails += CHECK_PROC (pae, PAE); fails += CHECK_PROC (pdpe1gb, PAGE1GB); fails += CHECK_PROC (pat, PAT); @@ -220,7 +219,9 @@ do_test (int argc, char **argv) fails += CHECK_PROC (smep, SMEP); fails += CHECK_PROC (smx, SMX); fails += CHECK_PROC (ss, SS); - fails += CHECK_PROC (ssbd, SSBD); + /* NB: /proc/cpuinfo reports different SSBD on AMD CPUs. */ + if (cpu_features->basic.kind == arch_kind_intel) + fails += CHECK_PROC (ssbd, SSBD); fails += CHECK_PROC (sse, SSE); fails += CHECK_PROC (sse2, SSE2); fails += CHECK_PROC (pni, SSE3); @@ -228,7 +229,9 @@ do_test (int argc, char **argv) fails += CHECK_PROC (sse4_2, SSE4_2); fails += CHECK_PROC (sse4a, SSE4A); fails += CHECK_PROC (ssse3, SSSE3); - fails += CHECK_PROC (stibp, STIBP); + /* NB: /proc/cpuinfo reports different STIBP on AMD CPUs. */ + if (cpu_features->basic.kind == arch_kind_intel) + fails += CHECK_PROC (stibp, STIBP); fails += CHECK_PROC (svm, SVM); #ifdef __x86_64__ /* NB: SYSCALL_SYSRET is 64-bit only. */