Received: by 2002:ab2:6991:0:b0:1f2:fff1:ace7 with SMTP id v17csp127773lqo; Wed, 27 Mar 2024 08:38:07 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUXS5JQpZhc0RMzwp/cNYA8OTKevy/HGeK3S9PyMvhKZ60gubp/WcDsKOnmPw4unjTwMl+4w3FPG7BRm6w3BsFJGM6+0DKhcKCyMHt+fA== X-Google-Smtp-Source: AGHT+IGaTlfdT3h+J/IUZqUdTb0U5D+Cthxh6xNWfDC9th5YkCf3gvt6wcMXdhteKkcS5NiYIy1A X-Received: by 2002:a05:6358:718b:b0:17b:304f:b3d with SMTP id t11-20020a056358718b00b0017b304f0b3dmr5043398rwt.23.1711553886963; Wed, 27 Mar 2024 08:38:06 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711553886; cv=pass; d=google.com; s=arc-20160816; b=fF2+RW635I9b+yV3yRRS64br2p2gfkyUriFOC1NZJSm/oX5/wFY13BGH7r1G4pL4d7 ma77J4IoRZpwZY1tkV2Ry1zVxOIfHTc/D9Zs9hCK53TDLWYzK7I6Sk5tKOs1wDvl3GFu P2j+WgPIgA9VeMz2knOpaq2r98Qse59uP0a8jxtgZqzaQYaIbdDCZCThdcm0bE6PtxTm vq6Te6HhBqR+59Ads5+S+WryuGW8Y77v40qJvxc6sfkj31siOrwJrm/FAYrcFyLyilDW LDl86IOt0V3OcYfVgtzU2cUgjnn0Iz9OtYkbJS9a+3w0qIgE1zRJhV+SOwYl1+5CNKge xNqg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:message-id:dkim-signature; bh=enmbwQt8iez2R++PImRAw04TnXUHxgzDT/qGPQRyPOw=; fh=ns08ULSsqMMnqsd7EH580u8443NbcEGN+GxtnGJR/+k=; b=0yGSVr63m33mUgT77gghih5+BIUDCGuPmAr/uqaeXUxdW53Yfh3bJc6GOoJ0qaR6fk f3ZoyXOfJGH3PDYxRxh/Jp4xX8I2k48qGaN9vDn5/bwAKjf9fuYvJVBnfS7UokOtb0l6 PdNG7jkpHSCv84d5J07UZm3GGtkKQaYtde1S3Av1rS2ps80YiXEjUSCpZVawFvV3dtQw Yd5ZOYA5feuKHzZ5JrW/1BLtGBxtbMC4Qi3xw6R3Dqkryh2ZMLExe8fnVNWBzeeEKwvD VDeYG1DsGucYWQBLKDZbrWlX6Bccq3/Fyt1lJybSLV4RAOGRcn2Jisoz6dw372YQibK1 4R4A==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b="lLM/tA/h"; arc=pass (i=1 spf=pass spfdomain=sifive.com dkim=pass dkdomain=sifive.com dmarc=pass fromdomain=sifive.com); spf=pass (google.com: domain of linux-kernel+bounces-121484-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-121484-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=sifive.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id e190-20020a6369c7000000b005dc8fe5ef05si12141631pgc.96.2024.03.27.08.38.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Mar 2024 08:38:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-121484-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b="lLM/tA/h"; arc=pass (i=1 spf=pass spfdomain=sifive.com dkim=pass dkdomain=sifive.com dmarc=pass fromdomain=sifive.com); spf=pass (google.com: domain of linux-kernel+bounces-121484-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-121484-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=sifive.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id AD8C32C3D0A for ; Wed, 27 Mar 2024 15:24:14 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5F39F12F5AB; Wed, 27 Mar 2024 15:11:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b="lLM/tA/h" Received: from mail-il1-f179.google.com (mail-il1-f179.google.com [209.85.166.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 01AEF13777E for ; Wed, 27 Mar 2024 15:11:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.179 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711552291; cv=none; b=WemwK99xwJmxruDxuZ8Q6/v8avM+D7ZKJUnoDW8LiZqMgs5C1dsRNZyE5Iw09ktTqoS2EciwZZG0gjFvKfHqqIRON7TF5Is++Tg3rD5UgsEeU5H9W8TXKGvoMK8AVVd/3xKxEPqQkuq0FK6ysvekUHgHS9k9EJCd/gA2hDaoQQs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711552291; c=relaxed/simple; bh=rHdGLzexNCAF+drC6I8ecNiYnNaGkLBGs7Eesg7GYz8=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=Fl9Q1G9PkFAEQ5D3XFsTRnExVov8tjqDnsbd4FbbkZGBScyy0jy4CAK/2sXd+qMt3rjgb1mYMyo4rhEiB/xECUr80kLghP++QHllxiiIx3o0FdO9vr5nk0MQR79EwEX3tbqqcdtq/J0yhPP9ZEqH6vK3HxYVmuNGkVuQ8k4aiB8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com; spf=pass smtp.mailfrom=sifive.com; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b=lLM/tA/h; arc=none smtp.client-ip=209.85.166.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sifive.com Received: by mail-il1-f179.google.com with SMTP id e9e14a558f8ab-3668fd6952bso24873305ab.1 for ; Wed, 27 Mar 2024 08:11:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1711552289; x=1712157089; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=enmbwQt8iez2R++PImRAw04TnXUHxgzDT/qGPQRyPOw=; b=lLM/tA/h8l11B0MOiVTZXIWkx3rNA0oS0SIGnAiH2brruLuSTwv6w/NwCdMO0RC9lk XLhduEIzkn2rg/f40LIy/OVmGg8q3mpS+oZ+k11jweHrueySO08IuQ9VmzpAHgkd/PzM anfE9Qb56Itllxi8B9hlx0j65abQwKW7H5/5ZX/J8lN8JWA5q5+wd/iSdeQvTrdiLnY5 o9U1Vso/x42MK2IfTE60G8+HMotQekwtcmG76cpMwwyI6lwhdg8H7AutU3ycfJfsQ6VU Aprtungs6Maddk6Pgrldm0X1kkdYtuLqc0TDy361cRozwMV7546WQhl+4tzbpUzCRoNt m37Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711552289; x=1712157089; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=enmbwQt8iez2R++PImRAw04TnXUHxgzDT/qGPQRyPOw=; b=OJITKJw4mSLx7KEcFSupECUXNrrRstwiBaXCAucb9h6OUUAjCNrs6oChpCOBNRaM+l 0RpUXHEmn578BuuA8pqGR5pvvg0r8DJ1Wu8d3fE6T2DGJHn/x+TsErwfiqmlLC6ys9zS m9oWP3BA2uMObRTcZXEdKTdDLbaIy5xfD4VVwXXjv6iZE5B9d7PX/vVGzvXLBlT59En6 q4GfC9tMoO+ZMZJn4g6nfacFiCZqAqzRAzMISIozNmvXnp9YKu9TJFSRorcyGArUKWeP QN81XRqmqc3Zya84r9DEU7PIMoXQWV5LH9oHfIlOd+gPVbPlmovV3RWo+dUJDZA4/7a/ /A3g== X-Forwarded-Encrypted: i=1; AJvYcCWQDIfeK2KVonY7GwNVoAJr6qlb7olGzdoJVbAajztMk2ZGq1nQiDmzRViENy/Ca2B+pXX3ULzfpd0OFKgoZUfm30wZHXKJ1pYSYzeZ X-Gm-Message-State: AOJu0YyocrvctdpD54kVrrWKcSjP6egB9W8v4fdW7Of+jZSiAAjpREFa eWJrrGWse453w7vBkLnhPIQkD/MUNuYpp6tBTMO9tpxAfCCiHSkVooN1LyyQbsOGnDdzM49Kxnp 4 X-Received: by 2002:a05:6e02:ec1:b0:368:a898:c824 with SMTP id i1-20020a056e020ec100b00368a898c824mr276546ilk.1.1711552289093; Wed, 27 Mar 2024 08:11:29 -0700 (PDT) Received: from [100.64.0.1] ([170.85.6.190]) by smtp.gmail.com with ESMTPSA id y9-20020a92c989000000b0036898bfb975sm1420171iln.0.2024.03.27.08.11.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 27 Mar 2024 08:11:28 -0700 (PDT) Message-ID: <8bff47cf-659e-4344-b235-72b17ed0f37a@sifive.com> Date: Wed, 27 Mar 2024 10:11:26 -0500 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 4/7] riscv: Simplify text patching loops To: =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= , Palmer Dabbelt Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org References: <20240212025529.1971876-1-samuel.holland@sifive.com> <20240212025529.1971876-5-samuel.holland@sifive.com> <874je4fvxl.fsf@all.your.base.are.belong.to.us> Content-Language: en-US From: Samuel Holland In-Reply-To: <874je4fvxl.fsf@all.your.base.are.belong.to.us> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hi Björn, On 2024-02-19 7:03 AM, Björn Töpel wrote: > Samuel Holland writes: > >> This reduces the number of variables and makes the code easier to parse. >> >> Signed-off-by: Samuel Holland >> --- >> >> arch/riscv/kernel/patch.c | 21 +++++++++++---------- >> 1 file changed, 11 insertions(+), 10 deletions(-) >> >> diff --git a/arch/riscv/kernel/patch.c b/arch/riscv/kernel/patch.c >> index bccd9ed04a05..7f030b46eae5 100644 >> --- a/arch/riscv/kernel/patch.c >> +++ b/arch/riscv/kernel/patch.c >> @@ -155,7 +155,6 @@ NOKPROBE_SYMBOL(__patch_insn_write); >> >> static int patch_insn_set(void *addr, u8 c, size_t len) >> { >> - size_t patched = 0; >> size_t size; >> int ret = 0; >> >> @@ -163,11 +162,12 @@ static int patch_insn_set(void *addr, u8 c, size_t len) >> * __patch_insn_set() can only work on 2 pages at a time so call it in a >> * loop with len <= 2 * PAGE_SIZE. >> */ >> - while (patched < len && !ret) { >> - size = min_t(size_t, PAGE_SIZE * 2 - offset_in_page(addr + patched), len - patched); >> - ret = __patch_insn_set(addr + patched, c, size); >> + while (len && !ret) { >> + size = min_t(size_t, PAGE_SIZE * 2 - offset_in_page(addr), len); >> + ret = __patch_insn_set(addr, c, size); > > While you're at it, do: > ret = __patch_insn_set(addr, c, size); > if (ret) > return ret; > ... > return 0; > } > > and simplify the while-loop predicate? Yes, this looks better and reduces the code size as well. I'll make this change in v2. Regards, Samuel >> >> - patched += size; >> + addr += size; >> + len -= size; >> } >> >> return ret; >> @@ -190,7 +190,6 @@ NOKPROBE_SYMBOL(patch_text_set_nosync); >> >> int patch_insn_write(void *addr, const void *insn, size_t len) >> { >> - size_t patched = 0; >> size_t size; >> int ret = 0; >> >> @@ -198,11 +197,13 @@ int patch_insn_write(void *addr, const void *insn, size_t len) >> * Copy the instructions to the destination address, two pages at a time >> * because __patch_insn_write() can only handle len <= 2 * PAGE_SIZE. >> */ >> - while (patched < len && !ret) { >> - size = min_t(size_t, PAGE_SIZE * 2 - offset_in_page(addr + patched), len - patched); >> - ret = __patch_insn_write(addr + patched, insn + patched, size); >> + while (len && !ret) { >> + size = min_t(size_t, PAGE_SIZE * 2 - offset_in_page(addr), len); >> + ret = __patch_insn_write(addr, insn, size); > > Same comment as above. > > > Björn