> Best Regards
> Artie Ding(丁宁)
> ------------------原始邮件 ------------------
> 发件人:Tony W Wang-oc <TonyWWang-oc(a)zhaoxin.com>
> 发送时间:Thu Mar 25 16:37:49 2021
> 收件人:丁宁(富邻) <fulin.dn(a)alibaba-inc.com>om>, LeoLiu-oc
> <LeoLiu-oc(a)zhaoxin.com>om>, cloud-kernel
> <cloud-kernel(a)lists.openanolis.org>
> 抄送:TimGuo <TimGuo(a)zhaoxin.com>om>, CobeChen <CobeChen(a)zhaoxin.com>
> 主题:Re: 回复:[ck] [patch v1] ck: crypto: x86/crc32c-intel - Don't
> match some Zhaoxin CPUs
> On 25/03/2021 15:53, 丁宁(富邻) wrote:
>> If X86_FEATURE_XMM4_2 meens different hw implement to Zhaoxin CPUs,
>> a new flag is needed to distinguish
>> them.
>>
> The X86_FEATURE_XMM4_2 on Zhaoxin CPUs have the same meaning with
> Intel.
> crc32c instruction on some Zhaoxin CPUs slower than generic C
> implementation, should avoid these Zhaoxin CPUs using the driver
> crc32c-intel which will call crc32c instruction.
>
> Sincerely
> TonyWWangoc
>
>> Artie
>>
>>
>> ------------------原始邮件 ------------------
>> 发件人:LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
>> 发送时间:Mon Mar 22 18:44:54 2021
>> 收件人: <cloud-kernel(a)lists.openanolis.org>
>> 抄送: <TonyWWang-oc(a)zhaoxin.com>om>, <TimGuo(a)zhaoxin.com>om>,
>> <CobeChen(a)zhaoxin.com>
>> 主题:[ck] [patch v1] ck: crypto: x86/crc32c-intel - Don't match some
>> Zhaoxin CPUs
>>
>> 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.
>>
>> This patch was submitted to mainline kernel but not accepted by
>> upstream
>> maintainer whose reason is "Then create a BUG flag for it,".
>>
>> We think this is not a CPU bug for Zhaoxin CPUs. So should patch the
>> crc32c driver for Zhaoxin CPUs but not report a BUG.
>>
>>
https://lkml.org/lkml/2020/12/11/308
>>
>> Signed-off-by: LeoLiu-oc <LeoLiu-oc(a)zhaoxin.com>
>> ---
>> arch/x86/crypto/crc32c-intel_glue.c | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/arch/x86/crypto/crc32c-intel_glue.c
>> b/arch/x86/crypto/crc32c-intel_glue.c
>> index 5773e1161072..d994bd49761a 100644
>> --- a/arch/x86/crypto/crc32c-intel_glue.c
>> +++ b/arch/x86/crypto/crc32c-intel_glue.c
>> @@ -242,8 +242,13 @@ MODULE_DEVICE_TABLE(x86cpu, crc32c_cpu_id);
>>
>> static int __init crc32c_intel_mod_init(void)
>> {
>> +struct cpuinfo_x86 *c = &boot_cpu_data;
>> if (!x86_match_cpu(crc32c_cpu_id))
>> return -ENODEV;
>> +if ((c->x86_vendor == X86_VENDOR_ZHAOXIN || c->x86_vendor ==
>> X86_VENDOR_CENTAUR) &&
>> +(c->x86 <= 7 && c->x86_model <= 59)) {
>> +return -ENODEV;
>> +}
>> #ifdef CONFIG_X86_64
>> if (boot_cpu_has(X86_FEATURE_PCLMULQDQ)) {
>> alg.update = crc32c_pcl_intel_update;