Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp1908208pxb; Thu, 7 Oct 2021 18:28:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwq2Ym4eB2hkDf/nPcMi9l49mReXJ6aQ83dPGlzJ6SfinysbKm+pM7k0LDfKJlDUaRpGJiR X-Received: by 2002:a17:902:9303:b029:12c:29c:43f9 with SMTP id bc3-20020a1709029303b029012c029c43f9mr6855302plb.5.1633656502998; Thu, 07 Oct 2021 18:28:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633656502; cv=none; d=google.com; s=arc-20160816; b=sQMUTQJ0QFUIsEVsWYjzV1ySy5sFC8F/eKO68otyaJ8mcbiIOGdKkc5WOU/39Lm03E zZYPuZTCdqnFYUP6lPpZXdFOfK3c2umjji3QsRJUvG+LW0GLQ4KbyB0HYJw9baQSrZTn +q7RxOaSJ5UfrEbBC4GHFLWw8fKQ3S9bI+pXqk7h4rMTSR6v7knPchByLtoqJVMsDodV nO2poM7r9gKGOtJhMqqH4YLo2+ebYszH49rwhpYwaD+nlmo72w6Z/a9vb0YG6vyCdkVs UzDJv1l2LJ2CpLMD44iyRLQ3CTV6twr9hhzHIfl6jw08S9+ZfRw/Eo/MGdC0zouYXicB HNbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:to:from:cc:in-reply-to:subject:date:dkim-signature; bh=pJpdSjWQ9J57N/lwk0QG5s7Kp9DIqFcdVWHLvvYpJjI=; b=awEFq7CfsF9xVe3QSYxQ2ZzCpu4QTZf1svN4WY4PMlW9nnd7mwu/eUeo+P2017uIde rph1EDzTvpFMXBhsu16J8TzN27JLs3pX12xej0QRYmFVJ3jdYUbpo7uRnDz8cZ+FEGEM 78iyEKFst5hzM8Rv5ZltK3om5gx4gwIGBqR+lEsxzX6TlrlpJow1TtyBV02MTy3dq3oA bPbcjeWA/F286kOvx+DAoVyUj/Q9JCMDNWGqnZoXRr9aaHGCZybr+TbAVpxpxHKED50q /4Uya7ZxJrmaJd2cHJ2zrQ9HF1sy3C+lsnaorNGggn0Iz2wsYc5dZ6dsXvfJW5ezv7KZ VwMQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@dabbelt-com.20210112.gappssmtp.com header.s=20210112 header.b=s+MMrKGN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-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 k22si1420548pgt.608.2021.10.07.18.28.09; Thu, 07 Oct 2021 18:28:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@dabbelt-com.20210112.gappssmtp.com header.s=20210112 header.b=s+MMrKGN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229487AbhJHB2l (ORCPT + 99 others); Thu, 7 Oct 2021 21:28:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39174 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229955AbhJHB2k (ORCPT ); Thu, 7 Oct 2021 21:28:40 -0400 Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CEE10C061570 for ; Thu, 7 Oct 2021 18:26:45 -0700 (PDT) Received: by mail-pl1-x631.google.com with SMTP id w14so5142143pll.2 for ; Thu, 07 Oct 2021 18:26:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dabbelt-com.20210112.gappssmtp.com; s=20210112; h=date:subject:in-reply-to:cc:from:to:message-id:mime-version :content-transfer-encoding; bh=pJpdSjWQ9J57N/lwk0QG5s7Kp9DIqFcdVWHLvvYpJjI=; b=s+MMrKGNGrHx6bfFOUqPVOd5XD+gv5OM/LYiNgY6bbTSNhbQnxrQxAtjMVMo4yOXLk xcm1nQK4WnIakev01IJ3xAi3TfIiJhXioq85IKrwOraUw/MRHLJAwvPLS+tJsnwtPoii 2lzDV8nfm69rq+LDi7d6jbmo+qWmqZ6efgIm7b23ZDi7BnOQJIJdJHURPLUtNd++IefB jk5Ix9vRfUWwQr6kEJuJuFlqHiQvrQQE+jjCjZS96nPCR/lLSTIzEzdRZ+/UYyLkrQ5P 0pi81mRSl+pbqNRn/5xupNOcKOUEktMaNvJGzFGDb7oo7BnWam5kDsiwkoSguzvtSmoq zbJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:subject:in-reply-to:cc:from:to:message-id :mime-version:content-transfer-encoding; bh=pJpdSjWQ9J57N/lwk0QG5s7Kp9DIqFcdVWHLvvYpJjI=; b=CniIyCeb/qX0VhHhu735RgCbQkv4yqpMxmCgcxMFSwCfgH2cjtASNLtH31Y4xOUbjV qVuCdI2j4fk94oROMXJxKUG6K7VLFnI0/ZxlFIjTzuZR3V/lO9tpox3sxQfbbssBf/GB 6XC2C4w9YZ/6NHbAcWLODlQ/fQwsdbl9V5DwVse1beh1Pc3p01Nt84i5Gj5MD6SU03eG gHgyiDjGJL1JZ1F/s4M+tUh+z7/OKgYoaTju66U8BNVhUWRjkvUVLlOerXCGiBzT1trh OiIG7c4UGifmxCu4wSgvqHC+A6Cvsm/T0YuQbwBUwmXpQBH9UJRXfHT+OOjBMVN5r1Zu SVyw== X-Gm-Message-State: AOAM532miz5JFvJN4IpV+81etNFums7AYmZbP4dRJHmLZKc8rNqFr/Zu M3hPWr+gc7J+pR0qe0xmhYguH5Z1G6mymg== X-Received: by 2002:a17:90a:62ca:: with SMTP id k10mr8475031pjs.38.1633656405198; Thu, 07 Oct 2021 18:26:45 -0700 (PDT) Received: from localhost (76-210-143-223.lightspeed.sntcca.sbcglobal.net. [76.210.143.223]) by smtp.gmail.com with ESMTPSA id x9sm9478349pjp.50.2021.10.07.18.26.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Oct 2021 18:26:44 -0700 (PDT) Date: Thu, 07 Oct 2021 18:26:44 -0700 (PDT) X-Google-Original-Date: Thu, 07 Oct 2021 18:26:33 PDT (-0700) Subject: Re: [PATCH v4 0/3] riscv: optimized mem* functions In-Reply-To: <20210919192104.98592-1-mcroce@linux.microsoft.com> CC: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, Paul Walmsley , aou@eecs.berkeley.edu, Atish Patra , kernel@esmil.dk, akira.tsukamoto@gmail.com, drew@beagleboard.org, bmeng.cn@gmail.com, David.Laight@aculab.com, guoren@kernel.org, Christoph Hellwig From: Palmer Dabbelt To: mcroce@linux.microsoft.com Message-ID: Mime-Version: 1.0 (MHng) Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, 19 Sep 2021 12:21:01 PDT (-0700), mcroce@linux.microsoft.com wrote: > From: Matteo Croce > > Replace the assembly mem{cpy,move,set} with C equivalent. > > Try to access RAM with the largest bit width possible, but without > doing unaligned accesses. > > A further improvement could be to use multiple read and writes as the > assembly version was trying to do. > > Tested on a BeagleV Starlight with a SiFive U74 core, where the > improvement is noticeable. > > v3 -> v4: > - incorporate changes from proposed generic version: > https://lore.kernel.org/lkml/20210617152754.17960-1-mcroce@linux.microsoft.com/ > > v2 -> v3: > - alias mem* to __mem* and not viceversa > - use __alias instead of a tail call > > v1 -> v2: > - reduce the threshold from 64 to 16 bytes > - fix KASAN build > - optimize memset > > Matteo Croce (3): > riscv: optimized memcpy > riscv: optimized memmove > riscv: optimized memset > > arch/riscv/include/asm/string.h | 18 ++-- > arch/riscv/kernel/Makefile | 1 - > arch/riscv/kernel/riscv_ksyms.c | 17 ---- > arch/riscv/lib/Makefile | 4 +- > arch/riscv/lib/memcpy.S | 108 ---------------------- > arch/riscv/lib/memmove.S | 64 ------------- > arch/riscv/lib/memset.S | 113 ----------------------- > arch/riscv/lib/string.c | 154 ++++++++++++++++++++++++++++++++ > 8 files changed, 164 insertions(+), 315 deletions(-) > delete mode 100644 arch/riscv/kernel/riscv_ksyms.c > delete mode 100644 arch/riscv/lib/memcpy.S > delete mode 100644 arch/riscv/lib/memmove.S > delete mode 100644 arch/riscv/lib/memset.S > create mode 100644 arch/riscv/lib/string.c Thanks. These generally look good, but they're failing to build for me. I'm getting errors along the lines of arch/riscv/lib/string.c:89:7: error: inlining failed in call to ‘always_inline’ ‘memcpy’: function body can be overwritten at link time 89 | void *memcpy(void *dest, const void *src, size_t count) __weak __alias(__memcpy); | ^~~~~~ arch/riscv/lib/string.c:99:10: note: called from here 99 | return memcpy(dest, src, count); | ^~~~~~~~~~~~~~~~~~~~~~~~ I'm still a bit behind on email so I'm going to keep going through patches, but if there's no v5 by the time I get back here then I'll take a look.