From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Marek Vasut <marex@denx.de>
Cc: Francesco Dolcini <francesco@dolcini.it>,
Richard Weinberger <richard@nod.at>,
Vignesh Raghavendra <vigneshr@ti.com>,
linux-mtd@lists.infradead.org,
Francesco Dolcini <francesco.dolcini@toradex.com>,
Shawn Guo <shawnguo@kernel.org>,
linux-arm-kernel@lists.infradead.org, stable@vger.kernel.org,
u-boot@lists.denx.de
Subject: Re: [PATCH v1] mtd: parsers: ofpart: Fix parsing when size-cells is 0
Date: Fri, 2 Dec 2022 17:57:30 +0100 [thread overview]
Message-ID: <20221202175730.231d75d5@xps-13> (raw)
In-Reply-To: <e80377c9-1542-d47d-6d35-2efdc15bcbf8@denx.de>
Hi Marek,
marex@denx.de wrote on Fri, 2 Dec 2022 17:52:05 +0100:
> On 12/2/22 17:42, Miquel Raynal wrote:
> > Hi Marek,
>
> Hi,
>
> [...]
>
> >>> However, it should not be empty, at the very least a reg property
> >>> should indicate on which CS it is wired, as expected there:
> >>> https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git/tree/Documentation/devicetree/bindings/mtd/nand-chip.yaml?h=mtd/next
> >>
> >> OK, I see your point. So basically this?
> >>
> >> &gpmi {
> >> #size-cells = <1>;
> >> ...
> >> nand-chip@0 {
> >> reg = <0>;
> >> };
> >> };
> >>
> >> btw. the GPMI NAND controller supports only one chipselect, so the reg in nand-chip node makes little sense.
> >
> > I randomly opened a reference manual (IMX6DQL.pdf), they say:
> >
> > "Up to four NAND devices, supported by four chip-selects and one
> > ganged ready/ busy."
>
> Doh, and MX7D has the same controller, so size-cells = <1>; makes sense with nand-chip@N {} .
Actually #address-cells is here for that. You need to point at one CS,
so in most cases this is:
controller {
#address-cells = <1>;
#size-cells = <0>;
chip@N {
reg = <N>;
};
};
>
> > Anyway, the NAND controller generic bindings which require this reg
> > property, what the controller or the driver actually supports, or even
> > how it is used on current designs is not relevant here.
> >
> >>> But, as nand-chip.yaml references mtd.yaml, you can as well use
> >>> whatever is described here:
> >>> https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git/tree/Documentation/devicetree/bindings/mtd/mtd.yaml?h=mtd/next
> >>> >>>> What would be the gpmi controller size cells (X) in that case, still 0, right ? So how does that help solve this problem, wouldn't U-Boot still populate the partitions directly under the gpmi node or into partitions sub-node ?
> >>>
> >>> The commit that was pointed in the original fix clearly stated that the
> >>> NAND chip node was targeted
> >>
> >> I think this is another miscommunication here. The commit
> >>
> >> 753395ea1e45 ("ARM: dts: imx7: Fix NAND controller size-cells")
> >>
> >> modifies the size-cells of the NAND controller. The nand-chip is not involved in this at all . In the examples above, it's the "&gpmi" node size-cells that is modified.
> >
> > Yes I know. I was referring to this commit, sorry:
> > 36fee2f7621e ("common: fdt_support: add support for "partitions" subnode to fdt_fixup_mtdparts()")
> >
> > The log says:
> >
> > Listing MTD partitions directly in the flash mode has been
> > deprecated for a while for kernel Device Trees. Look for a node "partitions" in the
> > found flash nodes and use it instead of the flash node itself for the
> > partition list when it exists, so Device Trees following the current
> > best practices can be fixed up.
> >
> > Which (I hope) means U-boot will equivalently try to play with the
> > partitions container, either in the controller node or in the chip node.
> >
> >>> , not the NAND controller node. I hope this
> >>> is correctly supported in U-Boot though. So if there is a NAND chip
> >>> subnode, I suppose U-Boot would try to create the partitions that are
> >>> inside, or even in the sub "partitions" container.
> >>
> >> My understanding is that U-Boot checks the nand-controller node size-cells, not the nand-chip{} or partitions{} subnode size-cells .
> >
> > I don't think U-Boot cares.
> >
> >> Francesco, can you please share the DT, including the U-Boot generated partitions, which is passed to Linux on Colibri MX7 ? I think that should make all confusion go away.
> >
> > Please also do it with the NAND chip described. If, when the NAND chip
> > is described U-Boot tries to create partitions in the controller node,
> > then the situation is even worse than I thought. But I believe
> > describing the node like a suggest in the DT should prevent the boot
> > failure while still allowing a rather good description of the hardware.
> >
> > BTW I still think the relevant action right now is to revert the DT
> > patch.
>
> I am starting to bank toward that variant as well (thanks for clarifying the rationale in the discussion, that helped a lot).
>
> But then, the follow up fix would be what exactly, update the binding document to require #size-cells = <1>; ?
Thanks,
Miquèl
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
WARNING: multiple messages have this Message-ID (diff)
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Marek Vasut <marex@denx.de>
Cc: Francesco Dolcini <francesco@dolcini.it>,
Richard Weinberger <richard@nod.at>,
Vignesh Raghavendra <vigneshr@ti.com>,
linux-mtd@lists.infradead.org,
Francesco Dolcini <francesco.dolcini@toradex.com>,
Shawn Guo <shawnguo@kernel.org>,
linux-arm-kernel@lists.infradead.org, stable@vger.kernel.org,
u-boot@lists.denx.de
Subject: Re: [PATCH v1] mtd: parsers: ofpart: Fix parsing when size-cells is 0
Date: Fri, 2 Dec 2022 17:57:30 +0100 [thread overview]
Message-ID: <20221202175730.231d75d5@xps-13> (raw)
In-Reply-To: <e80377c9-1542-d47d-6d35-2efdc15bcbf8@denx.de>
Hi Marek,
marex@denx.de wrote on Fri, 2 Dec 2022 17:52:05 +0100:
> On 12/2/22 17:42, Miquel Raynal wrote:
> > Hi Marek,
>
> Hi,
>
> [...]
>
> >>> However, it should not be empty, at the very least a reg property
> >>> should indicate on which CS it is wired, as expected there:
> >>> https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git/tree/Documentation/devicetree/bindings/mtd/nand-chip.yaml?h=mtd/next
> >>
> >> OK, I see your point. So basically this?
> >>
> >> &gpmi {
> >> #size-cells = <1>;
> >> ...
> >> nand-chip@0 {
> >> reg = <0>;
> >> };
> >> };
> >>
> >> btw. the GPMI NAND controller supports only one chipselect, so the reg in nand-chip node makes little sense.
> >
> > I randomly opened a reference manual (IMX6DQL.pdf), they say:
> >
> > "Up to four NAND devices, supported by four chip-selects and one
> > ganged ready/ busy."
>
> Doh, and MX7D has the same controller, so size-cells = <1>; makes sense with nand-chip@N {} .
Actually #address-cells is here for that. You need to point at one CS,
so in most cases this is:
controller {
#address-cells = <1>;
#size-cells = <0>;
chip@N {
reg = <N>;
};
};
>
> > Anyway, the NAND controller generic bindings which require this reg
> > property, what the controller or the driver actually supports, or even
> > how it is used on current designs is not relevant here.
> >
> >>> But, as nand-chip.yaml references mtd.yaml, you can as well use
> >>> whatever is described here:
> >>> https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git/tree/Documentation/devicetree/bindings/mtd/mtd.yaml?h=mtd/next
> >>> >>>> What would be the gpmi controller size cells (X) in that case, still 0, right ? So how does that help solve this problem, wouldn't U-Boot still populate the partitions directly under the gpmi node or into partitions sub-node ?
> >>>
> >>> The commit that was pointed in the original fix clearly stated that the
> >>> NAND chip node was targeted
> >>
> >> I think this is another miscommunication here. The commit
> >>
> >> 753395ea1e45 ("ARM: dts: imx7: Fix NAND controller size-cells")
> >>
> >> modifies the size-cells of the NAND controller. The nand-chip is not involved in this at all . In the examples above, it's the "&gpmi" node size-cells that is modified.
> >
> > Yes I know. I was referring to this commit, sorry:
> > 36fee2f7621e ("common: fdt_support: add support for "partitions" subnode to fdt_fixup_mtdparts()")
> >
> > The log says:
> >
> > Listing MTD partitions directly in the flash mode has been
> > deprecated for a while for kernel Device Trees. Look for a node "partitions" in the
> > found flash nodes and use it instead of the flash node itself for the
> > partition list when it exists, so Device Trees following the current
> > best practices can be fixed up.
> >
> > Which (I hope) means U-boot will equivalently try to play with the
> > partitions container, either in the controller node or in the chip node.
> >
> >>> , not the NAND controller node. I hope this
> >>> is correctly supported in U-Boot though. So if there is a NAND chip
> >>> subnode, I suppose U-Boot would try to create the partitions that are
> >>> inside, or even in the sub "partitions" container.
> >>
> >> My understanding is that U-Boot checks the nand-controller node size-cells, not the nand-chip{} or partitions{} subnode size-cells .
> >
> > I don't think U-Boot cares.
> >
> >> Francesco, can you please share the DT, including the U-Boot generated partitions, which is passed to Linux on Colibri MX7 ? I think that should make all confusion go away.
> >
> > Please also do it with the NAND chip described. If, when the NAND chip
> > is described U-Boot tries to create partitions in the controller node,
> > then the situation is even worse than I thought. But I believe
> > describing the node like a suggest in the DT should prevent the boot
> > failure while still allowing a rather good description of the hardware.
> >
> > BTW I still think the relevant action right now is to revert the DT
> > patch.
>
> I am starting to bank toward that variant as well (thanks for clarifying the rationale in the discussion, that helped a lot).
>
> But then, the follow up fix would be what exactly, update the binding document to require #size-cells = <1>; ?
Thanks,
Miquèl
WARNING: multiple messages have this Message-ID (diff)
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Marek Vasut <marex@denx.de>
Cc: Francesco Dolcini <francesco@dolcini.it>,
Richard Weinberger <richard@nod.at>,
Vignesh Raghavendra <vigneshr@ti.com>,
linux-mtd@lists.infradead.org,
Francesco Dolcini <francesco.dolcini@toradex.com>,
Shawn Guo <shawnguo@kernel.org>,
linux-arm-kernel@lists.infradead.org, stable@vger.kernel.org,
u-boot@lists.denx.de
Subject: Re: [PATCH v1] mtd: parsers: ofpart: Fix parsing when size-cells is 0
Date: Fri, 2 Dec 2022 17:57:30 +0100 [thread overview]
Message-ID: <20221202175730.231d75d5@xps-13> (raw)
In-Reply-To: <e80377c9-1542-d47d-6d35-2efdc15bcbf8@denx.de>
Hi Marek,
marex@denx.de wrote on Fri, 2 Dec 2022 17:52:05 +0100:
> On 12/2/22 17:42, Miquel Raynal wrote:
> > Hi Marek,
>
> Hi,
>
> [...]
>
> >>> However, it should not be empty, at the very least a reg property
> >>> should indicate on which CS it is wired, as expected there:
> >>> https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git/tree/Documentation/devicetree/bindings/mtd/nand-chip.yaml?h=mtd/next
> >>
> >> OK, I see your point. So basically this?
> >>
> >> &gpmi {
> >> #size-cells = <1>;
> >> ...
> >> nand-chip@0 {
> >> reg = <0>;
> >> };
> >> };
> >>
> >> btw. the GPMI NAND controller supports only one chipselect, so the reg in nand-chip node makes little sense.
> >
> > I randomly opened a reference manual (IMX6DQL.pdf), they say:
> >
> > "Up to four NAND devices, supported by four chip-selects and one
> > ganged ready/ busy."
>
> Doh, and MX7D has the same controller, so size-cells = <1>; makes sense with nand-chip@N {} .
Actually #address-cells is here for that. You need to point at one CS,
so in most cases this is:
controller {
#address-cells = <1>;
#size-cells = <0>;
chip@N {
reg = <N>;
};
};
>
> > Anyway, the NAND controller generic bindings which require this reg
> > property, what the controller or the driver actually supports, or even
> > how it is used on current designs is not relevant here.
> >
> >>> But, as nand-chip.yaml references mtd.yaml, you can as well use
> >>> whatever is described here:
> >>> https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git/tree/Documentation/devicetree/bindings/mtd/mtd.yaml?h=mtd/next
> >>> >>>> What would be the gpmi controller size cells (X) in that case, still 0, right ? So how does that help solve this problem, wouldn't U-Boot still populate the partitions directly under the gpmi node or into partitions sub-node ?
> >>>
> >>> The commit that was pointed in the original fix clearly stated that the
> >>> NAND chip node was targeted
> >>
> >> I think this is another miscommunication here. The commit
> >>
> >> 753395ea1e45 ("ARM: dts: imx7: Fix NAND controller size-cells")
> >>
> >> modifies the size-cells of the NAND controller. The nand-chip is not involved in this at all . In the examples above, it's the "&gpmi" node size-cells that is modified.
> >
> > Yes I know. I was referring to this commit, sorry:
> > 36fee2f7621e ("common: fdt_support: add support for "partitions" subnode to fdt_fixup_mtdparts()")
> >
> > The log says:
> >
> > Listing MTD partitions directly in the flash mode has been
> > deprecated for a while for kernel Device Trees. Look for a node "partitions" in the
> > found flash nodes and use it instead of the flash node itself for the
> > partition list when it exists, so Device Trees following the current
> > best practices can be fixed up.
> >
> > Which (I hope) means U-boot will equivalently try to play with the
> > partitions container, either in the controller node or in the chip node.
> >
> >>> , not the NAND controller node. I hope this
> >>> is correctly supported in U-Boot though. So if there is a NAND chip
> >>> subnode, I suppose U-Boot would try to create the partitions that are
> >>> inside, or even in the sub "partitions" container.
> >>
> >> My understanding is that U-Boot checks the nand-controller node size-cells, not the nand-chip{} or partitions{} subnode size-cells .
> >
> > I don't think U-Boot cares.
> >
> >> Francesco, can you please share the DT, including the U-Boot generated partitions, which is passed to Linux on Colibri MX7 ? I think that should make all confusion go away.
> >
> > Please also do it with the NAND chip described. If, when the NAND chip
> > is described U-Boot tries to create partitions in the controller node,
> > then the situation is even worse than I thought. But I believe
> > describing the node like a suggest in the DT should prevent the boot
> > failure while still allowing a rather good description of the hardware.
> >
> > BTW I still think the relevant action right now is to revert the DT
> > patch.
>
> I am starting to bank toward that variant as well (thanks for clarifying the rationale in the discussion, that helped a lot).
>
> But then, the follow up fix would be what exactly, update the binding document to require #size-cells = <1>; ?
Thanks,
Miquèl
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-12-02 17:01 UTC|newest]
Thread overview: 144+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-02 7:19 [PATCH v1] mtd: parsers: ofpart: Fix parsing when size-cells is 0 Francesco Dolcini
2022-12-02 7:19 ` Francesco Dolcini
2022-12-02 7:19 ` Francesco Dolcini
2022-12-02 9:14 ` Miquel Raynal
2022-12-02 9:14 ` Miquel Raynal
2022-12-02 9:14 ` Miquel Raynal
2022-12-02 10:12 ` Francesco Dolcini
2022-12-02 10:12 ` Francesco Dolcini
2022-12-02 10:12 ` Francesco Dolcini
2022-12-02 10:24 ` Francesco Dolcini
2022-12-02 10:24 ` Francesco Dolcini
2022-12-02 10:24 ` Francesco Dolcini
2022-12-02 10:53 ` Miquel Raynal
2022-12-02 10:53 ` Miquel Raynal
2022-12-02 10:53 ` Miquel Raynal
2022-12-02 11:23 ` Francesco Dolcini
2022-12-02 11:23 ` Francesco Dolcini
2022-12-02 11:23 ` Francesco Dolcini
2022-12-02 14:05 ` Miquel Raynal
2022-12-02 14:05 ` Miquel Raynal
2022-12-02 14:05 ` Miquel Raynal
2022-12-02 14:31 ` Marek Vasut
2022-12-02 14:31 ` Marek Vasut
2022-12-02 14:31 ` Marek Vasut
2022-12-02 15:00 ` Miquel Raynal
2022-12-02 15:00 ` Miquel Raynal
2022-12-02 15:00 ` Miquel Raynal
2022-12-02 15:23 ` Marek Vasut
2022-12-02 15:23 ` Marek Vasut
2022-12-02 15:23 ` Marek Vasut
2022-12-02 15:49 ` Miquel Raynal
2022-12-02 15:49 ` Miquel Raynal
2022-12-02 15:49 ` Miquel Raynal
2022-12-02 16:01 ` Miquel Raynal
2022-12-02 16:01 ` Miquel Raynal
2022-12-02 16:01 ` Miquel Raynal
2022-12-02 16:17 ` Marek Vasut
2022-12-02 16:17 ` Marek Vasut
2022-12-02 16:17 ` Marek Vasut
2022-12-02 16:42 ` Miquel Raynal
2022-12-02 16:42 ` Miquel Raynal
2022-12-02 16:42 ` Miquel Raynal
2022-12-02 16:52 ` Marek Vasut
2022-12-02 16:52 ` Marek Vasut
2022-12-02 16:52 ` Marek Vasut
2022-12-02 16:57 ` Miquel Raynal [this message]
2022-12-02 16:57 ` Miquel Raynal
2022-12-02 16:57 ` Miquel Raynal
2022-12-02 17:08 ` Marek Vasut
2022-12-02 17:08 ` Marek Vasut
2022-12-02 17:08 ` Marek Vasut
2022-12-05 11:26 ` Francesco Dolcini
2022-12-05 11:26 ` Francesco Dolcini
2022-12-05 11:26 ` Francesco Dolcini
2022-12-05 13:49 ` Miquel Raynal
2022-12-05 13:49 ` Miquel Raynal
2022-12-05 13:49 ` Miquel Raynal
2022-12-05 16:25 ` Marek Vasut
2022-12-05 16:25 ` Marek Vasut
2022-12-05 16:25 ` Marek Vasut
2022-12-15 7:16 ` Miquel Raynal
2022-12-15 7:16 ` Miquel Raynal
2022-12-15 7:16 ` Miquel Raynal
2022-12-15 7:45 ` Marek Vasut
2022-12-15 7:45 ` Marek Vasut
2022-12-15 7:45 ` Marek Vasut
2022-12-15 8:04 ` Miquel Raynal
2022-12-15 8:04 ` Miquel Raynal
2022-12-15 8:04 ` Miquel Raynal
2022-12-16 0:36 ` Marek Vasut
2022-12-16 0:36 ` Marek Vasut
2022-12-16 0:36 ` Marek Vasut
2022-12-16 7:52 ` Francesco Dolcini
2022-12-16 7:52 ` Francesco Dolcini
2022-12-16 7:52 ` Francesco Dolcini
2022-12-16 7:45 ` Francesco Dolcini
2022-12-16 7:45 ` Francesco Dolcini
2022-12-16 7:45 ` Francesco Dolcini
2022-12-16 10:46 ` Marek Vasut
2022-12-16 10:46 ` Marek Vasut
2022-12-16 10:46 ` Marek Vasut
2022-12-16 11:01 ` Miquel Raynal
2022-12-16 11:01 ` Miquel Raynal
2022-12-16 11:01 ` Miquel Raynal
2022-12-16 12:37 ` Francesco Dolcini
2022-12-16 12:37 ` Francesco Dolcini
2022-12-16 12:37 ` Francesco Dolcini
2022-12-16 13:37 ` Miquel Raynal
2022-12-16 13:37 ` Miquel Raynal
2022-12-16 13:37 ` Miquel Raynal
2022-12-16 14:32 ` Marek Vasut
2022-12-16 14:32 ` Marek Vasut
2022-12-16 14:32 ` Marek Vasut
2022-12-16 15:35 ` Miquel Raynal
2022-12-16 15:35 ` Miquel Raynal
2022-12-16 15:35 ` Miquel Raynal
2022-12-16 16:30 ` Francesco Dolcini
2022-12-16 16:30 ` Francesco Dolcini
2022-12-16 16:30 ` Francesco Dolcini
2023-01-02 9:40 ` Miquel Raynal
2023-01-02 9:40 ` Miquel Raynal
2023-01-02 9:40 ` Miquel Raynal
2023-01-05 11:33 ` Miquel Raynal
2023-01-05 11:33 ` Miquel Raynal
2023-01-05 11:33 ` Miquel Raynal
2023-01-05 12:47 ` Francesco Dolcini
2023-01-05 12:47 ` Francesco Dolcini
2023-01-05 12:47 ` Francesco Dolcini
2023-01-05 14:51 ` Marek Vasut
2023-01-05 14:51 ` Marek Vasut
2023-01-05 14:51 ` Marek Vasut
2023-01-05 15:03 ` Miquel Raynal
2023-01-05 15:03 ` Miquel Raynal
2023-01-05 15:03 ` Miquel Raynal
2022-12-02 17:20 ` Francesco Dolcini
2022-12-02 17:20 ` Francesco Dolcini
2022-12-02 17:20 ` Francesco Dolcini
2022-12-05 11:30 ` Francesco Dolcini
2022-12-05 11:30 ` Francesco Dolcini
2022-12-05 11:30 ` Francesco Dolcini
2022-12-05 15:28 ` Miquel Raynal
2022-12-05 15:28 ` Miquel Raynal
2022-12-05 15:28 ` Miquel Raynal
2022-12-02 16:45 ` Francesco Dolcini
2022-12-02 16:45 ` Francesco Dolcini
2022-12-02 16:45 ` Francesco Dolcini
2022-12-02 17:05 ` Miquel Raynal
2022-12-02 17:05 ` Miquel Raynal
2022-12-02 17:05 ` Miquel Raynal
2022-12-02 15:56 ` Thorsten Leemhuis
2022-12-02 15:56 ` Thorsten Leemhuis
2022-12-02 15:56 ` Thorsten Leemhuis
2022-12-04 12:50 ` Marek Vasut
2022-12-04 12:50 ` Marek Vasut
2022-12-04 12:50 ` Marek Vasut
2022-12-04 12:59 ` Thorsten Leemhuis
2022-12-04 12:59 ` Thorsten Leemhuis
2022-12-04 12:59 ` Thorsten Leemhuis
2022-12-04 15:50 ` Marek Vasut
2022-12-04 15:50 ` Marek Vasut
2022-12-04 15:50 ` Marek Vasut
2022-12-02 12:43 ` Greg KH
2022-12-02 12:43 ` Greg KH
2022-12-02 12:43 ` Greg KH
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=20221202175730.231d75d5@xps-13 \
--to=miquel.raynal@bootlin.com \
--cc=francesco.dolcini@toradex.com \
--cc=francesco@dolcini.it \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-mtd@lists.infradead.org \
--cc=marex@denx.de \
--cc=richard@nod.at \
--cc=shawnguo@kernel.org \
--cc=stable@vger.kernel.org \
--cc=u-boot@lists.denx.de \
--cc=vigneshr@ti.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.