All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Marcin Wojtas <mw@semihalf.com>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Graeme Gregory <graeme.gregory@linaro.org>,
	Andrew Lunn <andrew@lunn.ch>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"<netdev@vger.kernel.org>" <netdev@vger.kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	Russell King - ARM Linux <linux@arm.linux.org.uk>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Antoine T?nart <antoine.tenart@free-electrons.com>,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Gregory CLEMENT <gregory.clement@free-electrons.com>,
	Eze
Subject: Re: [net-next: PATCH 0/8] Armada 7k/8k PP2 ACPI support
Date: Sat, 20 Jan 2018 21:52:46 +0200	[thread overview]
Message-ID: <20180120195246.GC27654@lahna.fi.intel.com> (raw)
In-Reply-To: <CAPv3WKcYrbfKjsnwZ39Tyq3HN0aneUQZdbeUzLbFgLUbMc3w8Q@mail.gmail.com>

On Fri, Jan 19, 2018 at 07:07:29PM +0100, Marcin Wojtas wrote:
> Hi Mika,

Hi,

> 2018-01-18 14:00 GMT+01:00 Andrew Lunn <andrew@lunn.ch>:
> >> I CC'ed Mika since he is more familiar with handling these bits of ACPI
> >> specs - I wonder whether this is a problem that cropped up on x86
> >> systems too.
> >
> > Hi Lorenzo
> >
> > There is nothing about MDIO, PHYs, Ethernet switches, etc in version
> > 6.2 of the spec. If x86 has this, it must be after 6.2 was released.
> > I would not be too surprised if x86 has none of this. If you look at
> > the typical drives used on x86, i210, e1000e, ixgb, r8169, etc. They
> > are all PCI devices, and hide all this.
> >
> >> I do not think there is one and only answer but there must be a single
> >> set of bindings and if the ACPI specs already cater for some of them
> >> we have to reuse them.
> >
> > Agreed. Due diligence so far suggests there is nothing already
> > defined. But im a newbie to ACPI, so could be looking in the wrong
> > place. I really hope there is somebody like Rob Herring, the DT
> > maintainer, who keeps an eye on all ACPI talk and would tell us if we
> > are heading off in the wrong direction.
> >
> 
> My initial approach with MDIO bus with PHYs as child nodes was super
> easy to describe and handle in Linux - please refer to:
> - typical representation of mdio bus with the phys -
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/net/mdio.txt?h=v4.15-rc8
> - my patches in the initial series
> However I guess it would be more proper to use the
> GenericSerialBus-based description, as advised in ACPI Spec. The
> question is, whether we should define new type of a bus or not
> (MdioSerialBus, similar to e.g. I2cSerialBus).

I'm not familiar with MDIO bus but an alternative to GeneriSerialBus
would be to follow what SDIO is doing, e.g have the PHY devices listed
below the MDIO controller and use _ADR to describe their "address" on
that bus. You can see how _ADR applies to SDIO bus from ACPI spec.

Of course ACPI spec should then be updated accordingly to describe what
_ADR means for devices on MDIO bus.

> Since I have a code that can be tested and easily modified to use
> different ACPI approaches with real platform MDIO controller
> (mvmdio.c) and NIC (mvpp2.c), in coming weeks I may be able to find
> some time to prepare a proof of concept based on GenericSerialBus.
> Please expect some RFC patches hopefully right after the coming merge
> window is closed.
> 
> Of course, if I come up on some ACPI - specific implementation
> questions, I won't hesitate to ask in this thred. I will also
> appreciate any hints. For now my two main concerns are:
> - The PHY address on the mdio bus - should it be put into _CRS ->
> GenericSerialBus() field or separate _ADR? I'd lean towards first
> option.
> - The PHY type - in Linux it's resolved basing on two generic
> compatible strings
> (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/net/phy.txt?h=v4.15-rc8).
> I'd put it as a sort of ID into GenericSerialBus(). If you agree - any
> specific filed that you would try to use?

If you go with the SDIO way then each PHY is described as normal ACPI
device and you can use ACPI _HID/_CID to match the device to the
corresponding driver.

> Do I understand correctly that the MDIO controller node should
> comprise OperationRegion() definition of the GenericSerialBus?

I don't think OpRegions are useful in this case because they are mainly
used to allow BIOS AML code to access the hardware through OS driver.

