From patchwork Wed Mar 20 02:42:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaiyang Zhao X-Patchwork-Id: 13597218 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 DB5ACC54E68 for ; Wed, 20 Mar 2024 02:42:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 553BD6B0083; Tue, 19 Mar 2024 22:42:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4DC0E6B0085; Tue, 19 Mar 2024 22:42:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3A40C6B0088; Tue, 19 Mar 2024 22:42:24 -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 2A2866B0083 for ; Tue, 19 Mar 2024 22:42:24 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id E880BC03F0 for ; Wed, 20 Mar 2024 02:42:23 +0000 (UTC) X-FDA: 81915868566.17.183CE3E Received: from mail-qt1-f176.google.com (mail-qt1-f176.google.com [209.85.160.176]) by imf11.hostedemail.com (Postfix) with ESMTP id 1D18340006 for ; Wed, 20 Mar 2024 02:42:21 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=cs.cmu.edu header.s=google-2021 header.b=CP1JX2zA; dmarc=pass (policy=none) header.from=cs.cmu.edu; spf=pass (imf11.hostedemail.com: domain of kaiyang2@andrew.cmu.edu designates 209.85.160.176 as permitted sender) smtp.mailfrom=kaiyang2@andrew.cmu.edu ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710902542; h=from:from:sender:reply-to: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=iqOS+o0oT1l/HNw34tsU/JsvphKmYASr0yvHH9hC1Ss=; b=lGQ0s2wA8b9tzRSMFnweaBtEI+t7NOBRIiJ7XzYS+hva2QLHZQpSbNb/txBUObLZ0bF6Rw Eit0VOr4l+8VMwF7jmWdgkQaLuK3NlWnZNRLg1ykcm+TIdBQM724BdeMvHDaT2iaAWmDXf u95EsLsrI5ccYtpW7mOOkwh7t7qGpYM= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=cs.cmu.edu header.s=google-2021 header.b=CP1JX2zA; dmarc=pass (policy=none) header.from=cs.cmu.edu; spf=pass (imf11.hostedemail.com: domain of kaiyang2@andrew.cmu.edu designates 209.85.160.176 as permitted sender) smtp.mailfrom=kaiyang2@andrew.cmu.edu ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710902542; a=rsa-sha256; cv=none; b=D4aIUkJznTxdcDXB2dsYseyFr5+Km3ORMrxEjVmSWLKTZ4efdb2w/XU1zLjcYqKX6dF5sF 7WtgPk3qxuFIVuSscA4lyhdAz8yLSBmapzUUoa8Onub6h9mURouLP2J4qy0BmlGQBKkqzb KgV3Ax+x9ibQ0/VSPzTs/GtTb7/mi8w= Received: by mail-qt1-f176.google.com with SMTP id d75a77b69052e-430c4d0408eso19373191cf.3 for ; Tue, 19 Mar 2024 19:42:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.cmu.edu; s=google-2021; t=1710902541; x=1711507341; darn=kvack.org; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=iqOS+o0oT1l/HNw34tsU/JsvphKmYASr0yvHH9hC1Ss=; b=CP1JX2zAPknsAV4pr5aNxni5I0WRVzlyw/BGixtcLU0SX1CUk9XAdt3h4nNsuzbSq6 DaM5gWhshW+OBEFzSxAOM7B5Wn5EvfnFCxWpGrfAfQq1aV8ctuXI5wSB3RbmmjxAcjy0 fc6wax3YvgKqPCkM0xZYPPV6aMku3jd+oTCYYwlBc0k1yT+9gK4KQtNRrIFbz+nSM8QC W4rj7a+wrqU1CFNLoqxpFJC/GhpWmqg2+4SxetWfb62WjsSGBbNHFiu770tzHK3A3vRY 4u8XxeoMVTVeVJKBPQmutwFryZb/2DgyX4sUPII/68zNeB6Kk1tRWKyY91JEOBbbdNNi 7/KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710902541; x=1711507341; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=iqOS+o0oT1l/HNw34tsU/JsvphKmYASr0yvHH9hC1Ss=; b=Beh0XRbTGaiCLzrlIT/33uDI0R99bwrOaNr2nx4QVAFIAqBiuHIYkbsHD+kx8UJfh/ C56vOBAo7MplCyApTBAL0VzNERgtuoDVBL7D054PvoPtANjdo5ZqELUG0cBDR1ARfqs2 S949rO8t1hWRyttHoLl02HOD07yuLCLHKGgLuwXYMp9BNIf+TrxE00nttRXZsfk4b0gU 7JnCa/9UJwx+LSJmrXKf2Te7mrRjYhGgBbJix9dG8prbdBYXqqdPYisK8yF0dWSops47 u+jUPjCVDm1JBz14B0fmkid1qe37Ggu03mCe5b4N4tquPZO1Yxt/vKkZ58smfo7Y+AQa nhtA== X-Gm-Message-State: AOJu0YwvjwB20dBucNUc32jdLNLOSTOorfInfbMAOg4mSP4ZdxgkzNdv 6BPvfCp565dX3gJf/SRkNDHrjGxHjiNHT4V8DGTWD6XOr2a4U1b8l2yowDw4C5SkyAITRBKqAfC 36+UBucu7D0ayE/OzR7J3yje/nwTIelnIJ6HyA2vM/+zDCc7qD+7z9JChOfMGVCmazi5WH5xqQs e49WtoGoG/2vEOtmXthuCtmia/oDrTgIcqOQQ= X-Google-Smtp-Source: AGHT+IFk+lAGf3V5CLYbVG5wQXqw/ssb09CFDjYho2uIfDPdBFEW3or4buauRl9+pxp4i58SExaXDQ== X-Received: by 2002:a05:622a:1896:b0:430:d8c9:b523 with SMTP id v22-20020a05622a189600b00430d8c9b523mr5159062qtc.8.1710902540913; Tue, 19 Mar 2024 19:42:20 -0700 (PDT) Received: from localhost (pool-74-98-221-57.pitbpa.fios.verizon.net. [74.98.221.57]) by smtp.gmail.com with UTF8SMTPSA id hb4-20020a05622a2b4400b0042f0008b8b7sm4428856qtb.35.2024.03.19.19.42.20 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 19 Mar 2024 19:42:20 -0700 (PDT) From: kaiyang2@cs.cmu.edu To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Kaiyang Zhao , hannes@cmpxchg.org, ziy@nvidia.com, dskarlat@cs.cmu.edu Subject: [RFC PATCH 1/7] sysfs interface for the boundary of movable zone Date: Wed, 20 Mar 2024 02:42:12 +0000 Message-Id: <20240320024218.203491-2-kaiyang2@cs.cmu.edu> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240320024218.203491-1-kaiyang2@cs.cmu.edu> References: <20240320024218.203491-1-kaiyang2@cs.cmu.edu> Reply-To: Kaiyang Zhao MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: a89bor73ym3s49p1mt6bjzbmj5rhtbw6 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 1D18340006 X-HE-Tag: 1710902541-569096 X-HE-Meta: U2FsdGVkX19xavU5XtCeW6mb5jFn2tSNk4CHHNHY8NlXEa50XmxVi+bPGQr4QaJS9aQRPtLOnuk0Z6JckReDD+m37ObC2IABORcANGcqs7Oz/gtZcBhIH9DyCOd/PU4lCyaLbX7c1i+xDxNlubFAwKS48e25MKpAKI8krLCj7UVIT+XtxGMQCu4nY5zdjXOZd+I5PjW3hoX7+g2ALPJoOv40bO8W9edN2sRLfv/bEF4FvnNJt5ddJtgm+tddFZjFxpuZoWQWL0M97e+Eta/9oTStiFmlV/ZXaBgzs1+YAh9SOZKIT9fOkHjfUEfn5ZIfGhyGsQDLZg0wMU6AT9focDKkWAgvhm3tYe7Ng/kKCjsU0j5Xsn/mBDExH2YSqPuPBfoGChkiMz5ic/FKVr6OJmCWLNy03Azd1tE4Ds2HUmIQO5TEYpkTGamxMKw2OqW6Xh5RnUrPylHO+qqcjtZmJtmHkjfTJ4kkM64+jnLmYvisodOGrDI9EeRV/239REgXomHEXS/UAct2kXjTXTTyUPxX5JVUUIDvRfzshu3z6wH4l8W4wiUGL/hP8cciExpJxOwoNx3Wk1LZrtgimMoVxlmnlVH2BMeUMC2X/T+JifZTo/nlSYPJ1IquYaIhpmST4XWei66ucKNhGqM55eUcXi5AChTKwaFqG/7EkphFRjEcQoKOPAakNH2TFjl1DlZRFJoqV22ekLi6/6bu3fNuRP7F9yAkoD2LhtQBZDth7xIb994BwLizqH/24FlKAuVZ0p+NunMSgEqYFZF0GF5EVooTw8AAXEK6Hkbo8pZg5jhj5FCrA8ZRHzxyOrvfGy4gs4YWb/cybrELcdLZOoR2w3wbQEv64DFVU5AUhHzwGO9g25MYnY2XQOR3BeHkXA0wFnbTummMzaMrLEJ1Aw3ItDEBkyOpEgMA/bnB6x15KcAmhloglgAxbHwoYzX2ivdgcMJScImGYi2u45gOpta 9pKXkt/X vaRUp9aOg9sjK4Ndid8sDvyaXz7gHvOAEMXLh1XBPV4znUV1ycPbARtLCL2J3GCZH8FUkDbY2ImTCoBH+eaH+OiLttFW5/3lvtzqEGyDAOauWJIXkMwuC3n8WT8DQ2K4094+pxskZB0la3pTbj93plJYFirCC/SDwriXh78XdpFcd/hQLiL8Xa0hu9mZIm+xjeEyS3iCrJjMrYBaQtYqYuWTZeV7HM9ZhJosQ1Pby2L/8GbGMmy1AVvvH7FSC3MyZM/wrPMhE4AxxMEgfFgAdP/mXcDL/fz1yDKIui+S4CntsSEKYMOXuprTlEGXMnN/0YOdn+bjqkveiL8RMGLzDlK8WFk43+v+Dqlau6ZNxihU67O9eR+tHeO7iUGTWv7HB/eruQ4hzI3jg5ftlnnE8EbGqa7efUTBJaAvA0v3S0fuyjZHZwaGVl2D0CnguCkvoTf1CbcU19RsGNxxdNTAiAQX+Sg10byWEowFjBvpOlc6Md05sxLNey9Ux/yHqTgdeVQP7DCzZvvxTj6exRrAW3uwrO50KTmDfPscObV39Wx3i8l/iRCX6cWDlDwAwzpDYNa3C 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: From: Kaiyang Zhao Exports the pfn and memory block id for boundary Signed-off-by: Kaiyang Zhao --- drivers/base/memory.c | 2 +- drivers/base/node.c | 32 ++++++++++++++++++++++++++++++++ include/linux/memory.h | 1 + 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/drivers/base/memory.c b/drivers/base/memory.c index b456ac213610..281b229d7019 100644 --- a/drivers/base/memory.c +++ b/drivers/base/memory.c @@ -55,7 +55,7 @@ static inline unsigned long memory_block_id(unsigned long section_nr) return section_nr / sections_per_block; } -static inline unsigned long pfn_to_block_id(unsigned long pfn) +unsigned long pfn_to_block_id(unsigned long pfn) { return memory_block_id(pfn_to_section_nr(pfn)); } diff --git a/drivers/base/node.c b/drivers/base/node.c index b46db17124f3..f29ce07565ba 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c @@ -486,6 +486,37 @@ static ssize_t node_read_meminfo(struct device *dev, #undef K static DEVICE_ATTR(meminfo, 0444, node_read_meminfo, NULL); +static ssize_t node_read_movable_zone(struct device *dev, + struct device_attribute *attr, char *buf) +{ + int len = 0; + struct zone *unmovable_zone; + unsigned long movable_start_pfn, unmovable_end_pfn; + unsigned long movable_start_block_id, unmovable_end_block_id; + + movable_start_pfn = NODE_DATA(dev->id)->node_zones[ZONE_MOVABLE].zone_start_pfn; + movable_start_block_id = pfn_to_block_id(movable_start_pfn); + + if (populated_zone(&(NODE_DATA(dev->id)->node_zones[ZONE_NORMAL]))) + unmovable_zone = &(NODE_DATA(dev->id)->node_zones[ZONE_NORMAL]); + else + unmovable_zone = &(NODE_DATA(dev->id)->node_zones[ZONE_DMA32]); + + unmovable_end_pfn = zone_end_pfn(unmovable_zone); + unmovable_end_block_id = pfn_to_block_id(unmovable_end_pfn); + + len = sysfs_emit_at(buf, len, + "movable_zone_start_pfn %lu\n" + "movable_zone_start_block_id %lu\n" + "unmovable_zone_end_pfn %lu\n" + "unmovable_zone_end_block_id %lu\n", + movable_start_pfn, movable_start_block_id, + unmovable_end_pfn, unmovable_end_block_id); + + return len; +} +static DEVICE_ATTR(movable_zone, 0444, node_read_movable_zone, NULL); + static ssize_t node_read_numastat(struct device *dev, struct device_attribute *attr, char *buf) { @@ -565,6 +596,7 @@ static DEVICE_ATTR(distance, 0444, node_read_distance, NULL); static struct attribute *node_dev_attrs[] = { &dev_attr_meminfo.attr, + &dev_attr_movable_zone.attr, &dev_attr_numastat.attr, &dev_attr_distance.attr, &dev_attr_vmstat.attr, diff --git a/include/linux/memory.h b/include/linux/memory.h index 31343566c221..17a92a5c1ae5 100644 --- a/include/linux/memory.h +++ b/include/linux/memory.h @@ -92,6 +92,7 @@ struct memory_block { int arch_get_memory_phys_device(unsigned long start_pfn); unsigned long memory_block_size_bytes(void); int set_memory_block_size_order(unsigned int order); +unsigned long pfn_to_block_id(unsigned long pfn); /* These states are exposed to userspace as text strings in sysfs */ #define MEM_ONLINE (1<<0) /* exposed to userspace */