From patchwork Wed Apr 16 04:25:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SeongJae Park X-Patchwork-Id: 14053147 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 BD15CC369B1 for ; Wed, 16 Apr 2025 04:26:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 08BB16B024B; Wed, 16 Apr 2025 00:26:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F181A6B024E; Wed, 16 Apr 2025 00:26:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B19C36B024C; Wed, 16 Apr 2025 00:26:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 808096B0249 for ; Wed, 16 Apr 2025 00:26:00 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id D84E9161D0F for ; Wed, 16 Apr 2025 04:26:01 +0000 (UTC) X-FDA: 83338619322.12.DE94B3D Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf12.hostedemail.com (Postfix) with ESMTP id 22C0D40005 for ; Wed, 16 Apr 2025 04:25:59 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=n847wnN4; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf12.hostedemail.com: domain of sj@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744777560; a=rsa-sha256; cv=none; b=m8B64t7s3vGhdkSTw0TGKnoc5j9bMogmCVZ8ja0YfalC+wQCOPpT3IzX+SDhKmKX10RfXF zOZCOljt+ywvL1q7s0FyAioPnWOKpfPX31arSQzdoqb0zO2i94fPDPSA5GgaHrLAdg17bg vW/nD2m55jR/x8PgGOxVNzp8WBA/vDE= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=n847wnN4; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf12.hostedemail.com: domain of sj@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=sj@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744777560; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ti6Bm8niDHRhJ6XCyTQEtWZVZ/AxvaUSYzRizwwA4DU=; b=OHTcg4RicNadDy985PfnIuzH3JL89UohOC8fHWydEXavrG8sfN7YOr2KspE+wMxtgMZq2z THoGPsYLqmC7L4jIJCK5cEZtlmA4MO6+9Qal1YlN3tUFtqqPKdiZ3LLtrREZEehUHDYS+P kVUgeaR6gCb4XcQ/JHy0sgfo5d13O3A= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id A8E2B4A090; Wed, 16 Apr 2025 04:25:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7051EC4CEED; Wed, 16 Apr 2025 04:25:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744777558; bh=GTiO6/BXPbz9EroOm99u95+iwY8aI3Ihnu6Y7KgKfdQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n847wnN4J7wouK/OJGntuS3+CHz5ypT4BG3pfvdVdvDfKO/742UJG+PY376cto4hF 7z2RfOtp7sDpCyIMLeZlhB9RtsmMV/1G3vLefr8hH1/uRMzpOunNf69uVGvQhlyI+4 KjsnLP3kYlwp3k/58CtD1PD5YXun3S+i+PpIRd1KAFd/7T0jDMWrRLaZLSF9P4oGem F8LI94C5b0ykntvzkKdx3mMdiPW4Nns+sxg3kjqZgfd1deTfqJrs9XrMJwKG0fTtwL nqePUJh1VqrE1H01WrZm40yJ5gzuY+1ic+tAuznRqcs3CiZ/YGIDPbcuMAJUwM8dsP Y3e9mf4gI/MrQ== From: SeongJae Park To: Cc: SeongJae Park , Andrew Morton , Ze Zuo , damon@lists.linux.dev, kernel-team@meta.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [RFC PATCH 02/10] mm/damon/paddr: support addr_unit for access monitoring Date: Tue, 15 Apr 2025 21:25:43 -0700 Message-Id: <20250416042551.158131-3-sj@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250416042551.158131-1-sj@kernel.org> References: <20250416042551.158131-1-sj@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: 22C0D40005 X-Rspamd-Server: rspam04 X-Stat-Signature: gzsjf5dt1hwchn5nzcm94i959rja5h5r X-HE-Tag: 1744777559-174622 X-HE-Meta: U2FsdGVkX1+Kb0YH+GfZHabqUM/wngmsjboY5TtaADaZ+dW3ap32PrqYLw9Vgx3Fd9+uvbl5q60INB9WdaE6QcE/KCS09Bsvnih7W4ArFktRyMZ9FD5exgDu7C8YuaFcm8EwL51XawWOuTQd9+r9vo2U/plxDRGmIIQ12G2Jjzgc+AgBCI/2Kjs5jHp0g2OpqLBk7a8jxUdlu7a1TX1HY5y0WfxQJ+qaggaAzbAK6oJG9+M761PsJP3YsNxns/sElqVaaGoib2NIh5NqSYDnrYNvj3t6ox5bdXAjGLepBnqfqRAHe94MK4UP1akLLllaAoeMPSGZH0MsIRfz3lFEUyFRvfMCaV1btvreYm9OGv475k28Qw2K8CYbb3bdl3NHrqHnfkVo0C+bvqOr/q0bnbItM5/Iu32j72Bk/zFHBBTylOAPjw52RAtbqRSppbVhhyvJBwoUWlZ58mofXd6a2Wjn8o5DD3TCOjQr9jvJ6S0ML5XwDXZLlJZaobBKcanx3l4N5ghV7xHH018JJoErpM5+MSpm/fjRr3BC3dPt9NjMBo7lenQ6pNuGgKH2+mECGmSK2glzp/2GpmkZfOgLw3wPkd0QCR1rMF/viDaSdmrP40zTo/rbux9O4K6ZBSEFVJqda5l0TWkhxp9Uup346TQGtcIv/RSvQpTWRo7KSALRrXPWXxq2m7j7mqwOWjBuGsGydj4HezfOcusEn5wOogMW3PpfQKF3A7VYj5h6Mjlj3nfQ3fj0iulXQEPJN9TXbesGZZTkHHS9lXJs/NyuCSf/zCXkSy+FGyUSb7RuqrGglv3TPuzEUZnrRvC+Jqtks4JrGvBUVLyEnV2VF13jDsAY4a0MRQY61MooMocP9Mu9yMhHt4hB1+GJ3Zn2Fuzkb+YzkxphowFhTh3uelaeRZk20gEGn3crtroNetpUH8jIaHPG+2e9FJkDCB2qz8F7eyxC7X/xh976WTegUrP j1S1evWf TTuQSq7A+G3dcaXycQ3F5dR1uW2M4yIQM/EKIKFBX68ujgtXGE/X+QcIMIIhCtqD8wmdi/hLbP8TKZbZYk8PIvKi281fsCrbLHeKKvFTYAVvS1l5UrvWuurI1bHPVJSc7pK0KCbM1Ptn46w3OE6QGYkQgaSxj8nHUya5CcbnT0EmvjQzb5x2fxXbf0kzeuTXCiqZznODV7FiSIVSsB7zaWlrKa+D7og5PJeNjBHZpQg2s3nt0mRGX3wcHUWCI8vlnETXMCdKcJ/JSruxmaL5xxZMx+Q== 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: Add support of addr_unit paramer for access monitoing operations of paddr. Signed-off-by: SeongJae Park --- mm/damon/paddr.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/mm/damon/paddr.c b/mm/damon/paddr.c index b207c79ab9de..bc188aa2f01b 100644 --- a/mm/damon/paddr.c +++ b/mm/damon/paddr.c @@ -58,7 +58,13 @@ static void damon_folio_mkold(struct folio *folio) } -static void damon_pa_mkold(unsigned long paddr) +static phys_addr_t damon_pa_phys_addr( + unsigned long addr, unsigned long addr_unit) +{ + return (phys_addr_t)addr * addr_unit; +} + +static void damon_pa_mkold(phys_addr_t paddr) { struct folio *folio = damon_get_folio(PHYS_PFN(paddr)); @@ -69,11 +75,12 @@ static void damon_pa_mkold(unsigned long paddr) folio_put(folio); } -static void __damon_pa_prepare_access_check(struct damon_region *r) +static void __damon_pa_prepare_access_check(struct damon_region *r, + unsigned long addr_unit) { r->sampling_addr = damon_rand(r->ar.start, r->ar.end); - damon_pa_mkold(r->sampling_addr); + damon_pa_mkold(damon_pa_phys_addr(r->sampling_addr, addr_unit)); } static void damon_pa_prepare_access_checks(struct damon_ctx *ctx) @@ -83,7 +90,7 @@ static void damon_pa_prepare_access_checks(struct damon_ctx *ctx) damon_for_each_target(t, ctx) { damon_for_each_region(r, t) - __damon_pa_prepare_access_check(r); + __damon_pa_prepare_access_check(r, ctx->addr_unit); } } @@ -156,7 +163,7 @@ static bool damon_folio_young(struct folio *folio) return accessed; } -static bool damon_pa_young(unsigned long paddr, unsigned long *folio_sz) +static bool damon_pa_young(phys_addr_t paddr, unsigned long *folio_sz) { struct folio *folio = damon_get_folio(PHYS_PFN(paddr)); bool accessed; @@ -171,23 +178,25 @@ static bool damon_pa_young(unsigned long paddr, unsigned long *folio_sz) } static void __damon_pa_check_access(struct damon_region *r, - struct damon_attrs *attrs) + struct damon_attrs *attrs, unsigned long addr_unit) { - static unsigned long last_addr; + static phys_addr_t last_addr; static unsigned long last_folio_sz = PAGE_SIZE; static bool last_accessed; + phys_addr_t sampling_addr = damon_pa_phys_addr( + r->sampling_addr, addr_unit); /* If the region is in the last checked page, reuse the result */ if (ALIGN_DOWN(last_addr, last_folio_sz) == - ALIGN_DOWN(r->sampling_addr, last_folio_sz)) { + ALIGN_DOWN(sampling_addr, last_folio_sz)) { damon_update_region_access_rate(r, last_accessed, attrs); return; } - last_accessed = damon_pa_young(r->sampling_addr, &last_folio_sz); + last_accessed = damon_pa_young(sampling_addr, &last_folio_sz); damon_update_region_access_rate(r, last_accessed, attrs); - last_addr = r->sampling_addr; + last_addr = sampling_addr; } static unsigned int damon_pa_check_accesses(struct damon_ctx *ctx) @@ -198,7 +207,8 @@ static unsigned int damon_pa_check_accesses(struct damon_ctx *ctx) damon_for_each_target(t, ctx) { damon_for_each_region(r, t) { - __damon_pa_check_access(r, &ctx->attrs); + __damon_pa_check_access( + r, &ctx->attrs, ctx->addr_unit); max_nr_accesses = max(r->nr_accesses, max_nr_accesses); } }