From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 47875C7115C for ; Mon, 23 Jun 2025 02:59:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 866996B00AD; Sun, 22 Jun 2025 22:59:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 810446B00AF; Sun, 22 Jun 2025 22:59:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 74D666B00B0; Sun, 22 Jun 2025 22:59:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 64FD16B00AD for ; Sun, 22 Jun 2025 22:59:00 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id AD769816BA for ; Mon, 23 Jun 2025 02:58:59 +0000 (UTC) X-FDA: 83585158398.13.A7A7309 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by imf22.hostedemail.com (Postfix) with ESMTP id DB261C0004 for ; Mon, 23 Jun 2025 02:58:56 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf22.hostedemail.com: domain of honggyu.kim@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=honggyu.kim@sk.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750647538; a=rsa-sha256; cv=none; b=0kc98RyK6w4HyrBtZx2iE5usTEZtvMv5R71agrSV3T1dQBm6YRClBqfyVmSZQ5whRreZLK MDZjidO9frFpxbeGe/j8ZqxkkjDK0AUBUUgMVMb3aL3gghe248/uWu5Q7SwwvDtYp4xlx2 HJ/j05KFhCiJgYsp8HiFrCa05bxkFzY= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf22.hostedemail.com: domain of honggyu.kim@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=honggyu.kim@sk.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750647538; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CyWwPoTK4gDd6jBfPkrmsYbKDHO0AGPrF1OiXjQGYu8=; b=AgKYuk47AQM8UOOBF8UQ1vdwf3CqV83F+vN7q7ie3Cf64IpXhvVEKBw4R1LXeaxodqXELv CynI86HUx2SBLJ7/dGOp3FiNXACZ6fwbFdUw+ElwOSdAMDVE92inGVmg0OErVS2LAVVKPj IglVybuLOpzkFvk9qrgwuvRuDABScS8= X-AuditID: a67dfc5b-681ff7000002311f-1e-6858c2eea3e4 Message-ID: <86e91607-f008-4fc1-8660-021b8e257a10@sk.com> Date: Mon, 23 Jun 2025 11:58:53 +0900 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Cc: kernel_team@skhynix.com, damon@lists.linux.dev, Andrew Morton , linux-mm@kvack.org, Yunjeong Mun Subject: Re: [PATCH 1/3] mm/damon: do not allow creating zero size region To: SeongJae Park References: <20250622160453.47161-1-sj@kernel.org> Content-Language: ko From: Honggyu Kim In-Reply-To: <20250622160453.47161-1-sj@kernel.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrLLMWRmVeSWpSXmKPExsXC9ZZnoe67QxEZBtcXC1jMWb+GzeLJ/9+s FvfW/Ge1OPz1DZMDi8emVZ1sHps+TWL3ODHjN4vHi80zGQNYorhsUlJzMstSi/TtErgyHjdf YSmYLV6x5tchxgbGJYJdjJwcEgImEk+evmCDsd9O62MEsXkFLCW2Hf7DBGKzCKhKzP03kwki LihxcuYTFhBbVEBe4v6tGewgNrPATEaJN6d4QGxhAU+JV0/XgM0UEVCUOPf4IiuILSRgJHHp 7wYmiHoRidmdbcwgNpuAmsSVl5PA4pwCxhINnV9ZIGrMJLq2djFC2PIS29/OAarnArpzBZvE 1ZmXoY6WlDi44gbLBEbBWUjum4Vkxywks2YhmbWAkWUVo1BmXlluYmaOiV5GZV5mhV5yfu4m RmCgL6v9E72D8dOF4EOMAhyMSjy8CTwRGUKsiWXFlbmHGCU4mJVEeA85hWUI8aYkVlalFuXH F5XmpBYfYpTmYFES5zX6Vp4iJJCeWJKanZpakFoEk2Xi4JRqYKwM2n1ir5VXgsCZqnn1X8W/ RR6OnP1HMO3KWYGbn1kCXr5h3WGpr5B/S4Jdc8VHP2PdaMW3N/+Vmyk1MrmLnX2QemZSrwPb 5ufb17C/jCyV2/LCs/AT77utq377+C+TrjGy29N8+nLVrJ7/17UUQjX5+PcYTU2PTFylukPj 0sJH5hbC3gzXApRYijMSDbWYi4oTAVAJ46pwAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrLLMWRmVeSWpSXmKPExsXCNUNLT/fdoYgMg4czOS3mrF/DZvHk/29W i8NzT7Ja3FvzH8j6+obJ4ve2FWwObB6bVnUCiU+T2D1OzPjN4vFi80xGj2+3PTwWv/jAFMAW xWWTkpqTWZZapG+XwJXxuPkKS8Fs8Yo1vw4xNjAuEexi5OSQEDCReDutjxHE5hWwlNh2+A8T iM0ioCox999MJoi4oMTJmU9YQGxRAXmJ+7dmsIPYzAIzGSXenOIBsYUFPCVePV3DBmKLCChK nHt8kRXEFhIwkrj0dwMTRL2IxOzONmYQm01ATeLKy0lgcU4BY4mGzq8sEDVmEl1buxghbHmJ 7W/nME9g5JuF5IxZSEbNQtIyC0nLAkaWVYwimXlluYmZOaZ6xdkZlXmZFXrJ+bmbGIGBvKz2 z8QdjF8uux9iFOBgVOLhXeEdkSHEmlhWXJl7iFGCg1lJhPeQU1iGEG9KYmVValF+fFFpTmrx IUZpDhYlcV6v8NQEIYH0xJLU7NTUgtQimCwTB6dUA+Ot44yfl3rK785IdshRS3A715p5NL9i q87D9wd7lzxSOL727p0He3Sijn+UMj0sdtziist952cGkuVXj+dV/j7yt0ZZY+KGG+X6/bdO fHJ2k3qs7l3lP/XIv1/vf9xftcs0rtzwpv/nZrVANQfNa5y7vKZVm9Ra1+w73mnV9S/++O0d 9lpy2xyUWIozEg21mIuKEwFAGD8ZYAIAAA== X-CFilter-Loop: Reflected X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: DB261C0004 X-Stat-Signature: ox9bppssok1zz4ehydiuhtd394iptm9c X-Rspam-User: X-HE-Tag: 1750647536-477238 X-HE-Meta: U2FsdGVkX1+Zkw3wVdsc5+OaqFOVIxm9/U36NO1SME0tv5HvRJzIX9P+dzIESmyf1RWBux9A4AACN2qNIrh+UY/C7hEQNRime2wKo9hUd92is5ZrIGjdT/bmPBeCwUGzSyr4DK6cfEmFGe2Bk+KVFwwNX2LgP3pYHESTIRmLfasPOoOUlJEf5b4C3NpyvEZeOV/VnINtRRImjqBucdmGLJz4pHwVswePmvK/m1w+AfzbsghlDXgtvNBGx9z7R063bWRu46H6fwqFrp6j13UkHWsTv7z1JGv6dTotB0sRQlhzLkhZBLtk6GMieRRyw0vzIRjSW3y6eXXwrA9Hp4eFs5iSWfiKL1XOsNl7JSQri0taoonW4a5b/4ze2/P+Y3Apq4dOHS/m2TJbqqXmSZaj8RN8O7KyWyyuQKinQFxbhWHrwPz+bfitK64OmaY/ZVXTiWhtBQ+mpa/DZgItoM/x8EPaQY4loLN1rDMh3JODJ2pvzth9ZDHzJIXot7ZLIaQWiV+81OyMItjQqRR/Dx1xg+CO8ZCw2Wy4IM/Z3tHNNuYDxRo6iJ+LKGjHAH/FLLHWS3zppwKzS47OXokNDe9yNEKdg19MrqOLREyJjOQYajA8bG+sA+ZAulE0yz4M+tei+sWvuzkdS3lzJ7iiKWkFdOgv5R5OmULwh42HvmHIaNFynTT+sHSZbgKZWLzaQe+LXcvAMZMrqRwDkGSPFzBHrdyhPXf8h0/JZICJqfvvR5z5b8fiWyQQYSIf7eL1e1C08cmN1XXdbYWV1voL5gf2PIbdx3RMcg2SEMDUs683NRfAtdiPOQ1CESZCkmlWl0W5+t35tdoe87ZlL+ScGL5SsKa5UYNF2MltrCBdNFr+OP8g2b5z0LeyGYPTp2KkW/l6xpBgKfWWWKJJ4DBMPEW76Qrlh0GRJLj0Lm6pugR7/X10pDqccD1jalT6KoPsXSccWx1yf5e7RQlfOCFa2yl FVqb4LQ2 5GMsg7rtU8TS0zcT1+IowpDOpO2ImSymhnDD7XOtp3U1/3h84KPo12gvVIkaUIxqMToN8OxdFidLIclY= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Hi SeongJae, Thanks for the kind review as always! On 6/23/2025 1:04 AM, SeongJae Park wrote: > On Sun, 22 Jun 2025 21:09:23 +0900 Honggyu Kim wrote: > >> Creating zero size region leads a divide by zero error inside >> damon_get_intervals_score() as follows. >> >> static unsigned long damon_get_intervals_score(struct damon_ctx *c) >> { >> struct damon_target *t; >> struct damon_region *r; >> unsigned long sz_region, max_access_events = 0, access_events = 0; >> unsigned long target_access_events; >> unsigned long goal_bp = c->attrs.intervals_goal.access_bp; >> >> damon_for_each_target(t, c) { >> damon_for_each_region(r, t) { >> sz_region = damon_sz_region(r); >> max_access_events += sz_region * c->attrs.aggr_samples; >> access_events += sz_region * r->nr_accesses; >> } >> } >> target_access_events = max_access_events * goal_bp / 10000; >> return access_events * 10000 / target_access_events; /* divide by zero! */ >> } > > Thank you for finding this issue! Coudl you please further share how zero size > region can be made, and if user-space can make the situation? The initial values of node*_start_addr and node*_end_addr inside /sys/module/mtier/parameters/ are all zeros so I saw this problem easily by setting Y to "enabled". >> >> This patch makes a NULL return for such cases when creating a region >> inside damon_new_region(). > > I agree zero size region could look silly. But I don't really think it should > be prohibited. What about modifying damon_get_intervals_score() instead? > Maybe we can set target_access_events as 1 in this case. Hmm... I don't get what you mean by setting "target_access_events" to 1 for such cases. Could you please explain more? > >> >> Signed-off-by: Honggyu Kim >> Cc: Yunjeong Mun >> --- >> mm/damon/core.c | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/mm/damon/core.c b/mm/damon/core.c >> index b217e0120e09..44740da337fd 100644 >> --- a/mm/damon/core.c >> +++ b/mm/damon/core.c >> @@ -126,8 +126,11 @@ struct damon_region *damon_new_region(unsigned long start, unsigned long end) >> if (!region) >> return NULL; >> >> + if (start == end) >> + return NULL; If you're okay, then I'd like to modify this as follows again. + if (start >= end) + return NULL; What do you think about this? >> region->ar.start = start; >> region->ar.end = end; >> + > > Above new line is unnecessary in my opinion. Sure. will remove it in the next version. Thanks, Honggyu > >> region->nr_accesses = 0; >> region->nr_accesses_bp = 0; >> INIT_LIST_HEAD(®ion->list); >> -- >> 2.34.1 > > > Thanks, > SJ