Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp305220imu; Mon, 26 Nov 2018 11:08:30 -0800 (PST) X-Google-Smtp-Source: AFSGD/Ws2E6wLd/zTeZZqFdi7A4ZoqLPZx1sLiaCNRrY3XC5I9ufp8Un/D/yDz81Y4J26+ogYZ59 X-Received: by 2002:a17:902:3064:: with SMTP id u91mr28546828plb.325.1543259310291; Mon, 26 Nov 2018 11:08:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543259310; cv=none; d=google.com; s=arc-20160816; b=x9J/dRd5ENuwikLFEG9Yb3ZU5HSCrZhXlSwgsn+GZvSK4pXBY9uj/tetliGskqaQgs LiNgLtlxiDtnMrS1dH1NbAgSg/YRxQpi8wcEjtSwfnQBgX/q1K1Bn51AN/gv9litPu3i YNLvbn7rbbFtC7SK02Fi058VWwFCo0SGuS4GTuD/vAUg6K8r2TnyJX41b/0AV4Bso3vT wnro1RGb/DZ2M2KG3ctDr++okd57j9yIjjxG+smsQQfKn8yrvRnMP2KkHHs7YWiR1P2F JtAFHv+ATEH0cKx/MNuiMsy/Y+mow9faNvU32jg/9uggp/3eZXi26t+v9cHCD5QILfks 75BA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=Bhog+ovYvy7Re6I86ES2ee52sDyUtb8B7k8UlMZLkYA=; b=LqVsSoVxm6ohZW6x0QpetrcFk5/7vcBXbYu2ubUwAKj8WSwIe+kQmDuQomOeH3Wctl f2bBCQPNThAyC+YKwkfVzW0WR/0t9ygBS0PIy6rIWkHcUgEYtrQboOPPJtaPPz/+DYrf LWjROqrtotXdTM/lSmRJM4oyw+e8sBtage+ltRmc1cwdDEZm9peglr/cRtH910bq2q4F 7GW9qdqPkOIMgB8g+2q9EzM920s+reJ2/2R9IMn4oJYmPyED8H1urYJFPU8B5aLS+GC0 EMEBBFE53kKORm/YTFWm0jAPOYxVjrwxWfVtkUU+7YSlYWJo20Nf4QKYNIzmKCaBs3Jw 7ZNA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=bXmM1InW; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j20si1048648pgh.224.2018.11.26.11.07.59; Mon, 26 Nov 2018 11:08:30 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=bXmM1InW; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726705AbeK0GBZ (ORCPT + 99 others); Tue, 27 Nov 2018 01:01:25 -0500 Received: from mail.kernel.org ([198.145.29.99]:41876 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726140AbeK0GBY (ORCPT ); Tue, 27 Nov 2018 01:01:24 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 3206620817; Mon, 26 Nov 2018 19:06:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1543259181; bh=qH0JaqFtkxT2kr77y51HUxkswCWJWXAo8ONLKiXE7uE=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=bXmM1InWtSwpL1rgyeJcPGPoc02NTEDv2wvfM2zOOy2Xobx8lv5PAMpTvWkifkrP4 A4AaAdhhuZomrb36t565beXU+oMkVxKDgqw7En5F3mVwdJtecxeHld6OF//jy58OyM tAjpkdSjlnzVrwPXawRGkVATfLCi5Q9Z9u43sOUM= Date: Mon, 26 Nov 2018 20:06:19 +0100 From: Greg Kroah-Hartman To: Keith Busch Cc: linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-mm@kvack.org, Rafael Wysocki , Dave Hansen , Dan Williams Subject: Re: [PATCH 4/7] node: Add memory caching attributes Message-ID: <20181126190619.GA32595@kroah.com> References: <20181114224921.12123-2-keith.busch@intel.com> <20181114224921.12123-5-keith.busch@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20181114224921.12123-5-keith.busch@intel.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Nov 14, 2018 at 03:49:17PM -0700, Keith Busch wrote: > System memory may have side caches to help improve access speed. While > the system provided cache is transparent to the software accessing > these memory ranges, applications can optimize their own access based > on cache attributes. > > In preparation for such systems, provide a new API for the kernel to > register these memory side caches under the memory node that provides it. > > The kernel's sysfs representation is modeled from the cpu cacheinfo > attributes, as seen from /sys/devices/system/cpu/cpuX/cache/. Unlike CPU > cacheinfo, though, a higher node's memory cache level is nearer to the > CPU, while lower levels are closer to the backing memory. Also unlike > CPU cache, the system handles flushing any dirty cached memory to the > last level the memory on a power failure if the range is persistent. > > The exported attributes are the cache size, the line size, associativity, > and write back policy. > > Signed-off-by: Keith Busch > --- > drivers/base/node.c | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++ > include/linux/node.h | 23 ++++++++++ > 2 files changed, 140 insertions(+) > > diff --git a/drivers/base/node.c b/drivers/base/node.c > index 232535761998..bb94f1d18115 100644 > --- a/drivers/base/node.c > +++ b/drivers/base/node.c > @@ -60,6 +60,12 @@ static DEVICE_ATTR(cpumap, S_IRUGO, node_read_cpumask, NULL); > static DEVICE_ATTR(cpulist, S_IRUGO, node_read_cpulist, NULL); > > #ifdef CONFIG_HMEM > +struct node_cache_obj { > + struct kobject kobj; > + struct list_head node; > + struct node_cache_attrs cache_attrs; > +}; I know you all are off in the weeds designing some new crazy api for this instead of this current proposal (sorry, I lost the thread, I'll wait for the patches before commenting on it), but I do want to say one thing here. NEVER use a raw kobject as a child for a 'struct device' unless you REALLY REALLY REALLY REALLY know what you are doing and have a VERY good reason to do so. Just use a 'struct device', otherwise you end up having to reinvent all of the core logic that struct device provides you, like attribute callbacks (which you had to create), and other good stuff like telling userspace that a device has shown up so it knows to look at it. That last one is key, a kobject is suddenly a "black hole" in sysfs as far as userspace knows because it does not see them for the most part (unless you are mucking around in the filesystem on your own, and really, don't do that, use a library like the rest of the world unless you really like reinventing everything, which, from your patchset it feels like...) Anyway, use 'struct device'. That's all. greg k-h