mbox series

[00/14] Introduce PECI subsystem

Message ID 20210712220447.957418-1-iwona.winiarska@intel.com
Headers show
Series Introduce PECI subsystem | expand

Message

Winiarska, Iwona July 12, 2021, 10:04 p.m. UTC
Note: All changes to arch/x86 are contained within patches 01-02.

The Platform Environment Control Interface (PECI) is a communication
interface between Intel processors and management controllers (e.g.
Baseboard Management Controller, BMC).

This series adds a PECI subsystem and introduces drivers which run in
the Linux instance on the management controller (not the main Intel
processor) and is intended to be used by the OpenBMC [1], a Linux
distribution for BMC devices.
The information exposed over PECI (like processor and DIMM
temperature) refers to the Intel processor and can be consumed by
daemons running on the BMC to, for example, display the processor
temperature in its web interface.

The PECI bus is collection of code that provides interface support
between PECI devices (that actually represent processors) and PECI
controllers (such as the "peci-aspeed" controller) that allow to
access physical PECI interface. PECI devices are bound to PECI
drivers that provides access to PECI services. This series introduces
a generic "peci-cpu" driver that exposes hardware monitoring "cputemp"
and "dimmtemp" using the auxiliary bus.

Exposing "raw" PECI to userspace, either to write userspace drivers or
for debug/testing purpose was left out of this series to encourage
writing kernel drivers instead, but may be pursued in the future.

Introducing PECI to upstream Linux was already attempted before [2].
Since it's been over a year since last revision, and the series
changed quite a bit in the meantime, I've decided to start from v1.

I would also like to give credit to everyone who helped me with
different aspects of preliminary review:
- Pierre-Louis Bossart,
- Tony Luck, 
- Andy Shevchenko,
- Dave Hansen.

[1] https://github.com/openbmc/openbmc
[2] https://lore.kernel.org/openbmc/20191211194624.2872-1-jae.hyun.yoo@linux.intel.com/

Iwona Winiarska (12):
  x86/cpu: Move intel-family to arch-independent headers
  x86/cpu: Extract cpuid helpers to arch-independent
  dt-bindings: Add generic bindings for PECI
  dt-bindings: Add bindings for peci-aspeed
  ARM: dts: aspeed: Add PECI controller nodes
  peci: Add core infrastructure
  peci: Add device detection
  peci: Add support for PECI device drivers
  peci: Add peci-cpu driver
  hwmon: peci: Add cputemp driver
  hwmon: peci: Add dimmtemp driver
  docs: Add PECI documentation