WARNING: multiple messages have this Message-ID (diff)
From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Marcin Wojtas <mw@semihalf.com>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Graeme Gregory <graeme.gregory@linaro.org>,
	Andrew Lunn <andrew@lunn.ch>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"<netdev@vger.kernel.org>" <netdev@vger.kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	Russell King - ARM Linux <linux@arm.linux.org.uk>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Antoine T?nart <antoine.tenart@free-electrons.com>,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Gregory CLEMENT <gregory.clement@free-electrons.com>,
	Ezequiel Garcia <ezequiel.garcia@free-electrons.com>,
	Nadav Haklai <nadavh@marvell.com>,
	Neta Zur Hershkovits <neta@marvell.com>,
	Grzegorz Jaszczyk <jaz@semihalf.com>,
	Tomasz Nowicki <tn@semihalf.com>,
	Hanjun Guo <hanjun.guo@linaro.org>,
	Sudeep Holla <sudeep.holla@arm.com>
Subject: Re: [net-next: PATCH 0/8] Armada 7k/8k PP2 ACPI support
Date: Sat, 20 Jan 2018 21:52:46 +0200	[thread overview]
Message-ID: <20180120195246.GC27654@lahna.fi.intel.com> (raw)
In-Reply-To: <CAPv3WKcYrbfKjsnwZ39Tyq3HN0aneUQZdbeUzLbFgLUbMc3w8Q@mail.gmail.com>

On Fri, Jan 19, 2018 at 07:07:29PM +0100, Marcin Wojtas wrote:
> Hi Mika,

Hi,

> 2018-01-18 14:00 GMT+01:00 Andrew Lunn <andrew@lunn.ch>:
> >> I CC'ed Mika since he is more familiar with handling these bits of ACPI
> >> specs - I wonder whether this is a problem that cropped up on x86
> >> systems too.
> >
> > Hi Lorenzo
> >
> > There is nothing about MDIO, PHYs, Ethernet switches, etc in version
> > 6.2 of the spec. If x86 has this, it must be after 6.2 was released.
> > I would not be too surprised if x86 has none of this. If you look at
> > the typical drives used on x86, i210, e1000e, ixgb, r8169, etc. They
> > are all PCI devices, and hide all this.
> >
> >> I do not think there is one and only answer but there must be a single
> >> set of bindings and if the ACPI specs already cater for some of them
> >> we have to reuse them.
> >
> > Agreed. Due diligence so far suggests there is nothing already
> > defined. But im a newbie to ACPI, so could be looking in the wrong
> > place. I really hope there is somebody like Rob Herring, the DT
> > maintainer, who keeps an eye on all ACPI talk and would tell us if we
> > are heading off in the wrong direction.
> >
> 
> My initial approach with MDIO bus with PHYs as child nodes was super
> easy to describe and handle in Linux - please refer to:
> - typical representation of mdio bus with the phys -
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/net/mdio.txt?h=v4.15-rc8
> - my patches in the initial series
> However I guess it would be more proper to use the
> GenericSerialBus-based description, as advised in ACPI Spec. The
> question is, whether we should define new type of a bus or not
> (MdioSerialBus, similar to e.g. I2cSerialBus).

I'm not familiar with MDIO bus but an alternative to GeneriSerialBus
would be to follow what SDIO is doing, e.g have the PHY devices listed
below the MDIO controller and use _ADR to describe their "address" on
that bus. You can see how _ADR applies to SDIO bus from ACPI spec.

Of course ACPI spec should then be updated accordingly to describe what
_ADR means for devices on MDIO bus.

> Since I have a code that can be tested and easily modified to use
> different ACPI approaches with real platform MDIO controller
> (mvmdio.c) and NIC (mvpp2.c), in coming weeks I may be able to find
> some time to prepare a proof of concept based on GenericSerialBus.
> Please expect some RFC patches hopefully right after the coming merge
> window is closed.
> 
> Of course, if I come up on some ACPI - specific implementation
> questions, I won't hesitate to ask in this thred. I will also
> appreciate any hints. For now my two main concerns are:
> - The PHY address on the mdio bus - should it be put into _CRS ->
> GenericSerialBus() field or separate _ADR? I'd lean towards first
> option.
> - The PHY type - in Linux it's resolved basing on two generic
> compatible strings
> (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/net/phy.txt?h=v4.15-rc8).
> I'd put it as a sort of ID into GenericSerialBus(). If you agree - any
> specific filed that you would try to use?

