From patchwork Sat Jan 30 13:59:55 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: 41877 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 5362E388702F; Sat, 30 Jan 2021 14:00:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5362E388702F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1612015237; bh=kRjBdRBlbAEV2mLmlakUewTA64azEBdeZZotyf1jcdQ=; h=References:In-Reply-To:Date:Subject:To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=AwXfEkliYBJwbWzviA6BzIVSCHtJiSt3z6M2oM+AcLt6egZ1BsZXdQDx4fqMfLl7V KR3qKMDdVkw01paAtda1pLEbqoZSBnGkBKNrPYDxy7P0+WdHum75TVvlGS79+TKKcO R0zcH27/rzl2RFtWmsuDsJdpktPAlXlhe6AttASw= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-ot1-x330.google.com (mail-ot1-x330.google.com [IPv6:2607:f8b0:4864:20::330]) by sourceware.org (Postfix) with ESMTPS id 420383857817 for ; Sat, 30 Jan 2021 14:00:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 420383857817 Received: by mail-ot1-x330.google.com with SMTP id d1so11513924otl.13 for ; Sat, 30 Jan 2021 06:00:32 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=kRjBdRBlbAEV2mLmlakUewTA64azEBdeZZotyf1jcdQ=; b=OBw3qc7GlLVJGHXuGLEH/iHmY0W213wNfhNyZujg3DckJlPLGBLVoLBkt4wbvQB5Yi 5xzp0T4XcvT3LOraoEh+TGX9ObluEchI9e1SO4C1R+yJ4TzbKm3ot1wua6BS1jrG0ym7 jUKqXFEu2h7M7MBdDeDjVF2k6l6Zy8oGH+yBff0Jdd0C1OhtM9/guGzgX8lvqm7BOlmf odH9CDHGCaRp3iOGmErnyvJVFbUb1AkSuXeAzMe4X33eYxNHSPKPe2uMnTXY1ReVrb4T ec2T7WxceqK21qSeFW4Sk4ds+/bIuhehZWwKcMKYfntqmi2V9Zt10MN+oJqMhWtWYMQ9 xIfg== X-Gm-Message-State: AOAM531W8pAWOUMPJW9JXkMu4nktF5ClA7TOLOhHbXBIEzPfBy+dB5c+ tzGH9gZb9nSMdNPtZBDWzxJEbW7uRiRDJi3rTkIhkwWZ X-Google-Smtp-Source: ABdhPJx7iY/X3f/09FyXPlnvVO6rtU3TfDxsVVjtIL/TGR3XBV2RuLJdnyvYmiOedEqsbkHxb8N51nvisl7azMJYtHw= X-Received: by 2002:a9d:4786:: with SMTP id b6mr5914289otf.269.1612015231120; Sat, 30 Jan 2021 06:00:31 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: Date: Sat, 30 Jan 2021 05:59:55 -0800 Message-ID: Subject: [PATCH] x86: Check SSBD and STIBP only on Intel CPUs To: GNU C Library X-Spam-Status: No, score=-3036.2 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" On Sat, Jan 30, 2021 at 2:26 AM Winfried Magerl wrote: > > Hello, > > On Sat, Jan 30, 2021 at 09:34:56AM +0100, Winfried Magerl wrote: > > Hello, > > > > I got a suspicious error when building current upcoming glibc-2.33: > > > > FAIL: elf/tst-cpu-features-cpuinfo > > > > The relavant details from elf/tst-cpu-features-cpuinfo.out > > (likely invariant_tsc can be ignored): > > > > Checking HAS_CPU_FEATURE (INVARIANT_TSC): > > HAS_CPU_FEATURE (INVARIANT_TSC): 1 > > cpuinfo (invariant_tsc): 0 > > *** missing in /proc/cpuinfo *** > > Checking HAS_CPU_FEATURE (SSBD): > > HAS_CPU_FEATURE (SSBD): 0 > > cpuinfo (ssbd): 1 > > *** failure *** > > Checking HAS_CPU_FEATURE (STIBP): > > HAS_CPU_FEATURE (STIBP): 0 > > cpuinfo (stibp): 1 > > *** failure *** > > 2 differences between /proc/cpuinfo and glibc code. > > > > The details of the build-system: > > cpu: AMD Ryzen 9 3900X 12-Core Processor > > os: openSUSE Tumbleweed 20210128 > > gcc: gcc-10-3.1.x86_64 > > binutils: binutils-2.35.1-1.1 > > the missing kernel-version: > openSUSE: kernel-default-5.10.9-1.2.x86_64 > > also tested with vanilla-kernels with identical result: > linux-5.9.16 > linux-5.11-rc5 > > > Maybe this helps to track down the problem. From a quick look it's > > likely uncritical because the feature is simply missing (as opposed > > to a missdetected non-existing feature). Try this. From 132ba6e1daf5463975467cf3af5ec0f0602d96e9 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sat, 30 Jan 2021 05:44:40 -0800 Subject: [PATCH] x86: Check SSBD and STIBP only on Intel CPUs Since /proc/cpuinfo reports different SSBD and STIBP on AMD CPUs, check SSBD and STIBP only on Intel CPUs. Also /proc/cpuinfo doesn't report IBRS_IBPB. --- sysdeps/x86/tst-cpu-features-cpuinfo.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/sysdeps/x86/tst-cpu-features-cpuinfo.c b/sysdeps/x86/tst-cpu-features-cpuinfo.c index 3c2fa7d9b6..ebe7337ab8 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,10 @@ 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); +#if 0 + /* NB: /proc/cpuinfo doesn't report this feature. */ + fails += CHECK_PROC (ibrs_ibpb, IBRS_IBPB); +#endif fails += CHECK_PROC (ibt, IBT); fails += CHECK_PROC (invariant_tsc, INVARIANT_TSC); fails += CHECK_PROC (invpcid, INVPCID); @@ -220,7 +224,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 +234,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. */ -- 2.29.2