Jae Hyun Yoo (2):
  peci: Add peci-aspeed controller driver
  docs: hwmon: Document PECI drivers

 .../devicetree/bindings/peci/peci-aspeed.yaml | 111 ++++
 .../bindings/peci/peci-controller.yaml        |  28 +
 Documentation/hwmon/index.rst                 |   2 +
 Documentation/hwmon/peci-cputemp.rst          |  93 ++++
 Documentation/hwmon/peci-dimmtemp.rst         |  58 ++
 Documentation/index.rst                       |   1 +
 Documentation/peci/index.rst                  |  16 +
 Documentation/peci/peci.rst                   |  48 ++
 MAINTAINERS                                   |  32 ++
 arch/arm/boot/dts/aspeed-g4.dtsi              |  14 +
 arch/arm/boot/dts/aspeed-g5.dtsi              |  14 +
 arch/arm/boot/dts/aspeed-g6.dtsi              |  14 +
 arch/x86/Kconfig                              |   1 +
 arch/x86/include/asm/cpu.h                    |   3 -
 arch/x86/include/asm/intel-family.h           | 141 +----
 arch/x86/include/asm/microcode.h              |   2 +-
 arch/x86/kvm/cpuid.h                          |   3 +-
 arch/x86/lib/Makefile                         |   2 +-
 drivers/Kconfig                               |   3 +
 drivers/Makefile                              |   1 +
 drivers/edac/mce_amd.c                        |   3 +-
 drivers/hwmon/Kconfig                         |   2 +
 drivers/hwmon/Makefile                        |   1 +
 drivers/hwmon/peci/Kconfig                    |  31 ++
 drivers/hwmon/peci/Makefile                   |   7 +
 drivers/hwmon/peci/common.h                   |  46 ++
 drivers/hwmon/peci/cputemp.c                  | 503 +++++++++++++++++
 drivers/hwmon/peci/dimmtemp.c                 | 508 ++++++++++++++++++
 drivers/peci/Kconfig                          |  36 ++
 drivers/peci/Makefile                         |  10 +
 drivers/peci/controller/Kconfig               |  12 +
 drivers/peci/controller/Makefile              |   3 +
 drivers/peci/controller/peci-aspeed.c         | 501 +++++++++++++++++
 drivers/peci/core.c                           | 224 ++++++++
 drivers/peci/cpu.c                            | 347 ++++++++++++
 drivers/peci/device.c                         | 211 ++++++++
 drivers/peci/internal.h                       | 137 +++++
 drivers/peci/request.c                        | 502 +++++++++++++++++
 drivers/peci/sysfs.c                          |  82 +++
 include/linux/peci-cpu.h                      |  38 ++
 include/linux/peci.h                          |  93 ++++
 include/linux/x86/cpu.h                       |   9 +
 include/linux/x86/intel-family.h              | 146 +++++
 lib/Kconfig                                   |   5 +
 lib/Makefile                                  |   2 +
 lib/x86/Makefile                              |   3 +
 {arch/x86/lib => lib/x86}/cpu.c               |   2 +-
 47 files changed, 3902 insertions(+), 149 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/peci/peci-aspeed.yaml
 create mode 100644 Documentation/devicetree/bindings/peci/peci-controller.yaml
 create mode 100644 Documentation/hwmon/peci-cputemp.rst
 create mode 100644 Documentation/hwmon/peci-dimmtemp.rst
 create mode 100644 Documentation/peci/index.rst
 create mode 100644 Documentation/peci/peci.rst
 create mode 100644 drivers/hwmon/peci/Kconfig
 create mode 100644 drivers/hwmon/peci/Makefile
 create mode 100644 drivers/hwmon/peci/common.h
 create mode 100644 drivers/hwmon/peci/cputemp.c
 create mode 100644 drivers/hwmon/peci/dimmtemp.c
 create mode 100644 drivers/peci/Kconfig
 create mode 100644 drivers/peci/Makefile
 create mode 100644 drivers/peci/controller/Kconfig
 create mode 100644 drivers/peci/controller/Makefile
 create mode 100644 drivers/peci/controller/peci-aspeed.c
 create mode 100644 drivers/peci/core.c
 create mode 100644 drivers/peci/cpu.c
 create mode 100644 drivers/peci/device.c
 create mode 100644 drivers/peci/internal.h
 create mode 100644 drivers/peci/request.c
 create mode 100644 drivers/peci/sysfs.c
 create mode 100644 include/linux/peci-cpu.h
 create mode 100644 include/linux/peci.h
 create mode 100644 include/linux/x86/cpu.h
 create mode 100644 include/linux/x86/intel-family.h
 create mode 100644 lib/x86/Makefile
 rename {arch/x86/lib => lib/x86}/cpu.c (95%)

Comments

Dan Williams July 14, 2021, 4:51 p.m. UTC | #1
On Tue, 2021-07-13 at 00:04 +0200, Iwona Winiarska wrote:
> Note: All changes to arch/x86 are contained within patches 01-02.

Hi Iwona,

One meta question first, who is this submission "To:"? Is there an
existing upstream maintainer path for OpenBMC changes? Are you
expecting contributions to this subsystem from others? While Greg
sometimes ends up as default maintainer for new stuff, I wonder if
someone from the OpenBMC commnuity should step up to fill this role?