If you go with the SDIO way then each PHY is described as normal ACPI
device and you can use ACPI _HID/_CID to match the device to the
corresponding driver.

> Do I understand correctly that the MDIO controller node should
> comprise OperationRegion() definition of the GenericSerialBus?

I don't think OpRegions are useful in this case because they are mainly
used to allow BIOS AML code to access the hardware through OS driver.

WARNING: multiple messages have this Message-ID (diff)
From: mika.westerberg@linux.intel.com (Mika Westerberg)
To: linux-arm-kernel@lists.infradead.org
Subject: [net-next: PATCH 0/8] Armada 7k/8k PP2 ACPI support
Date: Sat, 20 Jan 2018 21:52:46 +0200	[thread overview]
Message-ID: <20180120195246.GC27654@lahna.fi.intel.com> (raw)
In-Reply-To: <CAPv3WKcYrbfKjsnwZ39Tyq3HN0aneUQZdbeUzLbFgLUbMc3w8Q@mail.gmail.com>

On Fri, Jan 19, 2018 at 07:07:29PM +0100, Marcin Wojtas wrote:
> Hi Mika,

Hi,

> 2018-01-18 14:00 GMT+01:00 Andrew Lunn <andrew@lunn.ch>:
> >> I CC'ed Mika since he is more familiar with handling these bits of ACPI
> >> specs - I wonder whether this is a problem that cropped up on x86
> >> systems too.
> >
> > Hi Lorenzo
> >
> > There is nothing about MDIO, PHYs, Ethernet switches, etc in version
> > 6.2 of the spec. If x86 has this, it must be after 6.2 was released.
> > I would not be too surprised if x86 has none of this. If you look at
> > the typical drives used on x86, i210, e1000e, ixgb, r8169, etc. They
> > are all PCI devices, and hide all this.
> >
> >> I do not think there is one and only answer but there must be a single
> >> set of bindings and if the ACPI specs already cater for some of them
> >> we have to reuse them.
> >
> > Agreed. Due diligence so far suggests there is nothing already
> > defined. But im a newbie to ACPI, so could be looking in the wrong
> > place. I really hope there is somebody like Rob Herring, the DT
> > maintainer, who keeps an eye on all ACPI talk and would tell us if we
> > are heading off in the wrong direction.
> >
> 
> My initial approach with MDIO bus with PHYs as child nodes was super
> easy to describe and handle in Linux - please refer to:
> - typical representation of mdio bus with the phys -
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/net/mdio.txt?h=v4.15-rc8
> - my patches in the initial series
> However I guess it would be more proper to use the
> GenericSerialBus-based description, as advised in ACPI Spec. The
> question is, whether we should define new type of a bus or not
> (MdioSerialBus, similar to e.g. I2cSerialBus).

I'm not familiar with MDIO bus but an alternative to GeneriSerialBus
would be to follow what SDIO is doing, e.g have the PHY devices listed
below the MDIO controller and use _ADR to describe their "address" on
that bus. You can see how _ADR applies to SDIO bus from ACPI spec.

Of course ACPI spec should then be updated accordingly to describe what
_ADR means for devices on MDIO bus.

> Since I have a code that can be tested and easily modified to use
> different ACPI approaches with real platform MDIO controller
> (mvmdio.c) and NIC (mvpp2.c), in coming weeks I may be able to find
> some time to prepare a proof of concept based on GenericSerialBus.
> Please expect some RFC patches hopefully right after the coming merge
> window is closed.
> 
> Of course, if I come up on some ACPI - specific implementation
> questions, I won't hesitate to ask in this thred. I will also
> appreciate any hints. For now my two main concerns are:
> - The PHY address on the mdio bus - should it be put into _CRS ->
> GenericSerialBus() field or separate _ADR? I'd lean towards first
> option.
> - The PHY type - in Linux it's resolved basing on two generic
> compatible strings
> (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/net/phy.txt?h=v4.15-rc8).
> I'd put it as a sort of ID into GenericSerialBus(). If you agree - any
> specific filed that you would try to use?

If you go with the SDIO way then each PHY is described as normal ACPI
device and you can use ACPI _HID/_CID to match the device to the
corresponding driver.

> Do I understand correctly that the MDIO controller node should
> comprise OperationRegion() definition of the GenericSerialBus?

I don't think OpRegions are useful in this case because they are mainly
used to allow BIOS AML code to access the hardware through OS driver.

  parent reply	other threads:[~2018-01-20 19:52 UTC|newest]

