All of lore.kernel.org
 help / color / mirror / Atom feed
From: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
To: Tomasz Nowicki <tn@semihalf.com>,
	bhelgaas@google.com, arnd@arndb.de, will.deacon@arm.com,
	catalin.marinas@arm.com, rjw@rjwysocki.net,
	hanjun.guo@linaro.org, Lorenzo.Pieralisi@arm.com
Cc: jiang.liu@linux.intel.com, robert.richter@caviumnetworks.com,
	Narinder.Dhillon@caviumnetworks.com, ddaney@caviumnetworks.com,
	Liviu.Dudau@arm.com, tglx@linutronix.de, wangyijing@huawei.com,
	msalter@redhat.com, linux-pci@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-acpi@vger.kernel.org,
	linux-kernel@vger.kernel.org, linaro-acpi@lists.linaro.org
Subject: Re: [PATCH V1 00/11] MMCONFIG refactoring and ARM64 PCI hostbridge init based on ACPI
Date: Fri, 30 Oct 2015 11:38:54 -0500	[thread overview]
Message-ID: <56339D1E.20605@amd.com> (raw)
In-Reply-To: <1445963922-22711-1-git-send-email-tn@semihalf.com>

Tested on AMD Seattle platform (Overdrive revB) w/ both MSI and legacy 
interrupt.

Tested-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>

Thanks,
Suravee

On 10/27/15 11:38, Tomasz Nowicki wrote:
>  From the functionality point of view this series might be split into two logic parts:
> 1. Making MMCONFIG code arch-agnostic which allows all architectures to collect
>     PCI config regions and used when necessary.
> 2. Using generic MMCONFIG code and introducing ACPI based PCI hostbridge
>     initialization for ARM64
>
> Patches has been built on top of:
> [Patch v7 0/7] Consolidate ACPI PCI root common code into ACPI core
> https://lkml.org/lkml/2015/10/14/31
> Git branch can be found here:
> https://git.linaro.org/leg/acpi/acpi.git/shortlog/refs/heads/pci-acpi-upstream
>
> This has been tested on Cavium ThunderX 1 socket server.
> Any help in reviewing and testing is very appreciated.
>
> Hanjun Guo (1):
>    XEN / PCI: Remove the dependence on arch x86 when PCI_MMCONFIG=y
>
> Tomasz Nowicki (10):
>    x86, pci: Reorder logic of pci_mmconfig_insert() function
>    x86, pci, acpi: Move arch-agnostic MMCONFIG (aka ECAM) and ACPI code
>      out of arch/x86/ directory
>    pci, acpi, mcfg: Provide generic implementation of MCFG code
>      initialization.
>    x86, pci: mmconfig_{32,64}.c code refactoring - remove code
>      duplication.
>    x86, pci, ecam: mmconfig_64.c becomes default implementation for ECAM
>      driver.
>    pci, acpi, mcfg: Provide default RAW ACPI PCI config space accessors.
>    pci, acpi, ecam: Add flag to indicate whether ECAM region was hot
>      added or not.
>    x86, pci: Use previously added ECAM hot_added flag to remove ECAM
>      regions.
>    pci, acpi: Provide generic way to assign bus domain number.
>    arm64, pci, acpi: Support for ACPI based PCI hostbridge init
>
>   arch/arm64/Kconfig             |   6 +
>   arch/arm64/kernel/pci.c        | 208 ++++++++++++++++++++++++++++++++--
>   arch/x86/Kconfig               |   4 +
>   arch/x86/include/asm/pci_x86.h |  28 +----
>   arch/x86/pci/acpi.c            |  17 +--
>   arch/x86/pci/mmconfig-shared.c | 250 +++++++----------------------------------
>   arch/x86/pci/mmconfig_32.c     |  11 +-
>   arch/x86/pci/mmconfig_64.c     |  67 +----------
>   arch/x86/pci/numachip.c        |   1 +
>   drivers/acpi/Makefile          |   1 +
>   drivers/acpi/mcfg.c            | 104 +++++++++++++++++
>   drivers/acpi/pci_root.c        |   2 +-
>   drivers/pci/Kconfig            |  10 ++
>   drivers/pci/Makefile           |   5 +
>   drivers/pci/ecam.c             | 234 ++++++++++++++++++++++++++++++++++++++
>   drivers/pci/pci.c              |  30 ++++-
>   drivers/xen/pci.c              |   7 +-
>   include/linux/acpi.h           |   2 +
>   include/linux/ecam.h           |  44 ++++++++
>   19 files changed, 691 insertions(+), 340 deletions(-)
>   create mode 100644 drivers/acpi/mcfg.c
>   create mode 100644 drivers/pci/ecam.c
>   create mode 100644 include/linux/ecam.h
>

