* [vireshk-pm:opp/linux-next 4/9] drivers/opp/core.c:1076: undefined reference to `icc_put'
@ 2020-05-13 16:43 kbuild test robot
2020-05-13 17:58 ` Matthias Kaehlcke
0 siblings, 1 reply; 6+ messages in thread
From: kbuild test robot @ 2020-05-13 16:43 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 2435 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git opp/linux-next
head: b9fd171ae7781c5eb2ecc5f3a59cb41b33c05be0
commit: 6b6c64a05ad880d425db18c52b7ff79d4be148a6 [4/9] OPP: Add support for parsing interconnect bandwidth
config: x86_64-randconfig-a002-20200513 (attached as .config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce:
git checkout 6b6c64a05ad880d425db18c52b7ff79d4be148a6
# save the attached .config to linux build tree
make ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
ld: drivers/opp/core.o: in function `_opp_table_kref_release':
>> drivers/opp/core.c:1076: undefined reference to `icc_put'
ld: drivers/opp/of.o: in function `dev_pm_opp_of_find_icc_paths':
>> drivers/opp/of.c:364: undefined reference to `of_icc_get_by_index'
>> ld: drivers/opp/of.c:383: undefined reference to `icc_put'
vim +1076 drivers/opp/core.c
1061
1062 static void _opp_table_kref_release(struct kref *kref)
1063 {
1064 struct opp_table *opp_table = container_of(kref, struct opp_table, kref);
1065 struct opp_device *opp_dev, *temp;
1066 int i;
1067
1068 _of_clear_opp_table(opp_table);
1069
1070 /* Release clk */
1071 if (!IS_ERR(opp_table->clk))
1072 clk_put(opp_table->clk);
1073
1074 if (opp_table->paths) {
1075 for (i = 0; i < opp_table->path_count; i++)
> 1076 icc_put(opp_table->paths[i]);
1077 kfree(opp_table->paths);
1078 }
1079
1080 WARN_ON(!list_empty(&opp_table->opp_list));
1081
1082 list_for_each_entry_safe(opp_dev, temp, &opp_table->dev_list, node) {
1083 /*
1084 * The OPP table is getting removed, drop the performance state
1085 * constraints.
1086 */
1087 if (opp_table->genpd_performance_state)
1088 dev_pm_genpd_set_performance_state((struct device *)(opp_dev->dev), 0);
1089
1090 _remove_opp_dev(opp_dev, opp_table);
1091 }
1092
1093 mutex_destroy(&opp_table->genpd_virt_dev_lock);
1094 mutex_destroy(&opp_table->lock);
1095 list_del(&opp_table->node);
1096 kfree(opp_table);
1097
1098 mutex_unlock(&opp_table_lock);
1099 }
1100
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 31511 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [vireshk-pm:opp/linux-next 4/9] drivers/opp/core.c:1076: undefined reference to `icc_put'
2020-05-13 16:43 [vireshk-pm:opp/linux-next 4/9] drivers/opp/core.c:1076: undefined reference to `icc_put' kbuild test robot
@ 2020-05-13 17:58 ` Matthias Kaehlcke
2020-05-14 6:24 ` Georgi Djakov
0 siblings, 1 reply; 6+ messages in thread
From: Matthias Kaehlcke @ 2020-05-13 17:58 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 3357 bytes --]
On Thu, May 14, 2020 at 12:43:38AM +0800, kbuild test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git opp/linux-next
> head: b9fd171ae7781c5eb2ecc5f3a59cb41b33c05be0
> commit: 6b6c64a05ad880d425db18c52b7ff79d4be148a6 [4/9] OPP: Add support for parsing interconnect bandwidth
> config: x86_64-randconfig-a002-20200513 (attached as .config)
> compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
> reproduce:
> git checkout 6b6c64a05ad880d425db18c52b7ff79d4be148a6
> # save the attached .config to linux build tree
> make ARCH=x86_64
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kbuild test robot <lkp@intel.com>
>
> All errors (new ones prefixed by >>):
>
> ld: drivers/opp/core.o: in function `_opp_table_kref_release':
> >> drivers/opp/core.c:1076: undefined reference to `icc_put'
> ld: drivers/opp/of.o: in function `dev_pm_opp_of_find_icc_paths':
> >> drivers/opp/of.c:364: undefined reference to `of_icc_get_by_index'
> >> ld: drivers/opp/of.c:383: undefined reference to `icc_put'
the .config has 'CONFIG_INTERCONNECT=m' which supposedly is verboten by
depends on INTERCONNECT || !INTERCONNECT
in drivers/opp/Kconfig
I stumbled across this during the review and I'm still doubtful that
depending on an option actually means that it is builtin.
A couple of drivers use something like
depends on INTERCONNECT != m
However this still doesn't fix the build error. It seems the dependency is
ignored because PM_DEVFREQ enables OPP:
Selected by [y]: │
│ - PM_DEVFREQ [=y]
> vim +1076 drivers/opp/core.c
>
> 1061
> 1062 static void _opp_table_kref_release(struct kref *kref)
> 1063 {
> 1064 struct opp_table *opp_table = container_of(kref, struct opp_table, kref);
> 1065 struct opp_device *opp_dev, *temp;
> 1066 int i;
> 1067
> 1068 _of_clear_opp_table(opp_table);
> 1069
> 1070 /* Release clk */
> 1071 if (!IS_ERR(opp_table->clk))
> 1072 clk_put(opp_table->clk);
> 1073
> 1074 if (opp_table->paths) {
> 1075 for (i = 0; i < opp_table->path_count; i++)
> > 1076 icc_put(opp_table->paths[i]);
> 1077 kfree(opp_table->paths);
> 1078 }
> 1079
> 1080 WARN_ON(!list_empty(&opp_table->opp_list));
> 1081
> 1082 list_for_each_entry_safe(opp_dev, temp, &opp_table->dev_list, node) {
> 1083 /*
> 1084 * The OPP table is getting removed, drop the performance state
> 1085 * constraints.
> 1086 */
> 1087 if (opp_table->genpd_performance_state)
> 1088 dev_pm_genpd_set_performance_state((struct device *)(opp_dev->dev), 0);
> 1089
> 1090 _remove_opp_dev(opp_dev, opp_table);
> 1091 }
> 1092
> 1093 mutex_destroy(&opp_table->genpd_virt_dev_lock);
> 1094 mutex_destroy(&opp_table->lock);
> 1095 list_del(&opp_table->node);
> 1096 kfree(opp_table);
> 1097
> 1098 mutex_unlock(&opp_table_lock);
> 1099 }
> 1100
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [vireshk-pm:opp/linux-next 4/9] drivers/opp/core.c:1076: undefined reference to `icc_put'
2020-05-13 17:58 ` Matthias Kaehlcke
@ 2020-05-14 6:24 ` Georgi Djakov
2020-05-14 6:38 ` Viresh Kumar
0 siblings, 1 reply; 6+ messages in thread
From: Georgi Djakov @ 2020-05-14 6:24 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 4739 bytes --]
On 5/13/20 20:58, Matthias Kaehlcke wrote:
> On Thu, May 14, 2020 at 12:43:38AM +0800, kbuild test robot wrote:
>> tree: https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git opp/linux-next
>> head: b9fd171ae7781c5eb2ecc5f3a59cb41b33c05be0
>> commit: 6b6c64a05ad880d425db18c52b7ff79d4be148a6 [4/9] OPP: Add support for parsing interconnect bandwidth
>> config: x86_64-randconfig-a002-20200513 (attached as .config)
>> compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
>> reproduce:
>> git checkout 6b6c64a05ad880d425db18c52b7ff79d4be148a6
>> # save the attached .config to linux build tree
>> make ARCH=x86_64
>>
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kbuild test robot <lkp@intel.com>
>>
>> All errors (new ones prefixed by >>):
>>
>> ld: drivers/opp/core.o: in function `_opp_table_kref_release':
>>>> drivers/opp/core.c:1076: undefined reference to `icc_put'
>> ld: drivers/opp/of.o: in function `dev_pm_opp_of_find_icc_paths':
>>>> drivers/opp/of.c:364: undefined reference to `of_icc_get_by_index'
>>>> ld: drivers/opp/of.c:383: undefined reference to `icc_put'
>
> the .config has 'CONFIG_INTERCONNECT=m' which supposedly is verboten by
>
> depends on INTERCONNECT || !INTERCONNECT
>
> in drivers/opp/Kconfig
>
> I stumbled across this during the review and I'm still doubtful that
> depending on an option actually means that it is builtin.
>
> A couple of drivers use something like
>
> depends on INTERCONNECT != m
>
> However this still doesn't fix the build error. It seems the dependency is
> ignored because PM_DEVFREQ enables OPP:
>
> Selected by [y]: │
> │ - PM_DEVFREQ [=y]
One option to resolve this would be to ensure that all kconfig options which
select PM_OPP have also depends on INTERCONNECT || !INTERCONNECT. But as this
would mean patches across several different subsystems, maybe we can use
IS_REACHABLE() when calling the interconnect APIs from OPP and fix it with a
follow-up patch like the one below. I will do some testing and see if it works.
---8<---
diff --git a/drivers/opp/core.c b/drivers/opp/core.c
index 4cf988ff0aff..4bda37374a3d 100644
--- a/drivers/opp/core.c
+++ b/drivers/opp/core.c
@@ -909,7 +909,7 @@ int dev_pm_opp_set_rate(struct device *dev, unsigned long
target_freq)
dev_err(dev, "Failed to set required opps: %d\n", ret);
}
- if (!ret && opp_table->paths) {
+ if (!ret && opp_table->paths && IS_REACHABLE(CONFIG_INTERCONNECT)) {
for (i = 0; i < opp_table->path_count; i++) {
ret = icc_set_bw(opp_table->paths[i],
opp->bandwidth[i].avg,
@@ -1082,7 +1082,7 @@ static void _opp_table_kref_release(struct kref *kref)
if (!IS_ERR(opp_table->clk))
clk_put(opp_table->clk);
- if (opp_table->paths) {
+ if (opp_table->paths && IS_REACHABLE(CONFIG_INTERCONNECT)) {
for (i = 0; i < opp_table->path_count; i++)
icc_put(opp_table->paths[i]);
kfree(opp_table->paths);
diff --git a/drivers/opp/of.c b/drivers/opp/of.c
index b47d0465fe4b..fc94cc59c757 100644
--- a/drivers/opp/of.c
+++ b/drivers/opp/of.c
@@ -332,6 +332,7 @@ static int _of_opp_alloc_required_opps(struct opp_table
*opp_table,
return ret;
}
+#if IS_REACHABLE(CONFIG_INTERCONNECT)
int dev_pm_opp_of_find_icc_paths(struct device *dev,
struct opp_table *opp_table)
{
@@ -400,6 +401,7 @@ int dev_pm_opp_of_find_icc_paths(struct device *dev,
return ret;
}
EXPORT_SYMBOL_GPL(dev_pm_opp_of_find_icc_paths);
+#endif
static bool _opp_is_supported(struct device *dev, struct opp_table *opp_table,
struct device_node *np)
diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h
index d5c4a329321d..489c9b9a7535 100644
--- a/include/linux/pm_opp.h
+++ b/include/linux/pm_opp.h
@@ -372,7 +372,11 @@ int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev,
struct cpumask *cpuma
struct device_node *dev_pm_opp_of_get_opp_desc_node(struct device *dev);
struct device_node *dev_pm_opp_get_of_node(struct dev_pm_opp *opp);
int of_get_required_opp_performance_state(struct device_node *np, int index);
+#if IS_REACHABLE(CONFIG_INTERCONNECT)
int dev_pm_opp_of_find_icc_paths(struct device *dev, struct opp_table *opp_table);
+#else
+static inline int dev_pm_opp_of_find_icc_paths(struct device *dev, struct
opp_table *opp_table) { return 0; }
+#endif
void dev_pm_opp_of_register_em(struct cpumask *cpus);
#else
static inline int dev_pm_opp_of_add_table(struct device *dev)
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [vireshk-pm:opp/linux-next 4/9] drivers/opp/core.c:1076: undefined reference to `icc_put'
2020-05-14 6:24 ` Georgi Djakov
@ 2020-05-14 6:38 ` Viresh Kumar
2020-05-14 6:46 ` Viresh Kumar
0 siblings, 1 reply; 6+ messages in thread
From: Viresh Kumar @ 2020-05-14 6:38 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 2536 bytes --]
On 14-05-20, 09:24, Georgi Djakov wrote:
> On 5/13/20 20:58, Matthias Kaehlcke wrote:
> > On Thu, May 14, 2020 at 12:43:38AM +0800, kbuild test robot wrote:
> >> tree: https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git opp/linux-next
> >> head: b9fd171ae7781c5eb2ecc5f3a59cb41b33c05be0
> >> commit: 6b6c64a05ad880d425db18c52b7ff79d4be148a6 [4/9] OPP: Add support for parsing interconnect bandwidth
> >> config: x86_64-randconfig-a002-20200513 (attached as .config)
> >> compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
> >> reproduce:
> >> git checkout 6b6c64a05ad880d425db18c52b7ff79d4be148a6
> >> # save the attached .config to linux build tree
> >> make ARCH=x86_64
> >>
> >> If you fix the issue, kindly add following tag as appropriate
> >> Reported-by: kbuild test robot <lkp@intel.com>
> >>
> >> All errors (new ones prefixed by >>):
> >>
> >> ld: drivers/opp/core.o: in function `_opp_table_kref_release':
> >>>> drivers/opp/core.c:1076: undefined reference to `icc_put'
> >> ld: drivers/opp/of.o: in function `dev_pm_opp_of_find_icc_paths':
> >>>> drivers/opp/of.c:364: undefined reference to `of_icc_get_by_index'
> >>>> ld: drivers/opp/of.c:383: undefined reference to `icc_put'
> >
> > the .config has 'CONFIG_INTERCONNECT=m' which supposedly is verboten by
> >
> > depends on INTERCONNECT || !INTERCONNECT
I tried to do some testing and looks like this test isn't good enough
anyway. I tried with new definitions to avoid any external factors:
diff --git a/drivers/opp/Kconfig b/drivers/opp/Kconfig
index 230d2b84436c..a41dbc390361 100644
--- a/drivers/opp/Kconfig
+++ b/drivers/opp/Kconfig
@@ -13,3 +12,10 @@ config PM_OPP
representing individual voltage domains and provides SOC
implementations a ready to use framework to manage OPPs.
For more information, read <file:Documentation/power/opp.rst>
+
+config PM_OPP_TEST
+ bool "Test1"
+ depends on PM_OPP_TEST2 || !PM_OPP_TEST2
+
+config PM_OPP_TEST2
+ tristate "Test"
Whatever state I choose for TEST2, TEST1 can always be selected. So
this test is surely bogus. I then replaced the depends on line with:
+ depends on PM_OPP_TEST2 != m
and it works fine then. So this is what you need instead of the
standard way you are trying it.
That said, there are more complex dependencies everywhere it seems and
so things look broken. I have removed your patches from linux-next for
the time being though.
--
viresh
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [vireshk-pm:opp/linux-next 4/9] drivers/opp/core.c:1076: undefined reference to `icc_put'
2020-05-14 6:38 ` Viresh Kumar
@ 2020-05-14 6:46 ` Viresh Kumar
0 siblings, 0 replies; 6+ messages in thread
From: Viresh Kumar @ 2020-05-14 6:46 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 2951 bytes --]
On 14-05-20, 12:08, Viresh Kumar wrote:
> On 14-05-20, 09:24, Georgi Djakov wrote:
> > On 5/13/20 20:58, Matthias Kaehlcke wrote:
> > > On Thu, May 14, 2020 at 12:43:38AM +0800, kbuild test robot wrote:
> > >> tree: https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git opp/linux-next
> > >> head: b9fd171ae7781c5eb2ecc5f3a59cb41b33c05be0
> > >> commit: 6b6c64a05ad880d425db18c52b7ff79d4be148a6 [4/9] OPP: Add support for parsing interconnect bandwidth
> > >> config: x86_64-randconfig-a002-20200513 (attached as .config)
> > >> compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
> > >> reproduce:
> > >> git checkout 6b6c64a05ad880d425db18c52b7ff79d4be148a6
> > >> # save the attached .config to linux build tree
> > >> make ARCH=x86_64
> > >>
> > >> If you fix the issue, kindly add following tag as appropriate
> > >> Reported-by: kbuild test robot <lkp@intel.com>
> > >>
> > >> All errors (new ones prefixed by >>):
> > >>
> > >> ld: drivers/opp/core.o: in function `_opp_table_kref_release':
> > >>>> drivers/opp/core.c:1076: undefined reference to `icc_put'
> > >> ld: drivers/opp/of.o: in function `dev_pm_opp_of_find_icc_paths':
> > >>>> drivers/opp/of.c:364: undefined reference to `of_icc_get_by_index'
> > >>>> ld: drivers/opp/of.c:383: undefined reference to `icc_put'
> > >
> > > the .config has 'CONFIG_INTERCONNECT=m' which supposedly is verboten by
> > >
> > > depends on INTERCONNECT || !INTERCONNECT
>
> I tried to do some testing and looks like this test isn't good enough
> anyway. I tried with new definitions to avoid any external factors:
>
> diff --git a/drivers/opp/Kconfig b/drivers/opp/Kconfig
> index 230d2b84436c..a41dbc390361 100644
> --- a/drivers/opp/Kconfig
> +++ b/drivers/opp/Kconfig
> @@ -13,3 +12,10 @@ config PM_OPP
> representing individual voltage domains and provides SOC
> implementations a ready to use framework to manage OPPs.
> For more information, read <file:Documentation/power/opp.rst>
> +
> +config PM_OPP_TEST
> + bool "Test1"
> + depends on PM_OPP_TEST2 || !PM_OPP_TEST2
> +
> +config PM_OPP_TEST2
> + tristate "Test"
>
> Whatever state I choose for TEST2, TEST1 can always be selected. So
> this test is surely bogus. I then replaced the depends on line with:
>
> + depends on PM_OPP_TEST2 != m
>
> and it works fine then. So this is what you need instead of the
> standard way you are trying it.
>
> That said, there are more complex dependencies everywhere it seems and
> so things look broken. I have removed your patches from linux-next for
> the time being though.
And so I would suggest again that you talk to Greg and make
CONFIG_INTERCONNECT a bool. Making a core framework tristate is a
nightmare as other core frameworks depend on it. Unless that is done,
you won't be able to get around these issues I believe.
--
viresh
^ permalink raw reply [flat|nested] 6+ messages in thread
* [vireshk-pm:opp/linux-next 4/9] drivers/opp/core.c:1076: undefined reference to `icc_put'
@ 2020-05-14 1:16 kbuild test robot
0 siblings, 0 replies; 6+ messages in thread
From: kbuild test robot @ 2020-05-14 1:16 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 2434 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git opp/linux-next
head: c22a734841b15d71e22da885f9262cd9b4dd573b
commit: 12fa389dcf86bab4d8d20ac68ef97a72bfdf2246 [4/9] OPP: Add support for parsing interconnect bandwidth
config: i386-randconfig-r015-20200513 (attached as .config)
compiler: gcc-4.9 (Ubuntu 4.9.3-13ubuntu2) 4.9.3
reproduce:
git checkout 12fa389dcf86bab4d8d20ac68ef97a72bfdf2246
# save the attached .config to linux build tree
make ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
ld: drivers/opp/core.o: in function `_opp_table_kref_release':
>> drivers/opp/core.c:1076: undefined reference to `icc_put'
ld: drivers/opp/of.o: in function `dev_pm_opp_of_find_icc_paths':
>> drivers/opp/of.c:364: undefined reference to `of_icc_get_by_index'
>> ld: drivers/opp/of.c:383: undefined reference to `icc_put'
vim +1076 drivers/opp/core.c
1061
1062 static void _opp_table_kref_release(struct kref *kref)
1063 {
1064 struct opp_table *opp_table = container_of(kref, struct opp_table, kref);
1065 struct opp_device *opp_dev, *temp;
1066 int i;
1067
1068 _of_clear_opp_table(opp_table);
1069
1070 /* Release clk */
1071 if (!IS_ERR(opp_table->clk))
1072 clk_put(opp_table->clk);
1073
1074 if (opp_table->paths) {
1075 for (i = 0; i < opp_table->path_count; i++)
> 1076 icc_put(opp_table->paths[i]);
1077 kfree(opp_table->paths);
1078 }
1079
1080 WARN_ON(!list_empty(&opp_table->opp_list));
1081
1082 list_for_each_entry_safe(opp_dev, temp, &opp_table->dev_list, node) {
1083 /*
1084 * The OPP table is getting removed, drop the performance state
1085 * constraints.
1086 */
1087 if (opp_table->genpd_performance_state)
1088 dev_pm_genpd_set_performance_state((struct device *)(opp_dev->dev), 0);
1089
1090 _remove_opp_dev(opp_dev, opp_table);
1091 }
1092
1093 mutex_destroy(&opp_table->genpd_virt_dev_lock);
1094 mutex_destroy(&opp_table->lock);
1095 list_del(&opp_table->node);
1096 kfree(opp_table);
1097
1098 mutex_unlock(&opp_table_lock);
1099 }
1100
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 34575 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-05-14 6:46 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-13 16:43 [vireshk-pm:opp/linux-next 4/9] drivers/opp/core.c:1076: undefined reference to `icc_put' kbuild test robot
2020-05-13 17:58 ` Matthias Kaehlcke
2020-05-14 6:24 ` Georgi Djakov
2020-05-14 6:38 ` Viresh Kumar
2020-05-14 6:46 ` Viresh Kumar
2020-05-14 1:16 kbuild test robot
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.