* [PATCH] platform/chrome: Add pstore platform_device @ 2013-11-25 19:37 Olof Johansson 2013-11-25 19:52 ` Felipe Balbi 2013-11-25 20:04 ` Randy Dunlap 0 siblings, 2 replies; 6+ messages in thread From: Olof Johansson @ 2013-11-25 19:37 UTC (permalink / raw) To: linux-kernel; +Cc: keescook, bleung, Olof Johansson Add the ramoops pstore device so that we get logs of panics across reboots. Signed-off-by: Olof Johansson <olof@lixom.net> --- drivers/platform/chrome/Kconfig | 14 +++++ drivers/platform/chrome/Makefile | 1 + drivers/platform/chrome/chromeos_pstore.c | 101 ++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 drivers/platform/chrome/chromeos_pstore.c diff --git a/drivers/platform/chrome/Kconfig b/drivers/platform/chrome/Kconfig index b13303e75a34..06c53c8132ad 100644 --- a/drivers/platform/chrome/Kconfig +++ b/drivers/platform/chrome/Kconfig @@ -25,4 +25,18 @@ config CHROMEOS_LAPTOP If you have a supported Chromebook, choose Y or M here. The module will be called chromeos_laptop. +config CHROMEOS_PSTORE + tristate "Chrome OS pstore support" + ---help--- + This module instantiates the persistent storage on x86 ChromeOS + devices. It can be used to store away console logs and crash + information across reboots. + + The range of memory used is 0xf00000-0x1000000, tradionally the + memory used to back VGA controller memory. + + If you have a supported Chromebook, choose Y or M here. + The module will be called chromeos_pstore. + + endif # CHROMEOS_PLATFORMS diff --git a/drivers/platform/chrome/Makefile b/drivers/platform/chrome/Makefile index 015e9195e226..2b860ca7450f 100644 --- a/drivers/platform/chrome/Makefile +++ b/drivers/platform/chrome/Makefile @@ -1,2 +1,3 @@ obj-$(CONFIG_CHROMEOS_LAPTOP) += chromeos_laptop.o +obj-$(CONFIG_CHROMEOS_PSTORE) += chromeos_pstore.o diff --git a/drivers/platform/chrome/chromeos_pstore.c b/drivers/platform/chrome/chromeos_pstore.c new file mode 100644 index 000000000000..e0e0e65cf442 --- /dev/null +++ b/drivers/platform/chrome/chromeos_pstore.c @@ -0,0 +1,101 @@ +/* + * chromeos_pstore.c - Driver to instantiate Chromebook ramoops device + * + * Copyright (C) 2013 Google, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 of the License. + */ + +#include <linux/dmi.h> +#include <linux/module.h> +#include <linux/platform_device.h> +#include <linux/pstore_ram.h> + +static struct dmi_system_id chromeos_pstore_dmi_table[] __initdata = { + { + /* + * Today all Chromebooks/boxes ship with GOOGLE as vendor and + * coreboot as bios vendor. No other systems with this + * combination are known to date. + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"), + DMI_MATCH(DMI_BIOS_VENDOR, "coreboot"), + }, + }, + { + /* + * The first Samsung Chromebox and Chromebook Series 5 550 use + * coreboot but with Samsung as the system vendor. + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG"), + DMI_MATCH(DMI_BIOS_VENDOR, "coreboot"), + }, + }, + { + /* x86-alex, the first Samsung Chromebook. */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "Alex"), + }, + }, + { + /* x86-mario, the Cr-48 pilot device from Google. */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "IEC"), + DMI_MATCH(DMI_PRODUCT_NAME, "Mario"), + }, + }, + { + /* x86-zgb, the first Acer Chromebook. */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ACER"), + DMI_MATCH(DMI_PRODUCT_NAME, "ZGB"), + }, + }, + { } +}; +MODULE_DEVICE_TABLE(dmi, chromeos_pstore_dmi_table); + +/* + * On x86 chromebooks/boxes, the firmware will keep the legacy VGA memory + * range untouched across reboots, so we use that to store our pstore + * contents for panic logs, etc. + */ +static struct ramoops_platform_data chromeos_ramoops_data = { + .mem_size = 0x100000, + .mem_address = 0xf00000, + .record_size = 0x20000, + .console_size = 0x20000, + .ftrace_size = 0x20000, + .dump_oops = 1, +}; + +static struct platform_device chromeos_ramoops = { + .name = "ramoops", + .dev = { + .platform_data = &chromeos_ramoops_data, + }, +}; + +static int __init chromeos_pstore_init(void) +{ + if (dmi_check_system(chromeos_pstore_dmi_table)) + return platform_device_register(&chromeos_ramoops); + + return -ENODEV; +} + +static void __exit chromeos_pstore_exit(void) +{ + platform_device_unregister(&chromeos_ramoops); +} + +module_init(chromeos_pstore_init); +module_exit(chromeos_pstore_exit); + +MODULE_DESCRIPTION("Chrome OS pstore module"); +MODULE_LICENSE("GPL"); -- 1.8.4.1.601.g02b3b1d ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] platform/chrome: Add pstore platform_device 2013-11-25 19:37 [PATCH] platform/chrome: Add pstore platform_device Olof Johansson @ 2013-11-25 19:52 ` Felipe Balbi 2013-11-25 19:59 ` Olof Johansson 2013-11-25 20:04 ` Randy Dunlap 1 sibling, 1 reply; 6+ messages in thread From: Felipe Balbi @ 2013-11-25 19:52 UTC (permalink / raw) To: Olof Johansson; +Cc: linux-kernel, keescook, bleung [-- Attachment #1: Type: text/plain, Size: 4900 bytes --] Hi, On Mon, Nov 25, 2013 at 11:37:06AM -0800, Olof Johansson wrote: > Add the ramoops pstore device so that we get logs of panics across reboots. > > Signed-off-by: Olof Johansson <olof@lixom.net> > --- > > drivers/platform/chrome/Kconfig | 14 +++++ > drivers/platform/chrome/Makefile | 1 + > drivers/platform/chrome/chromeos_pstore.c | 101 ++++++++++++++++++++++++++++++ > 3 files changed, 116 insertions(+) > create mode 100644 drivers/platform/chrome/chromeos_pstore.c > > diff --git a/drivers/platform/chrome/Kconfig b/drivers/platform/chrome/Kconfig > index b13303e75a34..06c53c8132ad 100644 > --- a/drivers/platform/chrome/Kconfig > +++ b/drivers/platform/chrome/Kconfig > @@ -25,4 +25,18 @@ config CHROMEOS_LAPTOP > If you have a supported Chromebook, choose Y or M here. > The module will be called chromeos_laptop. > > +config CHROMEOS_PSTORE > + tristate "Chrome OS pstore support" > + ---help--- > + This module instantiates the persistent storage on x86 ChromeOS > + devices. It can be used to store away console logs and crash > + information across reboots. > + > + The range of memory used is 0xf00000-0x1000000, tradionally the > + memory used to back VGA controller memory. > + > + If you have a supported Chromebook, choose Y or M here. > + The module will be called chromeos_pstore. > + > + > endif # CHROMEOS_PLATFORMS > diff --git a/drivers/platform/chrome/Makefile b/drivers/platform/chrome/Makefile > index 015e9195e226..2b860ca7450f 100644 > --- a/drivers/platform/chrome/Makefile > +++ b/drivers/platform/chrome/Makefile > @@ -1,2 +1,3 @@ > > obj-$(CONFIG_CHROMEOS_LAPTOP) += chromeos_laptop.o > +obj-$(CONFIG_CHROMEOS_PSTORE) += chromeos_pstore.o > diff --git a/drivers/platform/chrome/chromeos_pstore.c b/drivers/platform/chrome/chromeos_pstore.c > new file mode 100644 > index 000000000000..e0e0e65cf442 > --- /dev/null > +++ b/drivers/platform/chrome/chromeos_pstore.c > @@ -0,0 +1,101 @@ > +/* > + * chromeos_pstore.c - Driver to instantiate Chromebook ramoops device > + * > + * Copyright (C) 2013 Google, Inc. > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation, version 2 of the License. > + */ > + > +#include <linux/dmi.h> > +#include <linux/module.h> > +#include <linux/platform_device.h> > +#include <linux/pstore_ram.h> > + > +static struct dmi_system_id chromeos_pstore_dmi_table[] __initdata = { > + { > + /* > + * Today all Chromebooks/boxes ship with GOOGLE as vendor and > + * coreboot as bios vendor. No other systems with this > + * combination are known to date. > + */ > + .matches = { > + DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"), > + DMI_MATCH(DMI_BIOS_VENDOR, "coreboot"), > + }, > + }, > + { > + /* > + * The first Samsung Chromebox and Chromebook Series 5 550 use > + * coreboot but with Samsung as the system vendor. > + */ > + .matches = { > + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG"), > + DMI_MATCH(DMI_BIOS_VENDOR, "coreboot"), > + }, > + }, > + { > + /* x86-alex, the first Samsung Chromebook. */ > + .matches = { > + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), > + DMI_MATCH(DMI_PRODUCT_NAME, "Alex"), > + }, > + }, > + { > + /* x86-mario, the Cr-48 pilot device from Google. */ > + .matches = { > + DMI_MATCH(DMI_SYS_VENDOR, "IEC"), > + DMI_MATCH(DMI_PRODUCT_NAME, "Mario"), > + }, > + }, > + { > + /* x86-zgb, the first Acer Chromebook. */ > + .matches = { > + DMI_MATCH(DMI_SYS_VENDOR, "ACER"), > + DMI_MATCH(DMI_PRODUCT_NAME, "ZGB"), > + }, > + }, > + { } > +}; > +MODULE_DEVICE_TABLE(dmi, chromeos_pstore_dmi_table); if you have this ... > +/* > + * On x86 chromebooks/boxes, the firmware will keep the legacy VGA memory > + * range untouched across reboots, so we use that to store our pstore > + * contents for panic logs, etc. > + */ > +static struct ramoops_platform_data chromeos_ramoops_data = { > + .mem_size = 0x100000, > + .mem_address = 0xf00000, > + .record_size = 0x20000, > + .console_size = 0x20000, > + .ftrace_size = 0x20000, > + .dump_oops = 1, > +}; > + > +static struct platform_device chromeos_ramoops = { > + .name = "ramoops", > + .dev = { > + .platform_data = &chromeos_ramoops_data, > + }, > +}; > + > +static int __init chromeos_pstore_init(void) > +{ > + if (dmi_check_system(chromeos_pstore_dmi_table)) is this check really necessary ? I would assume that your probe would only be called if the device matches the dmi MODULE_DEVICE_TABLE(). Except that you don't have a probe function which is quite odd. Also, there's nothing using chromeos_ramoops_data, how does this work ? cheers -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] platform/chrome: Add pstore platform_device 2013-11-25 19:52 ` Felipe Balbi @ 2013-11-25 19:59 ` Olof Johansson 2013-11-25 20:03 ` Felipe Balbi 0 siblings, 1 reply; 6+ messages in thread From: Olof Johansson @ 2013-11-25 19:59 UTC (permalink / raw) To: Felipe Balbi; +Cc: linux-kernel@vger.kernel.org, Kees Cook, Benson Leung On Mon, Nov 25, 2013 at 11:52 AM, Felipe Balbi <balbi@ti.com> wrote: > Hi, > > On Mon, Nov 25, 2013 at 11:37:06AM -0800, Olof Johansson wrote: >> Add the ramoops pstore device so that we get logs of panics across reboots. >> >> Signed-off-by: Olof Johansson <olof@lixom.net> >> --- >> >> drivers/platform/chrome/Kconfig | 14 +++++ >> drivers/platform/chrome/Makefile | 1 + >> drivers/platform/chrome/chromeos_pstore.c | 101 ++++++++++++++++++++++++++++++ >> 3 files changed, 116 insertions(+) >> create mode 100644 drivers/platform/chrome/chromeos_pstore.c >> >> diff --git a/drivers/platform/chrome/Kconfig b/drivers/platform/chrome/Kconfig >> index b13303e75a34..06c53c8132ad 100644 >> --- a/drivers/platform/chrome/Kconfig >> +++ b/drivers/platform/chrome/Kconfig >> @@ -25,4 +25,18 @@ config CHROMEOS_LAPTOP >> If you have a supported Chromebook, choose Y or M here. >> The module will be called chromeos_laptop. >> >> +config CHROMEOS_PSTORE >> + tristate "Chrome OS pstore support" >> + ---help--- >> + This module instantiates the persistent storage on x86 ChromeOS >> + devices. It can be used to store away console logs and crash >> + information across reboots. >> + >> + The range of memory used is 0xf00000-0x1000000, tradionally the >> + memory used to back VGA controller memory. >> + >> + If you have a supported Chromebook, choose Y or M here. >> + The module will be called chromeos_pstore. >> + >> + >> endif # CHROMEOS_PLATFORMS >> diff --git a/drivers/platform/chrome/Makefile b/drivers/platform/chrome/Makefile >> index 015e9195e226..2b860ca7450f 100644 >> --- a/drivers/platform/chrome/Makefile >> +++ b/drivers/platform/chrome/Makefile >> @@ -1,2 +1,3 @@ >> >> obj-$(CONFIG_CHROMEOS_LAPTOP) += chromeos_laptop.o >> +obj-$(CONFIG_CHROMEOS_PSTORE) += chromeos_pstore.o >> diff --git a/drivers/platform/chrome/chromeos_pstore.c b/drivers/platform/chrome/chromeos_pstore.c >> new file mode 100644 >> index 000000000000..e0e0e65cf442 >> --- /dev/null >> +++ b/drivers/platform/chrome/chromeos_pstore.c >> @@ -0,0 +1,101 @@ >> +/* >> + * chromeos_pstore.c - Driver to instantiate Chromebook ramoops device >> + * >> + * Copyright (C) 2013 Google, Inc. >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License as published by >> + * the Free Software Foundation, version 2 of the License. >> + */ >> + >> +#include <linux/dmi.h> >> +#include <linux/module.h> >> +#include <linux/platform_device.h> >> +#include <linux/pstore_ram.h> >> + >> +static struct dmi_system_id chromeos_pstore_dmi_table[] __initdata = { >> + { >> + /* >> + * Today all Chromebooks/boxes ship with GOOGLE as vendor and >> + * coreboot as bios vendor. No other systems with this >> + * combination are known to date. >> + */ >> + .matches = { >> + DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"), >> + DMI_MATCH(DMI_BIOS_VENDOR, "coreboot"), >> + }, >> + }, >> + { >> + /* >> + * The first Samsung Chromebox and Chromebook Series 5 550 use >> + * coreboot but with Samsung as the system vendor. >> + */ >> + .matches = { >> + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG"), >> + DMI_MATCH(DMI_BIOS_VENDOR, "coreboot"), >> + }, >> + }, >> + { >> + /* x86-alex, the first Samsung Chromebook. */ >> + .matches = { >> + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), >> + DMI_MATCH(DMI_PRODUCT_NAME, "Alex"), >> + }, >> + }, >> + { >> + /* x86-mario, the Cr-48 pilot device from Google. */ >> + .matches = { >> + DMI_MATCH(DMI_SYS_VENDOR, "IEC"), >> + DMI_MATCH(DMI_PRODUCT_NAME, "Mario"), >> + }, >> + }, >> + { >> + /* x86-zgb, the first Acer Chromebook. */ >> + .matches = { >> + DMI_MATCH(DMI_SYS_VENDOR, "ACER"), >> + DMI_MATCH(DMI_PRODUCT_NAME, "ZGB"), >> + }, >> + }, >> + { } >> +}; >> +MODULE_DEVICE_TABLE(dmi, chromeos_pstore_dmi_table); > > if you have this ... > >> +/* >> + * On x86 chromebooks/boxes, the firmware will keep the legacy VGA memory >> + * range untouched across reboots, so we use that to store our pstore >> + * contents for panic logs, etc. >> + */ >> +static struct ramoops_platform_data chromeos_ramoops_data = { >> + .mem_size = 0x100000, >> + .mem_address = 0xf00000, >> + .record_size = 0x20000, >> + .console_size = 0x20000, >> + .ftrace_size = 0x20000, >> + .dump_oops = 1, >> +}; >> + >> +static struct platform_device chromeos_ramoops = { >> + .name = "ramoops", >> + .dev = { >> + .platform_data = &chromeos_ramoops_data, >> + }, >> +}; >> + >> +static int __init chromeos_pstore_init(void) >> +{ >> + if (dmi_check_system(chromeos_pstore_dmi_table)) > > is this check really necessary ? I would assume that your probe would > only be called if the device matches the dmi MODULE_DEVICE_TABLE(). > > Except that you don't have a probe function which is quite odd. Also, > there's nothing using chromeos_ramoops_data, how does this work ? This is just a module that registers the device. The driver side is handled by pstore. See Documentation/ramoops.txt. That's also why the DMI table is needed: The module init is generic, and if built-in instead of loaded based on DMI table contents, it will always run. There's no specific device to bind against, since there's none in the tables passed in from firmware in this case. -Olof ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] platform/chrome: Add pstore platform_device 2013-11-25 19:59 ` Olof Johansson @ 2013-11-25 20:03 ` Felipe Balbi 0 siblings, 0 replies; 6+ messages in thread From: Felipe Balbi @ 2013-11-25 20:03 UTC (permalink / raw) To: Olof Johansson Cc: Felipe Balbi, linux-kernel@vger.kernel.org, Kees Cook, Benson Leung [-- Attachment #1: Type: text/plain, Size: 948 bytes --] Hi, On Mon, Nov 25, 2013 at 11:59:50AM -0800, Olof Johansson wrote: > >> +static int __init chromeos_pstore_init(void) > >> +{ > >> + if (dmi_check_system(chromeos_pstore_dmi_table)) > > > > is this check really necessary ? I would assume that your probe would > > only be called if the device matches the dmi MODULE_DEVICE_TABLE(). > > > > Except that you don't have a probe function which is quite odd. Also, > > there's nothing using chromeos_ramoops_data, how does this work ? > > This is just a module that registers the device. The driver side is > handled by pstore. See Documentation/ramoops.txt. > > That's also why the DMI table is needed: The module init is generic, > and if built-in instead of loaded based on DMI table contents, it will > always run. There's no specific device to bind against, since there's > none in the tables passed in from firmware in this case. I see now, thanks :-) -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] platform/chrome: Add pstore platform_device 2013-11-25 19:37 [PATCH] platform/chrome: Add pstore platform_device Olof Johansson 2013-11-25 19:52 ` Felipe Balbi @ 2013-11-25 20:04 ` Randy Dunlap 2013-11-25 20:49 ` Olof Johansson 1 sibling, 1 reply; 6+ messages in thread From: Randy Dunlap @ 2013-11-25 20:04 UTC (permalink / raw) To: Olof Johansson, linux-kernel; +Cc: keescook, bleung On 11/25/13 11:37, Olof Johansson wrote: > Add the ramoops pstore device so that we get logs of panics across reboots. > > Signed-off-by: Olof Johansson <olof@lixom.net> > --- > > drivers/platform/chrome/Kconfig | 14 +++++ > drivers/platform/chrome/Makefile | 1 + > drivers/platform/chrome/chromeos_pstore.c | 101 ++++++++++++++++++++++++++++++ > 3 files changed, 116 insertions(+) > create mode 100644 drivers/platform/chrome/chromeos_pstore.c > > diff --git a/drivers/platform/chrome/Kconfig b/drivers/platform/chrome/Kconfig > index b13303e75a34..06c53c8132ad 100644 > --- a/drivers/platform/chrome/Kconfig > +++ b/drivers/platform/chrome/Kconfig > @@ -25,4 +25,18 @@ config CHROMEOS_LAPTOP > If you have a supported Chromebook, choose Y or M here. > The module will be called chromeos_laptop. > > +config CHROMEOS_PSTORE > + tristate "Chrome OS pstore support" > + ---help--- > + This module instantiates the persistent storage on x86 ChromeOS > + devices. It can be used to store away console logs and crash > + information across reboots. > + > + The range of memory used is 0xf00000-0x1000000, tradionally the traditionally > + memory used to back VGA controller memory. > + > + If you have a supported Chromebook, choose Y or M here. > + The module will be called chromeos_pstore. > + > + > endif # CHROMEOS_PLATFORMS -- ~Randy ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] platform/chrome: Add pstore platform_device 2013-11-25 20:04 ` Randy Dunlap @ 2013-11-25 20:49 ` Olof Johansson 0 siblings, 0 replies; 6+ messages in thread From: Olof Johansson @ 2013-11-25 20:49 UTC (permalink / raw) To: Randy Dunlap; +Cc: linux-kernel@vger.kernel.org, Kees Cook, Benson Leung On Mon, Nov 25, 2013 at 12:04 PM, Randy Dunlap <rdunlap@infradead.org> wrote: > On 11/25/13 11:37, Olof Johansson wrote: >> Add the ramoops pstore device so that we get logs of panics across reboots. >> >> Signed-off-by: Olof Johansson <olof@lixom.net> >> --- >> >> drivers/platform/chrome/Kconfig | 14 +++++ >> drivers/platform/chrome/Makefile | 1 + >> drivers/platform/chrome/chromeos_pstore.c | 101 ++++++++++++++++++++++++++++++ >> 3 files changed, 116 insertions(+) >> create mode 100644 drivers/platform/chrome/chromeos_pstore.c >> >> diff --git a/drivers/platform/chrome/Kconfig b/drivers/platform/chrome/Kconfig >> index b13303e75a34..06c53c8132ad 100644 >> --- a/drivers/platform/chrome/Kconfig >> +++ b/drivers/platform/chrome/Kconfig >> @@ -25,4 +25,18 @@ config CHROMEOS_LAPTOP >> If you have a supported Chromebook, choose Y or M here. >> The module will be called chromeos_laptop. >> >> +config CHROMEOS_PSTORE >> + tristate "Chrome OS pstore support" >> + ---help--- >> + This module instantiates the persistent storage on x86 ChromeOS >> + devices. It can be used to store away console logs and crash >> + information across reboots. >> + >> + The range of memory used is 0xf00000-0x1000000, tradionally the > > traditionally Thanks! Fixed in-tree but won't repost if this is the only feedback. -Olof ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-11-25 20:49 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-11-25 19:37 [PATCH] platform/chrome: Add pstore platform_device Olof Johansson 2013-11-25 19:52 ` Felipe Balbi 2013-11-25 19:59 ` Olof Johansson 2013-11-25 20:03 ` Felipe Balbi 2013-11-25 20:04 ` Randy Dunlap 2013-11-25 20:49 ` Olof Johansson
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.