* [PATCH] drm/i915: Wake up the device for the fbdev setup
@ 2017-09-01 19:54 ville.syrjala
2017-09-01 20:15 ` ✓ Fi.CI.BAT: success for " Patchwork
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: ville.syrjala @ 2017-09-01 19:54 UTC (permalink / raw)
To: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Our fbdev setup requires the device to be awake for access
through the GTT. If one boots without connected displays and
later plugs one in, we won't have any runtime PM references when
the fbdev setup runs. Explicitly grab a runtime PM reference during
the fbdev setup to avoid the following spew:
[ 62.518435] RPM wakelock ref not held during HW access
[ 62.518459] ------------[ cut here ]------------
[ 62.518546] WARNING: CPU: 3 PID: 37 at ../drivers/gpu/drm/i915/intel_drv.h:1800 i915_vma_pin_iomap+0x144/0x150 [i915]
[ 62.518585] Modules linked in: i915 i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm intel_gtt agpgart netconsole nls_iso8859_1 nls_cp437 vfat fat efi_pstore coretemp hwmon intel_rapl x86_pkg_temp_thermal e1000e efivars ptp pps_core video evdev ip_tables x_tables ipv6 autofs4
[ 62.518741] CPU: 3 PID: 37 Comm: kworker/3:1 Not tainted 4.13.0-rc7-skl+ #1077
[ 62.518770] Hardware name: /NUC7i5BNB, BIOS BNKBL357.86A.0048.2017.0704.1415 07/04/2017
[ 62.518827] Workqueue: events i915_hotplug_work_func [i915]
[ 62.518853] task: ffff88046c00dc00 task.stack: ffffc90000184000
[ 62.518896] RIP: 0010:i915_vma_pin_iomap+0x144/0x150 [i915]
[ 62.518919] RSP: 0018:ffffc90000187cc8 EFLAGS: 00010292
[ 62.518942] RAX: 000000000000002a RBX: ffff880460044000 RCX: 0000000000000006
[ 62.518969] RDX: 0000000000000006 RSI: ffffffff819c3e6f RDI: ffffffff819f1c0e
[ 62.518996] RBP: ffffc90000187cd8 R08: ffff88046c00e4f0 R09: 0000000000000000
[ 62.519022] R10: ffff8804669ca800 R11: 0000000000000000 R12: ffff880461d20000
[ 62.519049] R13: ffffc90000187d48 R14: ffff880461d20000 R15: ffff880460044000
[ 62.519076] FS: 0000000000000000(0000) GS:ffff88047ed80000(0000) knlGS:0000000000000000
[ 62.519107] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 62.519130] CR2: 000056478ae213f0 CR3: 0000000002c0f000 CR4: 00000000003406e0
[ 62.519156] Call Trace:
[ 62.519190] intelfb_create+0x176/0x360 [i915]
[ 62.519216] __drm_fb_helper_initial_config_and_unlock+0x1c7/0x3c0 [drm_kms_helper]
[ 62.519251] drm_fb_helper_hotplug_event.part.18+0xac/0xc0 [drm_kms_helper]
[ 62.519282] drm_fb_helper_hotplug_event+0x1a/0x20 [drm_kms_helper]
[ 62.519324] intel_fbdev_output_poll_changed+0x1a/0x20 [i915]
[ 62.519352] drm_kms_helper_hotplug_event+0x27/0x30 [drm_kms_helper]
[ 62.519395] i915_hotplug_work_func+0x24e/0x2b0 [i915]
[ 62.519420] process_one_work+0x1d3/0x6d0
[ 62.519440] worker_thread+0x4b/0x400
[ 62.519458] ? schedule+0x4a/0x90
[ 62.519475] ? preempt_count_sub+0x97/0xf0
[ 62.519495] kthread+0x114/0x150
[ 62.519511] ? process_one_work+0x6d0/0x6d0
[ 62.519530] ? kthread_create_on_node+0x40/0x40
[ 62.519551] ret_from_fork+0x27/0x40
[ 62.519569] Code: c4 78 e6 e0 0f ff e9 08 ff ff ff 80 3d d5 bc 0c 00 00 0f 85 0b ff ff ff 48 c7 c7 d8 50 32 a0 c6 05 c1 bc 0c 00 01 e8 9d 78 e6 e0 <0f> ff e9 f1 fe ff ff 0f 1f 44 00 00 0f 1f 44 00 00 0f b6 87 98
[ 62.519771] ---[ end trace 5fbe271f991a58ae ]---
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/intel_fbdev.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
index 262e75c00dd2..f2bb8116227c 100644
--- a/drivers/gpu/drm/i915/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/intel_fbdev.c
@@ -206,6 +206,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
}
mutex_lock(&dev->struct_mutex);
+ intel_runtime_pm_get(dev_priv);
/* Pin the GGTT vma for our access via info->screen_base.
* This also validates that any existing fb inherited from the
@@ -269,6 +270,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
fb->width, fb->height, i915_ggtt_offset(vma));
ifbdev->vma = vma;
+ intel_runtime_pm_put(dev_priv);
mutex_unlock(&dev->struct_mutex);
vga_switcheroo_client_fb_set(pdev, info);
return 0;
@@ -276,6 +278,7 @@ static int intelfb_create(struct drm_fb_helper *helper,
out_unpin:
intel_unpin_fb_vma(vma);
out_unlock:
+ intel_runtime_pm_put(dev_priv);
mutex_unlock(&dev->struct_mutex);
return ret;
}
--
2.13.5
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 5+ messages in thread
* ✓ Fi.CI.BAT: success for drm/i915: Wake up the device for the fbdev setup
2017-09-01 19:54 [PATCH] drm/i915: Wake up the device for the fbdev setup ville.syrjala
@ 2017-09-01 20:15 ` Patchwork
2017-09-02 2:32 ` ✓ Fi.CI.IGT: " Patchwork
2017-09-03 12:18 ` [PATCH] " Chris Wilson
2 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2017-09-01 20:15 UTC (permalink / raw)
To: ville.syrjala; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: Wake up the device for the fbdev setup
URL : https://patchwork.freedesktop.org/series/29726/
State : success
== Summary ==
Series 29726v1 drm/i915: Wake up the device for the fbdev setup
https://patchwork.freedesktop.org/api/1.0/series/29726/revisions/1/mbox/
Test kms_cursor_legacy:
Subgroup basic-busy-flip-before-cursor-legacy:
fail -> PASS (fi-snb-2600) fdo#100215
fdo#100215 https://bugs.freedesktop.org/show_bug.cgi?id=100215
fi-bdw-5557u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:452s
fi-bdw-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:438s
fi-blb-e6850 total:288 pass:224 dwarn:1 dfail:0 fail:0 skip:63 time:361s
fi-bsw-n3050 total:288 pass:243 dwarn:0 dfail:0 fail:0 skip:45 time:552s
fi-bwr-2160 total:288 pass:184 dwarn:0 dfail:0 fail:0 skip:104 time:254s
fi-bxt-j4205 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:518s
fi-byt-j1900 total:288 pass:254 dwarn:1 dfail:0 fail:0 skip:33 time:519s
fi-byt-n2820 total:288 pass:251 dwarn:0 dfail:0 fail:0 skip:37 time:521s
fi-elk-e7500 total:288 pass:230 dwarn:0 dfail:0 fail:0 skip:58 time:437s
fi-glk-2a total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:619s
fi-hsw-4770 total:288 pass:263 dwarn:0 dfail:0 fail:0 skip:25 time:444s
fi-hsw-4770r total:288 pass:263 dwarn:0 dfail:0 fail:0 skip:25 time:424s
fi-ilk-650 total:288 pass:229 dwarn:0 dfail:0 fail:0 skip:59 time:422s
fi-ivb-3520m total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:505s
fi-ivb-3770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:477s
fi-kbl-7500u total:288 pass:264 dwarn:1 dfail:0 fail:0 skip:23 time:515s
fi-kbl-7560u total:288 pass:269 dwarn:0 dfail:0 fail:0 skip:19 time:594s
fi-kbl-r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:601s
fi-pnv-d510 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:530s
fi-skl-6260u total:288 pass:269 dwarn:0 dfail:0 fail:0 skip:19 time:468s
fi-skl-6700k total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:536s
fi-skl-6770hq total:288 pass:269 dwarn:0 dfail:0 fail:0 skip:19 time:491s
fi-skl-gvtdvm total:288 pass:266 dwarn:0 dfail:0 fail:0 skip:22 time:440s
fi-skl-x1585l total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:487s
fi-snb-2520m total:288 pass:251 dwarn:0 dfail:0 fail:0 skip:37 time:554s
fi-snb-2600 total:288 pass:250 dwarn:0 dfail:0 fail:0 skip:38 time:406s
5f8335a1a74c46e7a89e1b98f8c6320937b8524a drm-tip: 2017y-09m-01d-19h-10m-49s UTC integration manifest
85d53f95cd9e drm/i915: Wake up the device for the fbdev setup
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_5571/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 5+ messages in thread
* ✓ Fi.CI.IGT: success for drm/i915: Wake up the device for the fbdev setup
2017-09-01 19:54 [PATCH] drm/i915: Wake up the device for the fbdev setup ville.syrjala
2017-09-01 20:15 ` ✓ Fi.CI.BAT: success for " Patchwork
@ 2017-09-02 2:32 ` Patchwork
2017-09-03 12:18 ` [PATCH] " Chris Wilson
2 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2017-09-02 2:32 UTC (permalink / raw)
To: ville.syrjala; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: Wake up the device for the fbdev setup
URL : https://patchwork.freedesktop.org/series/29726/
State : success
== Summary ==
shard-hsw total:2263 pass:1231 dwarn:0 dfail:0 fail:16 skip:1015 time:9411s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_5571/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] drm/i915: Wake up the device for the fbdev setup
2017-09-01 19:54 [PATCH] drm/i915: Wake up the device for the fbdev setup ville.syrjala
2017-09-01 20:15 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-09-02 2:32 ` ✓ Fi.CI.IGT: " Patchwork
@ 2017-09-03 12:18 ` Chris Wilson
2017-09-04 17:01 ` Ville Syrjälä
2 siblings, 1 reply; 5+ messages in thread
From: Chris Wilson @ 2017-09-03 12:18 UTC (permalink / raw)
To: ville.syrjala, intel-gfx
Quoting ville.syrjala@linux.intel.com (2017-09-01 20:54:56)
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Our fbdev setup requires the device to be awake for access
> through the GTT. If one boots without connected displays and
> later plugs one in, we won't have any runtime PM references when
> the fbdev setup runs. Explicitly grab a runtime PM reference during
> the fbdev setup to avoid the following spew:
>
> [ 62.518435] RPM wakelock ref not held during HW access
> [ 62.518459] ------------[ cut here ]------------
> [ 62.518546] WARNING: CPU: 3 PID: 37 at ../drivers/gpu/drm/i915/intel_drv.h:1800 i915_vma_pin_iomap+0x144/0x150 [i915]
> [ 62.518585] Modules linked in: i915 i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm intel_gtt agpgart netconsole nls_iso8859_1 nls_cp437 vfat fat efi_pstore coretemp hwmon intel_rapl x86_pkg_temp_thermal e1000e efivars ptp pps_core video evdev ip_tables x_tables ipv6 autofs4
> [ 62.518741] CPU: 3 PID: 37 Comm: kworker/3:1 Not tainted 4.13.0-rc7-skl+ #1077
> [ 62.518770] Hardware name: /NUC7i5BNB, BIOS BNKBL357.86A.0048.2017.0704.1415 07/04/2017
> [ 62.518827] Workqueue: events i915_hotplug_work_func [i915]
> [ 62.518853] task: ffff88046c00dc00 task.stack: ffffc90000184000
> [ 62.518896] RIP: 0010:i915_vma_pin_iomap+0x144/0x150 [i915]
> [ 62.518919] RSP: 0018:ffffc90000187cc8 EFLAGS: 00010292
> [ 62.518942] RAX: 000000000000002a RBX: ffff880460044000 RCX: 0000000000000006
> [ 62.518969] RDX: 0000000000000006 RSI: ffffffff819c3e6f RDI: ffffffff819f1c0e
> [ 62.518996] RBP: ffffc90000187cd8 R08: ffff88046c00e4f0 R09: 0000000000000000
> [ 62.519022] R10: ffff8804669ca800 R11: 0000000000000000 R12: ffff880461d20000
> [ 62.519049] R13: ffffc90000187d48 R14: ffff880461d20000 R15: ffff880460044000
> [ 62.519076] FS: 0000000000000000(0000) GS:ffff88047ed80000(0000) knlGS:0000000000000000
> [ 62.519107] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 62.519130] CR2: 000056478ae213f0 CR3: 0000000002c0f000 CR4: 00000000003406e0
> [ 62.519156] Call Trace:
> [ 62.519190] intelfb_create+0x176/0x360 [i915]
> [ 62.519216] __drm_fb_helper_initial_config_and_unlock+0x1c7/0x3c0 [drm_kms_helper]
> [ 62.519251] drm_fb_helper_hotplug_event.part.18+0xac/0xc0 [drm_kms_helper]
> [ 62.519282] drm_fb_helper_hotplug_event+0x1a/0x20 [drm_kms_helper]
> [ 62.519324] intel_fbdev_output_poll_changed+0x1a/0x20 [i915]
> [ 62.519352] drm_kms_helper_hotplug_event+0x27/0x30 [drm_kms_helper]
> [ 62.519395] i915_hotplug_work_func+0x24e/0x2b0 [i915]
> [ 62.519420] process_one_work+0x1d3/0x6d0
> [ 62.519440] worker_thread+0x4b/0x400
> [ 62.519458] ? schedule+0x4a/0x90
> [ 62.519475] ? preempt_count_sub+0x97/0xf0
> [ 62.519495] kthread+0x114/0x150
> [ 62.519511] ? process_one_work+0x6d0/0x6d0
> [ 62.519530] ? kthread_create_on_node+0x40/0x40
> [ 62.519551] ret_from_fork+0x27/0x40
> [ 62.519569] Code: c4 78 e6 e0 0f ff e9 08 ff ff ff 80 3d d5 bc 0c 00 00 0f 85 0b ff ff ff 48 c7 c7 d8 50 32 a0 c6 05 c1 bc 0c 00 01 e8 9d 78 e6 e0 <0f> ff e9 f1 fe ff ff 0f 1f 44 00 00 0f 1f 44 00 00 0f b6 87 98
> [ 62.519771] ---[ end trace 5fbe271f991a58ae ]---
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Ah right, the current code only works because it assumes the fbcon is
active on the display (thus holding a wakeref) anytime it writes through
the fbdev's GGTT iomapping. This is one instance where we need GGTT access
before the fbcon controls the display, hence needs an explicit wakeref.
intel_fbdev_set_suspend() is also outside of the fbcon control, I
presume that (memset_io) works because we hold a wakeref whilst doing
suspend/resume.
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] 5+ messages in thread
* Re: [PATCH] drm/i915: Wake up the device for the fbdev setup
2017-09-03 12:18 ` [PATCH] " Chris Wilson
@ 2017-09-04 17:01 ` Ville Syrjälä
0 siblings, 0 replies; 5+ messages in thread
From: Ville Syrjälä @ 2017-09-04 17:01 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx
On Sun, Sep 03, 2017 at 01:18:40PM +0100, Chris Wilson wrote:
> Quoting ville.syrjala@linux.intel.com (2017-09-01 20:54:56)
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Our fbdev setup requires the device to be awake for access
> > through the GTT. If one boots without connected displays and
> > later plugs one in, we won't have any runtime PM references when
> > the fbdev setup runs. Explicitly grab a runtime PM reference during
> > the fbdev setup to avoid the following spew:
> >
> > [ 62.518435] RPM wakelock ref not held during HW access
> > [ 62.518459] ------------[ cut here ]------------
> > [ 62.518546] WARNING: CPU: 3 PID: 37 at ../drivers/gpu/drm/i915/intel_drv.h:1800 i915_vma_pin_iomap+0x144/0x150 [i915]
> > [ 62.518585] Modules linked in: i915 i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm intel_gtt agpgart netconsole nls_iso8859_1 nls_cp437 vfat fat efi_pstore coretemp hwmon intel_rapl x86_pkg_temp_thermal e1000e efivars ptp pps_core video evdev ip_tables x_tables ipv6 autofs4
> > [ 62.518741] CPU: 3 PID: 37 Comm: kworker/3:1 Not tainted 4.13.0-rc7-skl+ #1077
> > [ 62.518770] Hardware name: /NUC7i5BNB, BIOS BNKBL357.86A.0048.2017.0704.1415 07/04/2017
> > [ 62.518827] Workqueue: events i915_hotplug_work_func [i915]
> > [ 62.518853] task: ffff88046c00dc00 task.stack: ffffc90000184000
> > [ 62.518896] RIP: 0010:i915_vma_pin_iomap+0x144/0x150 [i915]
> > [ 62.518919] RSP: 0018:ffffc90000187cc8 EFLAGS: 00010292
> > [ 62.518942] RAX: 000000000000002a RBX: ffff880460044000 RCX: 0000000000000006
> > [ 62.518969] RDX: 0000000000000006 RSI: ffffffff819c3e6f RDI: ffffffff819f1c0e
> > [ 62.518996] RBP: ffffc90000187cd8 R08: ffff88046c00e4f0 R09: 0000000000000000
> > [ 62.519022] R10: ffff8804669ca800 R11: 0000000000000000 R12: ffff880461d20000
> > [ 62.519049] R13: ffffc90000187d48 R14: ffff880461d20000 R15: ffff880460044000
> > [ 62.519076] FS: 0000000000000000(0000) GS:ffff88047ed80000(0000) knlGS:0000000000000000
> > [ 62.519107] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > [ 62.519130] CR2: 000056478ae213f0 CR3: 0000000002c0f000 CR4: 00000000003406e0
> > [ 62.519156] Call Trace:
> > [ 62.519190] intelfb_create+0x176/0x360 [i915]
> > [ 62.519216] __drm_fb_helper_initial_config_and_unlock+0x1c7/0x3c0 [drm_kms_helper]
> > [ 62.519251] drm_fb_helper_hotplug_event.part.18+0xac/0xc0 [drm_kms_helper]
> > [ 62.519282] drm_fb_helper_hotplug_event+0x1a/0x20 [drm_kms_helper]
> > [ 62.519324] intel_fbdev_output_poll_changed+0x1a/0x20 [i915]
> > [ 62.519352] drm_kms_helper_hotplug_event+0x27/0x30 [drm_kms_helper]
> > [ 62.519395] i915_hotplug_work_func+0x24e/0x2b0 [i915]
> > [ 62.519420] process_one_work+0x1d3/0x6d0
> > [ 62.519440] worker_thread+0x4b/0x400
> > [ 62.519458] ? schedule+0x4a/0x90
> > [ 62.519475] ? preempt_count_sub+0x97/0xf0
> > [ 62.519495] kthread+0x114/0x150
> > [ 62.519511] ? process_one_work+0x6d0/0x6d0
> > [ 62.519530] ? kthread_create_on_node+0x40/0x40
> > [ 62.519551] ret_from_fork+0x27/0x40
> > [ 62.519569] Code: c4 78 e6 e0 0f ff e9 08 ff ff ff 80 3d d5 bc 0c 00 00 0f 85 0b ff ff ff 48 c7 c7 d8 50 32 a0 c6 05 c1 bc 0c 00 01 e8 9d 78 e6 e0 <0f> ff e9 f1 fe ff ff 0f 1f 44 00 00 0f 1f 44 00 00 0f b6 87 98
> > [ 62.519771] ---[ end trace 5fbe271f991a58ae ]---
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Ah right, the current code only works because it assumes the fbcon is
> active on the display (thus holding a wakeref) anytime it writes through
> the fbdev's GGTT iomapping. This is one instance where we need GGTT access
> before the fbcon controls the display, hence needs an explicit wakeref.
>
> intel_fbdev_set_suspend() is also outside of the fbcon control, I
> presume that (memset_io) works because we hold a wakeref whilst doing
> suspend/resume.
>
> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Thanks. Pushed to dinq.
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-09-04 17:01 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-01 19:54 [PATCH] drm/i915: Wake up the device for the fbdev setup ville.syrjala
2017-09-01 20:15 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-09-02 2:32 ` ✓ Fi.CI.IGT: " Patchwork
2017-09-03 12:18 ` [PATCH] " Chris Wilson
2017-09-04 17:01 ` Ville Syrjälä
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.