> 
> The Platform Environment Control Interface (PECI) is a communication
> interface between Intel processors and management controllers (e.g.
> Baseboard Management Controller, BMC).
> 
> This series adds a PECI subsystem and introduces drivers which run in
> the Linux instance on the management controller (not the main Intel
> processor) and is intended to be used by the OpenBMC [1], a Linux
> distribution for BMC devices.
> The information exposed over PECI (like processor and DIMM
> temperature) refers to the Intel processor and can be consumed by
> daemons running on the BMC to, for example, display the processor
> temperature in its web interface.
> 
> The PECI bus is collection of code that provides interface support
> between PECI devices (that actually represent processors) and PECI
> controllers (such as the "peci-aspeed" controller) that allow to
> access physical PECI interface. PECI devices are bound to PECI
> drivers that provides access to PECI services. This series introduces
> a generic "peci-cpu" driver that exposes hardware monitoring
> "cputemp"
> and "dimmtemp" using the auxiliary bus.
> 
> Exposing "raw" PECI to userspace, either to write userspace drivers
> or
> for debug/testing purpose was left out of this series to encourage
> writing kernel drivers instead, but may be pursued in the future.
> 
> Introducing PECI to upstream Linux was already attempted before [2].
> Since it's been over a year since last revision, and the series
> changed quite a bit in the meantime, I've decided to start from v1.
> 
> I would also like to give credit to everyone who helped me with
> different aspects of preliminary review:
> - Pierre-Louis Bossart,
> - Tony Luck, 
> - Andy Shevchenko,
> - Dave Hansen.
> 
> [1] https://github.com/openbmc/openbmc
> [2] 
> https://lore.kernel.org/openbmc/20191211194624.2872-1-jae.hyun.yoo@linux.intel.com/
> 
> Iwona Winiarska (12):
>   x86/cpu: Move intel-family to arch-independent headers
>   x86/cpu: Extract cpuid helpers to arch-independent
>   dt-bindings: Add generic bindings for PECI
>   dt-bindings: Add bindings for peci-aspeed
>   ARM: dts: aspeed: Add PECI controller nodes
>   peci: Add core infrastructure
>   peci: Add device detection
>   peci: Add support for PECI device drivers
>   peci: Add peci-cpu driver
>   hwmon: peci: Add cputemp driver
>   hwmon: peci: Add dimmtemp driver
>   docs: Add PECI documentation
> 
> Jae Hyun Yoo (2):
>   peci: Add peci-aspeed controller driver
>   docs: hwmon: Document PECI drivers
> 
>  .../devicetree/bindings/peci/peci-aspeed.yaml | 111 ++++
>  .../bindings/peci/peci-controller.yaml        |  28 +
>  Documentation/hwmon/index.rst                 |   2 +
>  Documentation/hwmon/peci-cputemp.rst          |  93 ++++
>  Documentation/hwmon/peci-dimmtemp.rst         |  58 ++
>  Documentation/index.rst                       |   1 +
>  Documentation/peci/index.rst                  |  16 +
>  Documentation/peci/peci.rst                   |  48 ++
>  MAINTAINERS                                   |  32 ++
>  arch/arm/boot/dts/aspeed-g4.dtsi              |  14 +
>  arch/arm/boot/dts/aspeed-g5.dtsi              |  14 +
>  arch/arm/boot/dts/aspeed-g6.dtsi              |  14 +
>  arch/x86/Kconfig                              |   1 +
>  arch/x86/include/asm/cpu.h                    |   3 -
>  arch/x86/include/asm/intel-family.h           | 141 +----
>  arch/x86/include/asm/microcode.h              |   2 +-
>  arch/x86/kvm/cpuid.h                          |   3 +-
>  arch/x86/lib/Makefile                         |   2 +-
>  drivers/Kconfig                               |   3 +
>  drivers/Makefile                              |   1 +
>  drivers/edac/mce_amd.c                        |   3 +-
>  drivers/hwmon/Kconfig                         |   2 +
>  drivers/hwmon/Makefile                        |   1 +
>  drivers/hwmon/peci/Kconfig                    |  31 ++
>  drivers/hwmon/peci/Makefile                   |   7 +
>  drivers/hwmon/peci/common.h                   |  46 ++
>  drivers/hwmon/peci/cputemp.c                  | 503
> +++++++++++++++++
>  drivers/hwmon/peci/dimmtemp.c                 | 508
> ++++++++++++++++++
>  drivers/peci/Kconfig                          |  36 ++
>  drivers/peci/Makefile                         |  10 +
>  drivers/peci/controller/Kconfig               |  12 +
>  drivers/peci/controller/Makefile              |   3 +
>  drivers/peci/controller/peci-aspeed.c         | 501
> +++++++++++++++++
>  drivers/peci/core.c                           | 224 ++++++++
>  drivers/peci/cpu.c                            | 347 ++++++++++++
>  drivers/peci/device.c                         | 211 ++++++++
>  drivers/peci/internal.h                       | 137 +++++
>  drivers/peci/request.c                        | 502
> +++++++++++++++++
>  drivers/peci/sysfs.c                          |  82 +++
>  include/linux/peci-cpu.h                      |  38 ++
>  include/linux/peci.h                          |  93 ++++
>  include/linux/x86/cpu.h                       |   9 +
>  include/linux/x86/intel-family.h              | 146 +++++
>  lib/Kconfig                                   |   5 +
>  lib/Makefile                                  |   2 +
>  lib/x86/Makefile                              |   3 +
>  {arch/x86/lib => lib/x86}/cpu.c               |   2 +-
>  47 files changed, 3902 insertions(+), 149 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/peci/peci-
> aspeed.yaml
>  create mode 100644 Documentation/devicetree/bindings/peci/peci-
> controller.yaml
>  create mode 100644 Documentation/hwmon/peci-cputemp.rst
>  create mode 100644 Documentation/hwmon/peci-dimmtemp.rst
>  create mode 100644 Documentation/peci/index.rst
>  create mode 100644 Documentation/peci/peci.rst
>  create mode 100644 drivers/hwmon/peci/Kconfig
>  create mode 100644 drivers/hwmon/peci/Makefile
>  create mode 100644 drivers/hwmon/peci/common.h
>  create mode 100644 drivers/hwmon/peci/cputemp.c
>  create mode 100644 drivers/hwmon/peci/dimmtemp.c
>  create mode 100644 drivers/peci/Kconfig
>  create mode 100644 drivers/peci/Makefile
>  create mode 100644 drivers/peci/controller/Kconfig
>  create mode 100644 drivers/peci/controller/Makefile
>  create mode 100644 drivers/peci/controller/peci-aspeed.c
>  create mode 100644 drivers/peci/core.c
>  create mode 100644 drivers/peci/cpu.c
>  create mode 100644 drivers/peci/device.c
>  create mode 100644 drivers/peci/internal.h
>  create mode 100644 drivers/peci/request.c
>  create mode 100644 drivers/peci/sysfs.c
>  create mode 100644 include/linux/peci-cpu.h
>  create mode 100644 include/linux/peci.h
>  create mode 100644 include/linux/x86/cpu.h
>  create mode 100644 include/linux/x86/intel-family.h
>  create mode 100644 lib/x86/Makefile
>  rename {arch/x86/lib => lib/x86}/cpu.c (95%)
>
Winiarska, Iwona July 15, 2021, 5:33 p.m. UTC | #2
On Wed, 2021-07-14 at 16:51 +0000, Williams, Dan J wrote:
> On Tue, 2021-07-13 at 00:04 +0200, Iwona Winiarska wrote:
> > Note: All changes to arch/x86 are contained within patches 01-02.
> 
> Hi Iwona,
> 
> One meta question first, who is this submission "To:"? Is there an
> existing upstream maintainer path for OpenBMC changes? Are you
> expecting contributions to this subsystem from others? While Greg
> sometimes ends up as default maintainer for new stuff, I wonder if
> someone from the OpenBMC commnuity should step up to fill this role?
> 

