Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp3255533pxu; Tue, 15 Dec 2020 02:30:11 -0800 (PST) X-Google-Smtp-Source: ABdhPJz99kJHM+kgMl6phfonbz7SRH+5fvvWy2pXFFMhuv91hmlqyZ2LC73G213tVgBaTAsCB929 X-Received: by 2002:a17:906:5fc9:: with SMTP id k9mr25476062ejv.70.1608028211300; Tue, 15 Dec 2020 02:30:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608028211; cv=none; d=google.com; s=arc-20160816; b=SDb3PlGwfIuuF6ejsiAQ7WPQcHmBXcyzFJBWcyy/n0gZ5IHvILeaI23WICXGlw742d 7SLVVl/LdPzyXcF9OzQAmOy9Rs2GS934fvdKs3Mwt0xPpSJIxK5QjrUt2ezn7/mp+T5+ cAKHbdnp+0ANSXCp2vpK9SHsDAi3l+w22Tyc7mPsUyvG4nI6MOExL1Ztk4br+kr8iz86 yGf3MlLtd5OWtXdv2TrEWZVjtvd0/OdCBnYCGokmAFuOB6GDPPMtPzpF2Q+Gctr0+3AE N67Jqo/NVF6UgeKTvc3zw7+Vc6xyAlABMkM/hAUJOAJyZjGIG4jozCWZq662LPJkvaYs 1mgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=JDLxyPVM6DGXktDJdxmOeLrcAfyeq4vVuXjKQCZXIPI=; b=EWezZI4qJER6wHZ6nONBICXL+A2ZeJzQnxXEmR5Zsh3+qkxEriq33GcWpqM1fx3VIc xNc69W6eIoOxcAHf1WvkzSHjg1UJNeA9xG1MGjBgvI3iK17vxmD0VCt1wtRQ56DqkhoQ l5835bBi2Q5MDMCVeUdDs9RmqaMxPYna9PXBT+HCgPPashW8ach63JF8Xx/Jk8sf86dU k+exviBDzsJu8CAPJroT2Tbmsuvb+OzsHfphlzCOHM9e8EhRZXH2Yhv0gKliyZdKRz8s amVkQoiO+k8G5bNBIxj3AwmahDl031HV1BANTdvjMEQqeAcmHac4XFaN/X8L4GYTBZDH nQtA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y12si637932ejq.432.2020.12.15.02.29.39; Tue, 15 Dec 2020 02:30:11 -0800 (PST) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727656AbgLOK3R (ORCPT + 99 others); Tue, 15 Dec 2020 05:29:17 -0500 Received: from ZXSHCAS1.zhaoxin.com ([203.148.12.81]:38297 "EHLO ZXSHCAS1.zhaoxin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727340AbgLOK3I (ORCPT ); Tue, 15 Dec 2020 05:29:08 -0500 Received: from zxbjmbx1.zhaoxin.com (10.29.252.163) by ZXSHCAS1.zhaoxin.com (10.28.252.161) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Tue, 15 Dec 2020 18:28:16 +0800 Received: from tony-HX002EA.zhaoxin.com (10.32.56.37) by zxbjmbx1.zhaoxin.com (10.29.252.163) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Tue, 15 Dec 2020 18:28:14 +0800 From: Tony W Wang-oc To: , , , , , , , , CC: , , , , , Subject: [PATCH] crypto: x86/crc32c-intel - Don't match some Zhaoxin CPUs Date: Tue, 15 Dec 2020 18:28:11 +0800 Message-ID: <1608028091-29439-1-git-send-email-TonyWWang-oc@zhaoxin.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.32.56.37] X-ClientProxiedBy: ZXSHCAS1.zhaoxin.com (10.28.252.161) To zxbjmbx1.zhaoxin.com (10.29.252.163) Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org The driver crc32c-intel match CPUs supporting X86_FEATURE_XMM4_2. On platforms with Zhaoxin CPUs supporting this X86 feature, when crc32c-intel and crc32c-generic are both registered, system will use crc32c-intel because its .cra_priority is greater than crc32c-generic. When doing lmbench3 Create and Delete file test on partitions with ext4 enabling metadata checksum, found using crc32c-generic driver could get about 20% performance gain than using the driver crc32c-intel on some Zhaoxin CPUs. This case expect to use crc32c-generic driver for these Zhaoxin CPUs to get performance gain, so remove these Zhaoxin CPUs support from crc32c-intel. Signed-off-by: Tony W Wang-oc --- arch/x86/crypto/crc32c-intel_glue.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/arch/x86/crypto/crc32c-intel_glue.c b/arch/x86/crypto/crc32c-intel_glue.c index feccb52..5171091 100644 --- a/arch/x86/crypto/crc32c-intel_glue.c +++ b/arch/x86/crypto/crc32c-intel_glue.c @@ -215,14 +215,31 @@ static struct shash_alg alg = { }; static const struct x86_cpu_id crc32c_cpu_id[] = { - X86_MATCH_FEATURE(X86_FEATURE_XMM4_2, NULL), + /* + * Negative entries; exclude these chips from using this driver. + * They match the positive rule below, but their CRC32 instruction + * implementation is so slow, it doesn't merit use. + */ + X86_MATCH_VENDOR_FAM_FEATURE(ZHAOXIN, 0x6, X86_FEATURE_XMM4_2, false), + X86_MATCH_VENDOR_FAM_MODEL_FEATURE(ZHAOXIN, 0x7, 0x1b, X86_FEATURE_XMM4_2, false), + X86_MATCH_VENDOR_FAM_MODEL_FEATURE(ZHAOXIN, 0x7, 0x3b, X86_FEATURE_XMM4_2, false), + X86_MATCH_VENDOR_FAM_FEATURE(CENTAUR, 0x6, X86_FEATURE_XMM4_2, false), + X86_MATCH_VENDOR_FAM_MODEL_FEATURE(CENTAUR, 0x7, 0x1b, X86_FEATURE_XMM4_2, false), + X86_MATCH_VENDOR_FAM_MODEL_FEATURE(CENTAUR, 0x7, 0x3b, X86_FEATURE_XMM4_2, false), + /* + * Positive entry; SSE-4.2 instructions include special purpose CRC32 + * instructions. + */ + X86_MATCH_FEATURE(X86_FEATURE_XMM4_2, true), {} }; MODULE_DEVICE_TABLE(x86cpu, crc32c_cpu_id); static int __init crc32c_intel_mod_init(void) { - if (!x86_match_cpu(crc32c_cpu_id)) + const struct x86_cpu_id *m = x86_match_cpu(crc32c_cpu_id); + + if (!m || !m->driver_data) return -ENODEV; #ifdef CONFIG_X86_64 if (boot_cpu_has(X86_FEATURE_PCLMULQDQ)) { -- 2.7.4