WARNING: multiple messages have this Message-ID (diff)
From: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
To: Tomasz Nowicki <tn@semihalf.com>, <bhelgaas@google.com>,
	<arnd@arndb.de>, <will.deacon@arm.com>, <catalin.marinas@arm.com>,
	<rjw@rjwysocki.net>, <hanjun.guo@linaro.org>,
	<Lorenzo.Pieralisi@arm.com>
Cc: <jiang.liu@linux.intel.com>, <robert.richter@caviumnetworks.com>,
	<Narinder.Dhillon@caviumnetworks.com>,
	<ddaney@caviumnetworks.com>, <Liviu.Dudau@arm.com>,
	<tglx@linutronix.de>, <wangyijing@huawei.com>,
	<msalter@redhat.com>, <linux-pci@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-acpi@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linaro-acpi@lists.linaro.org>
Subject: Re: [PATCH V1 00/11] MMCONFIG refactoring and ARM64 PCI hostbridge init based on ACPI
Date: Fri, 30 Oct 2015 11:38:54 -0500	[thread overview]
Message-ID: <56339D1E.20605@amd.com> (raw)
In-Reply-To: <1445963922-22711-1-git-send-email-tn@semihalf.com>

Tested on AMD Seattle platform (Overdrive revB) w/ both MSI and legacy 
interrupt.

Tested-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>

Thanks,
Suravee

On 10/27/15 11:38, Tomasz Nowicki wrote:
>  From the functionality point of view this series might be split into two logic parts:
> 1. Making MMCONFIG code arch-agnostic which allows all architectures to collect
>     PCI config regions and used when necessary.
> 2. Using generic MMCONFIG code and introducing ACPI based PCI hostbridge
>     initialization for ARM64
>
> Patches has been built on top of:
> [Patch v7 0/7] Consolidate ACPI PCI root common code into ACPI core
> https://lkml.org/lkml/2015/10/14/31
> Git branch can be found here:
> https://git.linaro.org/leg/acpi/acpi.git/shortlog/refs/heads/pci-acpi-upstream
>
> This has been tested on Cavium ThunderX 1 socket server.
> Any help in reviewing and testing is very appreciated.
>
> Hanjun Guo (1):
>    XEN / PCI: Remove the dependence on arch x86 when PCI_MMCONFIG=y
>
> Tomasz Nowicki (10):
>    x86, pci: Reorder logic of pci_mmconfig_insert() function
>    x86, pci, acpi: Move arch-agnostic MMCONFIG (aka ECAM) and ACPI code
>      out of arch/x86/ directory
>    pci, acpi, mcfg: Provide generic implementation of MCFG code
>      initialization.
>    x86, pci: mmconfig_{32,64}.c code refactoring - remove code
>      duplication.
>    x86, pci, ecam: mmconfig_64.c becomes default implementation for ECAM
>      driver.
>    pci, acpi, mcfg: Provide default RAW ACPI PCI config space accessors.
>    pci, acpi, ecam: Add flag to indicate whether ECAM region was hot
>      added or not.
>    x86, pci: Use previously added ECAM hot_added flag to remove ECAM
>      regions.
>    pci, acpi: Provide generic way to assign bus domain number.
>    arm64, pci, acpi: Support for ACPI based PCI hostbridge init
>
>   arch/arm64/Kconfig             |   6 +
>   arch/arm64/kernel/pci.c        | 208 ++++++++++++++++++++++++++++++++--
>   arch/x86/Kconfig               |   4 +
>   arch/x86/include/asm/pci_x86.h |  28 +----
>   arch/x86/pci/acpi.c            |  17 +--
>   arch/x86/pci/mmconfig-shared.c | 250 +++++++----------------------------------
>   arch/x86/pci/mmconfig_32.c     |  11 +-
>   arch/x86/pci/mmconfig_64.c     |  67 +----------
>   arch/x86/pci/numachip.c        |   1 +
>   drivers/acpi/Makefile          |   1 +
>   drivers/acpi/mcfg.c            | 104 +++++++++++++++++
>   drivers/acpi/pci_root.c        |   2 +-
>   drivers/pci/Kconfig            |  10 ++
>   drivers/pci/Makefile           |   5 +
>   drivers/pci/ecam.c             | 234 ++++++++++++++++++++++++++++++++++++++
>   drivers/pci/pci.c              |  30 ++++-
>   drivers/xen/pci.c              |   7 +-
>   include/linux/acpi.h           |   2 +
>   include/linux/ecam.h           |  44 ++++++++
>   19 files changed, 691 insertions(+), 340 deletions(-)
>   create mode 100644 drivers/acpi/mcfg.c
>   create mode 100644 drivers/pci/ecam.c
>   create mode 100644 include/linux/ecam.h
>

