* [pdx86-platform-drivers-x86:review-hans 46/59] kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations @ 2022-05-12 1:29 kernel test robot 2022-05-12 9:24 ` Thomas Gleixner 0 siblings, 1 reply; 9+ messages in thread From: kernel test robot @ 2022-05-12 1:29 UTC (permalink / raw) To: Peter Zijlstra Cc: llvm, kbuild-all, Andy Shevchenko, Hans de Goede, linux-kernel, Tony Luck, Thomas Gleixner tree: https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git review-hans head: 57709a27d9744f5af4bbeec3ba3105c6aa1075eb commit: 104355bf96bb985c40f8f8da43f70b935d59fb61 [46/59] stop_machine: Add stop_core_cpuslocked() for per-core operations config: hexagon-randconfig-r045-20220509 (https://download.01.org/0day-ci/archive/20220512/202205120904.Gr9HEY5E-lkp@intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 18dd123c56754edf62c7042dcf23185c3727610f) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/commit/?id=104355bf96bb985c40f8f8da43f70b935d59fb61 git remote add pdx86-platform-drivers-x86 https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git git fetch --no-tags pdx86-platform-drivers-x86 review-hans git checkout 104355bf96bb985c40f8f8da43f70b935d59fb61 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): >> kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] const struct cpumask *smt_mask = cpu_smt_mask(cpu); ^ kernel/stop_machine.c:638:35: note: did you mean 'cpu_cpu_mask'? include/linux/topology.h:250:37: note: 'cpu_cpu_mask' declared here static inline const struct cpumask *cpu_cpu_mask(int cpu) ^ >> kernel/stop_machine.c:638:24: warning: incompatible integer to pointer conversion initializing 'const struct cpumask *' with an expression of type 'int' [-Wint-conversion] const struct cpumask *smt_mask = cpu_smt_mask(cpu); ^ ~~~~~~~~~~~~~~~~~ 1 warning and 1 error generated. vim +/cpu_smt_mask +638 kernel/stop_machine.c 635 636 int stop_core_cpuslocked(unsigned int cpu, cpu_stop_fn_t fn, void *data) 637 { > 638 const struct cpumask *smt_mask = cpu_smt_mask(cpu); 639 640 struct multi_stop_data msdata = { 641 .fn = fn, 642 .data = data, 643 .num_threads = cpumask_weight(smt_mask), 644 .active_cpus = smt_mask, 645 }; 646 647 lockdep_assert_cpus_held(); 648 649 /* Set the initial state and stop all online cpus. */ 650 set_state(&msdata, MULTI_STOP_PREPARE); 651 return stop_cpus(smt_mask, multi_cpu_stop, &msdata); 652 } 653 EXPORT_SYMBOL_GPL(stop_core_cpuslocked); 654 -- 0-DAY CI Kernel Test Service https://01.org/lkp ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [pdx86-platform-drivers-x86:review-hans 46/59] kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations 2022-05-12 1:29 [pdx86-platform-drivers-x86:review-hans 46/59] kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations kernel test robot @ 2022-05-12 9:24 ` Thomas Gleixner 0 siblings, 0 replies; 9+ messages in thread From: Thomas Gleixner @ 2022-05-12 9:24 UTC (permalink / raw) To: kernel test robot, Peter Zijlstra Cc: llvm, kbuild-all, Andy Shevchenko, Hans de Goede, linux-kernel, Tony Luck On Thu, May 12 2022 at 09:29, kernel test robot wrote: >>> kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] > const struct cpumask *smt_mask = cpu_smt_mask(cpu); This warning with W=1 is not the worst of the problems. The build will simply fail for CONFIG_SMP=y && CONFIG_SCHED_SMT=n because cpu_smt_mask() cannot be resolved. The other issue is CONFIG_SMP=n. This will fail to build the IFS driver because stop_core_cpuslocked() is not available for SMP=n. Something like the below should work as x86 selects SCHED_SMT when SMP=y. Thanks, tglx --- --- a/include/linux/stop_machine.h +++ b/include/linux/stop_machine.h @@ -156,6 +156,12 @@ static __always_inline int stop_machine_ } static __always_inline int +stop_core_cpuslocked(unsigned int cpu, cpu_stop_fn_t fn, void *data) +{ + return stop_machine_cpuslocked(fn, data, NULL); +} + +static __always_inline int stop_machine(cpu_stop_fn_t fn, void *data, const struct cpumask *cpus) { return stop_machine_cpuslocked(fn, data, cpus); --- a/kernel/stop_machine.c +++ b/kernel/stop_machine.c @@ -631,6 +631,7 @@ int stop_machine(cpu_stop_fn_t fn, void } EXPORT_SYMBOL_GPL(stop_machine); +#ifdef CONFIG_SCHED_SMT int stop_core_cpuslocked(unsigned int cpu, cpu_stop_fn_t fn, void *data) { const struct cpumask *smt_mask = cpu_smt_mask(cpu); @@ -649,6 +650,7 @@ int stop_core_cpuslocked(unsigned int cp return stop_cpus(smt_mask, multi_cpu_stop, &msdata); } EXPORT_SYMBOL_GPL(stop_core_cpuslocked); +#endif /** * stop_machine_from_inactive_cpu - stop_machine() from inactive CPU ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [pdx86-platform-drivers-x86:review-hans 46/59] kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations @ 2022-05-12 9:24 ` Thomas Gleixner 0 siblings, 0 replies; 9+ messages in thread From: Thomas Gleixner @ 2022-05-12 9:24 UTC (permalink / raw) To: kbuild-all [-- Attachment #1: Type: text/plain, Size: 1763 bytes --] On Thu, May 12 2022 at 09:29, kernel test robot wrote: >>> kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] > const struct cpumask *smt_mask = cpu_smt_mask(cpu); This warning with W=1 is not the worst of the problems. The build will simply fail for CONFIG_SMP=y && CONFIG_SCHED_SMT=n because cpu_smt_mask() cannot be resolved. The other issue is CONFIG_SMP=n. This will fail to build the IFS driver because stop_core_cpuslocked() is not available for SMP=n. Something like the below should work as x86 selects SCHED_SMT when SMP=y. Thanks, tglx --- --- a/include/linux/stop_machine.h +++ b/include/linux/stop_machine.h @@ -156,6 +156,12 @@ static __always_inline int stop_machine_ } static __always_inline int +stop_core_cpuslocked(unsigned int cpu, cpu_stop_fn_t fn, void *data) +{ + return stop_machine_cpuslocked(fn, data, NULL); +} + +static __always_inline int stop_machine(cpu_stop_fn_t fn, void *data, const struct cpumask *cpus) { return stop_machine_cpuslocked(fn, data, cpus); --- a/kernel/stop_machine.c +++ b/kernel/stop_machine.c @@ -631,6 +631,7 @@ int stop_machine(cpu_stop_fn_t fn, void } EXPORT_SYMBOL_GPL(stop_machine); +#ifdef CONFIG_SCHED_SMT int stop_core_cpuslocked(unsigned int cpu, cpu_stop_fn_t fn, void *data) { const struct cpumask *smt_mask = cpu_smt_mask(cpu); @@ -649,6 +650,7 @@ int stop_core_cpuslocked(unsigned int cp return stop_cpus(smt_mask, multi_cpu_stop, &msdata); } EXPORT_SYMBOL_GPL(stop_core_cpuslocked); +#endif /** * stop_machine_from_inactive_cpu - stop_machine() from inactive CPU ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [pdx86-platform-drivers-x86:review-hans 46/59] kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations 2022-05-12 9:24 ` Thomas Gleixner @ 2022-05-12 9:53 ` Hans de Goede -1 siblings, 0 replies; 9+ messages in thread From: Hans de Goede @ 2022-05-12 9:53 UTC (permalink / raw) To: Thomas Gleixner, kernel test robot, Peter Zijlstra Cc: llvm, kbuild-all, Andy Shevchenko, linux-kernel, Tony Luck Hi, On 5/12/22 11:24, Thomas Gleixner wrote: > On Thu, May 12 2022 at 09:29, kernel test robot wrote: >>>> kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] >> const struct cpumask *smt_mask = cpu_smt_mask(cpu); > > This warning with W=1 is not the worst of the problems. > > The build will simply fail for CONFIG_SMP=y && CONFIG_SCHED_SMT=n > because cpu_smt_mask() cannot be resolved. > > The other issue is CONFIG_SMP=n. This will fail to build the IFS driver > because stop_core_cpuslocked() is not available for SMP=n. The IFS Kconfig already depends on SMP : config INTEL_IFS tristate "Intel In Field Scan" depends on X86 && 64BIT && SMP select INTEL_IFS_DEVICE help Enable ... So I don't think we need the non-SMP implementation inside include/linux/stop_machine.h, we only need the #ifdef you suggest in kernel/stop_machine.c ? I think it is best to just squash this into the original patch, do you agree ? Regards, Hans > Something like the below should work as x86 selects SCHED_SMT when > SMP=y. > > Thanks, > > tglx > --- > --- a/include/linux/stop_machine.h > +++ b/include/linux/stop_machine.h > @@ -156,6 +156,12 @@ static __always_inline int stop_machine_ > } > > static __always_inline int > +stop_core_cpuslocked(unsigned int cpu, cpu_stop_fn_t fn, void *data) > +{ > + return stop_machine_cpuslocked(fn, data, NULL); > +} > + > +static __always_inline int > stop_machine(cpu_stop_fn_t fn, void *data, const struct cpumask *cpus) > { > return stop_machine_cpuslocked(fn, data, cpus); > --- a/kernel/stop_machine.c > +++ b/kernel/stop_machine.c > @@ -631,6 +631,7 @@ int stop_machine(cpu_stop_fn_t fn, void > } > EXPORT_SYMBOL_GPL(stop_machine); > > +#ifdef CONFIG_SCHED_SMT > int stop_core_cpuslocked(unsigned int cpu, cpu_stop_fn_t fn, void *data) > { > const struct cpumask *smt_mask = cpu_smt_mask(cpu); > @@ -649,6 +650,7 @@ int stop_core_cpuslocked(unsigned int cp > return stop_cpus(smt_mask, multi_cpu_stop, &msdata); > } > EXPORT_SYMBOL_GPL(stop_core_cpuslocked); > +#endif > > /** > * stop_machine_from_inactive_cpu - stop_machine() from inactive CPU > > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [pdx86-platform-drivers-x86:review-hans 46/59] kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations @ 2022-05-12 9:53 ` Hans de Goede 0 siblings, 0 replies; 9+ messages in thread From: Hans de Goede @ 2022-05-12 9:53 UTC (permalink / raw) To: kbuild-all [-- Attachment #1: Type: text/plain, Size: 2404 bytes --] Hi, On 5/12/22 11:24, Thomas Gleixner wrote: > On Thu, May 12 2022 at 09:29, kernel test robot wrote: >>>> kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] >> const struct cpumask *smt_mask = cpu_smt_mask(cpu); > > This warning with W=1 is not the worst of the problems. > > The build will simply fail for CONFIG_SMP=y && CONFIG_SCHED_SMT=n > because cpu_smt_mask() cannot be resolved. > > The other issue is CONFIG_SMP=n. This will fail to build the IFS driver > because stop_core_cpuslocked() is not available for SMP=n. The IFS Kconfig already depends on SMP : config INTEL_IFS tristate "Intel In Field Scan" depends on X86 && 64BIT && SMP select INTEL_IFS_DEVICE help Enable ... So I don't think we need the non-SMP implementation inside include/linux/stop_machine.h, we only need the #ifdef you suggest in kernel/stop_machine.c ? I think it is best to just squash this into the original patch, do you agree ? Regards, Hans > Something like the below should work as x86 selects SCHED_SMT when > SMP=y. > > Thanks, > > tglx > --- > --- a/include/linux/stop_machine.h > +++ b/include/linux/stop_machine.h > @@ -156,6 +156,12 @@ static __always_inline int stop_machine_ > } > > static __always_inline int > +stop_core_cpuslocked(unsigned int cpu, cpu_stop_fn_t fn, void *data) > +{ > + return stop_machine_cpuslocked(fn, data, NULL); > +} > + > +static __always_inline int > stop_machine(cpu_stop_fn_t fn, void *data, const struct cpumask *cpus) > { > return stop_machine_cpuslocked(fn, data, cpus); > --- a/kernel/stop_machine.c > +++ b/kernel/stop_machine.c > @@ -631,6 +631,7 @@ int stop_machine(cpu_stop_fn_t fn, void > } > EXPORT_SYMBOL_GPL(stop_machine); > > +#ifdef CONFIG_SCHED_SMT > int stop_core_cpuslocked(unsigned int cpu, cpu_stop_fn_t fn, void *data) > { > const struct cpumask *smt_mask = cpu_smt_mask(cpu); > @@ -649,6 +650,7 @@ int stop_core_cpuslocked(unsigned int cp > return stop_cpus(smt_mask, multi_cpu_stop, &msdata); > } > EXPORT_SYMBOL_GPL(stop_core_cpuslocked); > +#endif > > /** > * stop_machine_from_inactive_cpu - stop_machine() from inactive CPU > > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [pdx86-platform-drivers-x86:review-hans 46/59] kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations 2022-05-12 9:53 ` Hans de Goede @ 2022-05-12 11:42 ` Thomas Gleixner -1 siblings, 0 replies; 9+ messages in thread From: Thomas Gleixner @ 2022-05-12 11:42 UTC (permalink / raw) To: Hans de Goede, kernel test robot, Peter Zijlstra Cc: llvm, kbuild-all, Andy Shevchenko, linux-kernel, Tony Luck On Thu, May 12 2022 at 11:53, Hans de Goede wrote: > On 5/12/22 11:24, Thomas Gleixner wrote: >> On Thu, May 12 2022 at 09:29, kernel test robot wrote: >>>>> kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] >>> const struct cpumask *smt_mask = cpu_smt_mask(cpu); >> >> This warning with W=1 is not the worst of the problems. >> >> The build will simply fail for CONFIG_SMP=y && CONFIG_SCHED_SMT=n >> because cpu_smt_mask() cannot be resolved. >> >> The other issue is CONFIG_SMP=n. This will fail to build the IFS driver >> because stop_core_cpuslocked() is not available for SMP=n. > > The IFS Kconfig already depends on SMP : > > config INTEL_IFS > tristate "Intel In Field Scan" > depends on X86 && 64BIT && SMP > select INTEL_IFS_DEVICE > help > Enable ... > > > So I don't think we need the non-SMP implementation inside > include/linux/stop_machine.h, we only need the #ifdef you > suggest in kernel/stop_machine.c ? For the case at hand that's sufficient. > I think it is best to just squash this into the original > patch, do you agree ? Yes. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [pdx86-platform-drivers-x86:review-hans 46/59] kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations @ 2022-05-12 11:42 ` Thomas Gleixner 0 siblings, 0 replies; 9+ messages in thread From: Thomas Gleixner @ 2022-05-12 11:42 UTC (permalink / raw) To: kbuild-all [-- Attachment #1: Type: text/plain, Size: 1273 bytes --] On Thu, May 12 2022 at 11:53, Hans de Goede wrote: > On 5/12/22 11:24, Thomas Gleixner wrote: >> On Thu, May 12 2022 at 09:29, kernel test robot wrote: >>>>> kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] >>> const struct cpumask *smt_mask = cpu_smt_mask(cpu); >> >> This warning with W=1 is not the worst of the problems. >> >> The build will simply fail for CONFIG_SMP=y && CONFIG_SCHED_SMT=n >> because cpu_smt_mask() cannot be resolved. >> >> The other issue is CONFIG_SMP=n. This will fail to build the IFS driver >> because stop_core_cpuslocked() is not available for SMP=n. > > The IFS Kconfig already depends on SMP : > > config INTEL_IFS > tristate "Intel In Field Scan" > depends on X86 && 64BIT && SMP > select INTEL_IFS_DEVICE > help > Enable ... > > > So I don't think we need the non-SMP implementation inside > include/linux/stop_machine.h, we only need the #ifdef you > suggest in kernel/stop_machine.c ? For the case at hand that's sufficient. > I think it is best to just squash this into the original > patch, do you agree ? Yes. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [pdx86-platform-drivers-x86:review-hans 46/59] kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations 2022-05-12 11:42 ` Thomas Gleixner @ 2022-05-12 13:40 ` Hans de Goede -1 siblings, 0 replies; 9+ messages in thread From: Hans de Goede @ 2022-05-12 13:40 UTC (permalink / raw) To: Thomas Gleixner, kernel test robot, Peter Zijlstra Cc: llvm, kbuild-all, Andy Shevchenko, linux-kernel, Tony Luck Hi, On 5/12/22 13:42, Thomas Gleixner wrote: > On Thu, May 12 2022 at 11:53, Hans de Goede wrote: >> On 5/12/22 11:24, Thomas Gleixner wrote: >>> On Thu, May 12 2022 at 09:29, kernel test robot wrote: >>>>>> kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] >>>> const struct cpumask *smt_mask = cpu_smt_mask(cpu); >>> >>> This warning with W=1 is not the worst of the problems. >>> >>> The build will simply fail for CONFIG_SMP=y && CONFIG_SCHED_SMT=n >>> because cpu_smt_mask() cannot be resolved. >>> >>> The other issue is CONFIG_SMP=n. This will fail to build the IFS driver >>> because stop_core_cpuslocked() is not available for SMP=n. >> >> The IFS Kconfig already depends on SMP : >> >> config INTEL_IFS >> tristate "Intel In Field Scan" >> depends on X86 && 64BIT && SMP >> select INTEL_IFS_DEVICE >> help >> Enable ... >> >> >> So I don't think we need the non-SMP implementation inside >> include/linux/stop_machine.h, we only need the #ifdef you >> suggest in kernel/stop_machine.c ? > > For the case at hand that's sufficient. > >> I think it is best to just squash this into the original >> patch, do you agree ? > > Yes. Ok, I've squashed the #ifdef into kernel/stop_machine.c and done a forced push. Lets hope that the kernel test robot (lkp) does not find anything else. Regards, Hans ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [pdx86-platform-drivers-x86:review-hans 46/59] kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations @ 2022-05-12 13:40 ` Hans de Goede 0 siblings, 0 replies; 9+ messages in thread From: Hans de Goede @ 2022-05-12 13:40 UTC (permalink / raw) To: kbuild-all [-- Attachment #1: Type: text/plain, Size: 1540 bytes --] Hi, On 5/12/22 13:42, Thomas Gleixner wrote: > On Thu, May 12 2022 at 11:53, Hans de Goede wrote: >> On 5/12/22 11:24, Thomas Gleixner wrote: >>> On Thu, May 12 2022 at 09:29, kernel test robot wrote: >>>>>> kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] >>>> const struct cpumask *smt_mask = cpu_smt_mask(cpu); >>> >>> This warning with W=1 is not the worst of the problems. >>> >>> The build will simply fail for CONFIG_SMP=y && CONFIG_SCHED_SMT=n >>> because cpu_smt_mask() cannot be resolved. >>> >>> The other issue is CONFIG_SMP=n. This will fail to build the IFS driver >>> because stop_core_cpuslocked() is not available for SMP=n. >> >> The IFS Kconfig already depends on SMP : >> >> config INTEL_IFS >> tristate "Intel In Field Scan" >> depends on X86 && 64BIT && SMP >> select INTEL_IFS_DEVICE >> help >> Enable ... >> >> >> So I don't think we need the non-SMP implementation inside >> include/linux/stop_machine.h, we only need the #ifdef you >> suggest in kernel/stop_machine.c ? > > For the case at hand that's sufficient. > >> I think it is best to just squash this into the original >> patch, do you agree ? > > Yes. Ok, I've squashed the #ifdef into kernel/stop_machine.c and done a forced push. Lets hope that the kernel test robot (lkp) does not find anything else. Regards, Hans ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-05-12 13:40 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-05-12 1:29 [pdx86-platform-drivers-x86:review-hans 46/59] kernel/stop_machine.c:638:35: error: call to undeclared function 'cpu_smt_mask'; ISO C99 and later do not support implicit function declarations kernel test robot 2022-05-12 9:24 ` Thomas Gleixner 2022-05-12 9:24 ` Thomas Gleixner 2022-05-12 9:53 ` Hans de Goede 2022-05-12 9:53 ` Hans de Goede 2022-05-12 11:42 ` Thomas Gleixner 2022-05-12 11:42 ` Thomas Gleixner 2022-05-12 13:40 ` Hans de Goede 2022-05-12 13:40 ` Hans de Goede
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.