From: "Pali Rohár" <pali.rohar@gmail.com>
To: Jean Delvare <jdelvare@suse.de>
Cc: Guenter Roeck <linux@roeck-us.net>, Arnd Bergmann <arnd@arndb.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Steven Honeyman <stevenhoneyman@gmail.com>,
Valdis.Kletnieks@vt.edu,
Jochen Eisinger <jochen@penguin-breeder.org>,
Gabriele Mazzotta <gabriele.mzt@gmail.com>,
linux-kernel@vger.kernel.org, lm-sensors@lm-sensors.org
Subject: Re: [lm-sensors] i8k: move driver from char to hwmon
Date: Wed, 22 Apr 2015 08:42:39 +0000 [thread overview]
Message-ID: <20150422084239.GB13209@pali> (raw)
In-Reply-To: <20150422102304.35d9e2d1@endymion.delvare>
T24gV2VkbmVzZGF5IDIyIEFwcmlsIDIwMTUgMTA6MjM6MDQgSmVhbiBEZWx2YXJlIHdyb3RlOgo+
IE9uIFN1biwgMjIgRmViIDIwMTUgMTA6MTE6MTYgLTA4MDAsIEd1ZW50ZXIgUm9lY2sgd3JvdGU6
Cj4gPiBPbiAwMi8yMi8yMDE1IDA5OjQ0IEFNLCBQYWxpIFJvaMOhciB3cm90ZToKPiA+ID4gV2hh
dCBhYm91dCBDT05GSUdfREVMTERJQUcgKG9yIERFTExTTU0gb3IgQ09ORklHX1NFTlNPUlNfKikg
Zm9yCj4gPiA+IG1hbmRhdG9yeSBjb3JlICYgaHdtb24gY29kZSBhbmQgKGtlZXAgZXhpc3Rpbmcp
IENPTkZJR19JOEsgZm9yCj4gPiA+IC9wcm9jL2k4az8KPiA+IAo+ID4gT25lIG9wdGlvbiBtaWdo
dCBiZSB0byBsZWF2ZSBDT05GSUdfSThLIG1vcmUgb3IgbGVzcyBhbG9uZQo+ID4gKGl0IGlzIGlu
IGFyY2gveDg2L0tjb25maWcgYW55d2F5LCB3aGljaCBpcyBvZGQgYnkgaXRzZWxmKSwKPiA+IGJ1
dCBhZGQgc29tZXRoaW5nIGxpa2UKPiA+IAlzZWxlY3QgU0VOU09SU19ERUxMCj4gPiAJc2VsZWN0
IEk4S19QUk9DCj4gPiB0byBpdC4gVGhlbiBhZGQgbmV3IGNvbmZpZyBvcHRpb25zIFNFTlNPUlNf
REVMTCBhbmQKPiA+IEk4S19QUk9DIHRvIGRyaXZlcnMvaHdtb24vS2NvbmZpZy4KPiAKPiBPbiBh
IHJlbGF0ZWQgbm90ZS4uLgo+IAo+IENoYW5naW5nIEtjb25maWcgc3ltYm9sIG5hbWVzIGlzIGFs
bG93ZWQsIGl0IGhhcyBoYXBwZW5lZCBhIGxvdCBpbiB0aGUKPiBwYXN0LCBhbHRob3VnaCB3ZSBz
aG91bGQgbWFrZSBpdCB0aGUgbGVhc3QgcGFpbmZ1bCBwb3NzaWJsZSBmb3IgdGhlCj4gdXNlcnMu
Cj4gCj4gSSB0aG91Z2h0IGFib3V0IGl0IGVhcmxpZXIgYXMgSSBjb25zaWRlcmVkIHNldmVyYWwg
dGltZXMgdGhlCj4gcG9zc2liaWxpdHkgdG8gcmVuYW1lIGFsbCBDT05GSUdfU0VOU09SU18qIHN5
bWJvbHMgdG8gQ09ORklHX0hXTU9OXyoKPiBmb3IgY29uc2lzdGVuY3kuIEkgbmV2ZXIgYWN0dWFs
bHkgdG9vayB0aGUgdGltZSB0byBkbyBpdCwgYnV0IGhlcmUncwo+IGhvdyBJIHdvdWxkIGRvIGl0
LCB0YWtpbmcgdGhlIGxtNzUgZHJpdmVyIGFzIGFuIGV4YW1wbGUuCj4gCj4gQXMgYSBmaXJzdCBz
dGVwLCBJIHdvdWxkIGludHJvZHVjZSBhIGhpZGRlbiBzeW1ib2wgdGhhdCB3b3VsZCBiZQo+IHNl
bGVjdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGV4aXN0aW5nIHN5bWJvbDoKPiAKPiAgZHJpdmVy
cy9od21vbi9LY29uZmlnICB8ICAgIDQgKysrKwo+ICBkcml2ZXJzL2h3bW9uL01ha2VmaWxlIHwg
ICAgMiArLQo+ICAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt
KQo+IAo+IC0tLSBsaW51eC00LjEtcmMwLm9yaWcvZHJpdmVycy9od21vbi9LY29uZmlnCTIwMTUt
MDQtMjIgMDk6NTQ6MjEuOTY1OTc0OTQ0ICswMjAwCj4gKysrIGxpbnV4LTQuMS1yYzAvZHJpdmVy
cy9od21vbi9LY29uZmlnCTIwMTUtMDQtMjIgMTA6MTA6MTYuOTc0NTUxOTM2ICswMjAwCj4gQEAg
LTkwOSwxMCArOTA5LDE0IEBAIGNvbmZpZyBTRU5TT1JTX0xNNzMKPiAgCSAgVGhpcyBkcml2ZXIg
Y2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQo+ICAJICB3
aWxsIGJlIGNhbGxlZCBsbTczLgo+ICAKPiArY29uZmlnIEhXTU9OX0xNNzUKPiArCXRyaXN0YXRl
Cj4gKwo+ICBjb25maWcgU0VOU09SU19MTTc1Cj4gIAl0cmlzdGF0ZSAiTmF0aW9uYWwgU2VtaWNv
bmR1Y3RvciBMTTc1IGFuZCBjb21wYXRpYmxlcyIKPiAgCWRlcGVuZHMgb24gSTJDCj4gIAlkZXBl
bmRzIG9uIFRIRVJNQUwgfHwgIVRIRVJNQUxfT0YKPiArCXNlbGVjdCBIV01PTl9MTTc1Cj4gIAlo
ZWxwCj4gIAkgIElmIHlvdSBzYXkgeWVzIGhlcmUgeW91IGdldCBzdXBwb3J0IGZvciBvbmUgY29t
bW9uIHR5cGUgb2YKPiAgCSAgdGVtcGVyYXR1cmUgc2Vuc29yIGNoaXAsIHdpdGggbW9kZWxzIGlu
Y2x1ZGluZzoKPiAtLS0gbGludXgtNC4xLXJjMC5vcmlnL2RyaXZlcnMvaHdtb24vTWFrZWZpbGUJ
MjAxNS0wNC0yMiAwOTo1NDoyMS45NjU5NzQ5NDQgKzAyMDAKPiArKysgbGludXgtNC4xLXJjMC9k
cml2ZXJzL2h3bW9uL01ha2VmaWxlCTIwMTUtMDQtMjIgMTA6MDk6MDMuNzEyMDQ4ODQ5ICswMjAw
Cj4gQEAgLTg1LDcgKzg1LDcgQEAgb2JqLSQoQ09ORklHX1NFTlNPUlNfTElORUFHRSkJKz0gbGlu
ZWFnZQo+ICBvYmotJChDT05GSUdfU0VOU09SU19MTTYzKQkrPSBsbTYzLm8KPiAgb2JqLSQoQ09O
RklHX1NFTlNPUlNfTE03MCkJKz0gbG03MC5vCj4gIG9iai0kKENPTkZJR19TRU5TT1JTX0xNNzMp
CSs9IGxtNzMubwo+IC1vYmotJChDT05GSUdfU0VOU09SU19MTTc1KQkrPSBsbTc1Lm8KPiArb2Jq
LSQoQ09ORklHX0hXTU9OX0xNNzUpCSs9IGxtNzUubwo+ICBvYmotJChDT05GSUdfU0VOU09SU19M
TTc3KQkrPSBsbTc3Lm8KPiAgb2JqLSQoQ09ORklHX1NFTlNPUlNfTE03OCkJKz0gbG03OC5vCj4g
IG9iai0kKENPTkZJR19TRU5TT1JTX0xNODApCSs9IGxtODAubwo+IAo+IFJ1bm5pbmcgIm1ha2Ug
b2xkY29uZmlnIiBhZnRlciB0aGF0IHNpbGVudGx5IHNlbGVjdHMgdGhlIG5ldyBzeW1ib2wgYXMK
PiBuZWVkZWQ6Cj4gCj4gLS0tIC5jb25maWcub2xkCTIwMTUtMDQtMjAgMTA6MTY6NDIuNjQ1MzU5
MzEzICswMjAwCj4gKysrIC5jb25maWcJMjAxNS0wNC0yMiAxMDowOTowOS4zNTgxNjQ1OTkgKzAy
MDAKPiBAQCAtMjgwNSw2ICsyODA1LDcgQEAKPiAgQ09ORklHX1NFTlNPUlNfTE02Mz1tCj4gICMg
Q09ORklHX1NFTlNPUlNfTE03MCBpcyBub3Qgc2V0Cj4gIENPTkZJR19TRU5TT1JTX0xNNzM9bQo+
ICtDT05GSUdfSFdNT05fTE03NT1tCj4gIENPTkZJR19TRU5TT1JTX0xNNzU9bQo+ICBDT05GSUdf
U0VOU09SU19MTTc3PW0KPiAgQ09ORklHX1NFTlNPUlNfTE03OD1tCj4gCj4gVGhlbiBJIHdvdWxk
IGxldCBzZXZlcmFsIGtlcm5lbCB2ZXJzaW9ucyBwYXNzLiBBZnRlciBhIHllYXIgbWF5YmUsIG9y
IDUKPiBrZXJuZWwgdmVyc2lvbnMsIHdlIGNvdWxkIGdldCByaWQgb2YgdGhlIG9yaWdpbmFsIHN5
bWJvbDoKPiAKPiAgZHJpdmVycy9od21vbi9LY29uZmlnIHwgICAgNCAtLS0tCj4gIDEgZmlsZSBj
aGFuZ2VkLCA0IGRlbGV0aW9ucygtKQo+IAo+IC0tLSBsaW51eC00LjEtcmMwLm9yaWcvZHJpdmVy
cy9od21vbi9LY29uZmlnCTIwMTUtMDQtMjIgMTA6MDg6MzkuMDE3NTQyNzcxICswMjAwCj4gKysr
IGxpbnV4LTQuMS1yYzAvZHJpdmVycy9od21vbi9LY29uZmlnCTIwMTUtMDQtMjIgMTA6MDk6NTcu
Mzc2MTQ5NjAzICswMjAwCj4gQEAgLTkxMCwxMyArOTEwLDkgQEAgY29uZmlnIFNFTlNPUlNfTE03
Mwo+ICAJICB3aWxsIGJlIGNhbGxlZCBsbTczLgo+ICAKPiAgY29uZmlnIEhXTU9OX0xNNzUKPiAt
CXRyaXN0YXRlCj4gLQo+IC1jb25maWcgU0VOU09SU19MTTc1Cj4gIAl0cmlzdGF0ZSAiTmF0aW9u
YWwgU2VtaWNvbmR1Y3RvciBMTTc1IGFuZCBjb21wYXRpYmxlcyIKPiAgCWRlcGVuZHMgb24gSTJD
Cj4gIAlkZXBlbmRzIG9uIFRIRVJNQUwgfHwgIVRIRVJNQUxfT0YKPiAtCXNlbGVjdCBIV01PTl9M
TTc1Cj4gIAloZWxwCj4gIAkgIElmIHlvdSBzYXkgeWVzIGhlcmUgeW91IGdldCBzdXBwb3J0IGZv
ciBvbmUgY29tbW9uIHR5cGUgb2YKPiAgCSAgdGVtcGVyYXR1cmUgc2Vuc29yIGNoaXAsIHdpdGgg
bW9kZWxzIGluY2x1ZGluZzoKPiAKPiBBZ2FpbiBydW5uaW5nICJtYWtlIG9sZGNvbmZpZyIgd2ls
bCBkbyB0aGUgcmlnaHQgdGhpbmcgc2lsZW50bHk6Cj4gCj4gLS0tIC5jb25maWcub2xkCTIwMTUt
MDQtMjIgMTA6MDk6MDkuMzU4MTY0NTk5ICswMjAwCj4gKysrIC5jb25maWcJMjAxNS0wNC0yMiAx
MDoxMDowMi45NDIyNjM4NTEgKzAyMDAKPiBAQCAtMjgwNiw3ICsyODA2LDYgQEAKPiAgIyBDT05G
SUdfU0VOU09SU19MTTcwIGlzIG5vdCBzZXQKPiAgQ09ORklHX1NFTlNPUlNfTE03Mz1tCj4gIENP
TkZJR19IV01PTl9MTTc1PW0KPiAtQ09ORklHX1NFTlNPUlNfTE03NT1tCj4gIENPTkZJR19TRU5T
T1JTX0xNNzc9bQo+ICBDT05GSUdfU0VOU09SU19MTTc4PW0KPiAgQ09ORklHX1NFTlNPUlNfTE04
MD1tCj4gCj4gVGhpcyBhbGxvd3MgZm9yIGEgdHJhbnNwYXJlbnQgbWlncmF0aW9uIHRvIHRoZSBu
ZXcgbmFtZXMgZnJvbSBhIHVzZXIncwo+IHBlcnNwZWN0aXZlLCBhcyBsb25nIGFzIHRoZXkgZG8g
bm90IGp1bXAgZGlyZWN0bHkgZnJvbSB0aGUgb3JpZ2luYWwKPiBzdGF0ZSB0byB0aGUgZmluYWwg
c3RhdGUuIE1heWJlIHNvbWV0aGluZyBsaWtlIHRoYXQgY2FuIGJlIGRvbmUgZm9yCj4gQ09ORklH
X0k4SyBpZiB5b3Ugd2FudCB0byByZW5hbWUgaXQuCj4gCgpIaSwgSSBhbHJlYWR5IHNlbnQgcmVu
YW1lIHBhdGNoIHNlcmllcywgc2VlIFsxXS4gQW5kIEdyZWcgd2lsbCBtZXJnZSBpdAppbnRvIDQu
MS1yYzIsIHNlZSBbMl0uCgpbMV0gLSBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxNS8zLzI5LzM1
ClsyXSAtIGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE1LzQvMjEvNDI5CgotLSAKUGFsaSBSb2jD
oXIKcGFsaS5yb2hhckBnbWFpbC5jb20KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vu
c29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0t
c2Vuc29ycw=
WARNING: multiple messages have this Message-ID (diff)
From: "Pali Rohár" <pali.rohar@gmail.com>
To: Jean Delvare <jdelvare@suse.de>
Cc: Guenter Roeck <linux@roeck-us.net>, Arnd Bergmann <arnd@arndb.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Steven Honeyman <stevenhoneyman@gmail.com>,
Valdis.Kletnieks@vt.edu,
Jochen Eisinger <jochen@penguin-breeder.org>,
Gabriele Mazzotta <gabriele.mzt@gmail.com>,
linux-kernel@vger.kernel.org, lm-sensors@lm-sensors.org
Subject: Re: i8k: move driver from char to hwmon
Date: Wed, 22 Apr 2015 10:42:39 +0200 [thread overview]
Message-ID: <20150422084239.GB13209@pali> (raw)
In-Reply-To: <20150422102304.35d9e2d1@endymion.delvare>
On Wednesday 22 April 2015 10:23:04 Jean Delvare wrote:
> On Sun, 22 Feb 2015 10:11:16 -0800, Guenter Roeck wrote:
> > On 02/22/2015 09:44 AM, Pali Rohár wrote:
> > > What about CONFIG_DELLDIAG (or DELLSMM or CONFIG_SENSORS_*) for
> > > mandatory core & hwmon code and (keep existing) CONFIG_I8K for
> > > /proc/i8k?
> >
> > One option might be to leave CONFIG_I8K more or less alone
> > (it is in arch/x86/Kconfig anyway, which is odd by itself),
> > but add something like
> > select SENSORS_DELL
> > select I8K_PROC
> > to it. Then add new config options SENSORS_DELL and
> > I8K_PROC to drivers/hwmon/Kconfig.
>
> On a related note...
>
> Changing Kconfig symbol names is allowed, it has happened a lot in the
> past, although we should make it the least painful possible for the
> users.
>
> I thought about it earlier as I considered several times the
> possibility to rename all CONFIG_SENSORS_* symbols to CONFIG_HWMON_*
> for consistency. I never actually took the time to do it, but here's
> how I would do it, taking the lm75 driver as an example.
>
> As a first step, I would introduce a hidden symbol that would be
> selected automatically by the existing symbol:
>
> drivers/hwmon/Kconfig | 4 ++++
> drivers/hwmon/Makefile | 2 +-
> 2 files changed, 5 insertions(+), 1 deletion(-)
>
> --- linux-4.1-rc0.orig/drivers/hwmon/Kconfig 2015-04-22 09:54:21.965974944 +0200
> +++ linux-4.1-rc0/drivers/hwmon/Kconfig 2015-04-22 10:10:16.974551936 +0200
> @@ -909,10 +909,14 @@ config SENSORS_LM73
> This driver can also be built as a module. If so, the module
> will be called lm73.
>
> +config HWMON_LM75
> + tristate
> +
> config SENSORS_LM75
> tristate "National Semiconductor LM75 and compatibles"
> depends on I2C
> depends on THERMAL || !THERMAL_OF
> + select HWMON_LM75
> help
> If you say yes here you get support for one common type of
> temperature sensor chip, with models including:
> --- linux-4.1-rc0.orig/drivers/hwmon/Makefile 2015-04-22 09:54:21.965974944 +0200
> +++ linux-4.1-rc0/drivers/hwmon/Makefile 2015-04-22 10:09:03.712048849 +0200
> @@ -85,7 +85,7 @@ obj-$(CONFIG_SENSORS_LINEAGE) += lineage
> obj-$(CONFIG_SENSORS_LM63) += lm63.o
> obj-$(CONFIG_SENSORS_LM70) += lm70.o
> obj-$(CONFIG_SENSORS_LM73) += lm73.o
> -obj-$(CONFIG_SENSORS_LM75) += lm75.o
> +obj-$(CONFIG_HWMON_LM75) += lm75.o
> obj-$(CONFIG_SENSORS_LM77) += lm77.o
> obj-$(CONFIG_SENSORS_LM78) += lm78.o
> obj-$(CONFIG_SENSORS_LM80) += lm80.o
>
> Running "make oldconfig" after that silently selects the new symbol as
> needed:
>
> --- .config.old 2015-04-20 10:16:42.645359313 +0200
> +++ .config 2015-04-22 10:09:09.358164599 +0200
> @@ -2805,6 +2805,7 @@
> CONFIG_SENSORS_LM63=m
> # CONFIG_SENSORS_LM70 is not set
> CONFIG_SENSORS_LM73=m
> +CONFIG_HWMON_LM75=m
> CONFIG_SENSORS_LM75=m
> CONFIG_SENSORS_LM77=m
> CONFIG_SENSORS_LM78=m
>
> Then I would let several kernel versions pass. After a year maybe, or 5
> kernel versions, we could get rid of the original symbol:
>
> drivers/hwmon/Kconfig | 4 ----
> 1 file changed, 4 deletions(-)
>
> --- linux-4.1-rc0.orig/drivers/hwmon/Kconfig 2015-04-22 10:08:39.017542771 +0200
> +++ linux-4.1-rc0/drivers/hwmon/Kconfig 2015-04-22 10:09:57.376149603 +0200
> @@ -910,13 +910,9 @@ config SENSORS_LM73
> will be called lm73.
>
> config HWMON_LM75
> - tristate
> -
> -config SENSORS_LM75
> tristate "National Semiconductor LM75 and compatibles"
> depends on I2C
> depends on THERMAL || !THERMAL_OF
> - select HWMON_LM75
> help
> If you say yes here you get support for one common type of
> temperature sensor chip, with models including:
>
> Again running "make oldconfig" will do the right thing silently:
>
> --- .config.old 2015-04-22 10:09:09.358164599 +0200
> +++ .config 2015-04-22 10:10:02.942263851 +0200
> @@ -2806,7 +2806,6 @@
> # CONFIG_SENSORS_LM70 is not set
> CONFIG_SENSORS_LM73=m
> CONFIG_HWMON_LM75=m
> -CONFIG_SENSORS_LM75=m
> CONFIG_SENSORS_LM77=m
> CONFIG_SENSORS_LM78=m
> CONFIG_SENSORS_LM80=m
>
> This allows for a transparent migration to the new names from a user's
> perspective, as long as they do not jump directly from the original
> state to the final state. Maybe something like that can be done for
> CONFIG_I8K if you want to rename it.
>
Hi, I already sent rename patch series, see [1]. And Greg will merge it
into 4.1-rc2, see [2].
[1] - https://lkml.org/lkml/2015/3/29/35
[2] - https://lkml.org/lkml/2015/4/21/429
--
Pali Rohár
pali.rohar@gmail.com
next prev parent reply other threads:[~2015-04-22 8:42 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-22 11:50 [lm-sensors] i8k: move driver from char to hwmon Pali Rohár
2015-02-22 11:50 ` Pali Rohár
2015-02-22 17:33 ` [lm-sensors] " Guenter Roeck
2015-02-22 17:33 ` Guenter Roeck
2015-02-22 17:44 ` [lm-sensors] " Pali Rohár
2015-02-22 17:44 ` Pali Rohár
2015-02-22 17:55 ` [lm-sensors] " Guenter Roeck
2015-02-22 17:55 ` Guenter Roeck
2015-02-22 18:11 ` [lm-sensors] " Guenter Roeck
2015-02-22 18:11 ` Guenter Roeck
2015-02-22 22:07 ` [lm-sensors] " Jean Delvare
2015-02-22 22:07 ` Jean Delvare
2015-02-22 23:31 ` [lm-sensors] " Guenter Roeck
2015-02-22 23:31 ` Guenter Roeck
2015-04-22 8:23 ` [lm-sensors] " Jean Delvare
2015-04-22 8:23 ` Jean Delvare
2015-04-22 8:42 ` Pali Rohár [this message]
2015-04-22 8:42 ` Pali Rohár
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150422084239.GB13209@pali \
--to=pali.rohar@gmail.com \
--cc=Valdis.Kletnieks@vt.edu \
--cc=arnd@arndb.de \
--cc=gabriele.mzt@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=jdelvare@suse.de \
--cc=jochen@penguin-breeder.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=lm-sensors@lm-sensors.org \
--cc=stevenhoneyman@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.