mbox

[PULL,SRU,Xenial] Support IPMI system interface for Cavium ThunderX

Message ID CALdTtnuBT6rW_UOpRCkyMVpc9=OcWFycYCkBDqLud0VP61t85Q@mail.gmail.com
State New
Headers show

Pull-request

git://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux thunderx-ipmi-x

Message

dann frazier May 17, 2017, 11:02 p.m. UTC
[This is the same text as the Yakkety PR, so you don't need to read it twice :)]

This is a set of cherry picks from upstream that introduces the
i2c-thunderx driver, which is required to access the IPMI system
interface (/dev/ipmi0) on Cavium ThunderX.  The series starts by
refactoring the i2c-octeon driver before introducing the new one since
they share common code. i2c-octeon is only applicable to Cavium
MIPS-based platforms, so it isn't a regression risk to Ubuntu
(-ENOPORT).

All of the changes necessary to get us in-sync with zesty were
isolated to these drivers, so I did a kitchen-sink backport. This
means it includes some low-priority changes (code cleanup/docs) but,
since this is effectively new code for us, that seemed like the
lowest-risk and most maintainable approach.

Tested on a Cavium CRB1S.

BugLink: https://bugs.launchpad.net/bugs/1668132

The following changes since commit 7b8ea7510aaa0aca1ddc4f7ba42cfb32d76a64f2:

  UBUNTU: Ubuntu-4.4.0-79.100 (2017-05-17 16:49:45 +0200)

are available in the git repository at:

  git://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux thunderx-ipmi-x

for you to fetch changes up to 02c1fb691013f564e067a17d646ce1fe612fccd3:

  i2c: thunderx: Enable HWMON class probing (2017-05-17 14:32:52 -0600)

----------------------------------------------------------------
David Daney (3):
      i2c: octeon: Support I2C_M_RECV_LEN
      i2c: octeon: Enable High-Level Controller
      i2c: octeon: Add workaround for broken irqs on CN3860

Dmitry Bazhenov (2):
      i2c: octeon: Fix set SCL recovery function
      i2c: octeon: Avoid sending STOP during recovery

Jan Glauber (27):
      i2c: octeon: Cleanup kerneldoc comments
      i2c: octeon: Cleanup i2c-octeon driver
      i2c: octeon: Cleanup resource allocation code
      i2c: octeon: Increase retry default and use fixed timeout value
      i2c: octeon: Move set-clock and init-lowlevel upward
      i2c: octeon: Rename [read|write]_sw to reg_[read|write]
      i2c: octeon: Introduce helper functions for register access
      i2c: octeon: Remove superfluous check in octeon_i2c_test_iflg
      i2c: octeon: Improve error status checking
      i2c: octeon: Use i2c recovery framework
      i2c: octeon: Add support for cn78xx chips
      i2c: octeon: Remove zero-length message support
      i2c: octeon: Missing AAK flag in case of I2C_M_RECV_LEN
      i2c: octeon: Avoid printk after too long SMBUS message
      i2c: octeon: Rename driver to prepare for split
      i2c: octeon: Split the driver into two parts
      i2c: thunderx: Add i2c driver for ThunderX SOC
      i2c: thunderx: Add SMBUS alert support
      i2c: octeon,thunderx: Move register offsets to struct
      i2c: octeon: Sort include files alphabetically
      i2c: octeon: Use booleon values for booleon variables
      i2c: octeon: thunderx: Add MAINTAINERS entry
      i2c: octeon: Fix high-level controller status check
      i2c: octeon: thunderx: TWSI software reset in recovery
      i2c: octeon: thunderx: Remove double-check after interrupt
      i2c: octeon: thunderx: Limit register access retries
      i2c: thunderx: Enable HWMON class probing

Peter Swain (2):
      i2c: octeon: Add flush writeq helper function
      i2c: octeon: Improve performance if interrupt is early

dann frazier (1):
      UBUNTU: [Config] CONFIG_I2C_THUNDERX=m

 .../devicetree/bindings/i2c/i2c-octeon.txt         |   6 +
 MAINTAINERS                                        |   8 +
 debian.master/config/annotations                   |   2 +
 debian.master/config/config.common.ubuntu          |   1 +
 drivers/i2c/busses/Kconfig                         |  11 +
 drivers/i2c/busses/Makefile                        |   3 +
 drivers/i2c/busses/i2c-octeon-core.c               | 791 +++++++++++++++++++++
 drivers/i2c/busses/i2c-octeon-core.h               | 222 ++++++
 drivers/i2c/busses/i2c-octeon-platdrv.c            | 288 ++++++++
 drivers/i2c/busses/i2c-octeon.c                    | 633 -----------------
 drivers/i2c/busses/i2c-thunderx-pcidrv.c           | 260 +++++++
 11 files changed, 1592 insertions(+), 633 deletions(-)
 create mode 100644 drivers/i2c/busses/i2c-octeon-core.c
 create mode 100644 drivers/i2c/busses/i2c-octeon-core.h
 create mode 100644 drivers/i2c/busses/i2c-octeon-platdrv.c
 delete mode 100644 drivers/i2c/busses/i2c-octeon.c
 create mode 100644 drivers/i2c/busses/i2c-thunderx-pcidrv.c

Comments

Colin Ian King May 19, 2017, 12:43 p.m. UTC | #1
On 18/05/17 00:02, dann frazier wrote:
> [This is the same text as the Yakkety PR, so you don't need to read it twice :)]
> 
> This is a set of cherry picks from upstream that introduces the
> i2c-thunderx driver, which is required to access the IPMI system
> interface (/dev/ipmi0) on Cavium ThunderX.  The series starts by
> refactoring the i2c-octeon driver before introducing the new one since
> they share common code. i2c-octeon is only applicable to Cavium
> MIPS-based platforms, so it isn't a regression risk to Ubuntu
> (-ENOPORT).
> 
> All of the changes necessary to get us in-sync with zesty were
> isolated to these drivers, so I did a kitchen-sink backport. This
> means it includes some low-priority changes (code cleanup/docs) but,
> since this is effectively new code for us, that seemed like the
> lowest-risk and most maintainable approach.
> 
> Tested on a Cavium CRB1S.
> 
> BugLink: https://bugs.launchpad.net/bugs/1668132
> 
> The following changes since commit 7b8ea7510aaa0aca1ddc4f7ba42cfb32d76a64f2:
> 
>   UBUNTU: Ubuntu-4.4.0-79.100 (2017-05-17 16:49:45 +0200)
> 
> are available in the git repository at:
> 
>   git://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux thunderx-ipmi-x
> 
> for you to fetch changes up to 02c1fb691013f564e067a17d646ce1fe612fccd3:
> 
>   i2c: thunderx: Enable HWMON class probing (2017-05-17 14:32:52 -0600)
> 
> ----------------------------------------------------------------
> David Daney (3):
>       i2c: octeon: Support I2C_M_RECV_LEN
>       i2c: octeon: Enable High-Level Controller
>       i2c: octeon: Add workaround for broken irqs on CN3860
> 
> Dmitry Bazhenov (2):
>       i2c: octeon: Fix set SCL recovery function
>       i2c: octeon: Avoid sending STOP during recovery
> 
> Jan Glauber (27):
>       i2c: octeon: Cleanup kerneldoc comments
>       i2c: octeon: Cleanup i2c-octeon driver
>       i2c: octeon: Cleanup resource allocation code
>       i2c: octeon: Increase retry default and use fixed timeout value
>       i2c: octeon: Move set-clock and init-lowlevel upward
>       i2c: octeon: Rename [read|write]_sw to reg_[read|write]
>       i2c: octeon: Introduce helper functions for register access
>       i2c: octeon: Remove superfluous check in octeon_i2c_test_iflg
>       i2c: octeon: Improve error status checking
>       i2c: octeon: Use i2c recovery framework
>       i2c: octeon: Add support for cn78xx chips
>       i2c: octeon: Remove zero-length message support
>       i2c: octeon: Missing AAK flag in case of I2C_M_RECV_LEN
>       i2c: octeon: Avoid printk after too long SMBUS message
>       i2c: octeon: Rename driver to prepare for split
>       i2c: octeon: Split the driver into two parts
>       i2c: thunderx: Add i2c driver for ThunderX SOC
>       i2c: thunderx: Add SMBUS alert support
>       i2c: octeon,thunderx: Move register offsets to struct
>       i2c: octeon: Sort include files alphabetically
>       i2c: octeon: Use booleon values for booleon variables
>       i2c: octeon: thunderx: Add MAINTAINERS entry
>       i2c: octeon: Fix high-level controller status check
>       i2c: octeon: thunderx: TWSI software reset in recovery
>       i2c: octeon: thunderx: Remove double-check after interrupt
>       i2c: octeon: thunderx: Limit register access retries
>       i2c: thunderx: Enable HWMON class probing
> 
> Peter Swain (2):
>       i2c: octeon: Add flush writeq helper function
>       i2c: octeon: Improve performance if interrupt is early
> 
> dann frazier (1):
>       UBUNTU: [Config] CONFIG_I2C_THUNDERX=m
> 
>  .../devicetree/bindings/i2c/i2c-octeon.txt         |   6 +
>  MAINTAINERS                                        |   8 +
>  debian.master/config/annotations                   |   2 +
>  debian.master/config/config.common.ubuntu          |   1 +
>  drivers/i2c/busses/Kconfig                         |  11 +
>  drivers/i2c/busses/Makefile                        |   3 +
>  drivers/i2c/busses/i2c-octeon-core.c               | 791 +++++++++++++++++++++
>  drivers/i2c/busses/i2c-octeon-core.h               | 222 ++++++
>  drivers/i2c/busses/i2c-octeon-platdrv.c            | 288 ++++++++
>  drivers/i2c/busses/i2c-octeon.c                    | 633 -----------------
>  drivers/i2c/busses/i2c-thunderx-pcidrv.c           | 260 +++++++
>  11 files changed, 1592 insertions(+), 633 deletions(-)
>  create mode 100644 drivers/i2c/busses/i2c-octeon-core.c
>  create mode 100644 drivers/i2c/busses/i2c-octeon-core.h
>  create mode 100644 drivers/i2c/busses/i2c-octeon-platdrv.c
>  delete mode 100644 drivers/i2c/busses/i2c-octeon.c
>  create mode 100644 drivers/i2c/busses/i2c-thunderx-pcidrv.c
> 

The bug report is a bit terse, and does not have any SRU style details
(test, regression risk, etc).  I'll look at this again once that
information has been added to the bug report. Thanks.
dann frazier May 19, 2017, 3:32 p.m. UTC | #2
On Fri, May 19, 2017 at 6:43 AM, Colin Ian King
<colin.king@canonical.com> wrote:
> The bug report is a bit terse, and does not have any SRU style details
> (test, regression risk, etc).  I'll look at this again once that
> information has been added to the bug report. Thanks.

That's because I typo'd the bug # here, and in some of the commits :(
It should be https://bugs.launchpad.net/bugs/1688132.

Sorry about that. Will correct and resubmit.

 -dann