* [PATCH] platform/x86: TPMI: clean up CPU mappings on offline
@ 2026-11-04 3:27 lirongqing
2026-11-04 15:30 ` Srinivas Pandruvada
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: lirongqing @ 2026-11-04 3:27 UTC (permalink / raw)
To: Hans de Goede, Ilpo Järvinen, Kristen Carlson Accardi,
Srinivas Pandruvada, Li RongQing, Tero Kristo, Andy Shevchenko,
platform-driver-x86
From: Li RongQing <lirongqing@baidu.com>
The TPMI power domain driver adds each online CPU to a hash table and
its power domain mask, but does not remove either entry when the CPU
goes offline. Bringing a CPU back online can therefore insert the same
hlist node again and leave stale CPU mask state.
Register an offline callback that removes the hash entry and clears the
CPU from its power domain mask.
Fixes: 17ca2780458c ("platform/x86/intel: TPMI domain id and CPU mapping")
Signed-off-by: Li RongQing <lirongqing@baidu.com>
---
drivers/platform/x86/intel/tpmi_power_domains.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/drivers/platform/x86/intel/tpmi_power_domains.c b/drivers/platform/x86/intel/tpmi_power_domains.c
index d89b989..c3fd1bd 100644
--- a/drivers/platform/x86/intel/tpmi_power_domains.c
+++ b/drivers/platform/x86/intel/tpmi_power_domains.c
@@ -220,6 +220,23 @@ static int tpmi_cpu_online(unsigned int cpu)
return 0;
}
+static int tpmi_cpu_offline(unsigned int cpu)
+{
+ struct tpmi_cpu_info *info = &per_cpu(tpmi_cpu_info, cpu);
+ int index;
+
+ if (hlist_unhashed(&info->hnode) || !tpmi_domain_is_valid(info))
+ return 0;
+
+ index = info->pkg_id * MAX_POWER_DOMAINS + info->punit_domain_id;
+
+ guard(mutex)(&tpmi_lock);
+ cpumask_clear_cpu(cpu, &tpmi_power_domain_mask[index]);
+ hash_del(&info->hnode);
+
+ return 0;
+}
+
static int __init tpmi_init(void)
{
const struct x86_cpu_id *id;
@@ -249,7 +266,7 @@ static int __init tpmi_init(void)
ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN,
"platform/x86/tpmi_power_domains:online",
- tpmi_cpu_online, NULL);
+ tpmi_cpu_online, tpmi_cpu_offline);
if (ret < 0)
goto free_domain_map;
--
2.9.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] platform/x86: TPMI: clean up CPU mappings on offline
2026-11-04 3:27 [PATCH] platform/x86: TPMI: clean up CPU mappings on offline lirongqing
@ 2026-11-04 15:30 ` Srinivas Pandruvada
2026-11-05 3:09 ` 答复: [外部邮件] " Li,Rongqing
2026-11-04 15:39 ` Andy Shevchenko
2026-11-12 23:49 ` srinivas pandruvada
2 siblings, 1 reply; 6+ messages in thread
From: Srinivas Pandruvada @ 2026-11-04 15:30 UTC (permalink / raw)
To: lirongqing, Hans de Goede, Ilpo Järvinen,
Kristen Carlson Accardi, Tero Kristo, Andy Shevchenko,
platform-driver-x86
On Wed, 2026-11-04 at 11:27 +0800, lirongqing wrote:
> From: Li RongQing <lirongqing@baidu.com>
>
> The TPMI power domain driver adds each online CPU to a hash table and
> its power domain mask, but does not remove either entry when the CPU
> goes offline. Bringing a CPU back online can therefore insert the
> same
> hlist node again and leave stale CPU mask state.
>
> Register an offline callback that removes the hash entry and clears
> the
> CPU from its power domain mask.
>
Hi RonQing,
Thanks for the patch.
TPMI feature doesn't depend on CPU online/offline and can update MMIO
while CPU is offline.
Instead of adding a offline callback, can we just do the below if the
cost of search is not high?
diff --git a/drivers/platform/x86/intel/tpmi_power_domains.c
b/drivers/platform/x86/intel/tpmi_power_domains.c
index d89b9894c42a..dadd5fc5719f 100644
--- a/drivers/platform/x86/intel/tpmi_power_domains.c
+++ b/drivers/platform/x86/intel/tpmi_power_domains.c
@@ -201,6 +201,8 @@ static int tpmi_get_logical_id(unsigned int cpu,
struct tpmi_cpu_info *info)
static int tpmi_cpu_online(unsigned int cpu)
{
struct tpmi_cpu_info *info = &per_cpu(tpmi_cpu_info, cpu);
+ struct tpmi_cpu_info *entry;
+ bool found = false;
int ret, index;
/* Don't fail CPU online for some bad mapping of CPUs */
@@ -212,7 +214,14 @@ static int tpmi_cpu_online(unsigned int cpu)
guard(mutex)(&tpmi_lock);
cpumask_set_cpu(cpu, &tpmi_power_domain_mask[index]);
- hash_add(tpmi_cpu_hash, &info->hnode, info->punit_core_id);
+ hash_for_each_possible(tpmi_cpu_hash, entry, hnode, info-
>punit_core_id) {
+ if (entry == info) {
+ found = true;
+ break;
+ }
+ }
+ if (!found)
+ hash_add(tpmi_cpu_hash, &info->hnode, info-
>punit_core_id);
domain_die_map[info->pkg_id * MAX_POWER_DOMAINS + info-
>punit_domain_id] =
topology_die_id(cpu);
Thanks,
Srinivas
> Fixes: 17ca2780458c ("platform/x86/intel: TPMI domain id and CPU
> mapping")
> Signed-off-by: Li RongQing <lirongqing@baidu.com>
> ---
> drivers/platform/x86/intel/tpmi_power_domains.c | 19
> ++++++++++++++++++-
> 1 file changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/platform/x86/intel/tpmi_power_domains.c
> b/drivers/platform/x86/intel/tpmi_power_domains.c
> index d89b989..c3fd1bd 100644
> --- a/drivers/platform/x86/intel/tpmi_power_domains.c
> +++ b/drivers/platform/x86/intel/tpmi_power_domains.c
> @@ -220,6 +220,23 @@ static int tpmi_cpu_online(unsigned int cpu)
> return 0;
> }
>
> +static int tpmi_cpu_offline(unsigned int cpu)
> +{
> + struct tpmi_cpu_info *info = &per_cpu(tpmi_cpu_info, cpu);
> + int index;
> +
> + if (hlist_unhashed(&info->hnode) ||
> !tpmi_domain_is_valid(info))
> + return 0;
> +
> + index = info->pkg_id * MAX_POWER_DOMAINS + info-
> >punit_domain_id;
> +
> + guard(mutex)(&tpmi_lock);
> + cpumask_clear_cpu(cpu, &tpmi_power_domain_mask[index]);
> + hash_del(&info->hnode);
> +
> + return 0;
> +}
> +
> static int __init tpmi_init(void)
> {
> const struct x86_cpu_id *id;
> @@ -249,7 +266,7 @@ static int __init tpmi_init(void)
>
> ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN,
> "platform/x86/tpmi_power_domains:onl
> ine",
> - tpmi_cpu_online, NULL);
> + tpmi_cpu_online, tpmi_cpu_offline);
> if (ret < 0)
> goto free_domain_map;
>
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] platform/x86: TPMI: clean up CPU mappings on offline
2026-11-04 3:27 [PATCH] platform/x86: TPMI: clean up CPU mappings on offline lirongqing
2026-11-04 15:30 ` Srinivas Pandruvada
@ 2026-11-04 15:39 ` Andy Shevchenko
2026-11-12 23:49 ` srinivas pandruvada
2 siblings, 0 replies; 6+ messages in thread
From: Andy Shevchenko @ 2026-11-04 15:39 UTC (permalink / raw)
To: lirongqing
Cc: Hans de Goede, Ilpo Järvinen, Kristen Carlson Accardi,
Srinivas Pandruvada, Tero Kristo, platform-driver-x86
On Wed, Nov 04, 2026 at 11:27:24AM +0800, lirongqing wrote:
>
> The TPMI power domain driver adds each online CPU to a hash table and
> its power domain mask, but does not remove either entry when the CPU
> goes offline. Bringing a CPU back online can therefore insert the same
> hlist node again and leave stale CPU mask state.
>
> Register an offline callback that removes the hash entry and clears the
> CPU from its power domain mask.
...
> +static int tpmi_cpu_offline(unsigned int cpu)
> +{
> + struct tpmi_cpu_info *info = &per_cpu(tpmi_cpu_info, cpu);
> + int index;
> +
> + if (hlist_unhashed(&info->hnode) || !tpmi_domain_is_valid(info))
> + return 0;
> +
> + index = info->pkg_id * MAX_POWER_DOMAINS + info->punit_domain_id;
> +
> + guard(mutex)(&tpmi_lock);
+ Blank line, so we can see at glance the lock usage.
No need to resend just for this, unless Ilpo asks for it.
> + cpumask_clear_cpu(cpu, &tpmi_power_domain_mask[index]);
> + hash_del(&info->hnode);
> +
> + return 0;
> +}
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 6+ messages in thread
* 答复: [外部邮件] Re: [PATCH] platform/x86: TPMI: clean up CPU mappings on offline
2026-11-04 15:30 ` Srinivas Pandruvada
@ 2026-11-05 3:09 ` Li,Rongqing
2026-11-05 16:00 ` srinivas pandruvada
0 siblings, 1 reply; 6+ messages in thread
From: Li,Rongqing @ 2026-11-05 3:09 UTC (permalink / raw)
To: Srinivas Pandruvada, Hans de Goede, Ilpo Järvinen,
Kristen Carlson Accardi, Tero Kristo, Andy Shevchenko,
platform-driver-x86@vger.kernel.org
>
> On Wed, 2026-11-04 at 11:27 +0800, lirongqing wrote:
> > From: Li RongQing <lirongqing@baidu.com>
> >
> > The TPMI power domain driver adds each online CPU to a hash table and
> > its power domain mask, but does not remove either entry when the CPU
> > goes offline. Bringing a CPU back online can therefore insert the same
> > hlist node again and leave stale CPU mask state.
> >
> > Register an offline callback that removes the hash entry and clears
> > the CPU from its power domain mask.
> >
>
> Hi RonQing,
>
> Thanks for the patch.
>
> TPMI feature doesn't depend on CPU online/offline and can update MMIO
> while CPU is offline.
>
However, could you clarify why we need the CPU online callback in this case?
> Instead of adding a offline callback, can we just do the below if the
> cost of search is not high?
>
> diff --git a/drivers/platform/x86/intel/tpmi_power_domains.c
> b/drivers/platform/x86/intel/tpmi_power_domains.c
> index d89b9894c42a..dadd5fc5719f 100644
> --- a/drivers/platform/x86/intel/tpmi_power_domains.c
> +++ b/drivers/platform/x86/intel/tpmi_power_domains.c
> @@ -201,6 +201,8 @@ static int tpmi_get_logical_id(unsigned int cpu,
> struct tpmi_cpu_info *info)
> static int tpmi_cpu_online(unsigned int cpu)
> {
> struct tpmi_cpu_info *info = &per_cpu(tpmi_cpu_info, cpu);
> + struct tpmi_cpu_info *entry;
> + bool found = false;
> int ret, index;
>
> /* Don't fail CPU online for some bad mapping of CPUs */
> @@ -212,7 +214,14 @@ static int tpmi_cpu_online(unsigned int cpu)
>
> guard(mutex)(&tpmi_lock);
> cpumask_set_cpu(cpu, &tpmi_power_domain_mask[index]);
> - hash_add(tpmi_cpu_hash, &info->hnode, info->punit_core_id);
> + hash_for_each_possible(tpmi_cpu_hash, entry, hnode, info-
> >punit_core_id) {
> + if (entry == info) {
> + found = true;
> + break;
> + }
> + }
> + if (!found)
> + hash_add(tpmi_cpu_hash, &info->hnode, info-
> >punit_core_id);
>
Your proposed change prevents duplicate hash entries, but it does not address stale CPU entries in tpmi_power_domain_mask after a CPU goes offline. Could you also fix this issue?
Thanks
[Li,Rongqing]
> domain_die_map[info->pkg_id * MAX_POWER_DOMAINS + info-
> >punit_domain_id] =
> topology_die_id(cpu);
> Thanks,
> Srinivas
>
> > Fixes: 17ca2780458c ("platform/x86/intel: TPMI domain id and CPU
> > mapping")
> > Signed-off-by: Li RongQing <lirongqing@baidu.com>
> > ---
> > drivers/platform/x86/intel/tpmi_power_domains.c | 19
> > ++++++++++++++++++-
> > 1 file changed, 18 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/platform/x86/intel/tpmi_power_domains.c
> > b/drivers/platform/x86/intel/tpmi_power_domains.c
> > index d89b989..c3fd1bd 100644
> > --- a/drivers/platform/x86/intel/tpmi_power_domains.c
> > +++ b/drivers/platform/x86/intel/tpmi_power_domains.c
> > @@ -220,6 +220,23 @@ static int tpmi_cpu_online(unsigned int cpu)
> > return 0;
> > }
> >
> > +static int tpmi_cpu_offline(unsigned int cpu)
> > +{
> > + struct tpmi_cpu_info *info = &per_cpu(tpmi_cpu_info, cpu);
> > + int index;
> > +
> > + if (hlist_unhashed(&info->hnode) ||
> > !tpmi_domain_is_valid(info))
> > + return 0;
> > +
> > + index = info->pkg_id * MAX_POWER_DOMAINS + info-
> > >punit_domain_id;
> > +
> > + guard(mutex)(&tpmi_lock);
> > + cpumask_clear_cpu(cpu, &tpmi_power_domain_mask[index]);
> > + hash_del(&info->hnode);
> > +
> > + return 0;
> > +}
> > +
> > static int __init tpmi_init(void)
> > {
> > const struct x86_cpu_id *id;
> > @@ -249,7 +266,7 @@ static int __init tpmi_init(void)
> >
> > ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN,
> > "platform/x86/tpmi_power_domains:onl
> > ine",
> > - tpmi_cpu_online, NULL);
> > + tpmi_cpu_online, tpmi_cpu_offline);
> > if (ret < 0)
> > goto free_domain_map;
> >
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: 答复: [外部邮件] Re: [PATCH] platform/x86: TPMI: clean up CPU mappings on offline
2026-11-05 3:09 ` 答复: [外部邮件] " Li,Rongqing
@ 2026-11-05 16:00 ` srinivas pandruvada
0 siblings, 0 replies; 6+ messages in thread
From: srinivas pandruvada @ 2026-11-05 16:00 UTC (permalink / raw)
To: Li,Rongqing, Hans de Goede, Ilpo Järvinen,
Kristen Carlson Accardi, Tero Kristo, Andy Shevchenko,
platform-driver-x86@vger.kernel.org
On Thu, 2026-11-05 at 03:09 +0000, Li,Rongqing wrote:
> >
> > On Wed, 2026-11-04 at 11:27 +0800, lirongqing wrote:
> > > From: Li RongQing <lirongqing@baidu.com>
> > >
> > > The TPMI power domain driver adds each online CPU to a hash table
> > > and
> > > its power domain mask, but does not remove either entry when the
> > > CPU
> > > goes offline. Bringing a CPU back online can therefore insert the
> > > same
> > > hlist node again and leave stale CPU mask state.
> > >
> > > Register an offline callback that removes the hash entry and
> > > clears
> > > the CPU from its power domain mask.
> > >
> >
> > Hi RonQing,
> >
> > Thanks for the patch.
> >
> > TPMI feature doesn't depend on CPU online/offline and can update
> > MMIO
> > while CPU is offline.
> >
>
> However, could you clarify why we need the CPU online callback in
> this case?
When online we read the PM logical ID on that CPU and store it.
This PM logical ID doesn't change after offline/online.
Thanks,
Srinivas
>
> > Instead of adding a offline callback, can we just do the below if
> > the
> > cost of search is not high?
> >
> > diff --git a/drivers/platform/x86/intel/tpmi_power_domains.c
> > b/drivers/platform/x86/intel/tpmi_power_domains.c
> > index d89b9894c42a..dadd5fc5719f 100644
> > --- a/drivers/platform/x86/intel/tpmi_power_domains.c
> > +++ b/drivers/platform/x86/intel/tpmi_power_domains.c
> > @@ -201,6 +201,8 @@ static int tpmi_get_logical_id(unsigned int
> > cpu,
> > struct tpmi_cpu_info *info)
> > static int tpmi_cpu_online(unsigned int cpu)
> > {
> > struct tpmi_cpu_info *info = &per_cpu(tpmi_cpu_info, cpu);
> > + struct tpmi_cpu_info *entry;
> > + bool found = false;
> > int ret, index;
> >
> > /* Don't fail CPU online for some bad mapping of CPUs */
> > @@ -212,7 +214,14 @@ static int tpmi_cpu_online(unsigned int cpu)
> >
> > guard(mutex)(&tpmi_lock);
> > cpumask_set_cpu(cpu, &tpmi_power_domain_mask[index]);
> > - hash_add(tpmi_cpu_hash, &info->hnode, info->punit_core_id);
> > + hash_for_each_possible(tpmi_cpu_hash, entry, hnode, info-
> > > punit_core_id) {
> > + if (entry == info) {
> > + found = true;
> > + break;
> > + }
> > + }
> > + if (!found)
> > + hash_add(tpmi_cpu_hash, &info->hnode, info-
> > > punit_core_id);
> >
>
> Your proposed change prevents duplicate hash entries, but it does not
> address stale CPU entries in tpmi_power_domain_mask after a CPU goes
> offline. Could you also fix this issue?
>
> Thanks
>
> [Li,Rongqing]
>
> > domain_die_map[info->pkg_id * MAX_POWER_DOMAINS + info-
> > > punit_domain_id] =
> > topology_die_id(cpu);
> > Thanks,
> > Srinivas
> >
> > > Fixes: 17ca2780458c ("platform/x86/intel: TPMI domain id and CPU
> > > mapping")
> > > Signed-off-by: Li RongQing <lirongqing@baidu.com>
> > > ---
> > > drivers/platform/x86/intel/tpmi_power_domains.c | 19
> > > ++++++++++++++++++-
> > > 1 file changed, 18 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/platform/x86/intel/tpmi_power_domains.c
> > > b/drivers/platform/x86/intel/tpmi_power_domains.c
> > > index d89b989..c3fd1bd 100644
> > > --- a/drivers/platform/x86/intel/tpmi_power_domains.c
> > > +++ b/drivers/platform/x86/intel/tpmi_power_domains.c
> > > @@ -220,6 +220,23 @@ static int tpmi_cpu_online(unsigned int cpu)
> > > return 0;
> > > }
> > >
> > > +static int tpmi_cpu_offline(unsigned int cpu)
> > > +{
> > > + struct tpmi_cpu_info *info = &per_cpu(tpmi_cpu_info,
> > > cpu);
> > > + int index;
> > > +
> > > + if (hlist_unhashed(&info->hnode) ||
> > > !tpmi_domain_is_valid(info))
> > > + return 0;
> > > +
> > > + index = info->pkg_id * MAX_POWER_DOMAINS + info-
> > > > punit_domain_id;
> > > +
> > > + guard(mutex)(&tpmi_lock);
> > > + cpumask_clear_cpu(cpu, &tpmi_power_domain_mask[index]);
> > > + hash_del(&info->hnode);
> > > +
> > > + return 0;
> > > +}
> > > +
> > > static int __init tpmi_init(void)
> > > {
> > > const struct x86_cpu_id *id;
> > > @@ -249,7 +266,7 @@ static int __init tpmi_init(void)
> > >
> > > ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN,
> > > "platform/x86/tpmi_power_domains
> > > :onl
> > > ine",
> > > - tpmi_cpu_online, NULL);
> > > + tpmi_cpu_online,
> > > tpmi_cpu_offline);
> > > if (ret < 0)
> > > goto free_domain_map;
> > >
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] platform/x86: TPMI: clean up CPU mappings on offline
2026-11-04 3:27 [PATCH] platform/x86: TPMI: clean up CPU mappings on offline lirongqing
2026-11-04 15:30 ` Srinivas Pandruvada
2026-11-04 15:39 ` Andy Shevchenko
@ 2026-11-12 23:49 ` srinivas pandruvada
2 siblings, 0 replies; 6+ messages in thread
From: srinivas pandruvada @ 2026-11-12 23:49 UTC (permalink / raw)
To: lirongqing, Hans de Goede, Ilpo Järvinen,
Kristen Carlson Accardi, Tero Kristo, Andy Shevchenko,
platform-driver-x86
On Wed, 2026-11-04 at 11:27 +0800, lirongqing wrote:
> From: Li RongQing <lirongqing@baidu.com>
>
> The TPMI power domain driver adds each online CPU to a hash table and
> its power domain mask, but does not remove either entry when the CPU
> goes offline. Bringing a CPU back online can therefore insert the
> same
> hlist node again and leave stale CPU mask state.
>
> Register an offline callback that removes the hash entry and clears
> the
> CPU from its power domain mask.
>
> Fixes: 17ca2780458c ("platform/x86/intel: TPMI domain id and CPU
> mapping")
> Signed-off-by: Li RongQing <lirongqing@baidu.com>
We have no case currently to get offlined CPU's data. So will add when
we need.
As a convention we capitalize the first letter after "TPMI:" in this
driver, so consider changing that.
Otherwise
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
> ---
> drivers/platform/x86/intel/tpmi_power_domains.c | 19
> ++++++++++++++++++-
> 1 file changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/platform/x86/intel/tpmi_power_domains.c
> b/drivers/platform/x86/intel/tpmi_power_domains.c
> index d89b989..c3fd1bd 100644
> --- a/drivers/platform/x86/intel/tpmi_power_domains.c
> +++ b/drivers/platform/x86/intel/tpmi_power_domains.c
> @@ -220,6 +220,23 @@ static int tpmi_cpu_online(unsigned int cpu)
> return 0;
> }
>
> +static int tpmi_cpu_offline(unsigned int cpu)
> +{
> + struct tpmi_cpu_info *info = &per_cpu(tpmi_cpu_info, cpu);
> + int index;
> +
> + if (hlist_unhashed(&info->hnode) ||
> !tpmi_domain_is_valid(info))
> + return 0;
> +
> + index = info->pkg_id * MAX_POWER_DOMAINS + info-
> >punit_domain_id;
> +
> + guard(mutex)(&tpmi_lock);
> + cpumask_clear_cpu(cpu, &tpmi_power_domain_mask[index]);
> + hash_del(&info->hnode);
> +
> + return 0;
> +}
> +
> static int __init tpmi_init(void)
> {
> const struct x86_cpu_id *id;
> @@ -249,7 +266,7 @@ static int __init tpmi_init(void)
>
> ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN,
> "platform/x86/tpmi_power_domains:onl
> ine",
> - tpmi_cpu_online, NULL);
> + tpmi_cpu_online, tpmi_cpu_offline);
> if (ret < 0)
> goto free_domain_map;
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-11-12 23:49 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-04 3:27 [PATCH] platform/x86: TPMI: clean up CPU mappings on offline lirongqing
2026-11-04 15:30 ` Srinivas Pandruvada
2026-11-05 3:09 ` 答复: [外部邮件] " Li,Rongqing
2026-11-05 16:00 ` srinivas pandruvada
2026-11-04 15:39 ` Andy Shevchenko
2026-11-12 23:49 ` srinivas pandruvada
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.