All of lore.kernel.org
 help / color / mirror / Atom feed
From: Reinette Chatre <reinette.chatre@intel.com>
To: Tony Luck <tony.luck@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>,
	Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>,
	Peter Newman <peternewman@google.com>,
	James Morse <james.morse@arm.com>,
	Babu Moger <babu.moger@amd.com>,
	"Drew Fustini" <dfustini@baylibre.com>,
	Dave Martin <Dave.Martin@arm.com>, <x86@kernel.org>,
	<linux-kernel@vger.kernel.org>, <patches@lists.linux.dev>
Subject: Re: [PATCH v19 00/20] Add support for Sub-NUMA cluster (SNC) systems
Date: Thu, 30 May 2024 10:55:48 -0700	[thread overview]
Message-ID: <2a761266-e934-4740-bf15-95dbfe4e4d5d@intel.com> (raw)
In-Reply-To: <ZlirIUbLw8fLHe0j@agluck-desk3.sc.intel.com>

Hi Tony,

On 5/30/24 9:36 AM, Tony Luck wrote:
> On Wed, May 29, 2024 at 07:46:27PM -0700, Reinette Chatre wrote:
>> Hi Tony,
>>
>> On 5/29/24 1:20 PM, Tony Luck wrote:
>>> On Tue, May 28, 2024 at 03:55:29PM -0700, Reinette Chatre wrote:
>>>> Hi Tony,
>>>>> 13:	Wordsmith commit into imperative.
>>>>> 	I looked at using kobject_has_children() to check for empty
>>>>> 	directory, but it needs a "struct kobject *" and all I have
>>>>> 	is "struct kernfs_node *". I'm now checking how many CPUs
>>>>
>>>> Consider how kobject_has_children() uses that struct kobject *.
>>>> Specifically:
>>>> 	return kobj->sd && kobj->sd->dir.subdirs
>>>>
>>>> It operates on kobj->sd, which is exactly what you have: struct kernfs_node.
>>>
>>> So right. My turn to grumble about other peoples choice of names. If
>>> that field was named "kn" instead of "sd" I would have spotted this
>>> too.
>>>
>>>>> 	remain in ci->shared_cpu_map to detect whether this is the
>>>>> 	last SNC node.
>>>>
>>>> hmmm, ok, will take a look ... but please finalize discussion of a patch series
>>>> before submitting a new series that rejects feedback without discussion and
>>>> does something completely different in new version.
>>>
>>> Reinette,
>>>
>>> So here's what rmdir_mondata_subdir_allrdtgrp() looks like using the
>>> subdirs check. It might need an update/better header comment.
>>>
>>> -Tony
>>>
>>> ---
>>>
>>> /*
>>>    * Remove all subdirectories of mon_data of ctrl_mon groups
>>>    * and monitor groups with given domain id.
>>
>> (note comment still considers that domain id is parameter)
> 
> Will fix.
> 
>>>    */
>>> static void rmdir_mondata_subdir_allrdtgrp(struct rdt_resource *r,
>>> 					   struct rdt_mon_domain *d)
>>> {
>>> 	struct rdtgroup *prgrp, *crgrp;
>>> 	struct kernfs_node *kn;
>>> 	char subname[32];
>>
>> I wonder if static checkers will know that this cannot be used
>> uninitialized?
> 
> I wondered that too. There are no complaints from gcc. How do people
> deal with false positives from static checkers? Simplest would be to
> provide an initializer:
> 
> 	char subname[32] = "";
> 
> While that might shut up the static check, it would be more confusing
> for human readers.

or	char subname[32] = {};

Please elaborate how this will be confusing to human readers? A comment
may help to address that.

I took the time to run a static checker on this series and it did
not complain about this issue. I did not run it with this fixup though, with
just original submission that seem to have similar pattern. I do still think
it would be good to initialize the arrays.

btw ... the static checker I ran did have four other complaints, three about
uninitialized data and one about divide by zero. Most problems appear to be
in mbm_update() that does not initialize rr.sumdomains nor rr.ci before
calling __mon_event_count().

Please use available tools to check code before posting.

> 
>>> 	char name[32];
>>>
>>> 	sprintf(name, "mon_%s_%02d", r->name, d->ci->id);
>>> 	if (r->mon_scope != RESCTRL_L3_CACHE) {
>>> 		/*
>>> 		 * SNC mode: Unless the last domain is being removed must
>>> 		 * just remove the SNC subdomain.
>>> 		 */
>>> 		sprintf(subname, "mon_sub_%s_%02d", r->name, d->hdr.id);
>>> 	}
>>>
>>> 	list_for_each_entry(prgrp, &rdt_all_groups, rdtgroup_list) {
>>> 		kn = kernfs_find_and_get(prgrp->mon.mon_data_kn, name);
>>> 		if (!kn)
>>> 			continue;
>>>
>>> 		if (kn->dir.subdirs <= 1)
>>> 			kernfs_remove(kn);
>>> 		else
>>> 			kernfs_remove_by_name(kn, subname);
>>>
>>> 		list_for_each_entry(crgrp, &prgrp->mon.crdtgrp_list, mon.crdtgrp_list) {
>>> 			kn = kernfs_find_and_get(crgrp->mon.mon_data_kn, name);
>>> 			if (!kn)
>>> 				continue;
>>>
>>> 			if (kn->dir.subdirs <= 1)
>>> 				kernfs_remove(kn);
>>> 			else
>>> 				kernfs_remove_by_name(kn, subname);
>>> 		}
>>> 	}
>>> }
>>
>> This solution looks more intuitive to me. I do think that it may be
>> missing some kernfs_put()'s?
> 
> There aren't any kernfs_put()'s in the existing code.