Thread overview: 126+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-18  9:17 [net-next: PATCH 0/8] Armada 7k/8k PP2 ACPI support Marcin Wojtas
2017-12-18  9:17 ` Marcin Wojtas
2017-12-18  9:17 ` Marcin Wojtas
2017-12-18  9:17 ` [net-next: PATCH 1/8] device property: Introduce fwnode_get_mac_address() Marcin Wojtas
2017-12-18  9:17   ` Marcin Wojtas
2017-12-18  9:17   ` Marcin Wojtas
2017-12-18  9:17 ` [net-next: PATCH 2/8] device property: Introduce fwnode_get_phy_mode() Marcin Wojtas
2017-12-18  9:17   ` Marcin Wojtas
2017-12-18  9:17 ` [net-next: PATCH 3/8] mdio_bus: Introduce fwnode MDIO helpers Marcin Wojtas
2017-12-18  9:17   ` Marcin Wojtas
2017-12-18  9:17   ` Marcin Wojtas
2017-12-18  9:18 ` [net-next: PATCH 4/8] net: mvmdio: add ACPI support Marcin Wojtas
2017-12-18  9:18   ` Marcin Wojtas
2017-12-18  9:18 ` [net-next: PATCH 5/8] net: mvpp2: simplify maintaining enabled ports' list Marcin Wojtas
2017-12-18  9:18   ` Marcin Wojtas
2017-12-18  9:18   ` Marcin Wojtas
2017-12-18  9:18 ` [net-next: PATCH 6/8] net: mvpp2: use device_*/fwnode_* APIs instead of of_* Marcin Wojtas
2017-12-18  9:18   ` Marcin Wojtas
2017-12-18  9:18 ` [net-next: PATCH 7/8] net: mvpp2: handle PHY with its fwnode Marcin Wojtas
2017-12-18  9:18   ` Marcin Wojtas
2017-12-18  9:18 ` [net-next: PATCH 8/8] net: mvpp2: enable ACPI support in the driver Marcin Wojtas
2017-12-18  9:18   ` Marcin Wojtas
2017-12-18  9:40 ` [net-next: PATCH 0/8] Armada 7k/8k PP2 ACPI support Ard Biesheuvel
2017-12-18  9:40   ` Ard Biesheuvel
2017-12-18 15:49   ` Marcin Wojtas
2017-12-18 15:49     ` Marcin Wojtas
2017-12-18 15:49     ` Marcin Wojtas
2018-01-03 11:00   ` Graeme Gregory
2018-01-03 11:00     ` Graeme Gregory
2018-01-03 11:00     ` Graeme Gregory
2018-01-03 11:12     ` Marcin Wojtas
2018-01-03 11:12       ` Marcin Wojtas
2018-01-03 11:12       ` Marcin Wojtas
2018-01-03 12:47       ` Andrew Lunn
2018-01-03 12:47         ` Andrew Lunn
2018-01-03 12:47         ` Andrew Lunn
2018-01-03 13:13         ` Marcin Wojtas
2018-01-03 13:13           ` Marcin Wojtas
2018-01-03 13:13           ` Marcin Wojtas
2018-01-03 13:33           ` Andrew Lunn
2018-01-03 13:33             ` Andrew Lunn
2018-01-03 13:33             ` Andrew Lunn
2018-01-03 13:36             ` Marcin Wojtas
2018-01-03 13:36               ` Marcin Wojtas
2018-01-03 13:36               ` Marcin Wojtas
2018-01-04 16:09       ` Graeme Gregory
2018-01-04 16:09         ` Graeme Gregory
2018-01-04 16:09         ` Graeme Gregory
2018-01-04 16:20         ` Andrew Lunn
2018-01-04 16:20           ` Andrew Lunn
2018-01-04 16:20           ` Andrew Lunn
2018-01-08 14:45           ` Graeme Gregory
2018-01-08 14:45             ` Graeme Gregory
2018-01-08 14:45             ` Graeme Gregory
2018-01-08 14:53             ` Andrew Lunn
2018-01-08 14:53               ` Andrew Lunn
2018-01-08 14:53               ` Andrew Lunn
2018-01-08 15:14               ` Graeme Gregory
2018-01-08 15:14                 ` Graeme Gregory
2018-01-08 15:14                 ` Graeme Gregory
2018-01-08 15:42                 ` Andrew Lunn
2018-01-08 15:42                   ` Andrew Lunn
2018-01-08 15:42                   ` Andrew Lunn
2018-01-08 17:17                   ` Marcin Wojtas
2018-01-08 17:17                     ` Marcin Wojtas
2018-01-08 17:17                     ` Marcin Wojtas
2018-01-09 10:19                     ` Graeme Gregory
2018-01-09 10:19                       ` Graeme Gregory
2018-01-09 10:19                       ` Graeme Gregory
2018-01-09 10:22                       ` Marcin Wojtas
2018-01-09 10:22                         ` Marcin Wojtas
2018-01-09 10:22                         ` Marcin Wojtas
2018-01-09 13:00                         ` Andrew Lunn
2018-01-09 13:00                           ` Andrew Lunn
2018-01-09 13:00                           ` Andrew Lunn
2018-01-18 12:31                           ` Lorenzo Pieralisi
2018-01-18 12:31                             ` Lorenzo Pieralisi
2018-01-18 12:31                             ` Lorenzo Pieralisi
2018-01-18 12:31                             ` Lorenzo Pieralisi
2018-01-18 13:00                             ` Andrew Lunn
2018-01-18 13:00                               ` Andrew Lunn
2018-01-18 13:00                               ` Andrew Lunn
2018-01-18 13:00                               ` Andrew Lunn
2018-01-19 18:07                               ` Marcin Wojtas
2018-01-19 18:07                                 ` Marcin Wojtas
2018-01-19 18:07                                 ` Marcin Wojtas
2018-01-19 18:07                                 ` Marcin Wojtas
2018-01-19 18:53                                 ` Andrew Lunn
2018-01-19 18:53                                   ` Andrew Lunn
2018-01-19 18:53                                   ` Andrew Lunn
2018-01-19 18:53                                   ` Andrew Lunn
2018-01-20 19:52                                 ` Mika Westerberg [this message]
2018-01-20 19:52                                   ` Mika Westerberg
2018-01-20 19:52                                   ` Mika Westerberg
2018-01-21  1:08                                   ` Andrew Lunn
2018-01-21  1:08                                     ` Andrew Lunn
2018-01-21  1:08                                     ` Andrew Lunn
2018-01-21  1:08                                     ` Andrew Lunn
2018-01-21 10:27                                     ` Mika Westerberg
2018-01-21 10:27                                       ` Mika Westerberg
2018-01-21 10:27                                       ` Mika Westerberg
2018-01-21 10:27                                       ` Mika Westerberg
2018-01-21 16:13                                       ` Andrew Lunn
2018-01-21 16:13                                         ` Andrew Lunn
2018-01-21 16:13                                         ` Andrew Lunn
2018-01-21 16:13                                         ` Andrew Lunn
2018-01-21 17:13                                         ` Ard Biesheuvel
2018-01-21 17:13                                           ` Ard Biesheuvel
2018-01-21 17:13                                           ` Ard Biesheuvel
2018-01-21 17:13                                           ` Ard Biesheuvel
2018-01-21 18:55                                           ` Andrew Lunn
2018-01-21 18:55                                             ` Andrew Lunn
2018-01-21 18:55                                             ` Andrew Lunn
2018-01-21 18:55                                             ` Andrew Lunn
2017-12-18 14:09 ` Rafael J. Wysocki
2017-12-18 14:09   ` Rafael J. Wysocki
2017-12-19 18:48 ` David Miller
2017-12-19 18:48   ` David Miller
2017-12-19 18:59   ` Marcin Wojtas
2017-12-19 18:59     ` Marcin Wojtas
2017-12-19 20:46     ` Andrew Lunn
2017-12-19 20:46       ` Andrew Lunn
2017-12-19 23:13       ` Marcin Wojtas
2017-12-19 23:13         ` Marcin Wojtas
2017-12-21 19:21 ` Antoine Tenart
2017-12-21 19:21   ` Antoine Tenart

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=20180120195246.GC27654@lahna.fi.intel.com \
    --to=mika.westerberg@linux.intel.com \
    --cc=andrew@lunn.ch \
    --cc=antoine.tenart@free-electrons.com \
    --cc=ard.biesheuvel@linaro.org \
    --cc=davem@davemloft.net \
    --cc=f.fainelli@gmail.com \
    --cc=graeme.gregory@linaro.org \
    --cc=gregory.clement@free-electrons.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=mw@semihalf.com \
    --cc=netdev@vger.kernel.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=thomas.petazzoni@free-electrons.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.