From: Reinette Chatre <reinette.chatre@intel.com>
To: Catalin Marinas <catalin.marinas@arm.com>
Cc: James Morse <james.morse@arm.com>, <x86@kernel.org>,
<linux-kernel@vger.kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
"Ingo Molnar" <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
H Peter Anvin <hpa@zytor.com>, Babu Moger <Babu.Moger@amd.com>,
<shameerali.kolothum.thodi@huawei.com>,
D Scott Phillips OS <scott@os.amperecomputing.com>,
<carl@os.amperecomputing.com>, <lcherian@marvell.com>,
<bobo.shaobowang@huawei.com>, <tan.shaopeng@fujitsu.com>,
<baolin.wang@linux.alibaba.com>,
Jamie Iles <quic_jiles@quicinc.com>,
Xin Hao <xhao@linux.alibaba.com>, <peternewman@google.com>,
<dfustini@baylibre.com>, <amitsinght@marvell.com>,
David Hildenbrand <david@redhat.com>,
Rex Nie <rex.nie@jaguarmicro.com>,
"Dave Martin" <dave.martin@arm.com>, Koba Ko <kobak@nvidia.com>,
Shanker Donthineni <sdonthineni@nvidia.com>,
<fenghuay@nvidia.com>, Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
Subject: Re: [PATCH v10 07/30] x86/resctrl: Check all domains are offline in resctrl_exit()
Date: Fri, 9 May 2025 09:28:59 -0700 [thread overview]
Message-ID: <abdd65a7-1f8e-4c3f-8e08-94787a054430@intel.com> (raw)
In-Reply-To: <524a79fa-5066-44fb-b9ad-7182dd28fb39@intel.com>
Hi Catalin,
On 5/9/25 9:17 AM, Reinette Chatre wrote:
> Hi Catalin,
>
> On 5/9/25 4:21 AM, Catalin Marinas wrote:
>> Hi Reinette,
>>
>> Thanks for the reviews.
>>
>> On Thu, May 08, 2025 at 10:51:23AM -0700, Reinette Chatre wrote:
>>> On 5/8/25 10:18 AM, James Morse wrote:
>>>> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
>>>> index 88197afbbb8a..f617ac97758b 100644
>>>> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
>>>> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
>>>> @@ -4420,8 +4420,32 @@ int __init resctrl_init(void)
>>>> return ret;
>>>> }
>>>>
>>>> +static bool __exit resctrl_online_domains_exist(void)
>>>> +{
>>>> + struct rdt_resource *r;
>>>> +
>>>> + for_each_rdt_resource(r) {
>>>> + if (!list_empty(&r->ctrl_domains) || !list_empty(&r->mon_domains))
>>>> + return true;
>>>> + }
>>>> +
>>>> + return false;
>>>> +}
>>>
>>> This looks the same as before. Did you notice my comment in [1] about this list_empty() usage?
>>
>> James may have missed that comment (and he's off today). Copying your
>> comment here:
>>
>>> A list needs to be initialized for list_empty() to behave as intended. A list within
>>> an uninitialized or "kzalloc()'ed" struct will not be considered empty.
>>> resctrl_arch_get_resource() as used by for_each_rdt_resource() already establishes
>>> that if an architecture does not support a particular resource then it can (should?)
>>> return a "dummy/not-capable" resource. I do not think resctrl should require
>>> anything additionally like initializing the lists of a dummy/not-capable resource
>>> to support things like this loop.
>>
>> I agree the description of the resctrl_arch_get_resource() semantics
>> doesn't specifically mention that the list_heads should be initialised
>> in dummy resources. IIUC, x86 should be safe for now since the
>> rdt_resources_all[] array elements have the ctrl_domains and mon_domains
>> list_heads initialised.
>
> Not all x86 resources support both control and monitoring. For these resources x86
> only initializes the arrays it uses. For example, the L2 resource only supports control
> and thus only the ctrl_domains list is initialized. When the above loop runs on a resource
> like this it will return "true" because it believes there are monitoring domains
> online.
>
> Your conclusion that x86 is safe for now may (reason for use of "may" follows) still
> be valid since resctrl_online_domains_exist() is only called by x86 from its
> resctrl_arch_exit() that is within the "exit.text" section. Here is where I am not
> entirely certain of the impact (hence the earlier use of "may") since from what I can
> tell the linker does not actually discard "exit.text" on x86 because it defines
> RUNTIME_DISCARD_EXIT.
If you are not familiar with the details then I should add for completeness that resctrl
is not currently capable of being compiled as a module.
Reinette
next prev parent reply other threads:[~2025-05-09 16:29 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-08 17:18 [PATCH v10 00/30] x86/resctrl: Move the resctrl filesystem code to /fs/resctrl James Morse
2025-05-08 17:18 ` [PATCH v10 01/30] cpumask: relax cpumask_any_but() James Morse
2025-05-08 17:18 ` [PATCH v10 02/30] find: add find_first_andnot_bit() James Morse
2025-05-08 17:18 ` [PATCH v10 03/30] cpumask: add cpumask_{first,next}_andnot() API James Morse
2025-05-08 17:18 ` [PATCH v10 04/30] x86/resctrl: Optimize cpumask_any_housekeeping() James Morse
2025-05-09 8:39 ` Shaopeng Tan (Fujitsu)
2025-05-09 15:45 ` Yury Norov
2025-05-13 2:42 ` Shaopeng Tan (Fujitsu)
2025-05-08 17:18 ` [PATCH v10 05/30] x86/resctrl: Remove the limit on the number of CLOSID James Morse
2025-05-08 17:18 ` [PATCH v10 06/30] x86/resctrl: Rename resctrl_sched_in() to begin with "resctrl_arch_" James Morse
2025-05-08 17:18 ` [PATCH v10 07/30] x86/resctrl: Check all domains are offline in resctrl_exit() James Morse
2025-05-08 17:51 ` Reinette Chatre
2025-05-09 11:21 ` Catalin Marinas
2025-05-09 16:17 ` Reinette Chatre
2025-05-09 16:28 ` Reinette Chatre [this message]
2025-05-13 16:42 ` James Morse
2025-05-08 17:18 ` [PATCH v10 08/30] x86/resctrl: resctrl_exit() teardown resctrl but leave the mount point James Morse
2025-05-08 22:44 ` Reinette Chatre
2025-05-08 17:18 ` [PATCH v10 09/30] x86/resctrl: Drop __init/__exit on assorted symbols James Morse
2025-05-08 17:18 ` [PATCH v10 10/30] x86/resctrl: Move is_mba_sc() out of core.c James Morse
2025-05-08 17:18 ` [PATCH v10 11/30] x86/resctrl: Add end-marker to the resctrl_event_id enum James Morse
2025-05-08 17:18 ` [PATCH v10 12/30] x86/resctrl: Expand the width of domid by replacing mon_data_bits James Morse
2025-05-08 22:44 ` Reinette Chatre
2025-05-08 17:18 ` [PATCH v10 13/30] x86/resctrl: Split trace.h James Morse
2025-05-08 17:18 ` [PATCH v10 14/30] x86/resctrl: Add 'resctrl' to the title of the resctrl documentation James Morse
2025-05-08 17:18 ` [PATCH v10 15/30] fs/resctrl: Add boiler plate for external resctrl code James Morse
2025-05-08 17:18 ` [PATCH v10 16/30] x86/resctrl: Move the filesystem bits to headers visible to fs/resctrl James Morse
2025-05-08 17:18 ` [PATCH v10 17/30] x86/resctrl: Move enum resctrl_event_id to resctrl.h James Morse
2025-05-08 17:18 ` [PATCH v10 18/30] x86/resctrl: Fix types in resctrl_arch_mon_ctx_{alloc,free}() stubs James Morse
2025-05-08 22:45 ` Reinette Chatre
2025-05-13 16:45 ` James Morse
2025-05-08 17:18 ` [PATCH v10 19/30] x86/resctrl: Move pseudo lock prototypes to include/linux/resctrl.h James Morse
2025-05-08 17:18 ` [PATCH v10 20/30] x86/resctrl: Squelch whitespace anomalies in resctrl core code James Morse
2025-05-08 17:18 ` [PATCH v10 21/30] x86/resctrl: Prefer alloc(sizeof(*foo)) idiom in rdt_init_fs_context() James Morse
2025-05-08 17:18 ` [PATCH v10 22/30] x86/resctrl: Relax some asm #includes James Morse
2025-05-08 17:18 ` [PATCH v10 23/30] x86/resctrl: Always initialise rid field in rdt_resources_all[] James Morse
2025-05-08 17:18 ` [PATCH v10 24/30] x86/resctrl: Remove a newline to avoid confusing the code move script James Morse
2025-05-08 17:18 ` [PATCH v10 25/30] x86,fs/resctrl: Move the resctrl filesystem code to live in /fs/resctrl James Morse
2025-05-08 18:18 ` Yury Norov
2025-05-08 18:22 ` Reinette Chatre
2025-05-08 17:18 ` [PATCH v10 26/30] x86,fs/resctrl: Remove duplicated trace header files James Morse
2025-05-08 17:18 ` [PATCH v10 27/30] fs/resctrl: Remove unnecessary includes James Morse
2025-05-08 17:18 ` [PATCH v10 28/30] fs/resctrl: Change internal.h's header guard macros James Morse
2025-05-08 17:18 ` [PATCH v10 29/30] x86,fs/resctrl: Move resctrl.rst to live under Documentation/filesystems James Morse
2025-05-08 22:45 ` Reinette Chatre
2025-05-08 17:18 ` [PATCH v10 30/30] MAINTAINERS: Add reviewers for fs/resctrl James Morse
2025-05-09 11:46 ` [PATCH v10 00/30] x86/resctrl: Move the resctrl filesystem code to /fs/resctrl Shaopeng Tan (Fujitsu)
2025-05-13 16:50 ` James Morse
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=abdd65a7-1f8e-4c3f-8e08-94787a054430@intel.com \
--to=reinette.chatre@intel.com \
--cc=Babu.Moger@amd.com \
--cc=amitsinght@marvell.com \
--cc=baolin.wang@linux.alibaba.com \
--cc=bobo.shaobowang@huawei.com \
--cc=bp@alien8.de \
--cc=carl@os.amperecomputing.com \
--cc=catalin.marinas@arm.com \
--cc=dave.martin@arm.com \
--cc=david@redhat.com \
--cc=dfustini@baylibre.com \
--cc=fenghuay@nvidia.com \
--cc=hpa@zytor.com \
--cc=james.morse@arm.com \
--cc=kobak@nvidia.com \
--cc=lcherian@marvell.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peternewman@google.com \
--cc=quic_jiles@quicinc.com \
--cc=rex.nie@jaguarmicro.com \
--cc=scott@os.amperecomputing.com \
--cc=sdonthineni@nvidia.com \
--cc=shameerali.kolothum.thodi@huawei.com \
--cc=tan.shaopeng@fujitsu.com \
--cc=tan.shaopeng@jp.fujitsu.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
--cc=xhao@linux.alibaba.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox