Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp2421402pxu; Mon, 14 Dec 2020 01:44:54 -0800 (PST) X-Google-Smtp-Source: ABdhPJxnv3is6MLBvy6r6kz3ImZBMA59a8HowyJprTEciBuO2oeEZjJBympA4jhyw7p34KZuKomc X-Received: by 2002:a50:9ee6:: with SMTP id a93mr24251171edf.174.1607939094736; Mon, 14 Dec 2020 01:44:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607939094; cv=none; d=google.com; s=arc-20160816; b=KxyrarX3U2h4YQvCd2Vr3+u1kAEwPheKrZSzHPARYv8QRUuRe8P5AVToW6YeIYkyTS n0HD1gP+t8VqiPo4EJXE8+tkJXzqyCqYtHRwpQBW5kJcK91DyHNLaXlkeUcLGW7jlUlW k8CmG7DET0O+j+jpov9sTeHzfUIMaaKSXg9F648T3qvGUpuNiHOcOsSh34En4JLmHrQw L3DlQqqZgUEbzJguLWK3dZmbHwWeXPtEFWKplDC6XoQjqVgE1Skm+jijFEOv60LhmzeM 84ZczCaGnx8PbL/j6aNiK3BVfQhSbFlYyUaue+4SVQpf6KE1peKA9FNHM7EQxTZToTqC Ul1A== 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=7wayR/0knLTkgp0lmSd1yfbskZAxu2qc5Yf011idAUs=; b=WF+Syipmep72yT3tORUEIILpQa8zzcpLvAfzr0TeJSA6ZMEDyO+J2BgFAnH2XHWfwi 2tA8wkApnHZSmaFOI9xOWuhgmYp8E97IIl7K7/uSs2cqK/rFL1XCuCqWbVAKSKpR1uZO 2vJ5KxcYVqlgGzGgXN3JvD9jh2p5b1Hr4XcCW0UqRfEnYgOqYpvOYCD0sgO6mHtR8FM2 PZM9v2TvAGLnKSoXmIup6qY+D9DzdNIm1H5aCdRW3eLCVfNET8/S0whrZtMc3GvrIkZK NT6uN/UbOC2Z9HK2WsVkucPgY+7wlEowgwhux+CGBEpvu78efIRjzHNe8ck3msRpblfx BrGA== 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 b1si10193888edy.429.2020.12.14.01.44.31; Mon, 14 Dec 2020 01:44:54 -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 S2438492AbgLNEAw (ORCPT + 99 others); Sun, 13 Dec 2020 23:00:52 -0500 Received: from ZXSHCAS1.zhaoxin.com ([203.148.12.81]:36303 "EHLO ZXSHCAS1.zhaoxin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727093AbgLNEAm (ORCPT ); Sun, 13 Dec 2020 23:00:42 -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; Mon, 14 Dec 2020 11:59:56 +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; Mon, 14 Dec 2020 11:59:54 +0800 From: Tony W Wang-oc To: , , , , , , , , CC: , , , , , Subject: [PATCH] crypto: x86/crc32c-intel - Don't match some Zhaoxin CPUs Date: Mon, 14 Dec 2020 11:59:52 +0800 Message-ID: <1607918392-19171-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 | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/arch/x86/crypto/crc32c-intel_glue.c b/arch/x86/crypto/crc32c-intel_glue.c index feccb52..2cbbdde 100644 --- a/arch/x86/crypto/crc32c-intel_glue.c +++ b/arch/x86/crypto/crc32c-intel_glue.c @@ -215,6 +215,12 @@ static struct shash_alg alg = { }; static const struct x86_cpu_id crc32c_cpu_id[] = { + X86_MATCH_VENDOR_FAM_FEATURE(ZHAOXIN, 0x6, X86_FEATURE_XMM4_2, 1), + X86_MATCH_VENDOR_FAM_MODEL_FEATURE(ZHAOXIN, 0x7, 0x1b, X86_FEATURE_XMM4_2, 1), + X86_MATCH_VENDOR_FAM_MODEL_FEATURE(ZHAOXIN, 0x7, 0x3b, X86_FEATURE_XMM4_2, 1), + X86_MATCH_VENDOR_FAM_FEATURE(CENTAUR, 0x6, X86_FEATURE_XMM4_2, 1), + X86_MATCH_VENDOR_FAM_MODEL_FEATURE(CENTAUR, 0x7, 0x1b, X86_FEATURE_XMM4_2, 1), + X86_MATCH_VENDOR_FAM_MODEL_FEATURE(CENTAUR, 0x7, 0x3b, X86_FEATURE_XMM4_2, 1), X86_MATCH_FEATURE(X86_FEATURE_XMM4_2, NULL), {} }; @@ -222,7 +228,9 @@ 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