WARNING: multiple messages have this Message-ID (diff)
From: Suravee.Suthikulpanit@amd.com (Suravee Suthikulpanit)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V1 00/11] MMCONFIG refactoring and ARM64 PCI hostbridge init based on ACPI
Date: Fri, 30 Oct 2015 11:38:54 -0500	[thread overview]
Message-ID: <56339D1E.20605@amd.com> (raw)
In-Reply-To: <1445963922-22711-1-git-send-email-tn@semihalf.com>

Tested on AMD Seattle platform (Overdrive revB) w/ both MSI and legacy 
interrupt.

Tested-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>

Thanks,
Suravee

On 10/27/15 11:38, Tomasz Nowicki wrote:
>  From the functionality point of view this series might be split into two logic parts:
> 1. Making MMCONFIG code arch-agnostic which allows all architectures to collect
>     PCI config regions and used when necessary.
> 2. Using generic MMCONFIG code and introducing ACPI based PCI hostbridge
>     initialization for ARM64
>
> Patches has been built on top of:
> [Patch v7 0/7] Consolidate ACPI PCI root common code into ACPI core
> https://lkml.org/lkml/2015/10/14/31
> Git branch can be found here:
> https://git.linaro.org/leg/acpi/acpi.git/shortlog/refs/heads/pci-acpi-upstream
>
> This has been tested on Cavium ThunderX 1 socket server.
> Any help in reviewing and testing is very appreciated.
>
> Hanjun Guo (1):
>    XEN / PCI: Remove the dependence on arch x86 when PCI_MMCONFIG=y
>
> Tomasz Nowicki (10):
>    x86, pci: Reorder logic of pci_mmconfig_insert() function
>    x86, pci, acpi: Move arch-agnostic MMCONFIG (aka ECAM) and ACPI code
>      out of arch/x86/ directory
>    pci, acpi, mcfg: Provide generic implementation of MCFG code
>      initialization.
>    x86, pci: mmconfig_{32,64}.c code refactoring - remove code
>      duplication.
>    x86, pci, ecam: mmconfig_64.c becomes default implementation for ECAM
>      driver.
>    pci, acpi, mcfg: Provide default RAW ACPI PCI config space accessors.
>    pci, acpi, ecam: Add flag to indicate whether ECAM region was hot
>      added or not.
>    x86, pci: Use previously added ECAM hot_added flag to remove ECAM
>      regions.
>    pci, acpi: Provide generic way to assign bus domain number.
>    arm64, pci, acpi: Support for ACPI based PCI hostbridge init
>
>   arch/arm64/Kconfig             |   6 +
>   arch/arm64/kernel/pci.c        | 208 ++++++++++++++++++++++++++++++++--
>   arch/x86/Kconfig               |   4 +
>   arch/x86/include/asm/pci_x86.h |  28 +----
>   arch/x86/pci/acpi.c            |  17 +--
>   arch/x86/pci/mmconfig-shared.c | 250 +++++++----------------------------------
>   arch/x86/pci/mmconfig_32.c     |  11 +-
>   arch/x86/pci/mmconfig_64.c     |  67 +----------
>   arch/x86/pci/numachip.c        |   1 +
>   drivers/acpi/Makefile          |   1 +
>   drivers/acpi/mcfg.c            | 104 +++++++++++++++++
>   drivers/acpi/pci_root.c        |   2 +-
>   drivers/pci/Kconfig            |  10 ++
>   drivers/pci/Makefile           |   5 +
>   drivers/pci/ecam.c             | 234 ++++++++++++++++++++++++++++++++++++++
>   drivers/pci/pci.c              |  30 ++++-
>   drivers/xen/pci.c              |   7 +-
>   include/linux/acpi.h           |   2 +
>   include/linux/ecam.h           |  44 ++++++++
>   19 files changed, 691 insertions(+), 340 deletions(-)
>   create mode 100644 drivers/acpi/mcfg.c
>   create mode 100644 drivers/pci/ecam.c
>   create mode 100644 include/linux/ecam.h
>

  parent reply	other threads:[~2015-10-30 16:39 UTC|newest]