The intention was to direct it to Greg, but I guess I didn't express
that through the mail headers.
I am expecting contributions - for example there is at least one other
major BMC vendor which also ships PECI controllers.

From my perspective, the pieces that make up a BMC are pretty loosely
connected (at least from the kernel perspective - scattered all over
the kernel tree), so I don't see how that would work in practice.

Thanks
-Iwona


> > 
> > The Platform Environment Control Interface (PECI) is a communication
> > interface between Intel processors and management controllers (e.g.
> > Baseboard Management Controller, BMC).
> > 
> > This series adds a PECI subsystem and introduces drivers which run in
> > the Linux instance on the management controller (not the main Intel
> > processor) and is intended to be used by the OpenBMC [1], a Linux
> > distribution for BMC devices.
> > The information exposed over PECI (like processor and DIMM
> > temperature) refers to the Intel processor and can be consumed by
> > daemons running on the BMC to, for example, display the processor
> > temperature in its web interface.
> > 
> > The PECI bus is collection of code that provides interface support
> > between PECI devices (that actually represent processors) and PECI
> > controllers (such as the "peci-aspeed" controller) that allow to
> > access physical PECI interface. PECI devices are bound to PECI
> > drivers that provides access to PECI services. This series introduces
> > a generic "peci-cpu" driver that exposes hardware monitoring
> > "cputemp"
> > and "dimmtemp" using the auxiliary bus.
> > 
> > Exposing "raw" PECI to userspace, either to write userspace drivers
> > or
> > for debug/testing purpose was left out of this series to encourage
> > writing kernel drivers instead, but may be pursued in the future.
> > 
> > Introducing PECI to upstream Linux was already attempted before [2].
> > Since it's been over a year since last revision, and the series
> > changed quite a bit in the meantime, I've decided to start from v1.
> > 
> > I would also like to give credit to everyone who helped me with
> > different aspects of preliminary review:
> > - Pierre-Louis Bossart,
> > - Tony Luck, 
> > - Andy Shevchenko,
> > - Dave Hansen.
> > 
> > [1] https://github.com/openbmc/openbmc
> > [2] 
> > https://lore.kernel.org/openbmc/20191211194624.2872-1-jae.hyun.yoo@linux.intel.com/
> > 
> > Iwona Winiarska (12):
> >   x86/cpu: Move intel-family to arch-independent headers
> >   x86/cpu: Extract cpuid helpers to arch-independent
> >   dt-bindings: Add generic bindings for PECI
> >   dt-bindings: Add bindings for peci-aspeed
> >   ARM: dts: aspeed: Add PECI controller nodes
> >   peci: Add core infrastructure
> >   peci: Add device detection
> >   peci: Add support for PECI device drivers
> >   peci: Add peci-cpu driver
> >   hwmon: peci: Add cputemp driver
> >   hwmon: peci: Add dimmtemp driver
> >   docs: Add PECI documentation
> > 
> > Jae Hyun Yoo (2):
> >   peci: Add peci-aspeed controller driver
> >   docs: hwmon: Document PECI drivers
> > 
> >  .../devicetree/bindings/peci/peci-aspeed.yaml | 111 ++++
> >  .../bindings/peci/peci-controller.yaml        |  28 +
> >  Documentation/hwmon/index.rst                 |   2 +
> >  Documentation/hwmon/peci-cputemp.rst          |  93 ++++
> >  Documentation/hwmon/peci-dimmtemp.rst         |  58 ++
> >  Documentation/index.rst                       |   1 +
> >  Documentation/peci/index.rst                  |  16 +
> >  Documentation/peci/peci.rst                   |  48 ++
> >  MAINTAINERS                                   |  32 ++
> >  arch/arm/boot/dts/aspeed-g4.dtsi              |  14 +
> >  arch/arm/boot/dts/aspeed-g5.dtsi              |  14 +
> >  arch/arm/boot/dts/aspeed-g6.dtsi              |  14 +
> >  arch/x86/Kconfig                              |   1 +
> >  arch/x86/include/asm/cpu.h                    |   3 -
> >  arch/x86/include/asm/intel-family.h           | 141 +----
> >  arch/x86/include/asm/microcode.h              |   2 +-
> >  arch/x86/kvm/cpuid.h                          |   3 +-
> >  arch/x86/lib/Makefile                         |   2 +-
> >  drivers/Kconfig                               |   3 +
> >  drivers/Makefile                              |   1 +
> >  drivers/edac/mce_amd.c                        |   3 +-
> >  drivers/hwmon/Kconfig                         |   2 +
> >  drivers/hwmon/Makefile                        |   1 +
> >  drivers/hwmon/peci/Kconfig                    |  31 ++
> >  drivers/hwmon/peci/Makefile                   |   7 +
> >  drivers/hwmon/peci/common.h                   |  46 ++
> >  drivers/hwmon/peci/cputemp.c                  | 503
> > +++++++++++++++++
> >  drivers/hwmon/peci/dimmtemp.c                 | 508
> > ++++++++++++++++++
> >  drivers/peci/Kconfig                          |  36 ++
> >  drivers/peci/Makefile                         |  10 +
> >  drivers/peci/controller/Kconfig               |  12 +
> >  drivers/peci/controller/Makefile              |   3 +
> >  drivers/peci/controller/peci-aspeed.c         | 501
> > +++++++++++++++++
> >  drivers/peci/core.c                           | 224 ++++++++
> >  drivers/peci/cpu.c                            | 347 ++++++++++++
> >  drivers/peci/device.c                         | 211 ++++++++
> >  drivers/peci/internal.h                       | 137 +++++
> >  drivers/peci/request.c                        | 502
> > +++++++++++++++++
> >  drivers/peci/sysfs.c                          |  82 +++
> >  include/linux/peci-cpu.h                      |  38 ++
> >  include/linux/peci.h                          |  93 ++++
> >  include/linux/x86/cpu.h                       |   9 +
> >  include/linux/x86/intel-family.h              | 146 +++++
> >  lib/Kconfig                                   |   5 +
> >  lib/Makefile                                  |   2 +
> >  lib/x86/Makefile                              |   3 +
> >  {arch/x86/lib => lib/x86}/cpu.c               |   2 +-
> >  47 files changed, 3902 insertions(+), 149 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/peci/peci-
> > aspeed.yaml
> >  create mode 100644 Documentation/devicetree/bindings/peci/peci-
> > controller.yaml
> >  create mode 100644 Documentation/hwmon/peci-cputemp.rst
> >  create mode 100644 Documentation/hwmon/peci-dimmtemp.rst
> >  create mode 100644 Documentation/peci/index.rst
> >  create mode 100644 Documentation/peci/peci.rst
> >  create mode 100644 drivers/hwmon/peci/Kconfig
> >  create mode 100644 drivers/hwmon/peci/Makefile
> >  create mode 100644 drivers/hwmon/peci/common.h
> >  create mode 100644 drivers/hwmon/peci/cputemp.c
> >  create mode 100644 drivers/hwmon/peci/dimmtemp.c
> >  create mode 100644 drivers/peci/Kconfig
> >  create mode 100644 drivers/peci/Makefile
> >  create mode 100644 drivers/peci/controller/Kconfig
> >  create mode 100644 drivers/peci/controller/Makefile
> >  create mode 100644 drivers/peci/controller/peci-aspeed.c
> >  create mode 100644 drivers/peci/core.c
> >  create mode 100644 drivers/peci/cpu.c
> >  create mode 100644 drivers/peci/device.c
> >  create mode 100644 drivers/peci/internal.h
> >  create mode 100644 drivers/peci/request.c
> >  create mode 100644 drivers/peci/sysfs.c
> >  create mode 100644 include/linux/peci-cpu.h
> >  create mode 100644 include/linux/peci.h
> >  create mode 100644 include/linux/x86/cpu.h
> >  create mode 100644 include/linux/x86/intel-family.h
> >  create mode 100644 lib/x86/Makefile
> >  rename {arch/x86/lib => lib/x86}/cpu.c (95%)
> > 
>
Dan Williams July 15, 2021, 7:34 p.m. UTC | #3
On Thu, Jul 15, 2021 at 10:33 AM Winiarska, Iwona
<iwona.winiarska@intel.com> wrote:
>
> On Wed, 2021-07-14 at 16:51 +0000, Williams, Dan J wrote:
> > On Tue, 2021-07-13 at 00:04 +0200, Iwona Winiarska wrote:
> > > Note: All changes to arch/x86 are contained within patches 01-02.
> >
> > Hi Iwona,
> >
> > One meta question first, who is this submission "To:"? Is there an
> > existing upstream maintainer path for OpenBMC changes? Are you
> > expecting contributions to this subsystem from others? While Greg
> > sometimes ends up as default maintainer for new stuff, I wonder if
> > someone from the OpenBMC commnuity should step up to fill this role?
> >
>
> The intention was to direct it to Greg, but I guess I didn't express
> that through the mail headers.

Usually something like a "Hey Greg, please consider applying..." in
the cover letter lets people know who the upstream path is for the
series.

> I am expecting contributions - for example there is at least one other
> major BMC vendor which also ships PECI controllers.

You're expecting to take patches from them and you'll forward them to
Greg, or they'll go to Greg directly?

>
> From my perspective, the pieces that make up a BMC are pretty loosely
> connected (at least from the kernel perspective - scattered all over
> the kernel tree), so I don't see how that would work in practice.

No worries, Greg continues to scale more than other mere mortals for
these kinds of things. I was more asking because it was not clear from
these patches, nor MAINTAINERS, and it's healthy for Linux to grow new
patch wranglers from time to time.