Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp16831rdb; Mon, 4 Dec 2023 18:25:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IHsAwlrOf1+mFIgp72MNnDanST+RY51kAWqS3h1DG1yvOY11gdjCjb4ovHR7TBYPg6EbVPy X-Received: by 2002:a05:6808:3091:b0:3b8:9d28:fea3 with SMTP id bl17-20020a056808309100b003b89d28fea3mr5339028oib.11.1701743158149; Mon, 04 Dec 2023 18:25:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701743158; cv=none; d=google.com; s=arc-20160816; b=wgaN6+MY0Qa5kdnRzKYhQeFjieewg0g36Ij7241QfG+jvZKx6Pu9Q6nfThLCeTQNOP uWc36w9snrsdrUXcb7vZVPDFRHtOwYBbqXGMAsZXyRKF6e1YTEqJ5GJ6Mn0swu21sbB0 HmHgKALBOzrhRSmK7FVjgFlGMMKYMdnGs8WYttQIL6cCetZ5/1hz/apxKRiek6LkPIzq zBiDcuam1A6IKvtk/qpdoEUCI3OnxBltGiNwumIiVn8PkvnKHrKSOBwkFSkkD0Q2YPwz A1joUOEG1FJPydA2QCHjVrUw9OR9f4FVCJiVDUBf1y/gJFejdXasw/NpDNIGRRyMT5LT l0ag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=BOlDhXErEGL5vq9/qi5YxTCcpTGQOTXCdpaBafqvR+8=; fh=DgGXwGbnyiv1Rvt/NkXbEKOXDvWVLBCb4IpCdacEJoI=; b=qEsFPZpq61i44IqJKjSt1Ad9N60h/NBPa4YXoev6/DRzajvamRy20jiFsglhhE2ASa qTq6ekPjrdrPJk6B+2NdkAigJVyu0OZepqBvsJ5LXEM4HH5szxw4kU9MZjn9Kf8nZMib 6cpyib7HlNxyMctYVCqW1j8DPDM7ANvBlWv5hqpg0eRvUXRk/pZx75f6HDH9BH7cVDlq xAHq2hU1H76vJJOfwfILwbLErwkzOH83O+cVdTfFMD2TcfAKDYvbkkdaWt4MQYgXO5Qh msFDiBUrxxvCT/YzTjwat29VaC+i87iJGkQ+KtRWiT5pXcMPdvEEskrsURQOKG+3dL2e u6rQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.org.uk header.s=zeniv-20220401 header.b=rdXV8YLe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zeniv.linux.org.uk Return-Path: Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id r28-20020a635d1c000000b005be264316d8si8937456pgb.417.2023.12.04.18.25.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Dec 2023 18:25:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.org.uk header.s=zeniv-20220401 header.b=rdXV8YLe; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=zeniv.linux.org.uk Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id A409D80219C4; Mon, 4 Dec 2023 18:25:51 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376448AbjLECZW (ORCPT + 99 others); Mon, 4 Dec 2023 21:25:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56836 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344096AbjLECYW (ORCPT ); Mon, 4 Dec 2023 21:24:22 -0500 Received: from zeniv.linux.org.uk (zeniv.linux.org.uk [IPv6:2a03:a000:7:0:5054:ff:fe1c:15ff]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DF228191; Mon, 4 Dec 2023 18:24:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=linux.org.uk; s=zeniv-20220401; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=BOlDhXErEGL5vq9/qi5YxTCcpTGQOTXCdpaBafqvR+8=; b=rdXV8YLeqaYLb41yEuhx8J99j9 Ot+YALUdjpRHPsNgo9UV53/kLiaA3i1xnEfb6bNdzOKEoCMH3cJ6CAvVnxzYxnMg7YNhBPy4FrUmR A1k1HkN9QXcPEXeF7wkacoDVqZzPm8hCPHPevxGuj/39ENbuOheMrG5ZTHxjOeyqZPOnebmwTZclP 06FvfH7OccZtLTZNqfYuKEVOpQirWvBSEFZS56OvIYiu+QTbEUjCK/zp8s/7ma+ctLHxF4rBo2+Pa FXJx76gLoNuZKPL2RS5ivNgUjXhZOh9xn1+FwatyvQMsCvn6xlB8iIfJkdi5SmbeOt2GaqYEl4XIU F56F8KVw==; Received: from viro by zeniv.linux.org.uk with local (Exim 4.96 #2 (Red Hat Linux)) id 1rAL6l-00793l-0G; Tue, 05 Dec 2023 02:24:23 +0000 From: Al Viro To: linux-arch@vger.kernel.org Cc: gus Gusenleitner Klaus , Al Viro , Thomas Gleixner , lkml , Ingo Molnar , "bp@alien8.de" , "dave.hansen@linux.intel.com" , "x86@kernel.org" , "David S. Miller" , "dsahern@kernel.org" , "kuba@kernel.org" , Paolo Abeni , Eric Dumazet Subject: [PATCH v2 14/18] amd64: saner handling of odd address in csum_partial() Date: Tue, 5 Dec 2023 02:24:14 +0000 Message-Id: <20231205022418.1703007-23-viro@zeniv.linux.org.uk> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20231205022418.1703007-1-viro@zeniv.linux.org.uk> References: <20231205022100.GB1674809@ZenIV> <20231205022418.1703007-1-viro@zeniv.linux.org.uk> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: Al Viro X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Mon, 04 Dec 2023 18:25:51 -0800 (PST) all we want there is to have return value congruent to result * 256 modulo 0xffff; no need to convert from 32bit to 16bit (i.e. take it modulo 0xffff) first - cyclic shift of 32bit value by 8 bits (in either direction) will work. Kills the from32to16() helper and yields better code... Signed-off-by: Al Viro --- arch/x86/lib/csum-partial_64.c | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/arch/x86/lib/csum-partial_64.c b/arch/x86/lib/csum-partial_64.c index 5e877592a7b3..192d4772c2a3 100644 --- a/arch/x86/lib/csum-partial_64.c +++ b/arch/x86/lib/csum-partial_64.c @@ -11,25 +11,13 @@ #include #include -static inline unsigned short from32to16(unsigned a) -{ - unsigned short b = a >> 16; - asm("addw %w2,%w0\n\t" - "adcw $0,%w0\n" - : "=r" (b) - : "0" (b), "r" (a)); - return b; -} - static inline __wsum csum_tail(u64 temp64, int odd) { unsigned int result; result = add32_with_carry(temp64 >> 32, temp64 & 0xffffffff); - if (unlikely(odd)) { - result = from32to16(result); - result = ((result >> 8) & 0xff) | ((result & 0xff) << 8); - } + if (unlikely(odd)) + result = rol32(result, 8); return (__force __wsum)result; } -- 2.39.2