From nobody Mon Feb 9 23:39:36 2026 Received: from mail-qt1-f180.google.com (mail-qt1-f180.google.com [209.85.160.180]) (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 9F52932ABC2 for ; Fri, 7 Nov 2025 22:50:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762555829; cv=none; b=dHkcxhe9fBh/4XrD5MqIRXlOrQWlnanNUaLQs2yn6zbTbxZquOqDtmDMe7myEYe/d3I5KX9xdWUzaVbHw6pTgXKD1Te2cYl5V3Nlw1A3Cw9XRGwz2UJy8rNC8wwE1v4BndpwYF+HYr9JLeVREMGL+1mV1ismm8dHAsbzEDy3T2I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762555829; c=relaxed/simple; bh=tSh2k/90dL3dI0zpcxARGhUF4rlq7O4vW4BNP7CcNwc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=biBvxQ5CXITXKLFV5bMAUqEEAsbU+LBjsMsdDCeyRyYmqf0F9Ovl7rGVaQBYk+d1RtpogRZBM8HOJtUeOeYvYBdMFyt0SXMOr4YJhBdh3aTMjAsrKBfKTtwK4KvPrsXDIy8pG/CozmbysYacDIFLRgOflPw0yoeUaW+ebUUwbDU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gourry.net; spf=pass smtp.mailfrom=gourry.net; dkim=pass (2048-bit key) header.d=gourry.net header.i=@gourry.net header.b=aw/wI5v/; arc=none smtp.client-ip=209.85.160.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gourry.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gourry.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gourry.net header.i=@gourry.net header.b="aw/wI5v/" Received: by mail-qt1-f180.google.com with SMTP id d75a77b69052e-4eda26a04bfso6112401cf.2 for ; Fri, 07 Nov 2025 14:50:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gourry.net; s=google; t=1762555825; x=1763160625; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CwxO6b4UaIu9W6F2d/g8AaHHPWCBsuMNbHYfAmKzKTo=; b=aw/wI5v/V2pViajSJfvh9FZwnNq2bke5v3pCCvw4+1MFAWWlbyy5dMJb9BbAT5WREB XYy3pSNb9cIqn6dMHKZpZDYGT983Lkj3YKmUmOYAy61x+0YpNv+EdW6/jT83NPy1jOv/ 6QBsQmauykNg57zqXlmL8c1i+FD/4m+stgxYBy17VfDUcJjGdxddNl/U3C6xF1YQTgFF qZi7S3+uuFQEFG1PHk8nzYDMQPAy2CZF0gYAJuAN5uKY9rALhABlNjetKYcpOIGldt0Y UGfUV5eXPrQaPoRIGo+Ir6OTKynN4HkBL7xrKK75VheHIs6VQbu3CQKOsEZTPvaTCRIK jjxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762555825; x=1763160625; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=CwxO6b4UaIu9W6F2d/g8AaHHPWCBsuMNbHYfAmKzKTo=; b=B1HtgGoP8cM0JTtPYukelpl58yABVUM8542qb+qhFpBMjPclmI5r8kFC295PkOOihZ uIWEVoJt4QPso4Az0ywipGkxCA6uWWSGJ76au4jtv9YiVtTnoXis8qF9LbGFNW6wAb/e 7WIq6EvFeirYhIhPp4sJFjCYV5VCV8ygruj2D/mpZRLn7WXknG9ydFdez0RN+wFRPTIo WJSysiuD3eF7RwhwVibZfietCMQk6auN0TalVY6KRr92t+D/aRKoSENd/BbyvTZc9Z7W h7w84fhj2HSTmlGOgsvnr5tLJZVFRNyaqI9jJt0GlYfP/X2UhxaydBpPcOtYyPc3/jc2 In5Q== X-Forwarded-Encrypted: i=1; AJvYcCUAkYfv1iMHUKoMaXMOaC5giSMuFgcHoq01tSyai6Db8Klaj8ijEG2Tw4WrZ/USaqULFkLP45FDw8DzIls=@vger.kernel.org X-Gm-Message-State: AOJu0Yyf4SSeY8UfwLzBC3NNeRqOlpQUa9+EjnuJZzlJUKmSSolr6MzP hMVO1p0figAkNhwY6+1EIsVYJb4rnQXcaEG2qlSmLWllywapWblx9UtndGeI+CSehG8= X-Gm-Gg: ASbGnculDTcHLa7K+qAym/KgI7qEvotBLXBKaZ+tD07MQjcokF0IuspZgh64EV78uZl JGEoNIojPRaVLM47VfNuJuF/tRi6tpmOuhM5SURI9AQCpsV2L3dQUkNOD0ZNQfK5HrdEQqhpJ/i 0EA1g5D/Ni7F+khJZIAiLTxntuZNGL8QQjvoBPhkajSaG4BN1HigD4pf15mF65G/ez1SdtsjpMj /6s30y/8aqGJL3GmYaDSm/STWblaNeQqj9kfTgOUx1DDAzo6UQUcm0eQoY3ZI1x8MzdoUr1Iz77 R6WSjvDpy1+C2pFq6dmndKez+cLcGvPmNXlJCMTO86+v5HaKm9xFtTeze04XwREOuQY04SAH+3x JIE1t/VgpkTOG4uCXh/pAWqQsq9SgAPM5jVJWPxARYxMOulA0GTlqEkgbZfeNXkYIonSIOdWSS0 K7sBGGtDH8TwMLUbBBHiGQBpfBPBXajX1nF+PNiDcT+zSr3pN4Q2d/qEWIIWRp1aOrKMjXv5KE/ Go= X-Google-Smtp-Source: AGHT+IGGUkY/hMvQZUDcDXSyhiDaml+qPtZeSmCY7fYoXMiela3sPEpJdPQ5lN6VWEde9PlUke632Q== X-Received: by 2002:a05:622a:1ba9:b0:4ed:43fe:f51e with SMTP id d75a77b69052e-4eda4f8ffb3mr10117651cf.39.1762555824542; Fri, 07 Nov 2025 14:50:24 -0800 (PST) Received: from gourry-fedora-PF4VCD3F.lan (pool-96-255-20-138.washdc.ftas.verizon.net. [96.255.20.138]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-4eda57ad8e6sm3293421cf.27.2025.11.07.14.50.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Nov 2025 14:50:24 -0800 (PST) From: Gregory Price To: linux-mm@kvack.org Cc: linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, nvdimm@lists.linux.dev, linux-fsdevel@vger.kernel.org, cgroups@vger.kernel.org, dave@stgolabs.net, jonathan.cameron@huawei.com, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com, ira.weiny@intel.com, dan.j.williams@intel.com, longman@redhat.com, akpm@linux-foundation.org, david@redhat.com, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, mhocko@suse.com, osalvador@suse.de, ziy@nvidia.com, matthew.brost@intel.com, joshua.hahnjy@gmail.com, rakie.kim@sk.com, byungchul@sk.com, gourry@gourry.net, ying.huang@linux.alibaba.com, apopple@nvidia.com, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, vschneid@redhat.com, tj@kernel.org, hannes@cmpxchg.org, mkoutny@suse.com, kees@kernel.org, muchun.song@linux.dev, roman.gushchin@linux.dev, shakeel.butt@linux.dev, rientjes@google.com, jackmanb@google.com, cl@gentwo.org, harry.yoo@oracle.com, axelrasmussen@google.com, yuanchu@google.com, weixugc@google.com, zhengqi.arch@bytedance.com, yosry.ahmed@linux.dev, nphamcs@gmail.com, chengming.zhou@linux.dev, fabio.m.de.francesco@linux.intel.com, rrichter@amd.com, ming.li@zohomail.com, usamaarif642@gmail.com, brauner@kernel.org, oleg@redhat.com, namcao@linutronix.de, escape@linux.alibaba.com, dongjoo.seo1@samsung.com Subject: [RFC PATCH 7/9] drivers/dax: add protected memory bit to dev_dax Date: Fri, 7 Nov 2025 17:49:52 -0500 Message-ID: <20251107224956.477056-8-gourry@gourry.net> X-Mailer: git-send-email 2.51.1 In-Reply-To: <20251107224956.477056-1-gourry@gourry.net> References: <20251107224956.477056-1-gourry@gourry.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This bit is used by dax/kmem to determine whether to set the MHP_PROTECTED_MEMORY flags, which will make whether hotplug memory should be restricted to a protected memory NUMA node. Signed-off-by: Gregory Price --- drivers/dax/bus.c | 39 +++++++++++++++++++++++++++++++++++++++ drivers/dax/bus.h | 1 + drivers/dax/dax-private.h | 1 + drivers/dax/kmem.c | 2 ++ 4 files changed, 43 insertions(+) diff --git a/drivers/dax/bus.c b/drivers/dax/bus.c index fde29e0ad68b..4321e80276f0 100644 --- a/drivers/dax/bus.c +++ b/drivers/dax/bus.c @@ -1361,6 +1361,43 @@ static ssize_t memmap_on_memory_store(struct device = *dev, } static DEVICE_ATTR_RW(memmap_on_memory); =20 +static ssize_t protected_memory_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct dev_dax *dev_dax =3D to_dev_dax(dev); + + return sysfs_emit(buf, "%d\n", dev_dax->protected_memory); +} + +static ssize_t protected_memory_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t len) +{ + struct dev_dax *dev_dax =3D to_dev_dax(dev); + bool val; + int rc; + + rc =3D kstrtobool(buf, &val); + if (rc) + return rc; + + rc =3D down_write_killable(&dax_dev_rwsem); + if (rc) + return rc; + + if (dev_dax->protected_memory !=3D val && dev->driver && + to_dax_drv(dev->driver)->type =3D=3D DAXDRV_KMEM_TYPE) { + up_write(&dax_dev_rwsem); + return -EBUSY; + } + + dev_dax->protected_memory =3D val; + up_write(&dax_dev_rwsem); + + return len; +} +static DEVICE_ATTR_RW(protected_memory); + static umode_t dev_dax_visible(struct kobject *kobj, struct attribute *a, = int n) { struct device *dev =3D container_of(kobj, struct device, kobj); @@ -1388,6 +1425,7 @@ static struct attribute *dev_dax_attributes[] =3D { &dev_attr_resource.attr, &dev_attr_numa_node.attr, &dev_attr_memmap_on_memory.attr, + &dev_attr_protected_memory.attr, NULL, }; =20 @@ -1494,6 +1532,7 @@ static struct dev_dax *__devm_create_dev_dax(struct d= ev_dax_data *data) ida_init(&dev_dax->ida); =20 dev_dax->memmap_on_memory =3D data->memmap_on_memory; + dev_dax->protected_memory =3D data->protected_memory; =20 inode =3D dax_inode(dax_dev); dev->devt =3D inode->i_rdev; diff --git a/drivers/dax/bus.h b/drivers/dax/bus.h index cbbf64443098..0a885bf9839f 100644 --- a/drivers/dax/bus.h +++ b/drivers/dax/bus.h @@ -24,6 +24,7 @@ struct dev_dax_data { resource_size_t size; int id; bool memmap_on_memory; + bool protected_memory; }; =20 struct dev_dax *devm_create_dev_dax(struct dev_dax_data *data); diff --git a/drivers/dax/dax-private.h b/drivers/dax/dax-private.h index 0867115aeef2..605b7ed87ffe 100644 --- a/drivers/dax/dax-private.h +++ b/drivers/dax/dax-private.h @@ -89,6 +89,7 @@ struct dev_dax { struct device dev; struct dev_pagemap *pgmap; bool memmap_on_memory; + bool protected_memory; int nr_range; struct dev_dax_range *ranges; }; diff --git a/drivers/dax/kmem.c b/drivers/dax/kmem.c index c036e4d0b610..140c6cb0ac88 100644 --- a/drivers/dax/kmem.c +++ b/drivers/dax/kmem.c @@ -169,6 +169,8 @@ static int dev_dax_kmem_probe(struct dev_dax *dev_dax) mhp_flags =3D MHP_NID_IS_MGID; if (dev_dax->memmap_on_memory) mhp_flags |=3D MHP_MEMMAP_ON_MEMORY; + if (dev_dax->protected_memory) + mhp_flags |=3D MHP_PROTECTED_MEMORY; =20 /* * Ensure that future kexec'd kernels will not treat --=20 2.51.1