* [PATCH 1/2] drm/i915: Ensure _print_param() builds with Clang
@ 2018-10-16 12:29 Jani Nikula
2018-10-16 12:29 ` [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() " Jani Nikula
` (5 more replies)
0 siblings, 6 replies; 15+ messages in thread
From: Jani Nikula @ 2018-10-16 12:29 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula, natechancellor, swboyd, ndesaulniers
When building the kernel with Clang with defconfig and CONFIG_64BIT
disabled, vmlinux fails to link because of the BUILD_BUG in
_print_param.
ld: drivers/gpu/drm/i915/i915_params.o: in function `i915_params_dump':
i915_params.c:(.text+0x56): undefined reference to
`__compiletime_assert_191'
This function is semantically invalid unless the code is first inlined
then constant folded, which doesn't work for Clang because semantic
analysis happens before optimization/inlining.
[The above written by Nathan Chancellor <natechancellor@gmail.com>]
Use WARN_ONCE() instead of BUILD_BUG() to avoid the problem. The
WARN_ONCE() should get optimized away unless there's a type that's not
handled by _print_param().
References: https://github.com/ClangBuiltLinux/linux/issues/191
References: http://mid.mail-archive.com/20181009171401.14980-1-natechancellor@gmail.com
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Nathan Chancellor <natechancellor@gmail.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reported-by: Nick Desaulniers <ndesaulniers@google.com>
Reported-by: Nathan Chancellor <natechancellor@gmail.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/i915_params.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
index bd6bd8879cab..8d71886b5f03 100644
--- a/drivers/gpu/drm/i915/i915_params.c
+++ b/drivers/gpu/drm/i915/i915_params.c
@@ -184,7 +184,8 @@ static __always_inline void _print_param(struct drm_printer *p,
else if (!__builtin_strcmp(type, "char *"))
drm_printf(p, "i915.%s=%s\n", name, *(const char **)x);
else
- BUILD_BUG();
+ WARN_ONCE(1, "no printer defined for param type %s (i915.%s)\n",
+ type, name);
}
/**
--
2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() builds with Clang
2018-10-16 12:29 [PATCH 1/2] drm/i915: Ensure _print_param() builds with Clang Jani Nikula
@ 2018-10-16 12:29 ` Jani Nikula
2018-10-16 15:11 ` Nathan Chancellor
` (2 more replies)
2018-10-16 12:35 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/i915: Ensure _print_param() " Patchwork
` (4 subsequent siblings)
5 siblings, 3 replies; 15+ messages in thread
From: Jani Nikula @ 2018-10-16 12:29 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula, natechancellor, swboyd, ndesaulniers
Clang build with UBSAN enabled leads to the following build error:
drivers/gpu/drm/i915/intel_engine_cs.o: In function `intel_engine_init_execlist':
drivers/gpu/drm/i915/intel_engine_cs.c:411: undefined reference to `__compiletime_assert_411'
Again, for this to work the code would first need to be inlined and then
constant folded, which doesn't work for Clang because semantic analysis
happens before optimization/inlining.
Use GEM_BUG_ON() instead of BUILD_BUG_ON().
v2: Use is_power_of_2() from log2.h (Chris)
References: http://mid.mail-archive.com/20181015203410.155997-1-swboyd@chromium.org
Reported-by: Stephen Boyd <swboyd@chromium.org>
Cc: Stephen Boyd <swboyd@chromium.org>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/intel_engine_cs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
index f27dbe26bcc1..bc793b0c8806 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -466,7 +466,7 @@ static void intel_engine_init_execlist(struct intel_engine_cs *engine)
struct intel_engine_execlists * const execlists = &engine->execlists;
execlists->port_mask = 1;
- BUILD_BUG_ON_NOT_POWER_OF_2(execlists_num_ports(execlists));
+ GEM_BUG_ON(!is_power_of_2(execlists_num_ports(execlists)));
GEM_BUG_ON(execlists_num_ports(execlists) > EXECLIST_MAX_PORTS);
execlists->queue_priority = INT_MIN;
--
2.11.0
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 15+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/i915: Ensure _print_param() builds with Clang
2018-10-16 12:29 [PATCH 1/2] drm/i915: Ensure _print_param() builds with Clang Jani Nikula
2018-10-16 12:29 ` [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() " Jani Nikula
@ 2018-10-16 12:35 ` Patchwork
2018-10-16 13:00 ` ✓ Fi.CI.BAT: success " Patchwork
` (3 subsequent siblings)
5 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2018-10-16 12:35 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/2] drm/i915: Ensure _print_param() builds with Clang
URL : https://patchwork.freedesktop.org/series/51065/
State : warning
== Summary ==
$ dim checkpatch origin/drm-tip
3d074f8e5da9 drm/i915: Ensure _print_param() builds with Clang
-:25: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line)
#25:
References: http://mid.mail-archive.com/20181009171401.14980-1-natechancellor@gmail.com
total: 0 errors, 1 warnings, 0 checks, 9 lines checked
66537384cb2a drm/i915: Ensure intel_engine_init_execlist() builds with Clang
-:20: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line)
#20:
References: http://mid.mail-archive.com/20181015203410.155997-1-swboyd@chromium.org
total: 0 errors, 1 warnings, 0 checks, 8 lines checked
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* ✓ Fi.CI.BAT: success for series starting with [1/2] drm/i915: Ensure _print_param() builds with Clang
2018-10-16 12:29 [PATCH 1/2] drm/i915: Ensure _print_param() builds with Clang Jani Nikula
2018-10-16 12:29 ` [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() " Jani Nikula
2018-10-16 12:35 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/i915: Ensure _print_param() " Patchwork
@ 2018-10-16 13:00 ` Patchwork
2018-10-16 14:14 ` ✗ Fi.CI.IGT: failure " Patchwork
` (2 subsequent siblings)
5 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2018-10-16 13:00 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/2] drm/i915: Ensure _print_param() builds with Clang
URL : https://patchwork.freedesktop.org/series/51065/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4985 -> Patchwork_10472 =
== Summary - SUCCESS ==
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/51065/revisions/1/mbox/
== Known issues ==
Here are the changes found in Patchwork_10472 that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@amdgpu/amd_basic@cs-compute:
fi-kbl-8809g: NOTRUN -> FAIL (fdo#108094)
igt@amdgpu/amd_cs_nop@fork-gfx0:
fi-kbl-8809g: NOTRUN -> DMESG-WARN (fdo#107762)
igt@amdgpu/amd_prime@amd-to-i915:
fi-kbl-8809g: NOTRUN -> FAIL (fdo#107341)
igt@drv_selftest@live_gem:
{fi-apl-guc}: NOTRUN -> INCOMPLETE (fdo#106693)
igt@gem_exec_suspend@basic-s3:
fi-kbl-soraka: NOTRUN -> INCOMPLETE (fdo#107556, fdo#107774, fdo#107859)
igt@kms_flip@basic-flip-vs-modeset:
fi-glk-j4005: PASS -> DMESG-WARN (fdo#106000)
igt@kms_flip@basic-flip-vs-wf_vblank:
fi-glk-j4005: PASS -> FAIL (fdo#100368)
igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
fi-glk-j4005: PASS -> DMESG-WARN (fdo#106097)
==== Possible fixes ====
igt@drv_module_reload@basic-no-display:
fi-glk-j4005: DMESG-WARN (fdo#106725) -> PASS
igt@gem_exec_suspend@basic-s4-devices:
fi-blb-e6850: INCOMPLETE (fdo#107718) -> PASS
igt@kms_frontbuffer_tracking@basic:
fi-hsw-peppy: DMESG-WARN (fdo#102614) -> PASS
igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
fi-byt-clapper: FAIL (fdo#103191, fdo#107362) -> PASS +1
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#102614 https://bugs.freedesktop.org/show_bug.cgi?id=102614
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#106000 https://bugs.freedesktop.org/show_bug.cgi?id=106000
fdo#106097 https://bugs.freedesktop.org/show_bug.cgi?id=106097
fdo#106693 https://bugs.freedesktop.org/show_bug.cgi?id=106693
fdo#106725 https://bugs.freedesktop.org/show_bug.cgi?id=106725
fdo#107341 https://bugs.freedesktop.org/show_bug.cgi?id=107341
fdo#107362 https://bugs.freedesktop.org/show_bug.cgi?id=107362
fdo#107556 https://bugs.freedesktop.org/show_bug.cgi?id=107556
fdo#107718 https://bugs.freedesktop.org/show_bug.cgi?id=107718
fdo#107762 https://bugs.freedesktop.org/show_bug.cgi?id=107762
fdo#107774 https://bugs.freedesktop.org/show_bug.cgi?id=107774
fdo#107859 https://bugs.freedesktop.org/show_bug.cgi?id=107859
fdo#108094 https://bugs.freedesktop.org/show_bug.cgi?id=108094
== Participating hosts (47 -> 43) ==
Additional (2): fi-kbl-soraka fi-apl-guc
Missing (6): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-snb-2520m fi-ctg-p8600
== Build changes ==
* Linux: CI_DRM_4985 -> Patchwork_10472
CI_DRM_4985: 6580d026594f0015bad711ba9a7c31762459ff8e @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_4680: 27fa97d16294af9c9c42fd81b030a73e4aa2e7c3 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_10472: 66537384cb2ac07708a4dfe09e7be659d9a26c8e @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
66537384cb2a drm/i915: Ensure intel_engine_init_execlist() builds with Clang
3d074f8e5da9 drm/i915: Ensure _print_param() builds with Clang
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10472/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* ✗ Fi.CI.IGT: failure for series starting with [1/2] drm/i915: Ensure _print_param() builds with Clang
2018-10-16 12:29 [PATCH 1/2] drm/i915: Ensure _print_param() builds with Clang Jani Nikula
` (2 preceding siblings ...)
2018-10-16 13:00 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2018-10-16 14:14 ` Patchwork
2018-10-16 15:10 ` [PATCH 1/2] " Nathan Chancellor
2018-10-16 15:16 ` Chris Wilson
5 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2018-10-16 14:14 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/2] drm/i915: Ensure _print_param() builds with Clang
URL : https://patchwork.freedesktop.org/series/51065/
State : failure
== Summary ==
= CI Bug Log - changes from CI_DRM_4985_full -> Patchwork_10472_full =
== Summary - FAILURE ==
Serious unknown changes coming with Patchwork_10472_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_10472_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
== Possible new issues ==
Here are the unknown changes that may have been introduced in Patchwork_10472_full:
=== IGT changes ===
==== Possible regressions ====
igt@kms_color@pipe-a-ctm-green-to-red:
shard-skl: NOTRUN -> FAIL
==== Warnings ====
igt@kms_cursor_legacy@basic-flip-before-cursor-legacy:
shard-snb: PASS -> SKIP +3
== Known issues ==
Here are the changes found in Patchwork_10472_full that come from known issues:
=== IGT changes ===
==== Issues hit ====
igt@drv_suspend@shrink:
shard-snb: NOTRUN -> INCOMPLETE (fdo#105411, fdo#106886)
igt@gem_exec_schedule@pi-ringfull-bsd:
shard-glk: NOTRUN -> FAIL (fdo#103158)
igt@gem_ppgtt@blt-vs-render-ctx0:
shard-skl: NOTRUN -> TIMEOUT (fdo#108039)
igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-a:
shard-skl: NOTRUN -> DMESG-WARN (fdo#107956)
igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-b:
shard-snb: NOTRUN -> DMESG-WARN (fdo#107956)
igt@kms_busy@extended-pageflip-hang-newfb-render-a:
shard-glk: NOTRUN -> DMESG-WARN (fdo#107956) +2
igt@kms_ccs@pipe-a-crc-primary-basic:
shard-skl: NOTRUN -> FAIL (fdo#107725)
igt@kms_cursor_crc@cursor-128x128-sliding:
shard-apl: PASS -> FAIL (fdo#103232)
igt@kms_cursor_crc@cursor-128x128-suspend:
shard-apl: PASS -> FAIL (fdo#103191, fdo#103232)
igt@kms_cursor_crc@cursor-size-change:
shard-skl: NOTRUN -> FAIL (fdo#103232) +1
igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic:
shard-glk: NOTRUN -> FAIL (fdo#105454, fdo#106509)
igt@kms_draw_crc@draw-method-rgb565-pwrite-untiled:
shard-skl: NOTRUN -> FAIL (fdo#103184) +2
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
shard-apl: PASS -> FAIL (fdo#103167) +1
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-wc:
shard-glk: NOTRUN -> FAIL (fdo#103167) +1
igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render:
shard-skl: NOTRUN -> FAIL (fdo#105682) +1
igt@kms_frontbuffer_tracking@fbcpsr-stridechange:
shard-skl: NOTRUN -> FAIL (fdo#105683)
igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt:
shard-skl: NOTRUN -> FAIL (fdo#103167) +4
igt@kms_plane@pixel-format-pipe-a-planes:
shard-glk: NOTRUN -> FAIL (fdo#103166)
igt@kms_plane_alpha_blend@pipe-a-coverage-7efc:
shard-skl: NOTRUN -> FAIL (fdo#108145) +2
igt@kms_plane_alpha_blend@pipe-c-alpha-transparant-fb:
shard-glk: NOTRUN -> FAIL (fdo#108145) +2
igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
shard-skl: NOTRUN -> FAIL (fdo#108146)
igt@kms_plane_multiple@atomic-pipe-b-tiling-y:
shard-glk: PASS -> FAIL (fdo#103166)
igt@kms_setmode@basic:
shard-hsw: NOTRUN -> FAIL (fdo#99912)
shard-snb: NOTRUN -> FAIL (fdo#99912)
igt@pm_rpm@legacy-planes-dpms:
shard-skl: PASS -> INCOMPLETE (fdo#105959, fdo#107807)
==== Possible fixes ====
igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-a:
shard-hsw: DMESG-WARN (fdo#107956) -> PASS
igt@kms_cursor_crc@cursor-256x256-random:
shard-apl: FAIL (fdo#103232) -> PASS +2
igt@kms_cursor_crc@cursor-256x256-suspend:
shard-skl: INCOMPLETE (fdo#107773, fdo#104108) -> PASS
igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-render:
shard-apl: FAIL (fdo#103167) -> PASS +1
igt@kms_plane_multiple@atomic-pipe-b-tiling-y:
shard-apl: FAIL (fdo#103166) -> PASS +2
igt@kms_setmode@basic:
shard-apl: FAIL (fdo#99912) -> PASS
fdo#103158 https://bugs.freedesktop.org/show_bug.cgi?id=103158
fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#103184 https://bugs.freedesktop.org/show_bug.cgi?id=103184
fdo#103191 https://bugs.freedesktop.org/show_bug.cgi?id=103191
fdo#103232 https://bugs.freedesktop.org/show_bug.cgi?id=103232
fdo#104108 https://bugs.freedesktop.org/show_bug.cgi?id=104108
fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
fdo#105454 https://bugs.freedesktop.org/show_bug.cgi?id=105454
fdo#105682 https://bugs.freedesktop.org/show_bug.cgi?id=105682
fdo#105683 https://bugs.freedesktop.org/show_bug.cgi?id=105683
fdo#105959 https://bugs.freedesktop.org/show_bug.cgi?id=105959
fdo#106509 https://bugs.freedesktop.org/show_bug.cgi?id=106509
fdo#106886 https://bugs.freedesktop.org/show_bug.cgi?id=106886
fdo#107725 https://bugs.freedesktop.org/show_bug.cgi?id=107725
fdo#107773 https://bugs.freedesktop.org/show_bug.cgi?id=107773
fdo#107807 https://bugs.freedesktop.org/show_bug.cgi?id=107807
fdo#107956 https://bugs.freedesktop.org/show_bug.cgi?id=107956
fdo#108039 https://bugs.freedesktop.org/show_bug.cgi?id=108039
fdo#108145 https://bugs.freedesktop.org/show_bug.cgi?id=108145
fdo#108146 https://bugs.freedesktop.org/show_bug.cgi?id=108146
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
== Participating hosts (6 -> 6) ==
No changes in participating hosts
== Build changes ==
* Linux: CI_DRM_4985 -> Patchwork_10472
CI_DRM_4985: 6580d026594f0015bad711ba9a7c31762459ff8e @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_4680: 27fa97d16294af9c9c42fd81b030a73e4aa2e7c3 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_10472: 66537384cb2ac07708a4dfe09e7be659d9a26c8e @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10472/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/2] drm/i915: Ensure _print_param() builds with Clang
2018-10-16 12:29 [PATCH 1/2] drm/i915: Ensure _print_param() builds with Clang Jani Nikula
` (3 preceding siblings ...)
2018-10-16 14:14 ` ✗ Fi.CI.IGT: failure " Patchwork
@ 2018-10-16 15:10 ` Nathan Chancellor
2018-10-16 15:16 ` Chris Wilson
5 siblings, 0 replies; 15+ messages in thread
From: Nathan Chancellor @ 2018-10-16 15:10 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx, swboyd, ndesaulniers
On Tue, Oct 16, 2018 at 03:29:37PM +0300, Jani Nikula wrote:
> When building the kernel with Clang with defconfig and CONFIG_64BIT
> disabled, vmlinux fails to link because of the BUILD_BUG in
> _print_param.
>
> ld: drivers/gpu/drm/i915/i915_params.o: in function `i915_params_dump':
> i915_params.c:(.text+0x56): undefined reference to
> `__compiletime_assert_191'
>
> This function is semantically invalid unless the code is first inlined
> then constant folded, which doesn't work for Clang because semantic
> analysis happens before optimization/inlining.
>
> [The above written by Nathan Chancellor <natechancellor@gmail.com>]
>
> Use WARN_ONCE() instead of BUILD_BUG() to avoid the problem. The
> WARN_ONCE() should get optimized away unless there's a type that's not
> handled by _print_param().
>
> References: https://github.com/ClangBuiltLinux/linux/issues/191
> References: http://mid.mail-archive.com/20181009171401.14980-1-natechancellor@gmail.com
> Cc: Nick Desaulniers <ndesaulniers@google.com>
> Cc: Nathan Chancellor <natechancellor@gmail.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Reported-by: Nick Desaulniers <ndesaulniers@google.com>
> Reported-by: Nathan Chancellor <natechancellor@gmail.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Tested-by: Nathan Chancellor <natechancellor@gmail.com>
Thanks for the quick turnaround and help getting this fixed, Jani!
> ---
> drivers/gpu/drm/i915/i915_params.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
> index bd6bd8879cab..8d71886b5f03 100644
> --- a/drivers/gpu/drm/i915/i915_params.c
> +++ b/drivers/gpu/drm/i915/i915_params.c
> @@ -184,7 +184,8 @@ static __always_inline void _print_param(struct drm_printer *p,
> else if (!__builtin_strcmp(type, "char *"))
> drm_printf(p, "i915.%s=%s\n", name, *(const char **)x);
> else
> - BUILD_BUG();
> + WARN_ONCE(1, "no printer defined for param type %s (i915.%s)\n",
> + type, name);
> }
>
> /**
> --
> 2.11.0
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() builds with Clang
2018-10-16 12:29 ` [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() " Jani Nikula
@ 2018-10-16 15:11 ` Nathan Chancellor
2018-10-16 15:18 ` Chris Wilson
2018-10-16 15:35 ` Stephen Boyd
2 siblings, 0 replies; 15+ messages in thread
From: Nathan Chancellor @ 2018-10-16 15:11 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx, swboyd, ndesaulniers
On Tue, Oct 16, 2018 at 03:29:38PM +0300, Jani Nikula wrote:
> Clang build with UBSAN enabled leads to the following build error:
>
> drivers/gpu/drm/i915/intel_engine_cs.o: In function `intel_engine_init_execlist':
> drivers/gpu/drm/i915/intel_engine_cs.c:411: undefined reference to `__compiletime_assert_411'
>
> Again, for this to work the code would first need to be inlined and then
> constant folded, which doesn't work for Clang because semantic analysis
> happens before optimization/inlining.
>
> Use GEM_BUG_ON() instead of BUILD_BUG_ON().
>
> v2: Use is_power_of_2() from log2.h (Chris)
>
> References: http://mid.mail-archive.com/20181015203410.155997-1-swboyd@chromium.org
> Reported-by: Stephen Boyd <swboyd@chromium.org>
> Cc: Stephen Boyd <swboyd@chromium.org>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
Tested-by: Nathan Chancellor <natechancellor@gmail.com>
> drivers/gpu/drm/i915/intel_engine_cs.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
> index f27dbe26bcc1..bc793b0c8806 100644
> --- a/drivers/gpu/drm/i915/intel_engine_cs.c
> +++ b/drivers/gpu/drm/i915/intel_engine_cs.c
> @@ -466,7 +466,7 @@ static void intel_engine_init_execlist(struct intel_engine_cs *engine)
> struct intel_engine_execlists * const execlists = &engine->execlists;
>
> execlists->port_mask = 1;
> - BUILD_BUG_ON_NOT_POWER_OF_2(execlists_num_ports(execlists));
> + GEM_BUG_ON(!is_power_of_2(execlists_num_ports(execlists)));
> GEM_BUG_ON(execlists_num_ports(execlists) > EXECLIST_MAX_PORTS);
>
> execlists->queue_priority = INT_MIN;
> --
> 2.11.0
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/2] drm/i915: Ensure _print_param() builds with Clang
2018-10-16 12:29 [PATCH 1/2] drm/i915: Ensure _print_param() builds with Clang Jani Nikula
` (4 preceding siblings ...)
2018-10-16 15:10 ` [PATCH 1/2] " Nathan Chancellor
@ 2018-10-16 15:16 ` Chris Wilson
2018-10-16 18:38 ` Nick Desaulniers
5 siblings, 1 reply; 15+ messages in thread
From: Chris Wilson @ 2018-10-16 15:16 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula, natechancellor, ndesaulniers, swboyd
Quoting Jani Nikula (2018-10-16 13:29:37)
> When building the kernel with Clang with defconfig and CONFIG_64BIT
> disabled, vmlinux fails to link because of the BUILD_BUG in
> _print_param.
>
> ld: drivers/gpu/drm/i915/i915_params.o: in function `i915_params_dump':
> i915_params.c:(.text+0x56): undefined reference to
> `__compiletime_assert_191'
>
> This function is semantically invalid unless the code is first inlined
> then constant folded, which doesn't work for Clang because semantic
> analysis happens before optimization/inlining.
>
> [The above written by Nathan Chancellor <natechancellor@gmail.com>]
>
> Use WARN_ONCE() instead of BUILD_BUG() to avoid the problem. The
> WARN_ONCE() should get optimized away unless there's a type that's not
> handled by _print_param().
>
> References: https://github.com/ClangBuiltLinux/linux/issues/191
> References: http://mid.mail-archive.com/20181009171401.14980-1-natechancellor@gmail.com
> Cc: Nick Desaulniers <ndesaulniers@google.com>
> Cc: Nathan Chancellor <natechancellor@gmail.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Reported-by: Nick Desaulniers <ndesaulniers@google.com>
> Reported-by: Nathan Chancellor <natechancellor@gmail.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Fair enough,
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() builds with Clang
2018-10-16 12:29 ` [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() " Jani Nikula
2018-10-16 15:11 ` Nathan Chancellor
@ 2018-10-16 15:18 ` Chris Wilson
2018-10-16 15:35 ` Stephen Boyd
2 siblings, 0 replies; 15+ messages in thread
From: Chris Wilson @ 2018-10-16 15:18 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula, natechancellor, ndesaulniers, swboyd
Quoting Jani Nikula (2018-10-16 13:29:38)
> Clang build with UBSAN enabled leads to the following build error:
>
> drivers/gpu/drm/i915/intel_engine_cs.o: In function `intel_engine_init_execlist':
> drivers/gpu/drm/i915/intel_engine_cs.c:411: undefined reference to `__compiletime_assert_411'
>
> Again, for this to work the code would first need to be inlined and then
> constant folded, which doesn't work for Clang because semantic analysis
> happens before optimization/inlining.
>
> Use GEM_BUG_ON() instead of BUILD_BUG_ON().
>
> v2: Use is_power_of_2() from log2.h (Chris)
>
> References: http://mid.mail-archive.com/20181015203410.155997-1-swboyd@chromium.org
> Reported-by: Stephen Boyd <swboyd@chromium.org>
> Cc: Stephen Boyd <swboyd@chromium.org>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() builds with Clang
2018-10-16 12:29 ` [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() " Jani Nikula
2018-10-16 15:11 ` Nathan Chancellor
2018-10-16 15:18 ` Chris Wilson
@ 2018-10-16 15:35 ` Stephen Boyd
2018-10-16 18:33 ` Nick Desaulniers
2 siblings, 1 reply; 15+ messages in thread
From: Stephen Boyd @ 2018-10-16 15:35 UTC (permalink / raw)
To: intel-gfx; +Cc: jani.nikula, natechancellor, ndesaulniers
Quoting Jani Nikula (2018-10-16 05:29:38)
> Clang build with UBSAN enabled leads to the following build error:
>
> drivers/gpu/drm/i915/intel_engine_cs.o: In function `intel_engine_init_execlist':
> drivers/gpu/drm/i915/intel_engine_cs.c:411: undefined reference to `__compiletime_assert_411'
>
> Again, for this to work the code would first need to be inlined and then
> constant folded, which doesn't work for Clang because semantic analysis
> happens before optimization/inlining.
>
> Use GEM_BUG_ON() instead of BUILD_BUG_ON().
>
> v2: Use is_power_of_2() from log2.h (Chris)
>
> References: http://mid.mail-archive.com/20181015203410.155997-1-swboyd@chromium.org
> Reported-by: Stephen Boyd <swboyd@chromium.org>
Tested-by: Stephen Boyd <swboyd@chromium.org>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() builds with Clang
2018-10-16 15:35 ` Stephen Boyd
@ 2018-10-16 18:33 ` Nick Desaulniers
2018-10-17 7:24 ` Jani Nikula
0 siblings, 1 reply; 15+ messages in thread
From: Nick Desaulniers @ 2018-10-16 18:33 UTC (permalink / raw)
To: swboyd; +Cc: jani.nikula, intel-gfx, Nathan Chancellor
On Tue, Oct 16, 2018 at 8:35 AM Stephen Boyd <swboyd@chromium.org> wrote:
>
> Quoting Jani Nikula (2018-10-16 05:29:38)
> > Clang build with UBSAN enabled leads to the following build error:
I'm overjoyed that you're testing this configuration! If you find more
bugs, we're happy to help triage if you let us know about them here:
https://github.com/ClangBuiltLinux/linux/issues.
> >
> > drivers/gpu/drm/i915/intel_engine_cs.o: In function `intel_engine_init_execlist':
> > drivers/gpu/drm/i915/intel_engine_cs.c:411: undefined reference to `__compiletime_assert_411'
> >
> > Again, for this to work the code would first need to be inlined and then
> > constant folded, which doesn't work for Clang because semantic analysis
> > happens before optimization/inlining.
Yep.
> >
> > Use GEM_BUG_ON() instead of BUILD_BUG_ON().
> >
> > v2: Use is_power_of_2() from log2.h (Chris)
> >
> > References: http://mid.mail-archive.com/20181015203410.155997-1-swboyd@chromium.org
> > Reported-by: Stephen Boyd <swboyd@chromium.org>
>
> Tested-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
--
Thanks,
~Nick Desaulniers
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/2] drm/i915: Ensure _print_param() builds with Clang
2018-10-16 15:16 ` Chris Wilson
@ 2018-10-16 18:38 ` Nick Desaulniers
0 siblings, 0 replies; 15+ messages in thread
From: Nick Desaulniers @ 2018-10-16 18:38 UTC (permalink / raw)
To: Chris Wilson; +Cc: jani.nikula, intel-gfx, Nathan Chancellor, swboyd
On Tue, Oct 16, 2018 at 8:18 AM Chris Wilson <chris@chris-wilson.co.uk> wrote:
>
> Quoting Jani Nikula (2018-10-16 13:29:37)
> > When building the kernel with Clang with defconfig and CONFIG_64BIT
> > disabled, vmlinux fails to link because of the BUILD_BUG in
> > _print_param.
> >
> > ld: drivers/gpu/drm/i915/i915_params.o: in function `i915_params_dump':
> > i915_params.c:(.text+0x56): undefined reference to
> > `__compiletime_assert_191'
> >
> > This function is semantically invalid unless the code is first inlined
> > then constant folded, which doesn't work for Clang because semantic
> > analysis happens before optimization/inlining.
> >
> > [The above written by Nathan Chancellor <natechancellor@gmail.com>]
> >
> > Use WARN_ONCE() instead of BUILD_BUG() to avoid the problem. The
> > WARN_ONCE() should get optimized away unless there's a type that's not
> > handled by _print_param().
> >
> > References: https://github.com/ClangBuiltLinux/linux/issues/191
> > References: http://mid.mail-archive.com/20181009171401.14980-1-natechancellor@gmail.com
> > Cc: Nick Desaulniers <ndesaulniers@google.com>
> > Cc: Nathan Chancellor <natechancellor@gmail.com>
> > Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > Reported-by: Nick Desaulniers <ndesaulniers@google.com>
> > Reported-by: Nathan Chancellor <natechancellor@gmail.com>
> > Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>
> Fair enough,
> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
> -Chris
Thanks for the fix, we appreciate it!
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
--
Thanks,
~Nick Desaulniers
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() builds with Clang
2018-10-16 18:33 ` Nick Desaulniers
@ 2018-10-17 7:24 ` Jani Nikula
2018-10-22 21:10 ` Nick Desaulniers
0 siblings, 1 reply; 15+ messages in thread
From: Jani Nikula @ 2018-10-17 7:24 UTC (permalink / raw)
To: Nick Desaulniers, swboyd; +Cc: intel-gfx, Nathan Chancellor
On Tue, 16 Oct 2018, Nick Desaulniers <ndesaulniers@google.com> wrote:
> On Tue, Oct 16, 2018 at 8:35 AM Stephen Boyd <swboyd@chromium.org> wrote:
>>
>> Quoting Jani Nikula (2018-10-16 05:29:38)
>> > Clang build with UBSAN enabled leads to the following build error:
>
> I'm overjoyed that you're testing this configuration! If you find more
> bugs, we're happy to help triage if you let us know about them here:
> https://github.com/ClangBuiltLinux/linux/issues.
Everyone, thanks for the patches/reports, reviews, and testing! These
two have now been pushed to drm-intel-next-queued; due to timing they're
expected to land upstream in the merge window for v4.21 i.e. not the
imminent one. (So much for the quick turnaround! ;)
Also glad to connect you all here. :)
So I don't mind making small concessions to Clang build such as these in
the interest of gaining better static analysis. Our (i915) own pre-merge
build testing uses primarily gcc and sparse, with a bunch of extra flags
(see the top of drivers/gpu/drm/i915/Makefile), but I'm not sure about
adding Clang to the mix anytime soon. Without a tight and constant
feedback loop new issues will pop up though. Maybe we'll spot inline
function use in constant expressions in review, maybe we don't. I'm sure
there are other Clang specific issues.
Do you have any plans for setting up something like the 0day? Without
the feedback loop I think you'll take one step back for every two steps
you progress...
BR,
Jani.
--
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() builds with Clang
2018-10-17 7:24 ` Jani Nikula
@ 2018-10-22 21:10 ` Nick Desaulniers
2018-10-22 21:19 ` Nick Desaulniers
0 siblings, 1 reply; 15+ messages in thread
From: Nick Desaulniers @ 2018-10-22 21:10 UTC (permalink / raw)
To: jani.nikula; +Cc: intel-gfx, Nathan Chancellor, swboyd
On Wed, Oct 17, 2018 at 12:25 AM Jani Nikula <jani.nikula@intel.com> wrote:
>
> On Tue, 16 Oct 2018, Nick Desaulniers <ndesaulniers@google.com> wrote:
> > On Tue, Oct 16, 2018 at 8:35 AM Stephen Boyd <swboyd@chromium.org> wrote:
> >>
> >> Quoting Jani Nikula (2018-10-16 05:29:38)
> >> > Clang build with UBSAN enabled leads to the following build error:
> >
> > I'm overjoyed that you're testing this configuration! If you find more
> > bugs, we're happy to help triage if you let us know about them here:
> > https://github.com/ClangBuiltLinux/linux/issues.
>
> Everyone, thanks for the patches/reports, reviews, and testing! These
> two have now been pushed to drm-intel-next-queued; due to timing they're
> expected to land upstream in the merge window for v4.21 i.e. not the
> imminent one. (So much for the quick turnaround! ;)
>
> Also glad to connect you all here. :)
>
> So I don't mind making small concessions to Clang build such as these in
> the interest of gaining better static analysis. Our (i915) own pre-merge
> build testing uses primarily gcc and sparse, with a bunch of extra flags
> (see the top of drivers/gpu/drm/i915/Makefile), but I'm not sure about
> adding Clang to the mix anytime soon. Without a tight and constant
> feedback loop new issues will pop up though. Maybe we'll spot inline
> function use in constant expressions in review, maybe we don't. I'm sure
> there are other Clang specific issues.
>
> Do you have any plans for setting up something like the 0day? Without
> the feedback loop I think you'll take one step back for every two steps
> you progress...
Yes, I was in contact with Intel's 0day folks (out of Shanghai, I
believe). Unfortunately, the patch requiring asm-goto landed just as
they started looking into supporting clang which really really
derailed things. See
http://lkml.iu.edu/hypermail/linux/kernel/1804.0/00720.html where no
one working on Clang was CC'ed about this.
In the meantime, we've been focusing on arm64 and kernel-ci with
Linaro. More on that soon.
>
> BR,
> Jani.
>
> --
> Jani Nikula, Intel Open Source Graphics Center
--
Thanks,
~Nick Desaulniers
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() builds with Clang
2018-10-22 21:10 ` Nick Desaulniers
@ 2018-10-22 21:19 ` Nick Desaulniers
0 siblings, 0 replies; 15+ messages in thread
From: Nick Desaulniers @ 2018-10-22 21:19 UTC (permalink / raw)
To: jani.nikula; +Cc: intel-gfx, Nathan Chancellor, swboyd
On Mon, Oct 22, 2018 at 2:10 PM Nick Desaulniers
<ndesaulniers@google.com> wrote:
>
> On Wed, Oct 17, 2018 at 12:25 AM Jani Nikula <jani.nikula@intel.com> wrote:
> >
> > On Tue, 16 Oct 2018, Nick Desaulniers <ndesaulniers@google.com> wrote:
> > > On Tue, Oct 16, 2018 at 8:35 AM Stephen Boyd <swboyd@chromium.org> wrote:
> > >>
> > >> Quoting Jani Nikula (2018-10-16 05:29:38)
> > >> > Clang build with UBSAN enabled leads to the following build error:
> > >
> > > I'm overjoyed that you're testing this configuration! If you find more
> > > bugs, we're happy to help triage if you let us know about them here:
> > > https://github.com/ClangBuiltLinux/linux/issues.
> >
> > Everyone, thanks for the patches/reports, reviews, and testing! These
> > two have now been pushed to drm-intel-next-queued; due to timing they're
> > expected to land upstream in the merge window for v4.21 i.e. not the
> > imminent one. (So much for the quick turnaround! ;)
> >
> > Also glad to connect you all here. :)
> >
> > So I don't mind making small concessions to Clang build such as these in
> > the interest of gaining better static analysis. Our (i915) own pre-merge
> > build testing uses primarily gcc and sparse, with a bunch of extra flags
> > (see the top of drivers/gpu/drm/i915/Makefile), but I'm not sure about
> > adding Clang to the mix anytime soon. Without a tight and constant
> > feedback loop new issues will pop up though. Maybe we'll spot inline
> > function use in constant expressions in review, maybe we don't. I'm sure
> > there are other Clang specific issues.
> >
> > Do you have any plans for setting up something like the 0day? Without
> > the feedback loop I think you'll take one step back for every two steps
> > you progress...
>
> Yes, I was in contact with Intel's 0day folks (out of Shanghai, I
> believe). Unfortunately, the patch requiring asm-goto landed just as
> they started looking into supporting clang which really really
> derailed things. See
> http://lkml.iu.edu/hypermail/linux/kernel/1804.0/00720.html where no
> one working on Clang was CC'ed about this.
Sorry, rereading that thread, that's not right. Anyways, going to
reach out to 0day folks again once we finish of asm-goto (WIP).
>
> In the meantime, we've been focusing on arm64 and kernel-ci with
> Linaro. More on that soon.
>
> >
> > BR,
> > Jani.
> >
> > --
> > Jani Nikula, Intel Open Source Graphics Center
>
>
>
> --
> Thanks,
> ~Nick Desaulniers
--
Thanks,
~Nick Desaulniers
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2018-10-22 21:19 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-16 12:29 [PATCH 1/2] drm/i915: Ensure _print_param() builds with Clang Jani Nikula
2018-10-16 12:29 ` [PATCH 2/2] drm/i915: Ensure intel_engine_init_execlist() " Jani Nikula
2018-10-16 15:11 ` Nathan Chancellor
2018-10-16 15:18 ` Chris Wilson
2018-10-16 15:35 ` Stephen Boyd
2018-10-16 18:33 ` Nick Desaulniers
2018-10-17 7:24 ` Jani Nikula
2018-10-22 21:10 ` Nick Desaulniers
2018-10-22 21:19 ` Nick Desaulniers
2018-10-16 12:35 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/i915: Ensure _print_param() " Patchwork
2018-10-16 13:00 ` ✓ Fi.CI.BAT: success " Patchwork
2018-10-16 14:14 ` ✗ Fi.CI.IGT: failure " Patchwork
2018-10-16 15:10 ` [PATCH 1/2] " Nathan Chancellor
2018-10-16 15:16 ` Chris Wilson
2018-10-16 18:38 ` Nick Desaulniers
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.