Received: by 10.213.65.68 with SMTP id h4csp3519993imn; Mon, 9 Apr 2018 23:39:15 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+PGLjii+IbzQz7rzvMLcvdqBJ4VEEP3/w0Wl14Y8ZZBcKrtbCu6mPCiN7fAeunuJ35AM9c X-Received: by 10.167.131.201 with SMTP id j9mr1701548pfn.214.1523342355211; Mon, 09 Apr 2018 23:39:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523342355; cv=none; d=google.com; s=arc-20160816; b=vOMLBmBaxjRkE3ViDu19U2tpAcyfkaWvpFzr+CvKJTFfxo22eBjOll5G1cjgKE6jzZ h6UJP7oTnlf9r5cjUaFef8yoRyyF+PjI8snSMU+xqpwtGsulbBUSNN2QSaBl2SQZBCNO rp6r2TNuShryMYUkCQlFpjHNryymDNiL//vziXU+ER70SiPSVfaT1gXVKow0zmCUTG40 TibQujx325E/zMxH4yw5uRbZ2IfCQB23GLPdg/t36D4M7EVh0y+JxcOpKYohFaD8G5mK OK3TbpmamTq3WVyEe08r41pQoCpbx+29oYVbwlarEfu9qnpHvZYgpZ7NelubPagcae1D KZFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:message-id:cc:to:subject:from :arc-authentication-results; bh=7SxoCp3evRxb5MVxisalGoOLWcjNOJNx0fmk81brHNI=; b=DYtZUOCrlRbEBj5QjmvrrkMaWa+bqxc2bu9xpUXU3pfA78yMv31JzJQ5BawUT4omoU 8PTbRLCKEL489Sp/SwJ+zInjBmbP1w441Ab5mr8PVhTe62GEmwx91ARQaq3JuSSWt21t iDobCsWCBhtncTvqE6B8jm36T5RoCBpF35NtlXwRWrD0g44V1erhdgrM6DtvX9zqT4OS h1p7z5kQOBYzy/pXd9OEbsgiRSpKINXQrHoycCHALepQnmZLXgsAyPSn9Pd+07cy/9L0 zPvpi8QMb1aSgz4FTpR2BuAtvdbixRpyd/rj+hepKinpQ15ByqeI/56uOURQDpL7pQcX qQCQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g9si1369552pgo.214.2018.04.09.23.38.38; Mon, 09 Apr 2018 23:39:15 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752463AbeDJGel (ORCPT + 99 others); Tue, 10 Apr 2018 02:34:41 -0400 Received: from pegase1.c-s.fr ([93.17.236.30]:56082 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752064AbeDJGei (ORCPT ); Tue, 10 Apr 2018 02:34:38 -0400 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 40Ky7w4xN1z9ttgH; Tue, 10 Apr 2018 08:34:36 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id f8NJuhrBIYlE; Tue, 10 Apr 2018 08:34:36 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 40Ky7w4SD3z9ttfs; Tue, 10 Apr 2018 08:34:36 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 9B26E8B791; Tue, 10 Apr 2018 08:34:37 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id ITIgee4u8fvw; Tue, 10 Apr 2018 08:34:37 +0200 (CEST) Received: from po15720vm.idsi0.si.c-s.fr (unknown [192.168.232.3]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 4766D8B750; Tue, 10 Apr 2018 08:34:37 +0200 (CEST) Received: by po15720vm.idsi0.si.c-s.fr (Postfix, from userid 0) id 217D2653BC; Tue, 10 Apr 2018 08:34:37 +0200 (CEST) From: Christophe Leroy Subject: [PATCH] Revert "powerpc/64: Fix checksum folding in csum_add()" To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Scott Wood Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Shile Zhang Message-Id: <20180410063437.217D2653BC@po15720vm.idsi0.si.c-s.fr> Date: Tue, 10 Apr 2018 08:34:37 +0200 (CEST) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This reverts commit 6ad966d7303b70165228dba1ee8da1a05c10eefe. That commit was pointless, because csum_add() sums two 32 bits values, so the sum is 0x1fffffffe at the maximum. And then when adding upper part (1) and lower part (0xfffffffe), the result is 0xffffffff which doesn't carry. Any lower value will not carry either. And behind the fact that this commit is useless, it also kills the whole purpose of having an arch specific inline csum_add() because the resulting code gets even worse than what is obtained with the generic implementation of csum_add() 0000000000000240 <.csum_add>: 240: 38 00 ff ff li r0,-1 244: 7c 84 1a 14 add r4,r4,r3 248: 78 00 00 20 clrldi r0,r0,32 24c: 78 89 00 22 rldicl r9,r4,32,32 250: 7c 80 00 38 and r0,r4,r0 254: 7c 09 02 14 add r0,r9,r0 258: 78 09 00 22 rldicl r9,r0,32,32 25c: 7c 00 4a 14 add r0,r0,r9 260: 78 03 00 20 clrldi r3,r0,32 264: 4e 80 00 20 blr In comparison, the generic implementation of csum_add() gives: 0000000000000290 <.csum_add>: 290: 7c 63 22 14 add r3,r3,r4 294: 7f 83 20 40 cmplw cr7,r3,r4 298: 7c 10 10 26 mfocrf r0,1 29c: 54 00 ef fe rlwinm r0,r0,29,31,31 2a0: 7c 60 1a 14 add r3,r0,r3 2a4: 78 63 00 20 clrldi r3,r3,32 2a8: 4e 80 00 20 blr And the reverted implementation for PPC64 gives: 0000000000000240 <.csum_add>: 240: 7c 84 1a 14 add r4,r4,r3 244: 78 80 00 22 rldicl r0,r4,32,32 248: 7c 80 22 14 add r4,r0,r4 24c: 78 83 00 20 clrldi r3,r4,32 250: 4e 80 00 20 blr Fixes: 6ad966d7303b7 ("powerpc/64: Fix checksum folding in csum_add()") Signed-off-by: Christophe Leroy --- arch/powerpc/include/asm/checksum.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/include/asm/checksum.h b/arch/powerpc/include/asm/checksum.h index 842124b199b5..4e63787dc3be 100644 --- a/arch/powerpc/include/asm/checksum.h +++ b/arch/powerpc/include/asm/checksum.h @@ -112,7 +112,7 @@ static inline __wsum csum_add(__wsum csum, __wsum addend) #ifdef __powerpc64__ res += (__force u64)addend; - return (__force __wsum) from64to32(res); + return (__force __wsum)((u32)res + (res >> 32)); #else asm("addc %0,%0,%1;" "addze %0,%0;" -- 2.13.3