Why should it? Existing code does not have the kernfs_put()'s because
the extra reference is only obtained in this new code.

Reinette

  reply	other threads:[~2024-05-30 17:55 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-28 22:19 [PATCH v19 00/20] Add support for Sub-NUMA cluster (SNC) systems Tony Luck
2024-05-28 22:19 ` [PATCH v19 01/20] x86/resctrl: Prepare for new domain scope Tony Luck
2024-05-28 22:19 ` [PATCH v19 02/20] x86/resctrl: Prepare to split rdt_domain structure Tony Luck
2024-05-28 22:19 ` [PATCH v19 03/20] x86/resctrl: Prepare for different scope for control/monitor operations Tony Luck
2024-05-28 22:19 ` [PATCH v19 04/20] x86/resctrl: Split the rdt_domain and rdt_hw_domain structures Tony Luck
2024-05-28 22:19 ` [PATCH v19 05/20] x86/resctrl: Add node-scope to the options for feature scope Tony Luck
2024-05-28 22:19 ` [PATCH v19 06/20] x86/resctrl: Introduce snc_nodes_per_l3_cache Tony Luck
2024-05-30 20:20   ` Reinette Chatre
2024-05-31 18:17     ` Tony Luck
2024-06-07 16:49       ` Reinette Chatre
2024-05-28 22:19 ` [PATCH v19 07/20] x86/resctrl: Block use of mba_MBps mount option on Sub-NUMA Cluster (SNC) systems Tony Luck
2024-05-28 22:19 ` [PATCH v19 08/20] x86/resctrl: Prepare for new Sub-NUMA Cluster (SNC) monitor files Tony Luck
2024-05-30 20:21   ` Reinette Chatre
2024-05-31  0:26     ` Tony Luck
2024-05-31 16:01       ` Reinette Chatre
2024-05-28 22:19 ` [PATCH v19 09/20] x86/resctrl: Add new fields to struct rmid_read for summation of domains Tony Luck
2024-05-30 20:21   ` Reinette Chatre
2024-05-28 22:19 ` [PATCH v19 10/20] x86/resctrl: Refactor mkdir_mondata_subdir() with a helper function Tony Luck
2024-05-28 22:19 ` [PATCH v19 11/20] x86/resctrl: Allocate a new bit in union mon_data_bits Tony Luck
2024-05-30 20:21   ` Reinette Chatre
2024-05-28 22:19 ` [PATCH v19 12/20] x86/resctrl: Create Sub-NUMA Cluster (SNC) monitor files Tony Luck
2024-05-30 20:22   ` Reinette Chatre
2024-05-28 22:19 ` [PATCH v19 13/20] x86/resctrl: Handle removing directories in Sub-NUMA Cluster (SNC) mode Tony Luck
2024-05-28 22:19 ` [PATCH v19 14/20] x86/resctrl: Fill out rmid_read structure for smp_call*() to read a counter Tony Luck
2024-05-30 20:23   ` Reinette Chatre
2024-05-28 22:20 ` [PATCH v19 15/20] x86/resctrl: Pass two extra arguments to resctrl_arch_rmid_read() Tony Luck
2024-05-30 20:24   ` Reinette Chatre
2024-05-28 22:20 ` [PATCH v19 16/20] x86/resctrl: Make resctrl_arch_rmid_read() handle sum over domains Tony Luck
2024-05-30 20:24   ` Reinette Chatre
2024-06-03 23:15     ` Tony Luck
2024-06-07 16:49       ` Reinette Chatre
2024-06-07 19:51         ` Luck, Tony
2024-06-07 21:08           ` Reinette Chatre
2024-05-28 22:20 ` [PATCH v19 17/20] x86/resctrl: Update CPU sanity checks when reading RMID counters Tony Luck
2024-05-28 22:20 ` [PATCH v19 18/20] x86/resctrl: Enable RMID shared RMID mode on Sub-NUMA Cluster (SNC) systems Tony Luck
2024-05-30 20:27   ` Reinette Chatre
2024-05-28 22:20 ` [PATCH v19 19/20] x86/resctrl: Sub-NUMA Cluster (SNC) detection and enabling Tony Luck
2024-05-30 20:28   ` Reinette Chatre
2024-05-28 22:20 ` [PATCH v19 20/20] x86/resctrl: Update documentation with Sub-NUMA cluster changes Tony Luck
2024-05-30 20:29   ` Reinette Chatre
2024-05-28 22:55 ` [PATCH v19 00/20] Add support for Sub-NUMA cluster (SNC) systems Reinette Chatre
2024-05-29 20:20   ` Tony Luck
2024-05-30  2:46     ` Reinette Chatre
2024-05-30 16:36       ` Tony Luck
2024-05-30 17:55         ` Reinette Chatre [this message]
2024-05-30 22:49           ` Luck, Tony
2024-05-30 23:10             ` Reinette Chatre

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2a761266-e934-4740-bf15-95dbfe4e4d5d@intel.com \
    --to=reinette.chatre@intel.com \
    --cc=Dave.Martin@arm.com \
    --cc=babu.moger@amd.com \
    --cc=dfustini@baylibre.com \
    --cc=fenghua.yu@intel.com \
    --cc=james.morse@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maciej.wieczor-retman@intel.com \
    --cc=patches@lists.linux.dev \
    --cc=peternewman@google.com \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.