From: James Morse <james.morse@arm.com>
To: Reinette Chatre <reinette.chatre@intel.com>,
Catalin Marinas <catalin.marinas@arm.com>
Cc: 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: Tue, 13 May 2025 17:42:45 +0100 [thread overview]
Message-ID: <25dcc566-08db-466a-853c-4c5f3ddad531@arm.com> (raw)
In-Reply-To: <abdd65a7-1f8e-4c3f-8e08-94787a054430@intel.com>
Hi Reinette,
On 09/05/2025 17:28, Reinette Chatre wrote:
> On 5/9/25 9:17 AM, Reinette Chatre wrote:
>> On 5/9/25 4:21 AM, Catalin Marinas wrote:
>>> 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.
I had missed this. The logic makes sense - I'll spin this as a v11.
>> 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.
Aha - I'd not spotted that one before.
> 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.
Thanks,
James
next prev parent reply other threads:[~2025-05-13 16:42 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
2025-05-13 16:42 ` James Morse [this message]
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=25dcc566-08db-466a-853c-4c5f3ddad531@arm.com \
--to=james.morse@arm.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=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=reinette.chatre@intel.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