* [PATCH v2 0/2] Add PCIe support to RZ/V2H SoC and EVK
@ 2026-07-08 16:33 Prabhakar
2026-07-08 16:33 ` [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes Prabhakar
2026-07-08 16:33 ` [PATCH v2 2/2] arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable PCIe Prabhakar
0 siblings, 2 replies; 6+ messages in thread
From: Prabhakar @ 2026-07-08 16:33 UTC (permalink / raw)
To: Geert Uytterhoeven, Magnus Damm, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das,
Fabrizio Castro, Lad Prabhakar
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Hi all,
This patch series adds PCIe support to the Renesas RZ/V2H SoC and enables
PCIe on the RZ/V2H EVK. The first patch adds the necessary device tree
nodes for the PCIe controller, while the second patch enables the PCIe
slot on the RZ/V2H EVK.
v1->v2:
- Formatted the ranges property so that the new line entries are aligned.
- Corrected the flag values for dma-ranges property for pcie0/1 nodes.
- Renamed the node name from pcie to pcie0.
v1: https://lore.kernel.org/all/20260602204707.1920839-1-prabhakar.mahadev-lad.rj@bp.renesas.com/
Note, the driver and binding patches have landed in linux-next.
Cheers,
Prabhakar
Lad Prabhakar (2):
arm64: dts: renesas: r9a09g057: Add PCIe nodes
arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable PCIe
arch/arm64/boot/dts/renesas/r9a09g057.dtsi | 140 ++++++++++++++++++
.../dts/renesas/r9a09g057h44-rzv2h-evk.dts | 18 +++
2 files changed, 158 insertions(+)
--
2.54.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes
2026-07-08 16:33 [PATCH v2 0/2] Add PCIe support to RZ/V2H SoC and EVK Prabhakar
@ 2026-07-08 16:33 ` Prabhakar
2026-07-08 16:49 ` sashiko-bot
2026-07-09 15:02 ` Geert Uytterhoeven
2026-07-08 16:33 ` [PATCH v2 2/2] arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable PCIe Prabhakar
1 sibling, 2 replies; 6+ messages in thread
From: Prabhakar @ 2026-07-08 16:33 UTC (permalink / raw)
To: Geert Uytterhoeven, Magnus Damm, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das,
Fabrizio Castro, Lad Prabhakar
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Add PCIe nodes to Renesas RZ/V2H(P) ("R9A09G057") SoC DTSI.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v1->v2:
- Formatted the ranges property so that the new line entries are aligned.
- Corrected the flag values for dma-ranges property for pcie0/1 nodes.
---
arch/arm64/boot/dts/renesas/r9a09g057.dtsi | 140 +++++++++++++++++++++
1 file changed, 140 insertions(+)
diff --git a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi
index 8af0f0f2f2f7..639693d464a7 100644
--- a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi
+++ b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi
@@ -1041,6 +1041,146 @@ rsci9: serial@12803000 {
status = "disabled";
};
+ pcie0: pcie@13400000 {
+ compatible = "renesas,r9a09g057-pcie";
+ reg = <0 0x13400000 0 0x10000>;
+ ranges = <0x02000000 0x0 0x30000000 0x0 0x30000000 0x0 0x08000000>,
+ <0x43000000 0x4 0x40000000 0x4 0x40000000 0x6 0x00000000>;
+ dma-ranges = <0x43000000 0x0 0x40000000 0x0 0x40000000 0x4 0x00000000>;
+ bus-range = <0x0 0xff>;
+ interrupts = <GIC_SPI 800 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 801 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 802 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 803 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 806 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 792 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 793 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 794 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 795 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 796 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 797 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 799 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 804 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 805 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 807 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 791 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 798 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 808 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 809 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 810 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 811 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 812 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 813 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "serr", "serr_cor", "serr_nonfatal",
+ "serr_fatal", "axi_err", "inta",
+ "intb", "intc", "intd", "msi",
+ "link_bandwidth", "pm_pme", "dma",
+ "pcie_evt", "msg", "all",
+ "link_equalization_request",
+ "turn_off_event", "pmu_poweroff",
+ "d3_event_f0", "d3_event_f1",
+ "cfg_pmcsr_writeclear_f0",
+ "cfg_pmcsr_writeclear_f1";
+ #interrupt-cells = <1>;
+ interrupt-controller;
+ interrupt-map-mask = <0 0 0 7>;
+ interrupt-map = <0 0 0 1 &pcie0 0 0 0 0>, /* INTA */
+ <0 0 0 2 &pcie0 0 0 0 1>, /* INTB */
+ <0 0 0 3 &pcie0 0 0 0 2>, /* INTC */
+ <0 0 0 4 &pcie0 0 0 0 3>; /* INTD */
+ clocks = <&cpg CPG_MOD 0xc4>, <&cpg CPG_MOD 0xc5>;
+ clock-names = "aclk", "pmu";
+ resets = <&cpg 0xb2>;
+ reset-names = "aresetn";
+ power-domains = <&cpg>;
+ device_type = "pci";
+ #address-cells = <3>;
+ #size-cells = <2>;
+ num-lanes = <2>;
+ renesas,sysc = <&sys 0>;
+ status = "disabled";
+
+ pcie_port0: pcie@0,0 {
+ reg = <0x0 0x0 0x0 0x0 0x0>;
+ ranges;
+ device_type = "pci";
+ vendor-id = <0x1912>;
+ device-id = <0x003b>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+ };
+ };
+
+ pcie1: pcie@13410000 {
+ compatible = "renesas,r9a09g057-pcie";
+ reg = <0 0x13410000 0 0x10000>;
+ ranges = <0x02000000 0x0 0x38000000 0x0 0x38000000 0x0 0x08000000>,
+ <0x43000000 0xa 0x40000000 0xa 0x40000000 0x5 0xc0000000>;
+ dma-ranges = <0x43000000 0x0 0x40000000 0x0 0x40000000 0x4 0x00000000>;
+ bus-range = <0x0 0xff>;
+ interrupts = <GIC_SPI 823 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 824 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 825 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 826 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 829 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 815 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 816 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 817 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 818 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 819 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 820 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 822 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 827 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 828 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 830 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 814 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 821 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 831 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 832 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 833 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 834 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 835 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 836 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "serr", "serr_cor", "serr_nonfatal",
+ "serr_fatal", "axi_err", "inta",
+ "intb", "intc", "intd", "msi",
+ "link_bandwidth", "pm_pme", "dma",
+ "pcie_evt", "msg", "all",
+ "link_equalization_request",
+ "turn_off_event", "pmu_poweroff",
+ "d3_event_f0", "d3_event_f1",
+ "cfg_pmcsr_writeclear_f0",
+ "cfg_pmcsr_writeclear_f1";
+ #interrupt-cells = <1>;
+ interrupt-controller;
+ interrupt-map-mask = <0 0 0 7>;
+ interrupt-map = <0 0 0 1 &pcie1 0 0 0 0>, /* INTA */
+ <0 0 0 2 &pcie1 0 0 0 1>, /* INTB */
+ <0 0 0 3 &pcie1 0 0 0 2>, /* INTC */
+ <0 0 0 4 &pcie1 0 0 0 3>; /* INTD */
+ clocks = <&cpg CPG_MOD 0xc4>, <&cpg CPG_MOD 0xc5>;
+ clock-names = "aclk", "pmu";
+ resets = <&cpg 0xb2>;
+ reset-names = "aresetn";
+ power-domains = <&cpg>;
+ device_type = "pci";
+ #address-cells = <3>;
+ #size-cells = <2>;
+ num-lanes = <2>;
+ renesas,sysc = <&sys 1>;
+ status = "disabled";
+
+ pcie_port1: pcie@0,0 {
+ reg = <0x0 0x0 0x0 0x0 0x0>;
+ ranges;
+ device_type = "pci";
+ vendor-id = <0x1912>;
+ device-id = <0x003b>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+ };
+ };
+
i2c0: i2c@14400400 {
compatible = "renesas,riic-r9a09g057";
reg = <0 0x14400400 0 0x400>;
--
2.54.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable PCIe
2026-07-08 16:33 [PATCH v2 0/2] Add PCIe support to RZ/V2H SoC and EVK Prabhakar
2026-07-08 16:33 ` [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes Prabhakar
@ 2026-07-08 16:33 ` Prabhakar
2026-07-09 15:02 ` Geert Uytterhoeven
1 sibling, 1 reply; 6+ messages in thread
From: Prabhakar @ 2026-07-08 16:33 UTC (permalink / raw)
To: Geert Uytterhoeven, Magnus Damm, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das,
Fabrizio Castro, Lad Prabhakar
From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Enable the PCIE1 slot which is connected to PCIe0 channel.
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v1->v2:
- Renamed the node name from pcie to pcie0.
---
.../dts/renesas/r9a09g057h44-rzv2h-evk.dts | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts b/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts
index 3c1ddacc0944..637fc92dcc26 100644
--- a/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts
+++ b/arch/arm64/boot/dts/renesas/r9a09g057h44-rzv2h-evk.dts
@@ -384,6 +384,18 @@ &ostm7 {
status = "okay";
};
+&pcie0 {
+ pinctrl-0 = <&pcie0_pins>;
+ pinctrl-names = "default";
+ num-lanes = <4>;
+ status = "okay";
+};
+
+&pcie_port0 {
+ clocks = <&versa3 5>;
+ clock-names = "ref";
+};
+
&pinctrl {
eth0_pins: eth0 {
pins = "ET0_TXC_TXCLK";
@@ -430,6 +442,12 @@ i2c8_pins: i2c8 {
<RZV2H_PORT_PINMUX(0, 7, 1)>; /* I2C8_SCL */
};
+ pcie0_pins: pcie0 {
+ pins = "PCIE0_RSTOUTB";
+ slew-rate = <0>;
+ renesas,output-impedance = <2>;
+ };
+
scif_pins: scif {
pins = "SCIF_TXD", "SCIF_RXD";
renesas,output-impedance = <1>;
--
2.54.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes
2026-07-08 16:33 ` [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes Prabhakar
@ 2026-07-08 16:49 ` sashiko-bot
2026-07-09 15:02 ` Geert Uytterhoeven
1 sibling, 0 replies; 6+ messages in thread
From: sashiko-bot @ 2026-07-08 16:49 UTC (permalink / raw)
To: Prabhakar; +Cc: robh, devicetree, wsa+renesas, conor+dt
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] The pcie1 node incorrectly re-uses the exact same clocks and resets properties as pcie0, causing a hardware resource conflict.
- [Medium] The `renesas,sysc` property passes an argument to a phandle, but the target `sys` node lacks a `#cells` property.
--
--- Patch [1]: [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes ---
commit 146b102b21fdb6341d75564293e25310c00c5056
Author: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
arm64: dts: renesas: r9a09g057: Add PCIe nodes
Add PCIe nodes to Renesas RZ/V2H(P) ("R9A09G057") SoC DTSI.
> diff --git a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi
> index 9581af58024ed..f3199c32423e5 100644
> --- a/arch/arm64/boot/dts/renesas/r9a09g057.dtsi
> +++ b/arch/arm64/boot/dts/renesas/r9a09g057.dtsi
> @@ -1024,6 +1024,146 @@ rsci9: serial@12803000 {
[ ... ]
> + pcie0: pcie@13400000 {
> + compatible = "renesas,r9a09g057-pcie";
[ ... ]
> + #size-cells = <2>;
> + num-lanes = <2>;
> + renesas,sysc = <&sys 0>;
^^^^
[Severity: Medium]
Does the target sys node have a #sysc-cells property defined?
If the driver relies on standard of_parse_phandle_with_args() to read the
controller ID (0), the parsing will fail at runtime because the target
node lacks #sysc-cells. If the driver uses of_parse_phandle(), the
argument is simply ignored.
> + status = "disabled";
> +
> + pcie_port0: pcie@0,0 {
[ ... ]
> + pcie1: pcie@13410000 {
> + compatible = "renesas,r9a09g057-pcie";
[ ... ]
> + interrupt-map = <0 0 0 1 &pcie1 0 0 0 0>, /* INTA */
> + <0 0 0 2 &pcie1 0 0 0 1>, /* INTB */
> + <0 0 0 3 &pcie1 0 0 0 2>, /* INTC */
> + <0 0 0 4 &pcie1 0 0 0 3>; /* INTD */
> + clocks = <&cpg CPG_MOD 0xc4>, <&cpg CPG_MOD 0xc5>;
> + clock-names = "aclk", "pmu";
> + resets = <&cpg 0xb2>;
^^^^
[Severity: High]
Are these the correct clocks and resets for pcie1?
The pcie1 node re-uses the exact same indices (0xc4, 0xc5, and 0xb2) as
pcie0. The CPG driver (drivers/clk/renesas/r9a09g057-cpg.c) explicitly maps
these to pcie_0_aclk, pcie_0_clk_pmu, and PCIE_0_ARESETN.
Probing pcie1 will request the exact same exclusive reset and clock lines as
pcie0. This will cause the pcie1 probe to fail with -EBUSY due to exclusive
reset acquisition. Alternatively, if the reset is handled as shared, asserting
the reset during pcie1 initialization will unexpectedly reset the active
pcie0 hardware, dropping any attached devices.
> + reset-names = "aresetn";
> + power-domains = <&cpg>;
> + device_type = "pci";
> + #address-cells = <3>;
> + #size-cells = <2>;
> + num-lanes = <2>;
> + renesas,sysc = <&sys 1>;
^^^^
[Severity: Medium]
Does the target sys node have a #sysc-cells property defined?
Similar to pcie0, if the target node lacks #sysc-cells, parsing this
property with of_parse_phandle_with_args() will fail at runtime.
> + status = "disabled";
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260708163311.222176-1-prabhakar.mahadev-lad.rj@bp.renesas.com?part=1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes
2026-07-08 16:33 ` [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes Prabhakar
2026-07-08 16:49 ` sashiko-bot
@ 2026-07-09 15:02 ` Geert Uytterhoeven
1 sibling, 0 replies; 6+ messages in thread
From: Geert Uytterhoeven @ 2026-07-09 15:02 UTC (permalink / raw)
To: Prabhakar
Cc: Magnus Damm, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das,
Fabrizio Castro, Lad Prabhakar
On Wed, 8 Jul 2026 at 18:33, Prabhakar <prabhakar.csengg@gmail.com> wrote:
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
>
> Add PCIe nodes to Renesas RZ/V2H(P) ("R9A09G057") SoC DTSI.
>
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
> v1->v2:
> - Formatted the ranges property so that the new line entries are aligned.
> - Corrected the flag values for dma-ranges property for pcie0/1 nodes.
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
i.e. will queue in renesas-devel for v7.3.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable PCIe
2026-07-08 16:33 ` [PATCH v2 2/2] arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable PCIe Prabhakar
@ 2026-07-09 15:02 ` Geert Uytterhoeven
0 siblings, 0 replies; 6+ messages in thread
From: Geert Uytterhoeven @ 2026-07-09 15:02 UTC (permalink / raw)
To: Prabhakar
Cc: Magnus Damm, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das,
Fabrizio Castro, Lad Prabhakar
On Wed, 8 Jul 2026 at 18:33, Prabhakar <prabhakar.csengg@gmail.com> wrote:
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
>
> Enable the PCIE1 slot which is connected to PCIe0 channel.
>
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
> v1->v2:
> - Renamed the node name from pcie to pcie0.
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
i.e. will queue in renesas-devel for v7.3.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-07-09 15:02 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-08 16:33 [PATCH v2 0/2] Add PCIe support to RZ/V2H SoC and EVK Prabhakar
2026-07-08 16:33 ` [PATCH v2 1/2] arm64: dts: renesas: r9a09g057: Add PCIe nodes Prabhakar
2026-07-08 16:49 ` sashiko-bot
2026-07-09 15:02 ` Geert Uytterhoeven
2026-07-08 16:33 ` [PATCH v2 2/2] arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable PCIe Prabhakar
2026-07-09 15:02 ` Geert Uytterhoeven
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.