Thread overview: 131+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-27 16:38 [PATCH V1 00/11] MMCONFIG refactoring and ARM64 PCI hostbridge init based on ACPI Tomasz Nowicki
2015-10-27 16:38 ` Tomasz Nowicki
2015-10-27 16:38 ` [PATCH V1 01/11] x86, pci: Reorder logic of pci_mmconfig_insert() function Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-27 16:38 ` [PATCH V1 02/11] x86, pci, acpi: Move arch-agnostic MMCONFIG (aka ECAM) and ACPI code out of arch/x86/ directory Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-27 16:38 ` [PATCH V1 03/11] pci, acpi, mcfg: Provide generic implementation of MCFG code initialization Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-27 16:38 ` [PATCH V1 04/11] x86, pci: mmconfig_{32,64}.c code refactoring - remove code duplication Tomasz Nowicki
2015-10-27 16:38   ` [PATCH V1 04/11] x86, pci: mmconfig_{32, 64}.c " Tomasz Nowicki
2015-10-27 16:38 ` [PATCH V1 05/11] x86, pci, ecam: mmconfig_64.c becomes default implementation for ECAM driver Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-27 16:38 ` [PATCH V1 06/11] pci, acpi, mcfg: Provide default RAW ACPI PCI config space accessors Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-27 16:38 ` [PATCH V1 07/11] XEN / PCI: Remove the dependence on arch x86 when PCI_MMCONFIG=y Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-27 16:47   ` [Linaro-acpi] " Tomasz Nowicki
2015-10-27 16:47     ` Tomasz Nowicki
2015-10-27 17:25     ` Boris Ostrovsky
2015-10-27 17:25       ` Boris Ostrovsky
2015-10-28 10:49       ` Stefano Stabellini
2015-10-28 10:49         ` Stefano Stabellini
2015-10-28 10:49         ` Stefano Stabellini
2015-10-28 10:56         ` Tomasz Nowicki
2015-10-28 10:56           ` Tomasz Nowicki
2015-10-28 13:45           ` Hanjun Guo
2015-10-28 13:45             ` Hanjun Guo
2015-10-28 14:07             ` Boris Ostrovsky
2015-10-28 14:07               ` Boris Ostrovsky
2015-10-27 16:38 ` [PATCH V1 08/11] pci, acpi, ecam: Add flag to indicate whether ECAM region was hot added or not Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-27 16:38 ` [PATCH V1 09/11] x86, pci: Use previously added ECAM hot_added flag to remove ECAM regions Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-27 16:38 ` [PATCH V1 10/11] pci, acpi: Provide generic way to assign bus domain number Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-28 11:38   ` Liviu.Dudau
2015-10-28 11:38     ` Liviu.Dudau at arm.com
2015-10-28 12:47     ` [Linaro-acpi] " Tomasz Nowicki
2015-10-28 12:47       ` Tomasz Nowicki
2015-11-03 16:10   ` Lorenzo Pieralisi
2015-11-03 16:10     ` Lorenzo Pieralisi
2015-11-04 10:04     ` [Linaro-acpi] " Tomasz Nowicki
2015-11-04 10:04       ` Tomasz Nowicki
2015-10-27 16:38 ` [PATCH V1 11/11] arm64, pci, acpi: Support for ACPI based PCI hostbridge init Tomasz Nowicki
2015-10-27 16:38   ` Tomasz Nowicki
2015-10-28 11:49   ` Liviu.Dudau
2015-10-28 11:49     ` Liviu.Dudau at arm.com
2015-10-28 11:49     ` Liviu.Dudau
2015-10-28 13:42     ` Tomasz Nowicki
2015-10-28 13:42       ` Tomasz Nowicki
2015-10-28 13:51       ` Liviu.Dudau
2015-10-28 13:51         ` Liviu.Dudau at arm.com
2015-11-03 14:32     ` Lorenzo Pieralisi
2015-11-03 14:32       ` Lorenzo Pieralisi
2015-11-03 16:28       ` Liviu.Dudau
2015-11-03 16:28         ` Liviu.Dudau at arm.com
2015-10-28 18:46   ` Sinan Kaya
2015-10-28 18:46     ` Sinan Kaya
2015-10-28 20:36     ` Sinan Kaya
2015-10-28 20:36       ` Sinan Kaya
2015-10-29 11:38       ` Tomasz Nowicki
2015-10-29 11:38         ` Tomasz Nowicki
2015-10-29 15:01         ` Sinan Kaya
2015-10-29 15:01           ` Sinan Kaya
2015-10-29 15:53           ` Tomasz Nowicki
2015-10-29 15:53             ` Tomasz Nowicki
2015-10-29 16:20             ` Sinan Kaya
2015-10-29 16:20               ` Sinan Kaya
2015-10-29 14:57       ` Sinan Kaya
2015-10-29 14:57         ` Sinan Kaya
2015-10-29 16:27         ` Tomasz Nowicki
2015-10-29 16:27           ` Tomasz Nowicki
2015-11-03 14:15     ` Lorenzo Pieralisi
2015-11-03 14:15       ` Lorenzo Pieralisi
2015-11-03 14:39       ` Tomasz Nowicki
2015-11-03 14:39         ` Tomasz Nowicki
2015-11-03 15:10         ` Sinan Kaya
2015-11-03 15:10           ` Sinan Kaya
2015-11-03 15:59           ` Arnd Bergmann
2015-11-03 15:59             ` Arnd Bergmann
2015-11-03 16:33             ` Sinan Kaya
2015-11-03 16:33               ` Sinan Kaya
2015-11-03 16:55               ` Arnd Bergmann
2015-11-03 16:55                 ` Arnd Bergmann
2015-11-03 17:43                 ` Sinan Kaya
2015-11-03 17:43                   ` Sinan Kaya
2015-11-05 14:48                   ` [Linaro-acpi] " Sinan Kaya
2015-11-05 14:48                     ` Sinan Kaya
2015-11-03 15:19       ` Hanjun Guo
2015-11-03 15:19         ` Hanjun Guo
2015-11-03 15:19         ` Hanjun Guo
2015-11-03 17:39         ` David Daney
2015-11-03 17:39           ` David Daney
2015-11-03 17:39           ` David Daney
2015-11-03 18:00           ` Gabriele Paoloni
2015-11-03 18:00             ` Gabriele Paoloni
2015-11-03 18:00             ` Gabriele Paoloni
2015-11-03 16:55   ` Lorenzo Pieralisi
2015-11-03 16:55     ` Lorenzo Pieralisi
2015-11-04  9:59     ` Tomasz Nowicki
2015-11-04  9:59       ` Tomasz Nowicki
2015-11-04 10:11     ` Tomasz Nowicki
2015-11-04 10:11       ` Tomasz Nowicki
2015-10-30  4:07 ` [PATCH V1 00/11] MMCONFIG refactoring and ARM64 PCI hostbridge init based on ACPI Jon Masters
2015-10-30  4:07   ` Jon Masters
2015-10-30  4:50   ` Hanjun Guo
2015-10-30  4:50     ` Hanjun Guo
2015-10-30  4:50     ` Hanjun Guo
2015-10-30  8:26   ` Tomasz Nowicki
2015-10-30  8:26     ` Tomasz Nowicki
2015-10-30 16:38 ` Suravee Suthikulpanit [this message]
2015-10-30 16:38   ` Suravee Suthikulpanit
2015-10-30 16:38   ` Suravee Suthikulpanit
2015-12-07 20:31 ` Bjorn Helgaas
2015-12-07 20:31   ` Bjorn Helgaas
2015-12-09 10:01   ` Jayachandran C.
2015-12-09 10:01     ` Jayachandran C.
2015-12-09 15:55     ` Lorenzo Pieralisi
2015-12-09 15:55       ` Lorenzo Pieralisi
2015-12-16 12:51       ` Jayachandran C.
2015-12-16 12:51         ` Jayachandran C.
2015-12-16 14:05         ` Lorenzo Pieralisi
2015-12-16 14:05           ` Lorenzo Pieralisi
2015-12-08 17:43 ` Jeremy Linton
2015-12-08 17:43   ` Jeremy Linton

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=56339D1E.20605@amd.com \
    --to=suravee.suthikulpanit@amd.com \
    --cc=Liviu.Dudau@arm.com \
    --cc=Lorenzo.Pieralisi@arm.com \
    --cc=Narinder.Dhillon@caviumnetworks.com \
    --cc=arnd@arndb.de \
    --cc=bhelgaas@google.com \
    --cc=catalin.marinas@arm.com \
    --cc=ddaney@caviumnetworks.com \
    --cc=hanjun.guo@linaro.org \
    --cc=jiang.liu@linux.intel.com \
    --cc=linaro-acpi@lists.linaro.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=msalter@redhat.com \
    --cc=rjw@rjwysocki.net \
    --cc=robert.richter@caviumnetworks.com \
    --cc=tglx@linutronix.de \
    --cc=tn@semihalf.com \
    --cc=wangyijing@huawei.com \
    --cc=will.deacon@arm.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.