[PULL,SRU,Xenial] Fix booting arm64 guests in OpenStack bionic-rocky

Message ID 20181101233058.GA24632@xps13.dannf
State New
Headers show
Series
  • [PULL,SRU,Xenial] Fix booting arm64 guests in OpenStack bionic-rocky
Related show

Pull-request

git://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux xenial-arm64-acpi-pci

Message

dann frazier Nov. 1, 2018, 11:30 p.m.
BugLink: https://bugs.launchpad.net/bugs/1797092

Please refer to the bug for an explanation of the problem and how this
solves it. Most patches are clean cherry-picks, but 3 of them required
some minor backporting, as noted in the sign-off section
comments. This series does touch generic code - I've included a
patch-by-patch regression analysis of that in the [Regression Risk]
section of the bug template.

I regression tested on the 2 arm64 servers that I know were supported
by the 4.4 kernel. I also regression tested on armhf, but only in
QEMU, as I'm unaware of any actual ARMv7 hardware supported by the
generic kernel with PCI.

The following changes since commit 001d68ae41c16fb4e9e27ed05a42fe15c8e1862d:

  UBUNTU: Ubuntu-4.4.0-138.164 (2018-10-02 14:39:37 +0000)

are available in the Git repository at:

  git://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux xenial-arm64-acpi-pci

for you to fetch changes up to 6ea689f10635098db409b1f1af9d08df9d9743e1:

  ARM64: PCI: Support ACPI-based PCI host controller (2018-10-29 12:03:40 -0600)

----------------------------------------------------------------
Jayachandran C (5):
      PCI: Provide common functions for ECAM mapping
      PCI: generic, thunder: Use generic ECAM API
      PCI: Move ecam.h to linux/include/pci-ecam.h
      PCI: Add parent device field to ECAM struct pci_config_window
      PCI/ACPI: Support I/O resources when parsing host bridge resources

Sinan Kaya (1):
      PCI: Add pci_unmap_iospace() to unmap I/O resources

Tomasz Nowicki (7):
      PCI, of: Move PCI I/O space management to PCI core code
      PCI/ACPI: Add generic MCFG table handling
      PCI: Refactor pci_bus_assign_domain_nr() for CONFIG_PCI_DOMAINS_GENERIC
      PCI: Factor DT-specific pci_bus_find_domain_nr() code out
      ARM64: PCI: Add acpi_pci_bus_find_domain_nr()
      ARM64: PCI: ACPI support for legacy IRQs parsing and consolidation with DT code
      ARM64: PCI: Support ACPI-based PCI host controller

dann frazier (2):
      UBUNTU: [Config] CONFIG_PCI_ECAM=y
      UBUNTU: [Config] CONFIG_ACPI_MCFG=y

 arch/arm64/Kconfig                        |   2 +
 arch/arm64/kernel/pci.c                   | 134 ++++++++++++++++++++++--
 debian.master/config/config.common.ubuntu |   2 +
 drivers/acpi/Kconfig                      |   3 +
 drivers/acpi/Makefile                     |   1 +
 drivers/acpi/pci_mcfg.c                   |  92 +++++++++++++++++
 drivers/acpi/pci_root.c                   |  35 +++++++
 drivers/of/address.c                      | 116 +--------------------
 drivers/pci/Kconfig                       |   3 +
 drivers/pci/Makefile                      |   2 +
 drivers/pci/ecam.c                        | 164 ++++++++++++++++++++++++++++++
 drivers/pci/host/Kconfig                  |   1 +
 drivers/pci/host/pci-host-common.c        | 115 +++++++++------------
 drivers/pci/host/pci-host-common.h        |  56 ----------
 drivers/pci/host/pci-host-generic.c       |  53 ++--------
 drivers/pci/host/pci-thunder-ecam.c       |  40 ++------
 drivers/pci/host/pci-thunder-pem.c        |  94 ++++++++---------
 drivers/pci/pci.c                         | 144 +++++++++++++++++++++++++-
 drivers/pci/probe.c                       |   4 +-
 include/linux/of_address.h                |   9 --
 include/linux/pci-acpi.h                  |   2 +
 include/linux/pci-ecam.h                  |  67 ++++++++++++
 include/linux/pci.h                       |  19 ++--
 23 files changed, 769 insertions(+), 389 deletions(-)
 create mode 100644 drivers/acpi/pci_mcfg.c
 create mode 100644 drivers/pci/ecam.c
 delete mode 100644 drivers/pci/host/pci-host-common.h
 create mode 100644 include/linux/pci-ecam.h

Comments

Kleber Souza Nov. 7, 2018, 11:24 a.m. | #1
On 11/02/18 00:30, dann frazier wrote:
> BugLink: https://bugs.launchpad.net/bugs/1797092
>
> Please refer to the bug for an explanation of the problem and how this
> solves it. Most patches are clean cherry-picks, but 3 of them required
> some minor backporting, as noted in the sign-off section
> comments. This series does touch generic code - I've included a
> patch-by-patch regression analysis of that in the [Regression Risk]
> section of the bug template.
>
> I regression tested on the 2 arm64 servers that I know were supported
> by the 4.4 kernel. I also regression tested on armhf, but only in
> QEMU, as I'm unaware of any actual ARMv7 hardware supported by the
> generic kernel with PCI.
>
> The following changes since commit 001d68ae41c16fb4e9e27ed05a42fe15c8e1862d:
>
>   UBUNTU: Ubuntu-4.4.0-138.164 (2018-10-02 14:39:37 +0000)
>
> are available in the Git repository at:
>
>   git://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux xenial-arm64-acpi-pci
>
> for you to fetch changes up to 6ea689f10635098db409b1f1af9d08df9d9743e1:
>
>   ARM64: PCI: Support ACPI-based PCI host controller (2018-10-29 12:03:40 -0600)

Hi Dann,

Was the code tested for regression on any non-ARM platforms that support
ECAM?

Most of the patches don't make functional changes or are only compiled
for arm, but patch "PCI/ACPI: Add generic MCFG table handling" touches
common code and has a potential regression risk.

Anyway I will ACK the PR, but I would like to have some more test
results if possible.


Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>


Thanks,
Kleber

>
> ----------------------------------------------------------------
> Jayachandran C (5):
>       PCI: Provide common functions for ECAM mapping
>       PCI: generic, thunder: Use generic ECAM API
>       PCI: Move ecam.h to linux/include/pci-ecam.h
>       PCI: Add parent device field to ECAM struct pci_config_window
>       PCI/ACPI: Support I/O resources when parsing host bridge resources
>
> Sinan Kaya (1):
>       PCI: Add pci_unmap_iospace() to unmap I/O resources
>
> Tomasz Nowicki (7):
>       PCI, of: Move PCI I/O space management to PCI core code
>       PCI/ACPI: Add generic MCFG table handling
>       PCI: Refactor pci_bus_assign_domain_nr() for CONFIG_PCI_DOMAINS_GENERIC
>       PCI: Factor DT-specific pci_bus_find_domain_nr() code out
>       ARM64: PCI: Add acpi_pci_bus_find_domain_nr()
>       ARM64: PCI: ACPI support for legacy IRQs parsing and consolidation with DT code
>       ARM64: PCI: Support ACPI-based PCI host controller
>
> dann frazier (2):
>       UBUNTU: [Config] CONFIG_PCI_ECAM=y
>       UBUNTU: [Config] CONFIG_ACPI_MCFG=y
>
>  arch/arm64/Kconfig                        |   2 +
>  arch/arm64/kernel/pci.c                   | 134 ++++++++++++++++++++++--
>  debian.master/config/config.common.ubuntu |   2 +
>  drivers/acpi/Kconfig                      |   3 +
>  drivers/acpi/Makefile                     |   1 +
>  drivers/acpi/pci_mcfg.c                   |  92 +++++++++++++++++
>  drivers/acpi/pci_root.c                   |  35 +++++++
>  drivers/of/address.c                      | 116 +--------------------
>  drivers/pci/Kconfig                       |   3 +
>  drivers/pci/Makefile                      |   2 +
>  drivers/pci/ecam.c                        | 164 ++++++++++++++++++++++++++++++
>  drivers/pci/host/Kconfig                  |   1 +
>  drivers/pci/host/pci-host-common.c        | 115 +++++++++------------
>  drivers/pci/host/pci-host-common.h        |  56 ----------
>  drivers/pci/host/pci-host-generic.c       |  53 ++--------
>  drivers/pci/host/pci-thunder-ecam.c       |  40 ++------
>  drivers/pci/host/pci-thunder-pem.c        |  94 ++++++++---------
>  drivers/pci/pci.c                         | 144 +++++++++++++++++++++++++-
>  drivers/pci/probe.c                       |   4 +-
>  include/linux/of_address.h                |   9 --
>  include/linux/pci-acpi.h                  |   2 +
>  include/linux/pci-ecam.h                  |  67 ++++++++++++
>  include/linux/pci.h                       |  19 ++--
>  23 files changed, 769 insertions(+), 389 deletions(-)
>  create mode 100644 drivers/acpi/pci_mcfg.c
>  create mode 100644 drivers/pci/ecam.c
>  delete mode 100644 drivers/pci/host/pci-host-common.h
>  create mode 100644 include/linux/pci-ecam.h
>
Stefan Bader Nov. 8, 2018, 6:42 p.m. | #2
On 02.11.18 00:30, dann frazier wrote:
> BugLink: https://bugs.launchpad.net/bugs/1797092
> 
> Please refer to the bug for an explanation of the problem and how this
> solves it. Most patches are clean cherry-picks, but 3 of them required
> some minor backporting, as noted in the sign-off section
> comments. This series does touch generic code - I've included a
> patch-by-patch regression analysis of that in the [Regression Risk]
> section of the bug template.
> 
> I regression tested on the 2 arm64 servers that I know were supported
> by the 4.4 kernel. I also regression tested on armhf, but only in
> QEMU, as I'm unaware of any actual ARMv7 hardware supported by the
> generic kernel with PCI.
> 
> The following changes since commit 001d68ae41c16fb4e9e27ed05a42fe15c8e1862d:
> 
>   UBUNTU: Ubuntu-4.4.0-138.164 (2018-10-02 14:39:37 +0000)
> 
> are available in the Git repository at:
> 
>   git://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux xenial-arm64-acpi-pci
> 
> for you to fetch changes up to 6ea689f10635098db409b1f1af9d08df9d9743e1:
> 
>   ARM64: PCI: Support ACPI-based PCI host controller (2018-10-29 12:03:40 -0600)
> 
> ----------------------------------------------------------------
> Jayachandran C (5):
>       PCI: Provide common functions for ECAM mapping
>       PCI: generic, thunder: Use generic ECAM API
>       PCI: Move ecam.h to linux/include/pci-ecam.h
>       PCI: Add parent device field to ECAM struct pci_config_window
>       PCI/ACPI: Support I/O resources when parsing host bridge resources
> 
> Sinan Kaya (1):
>       PCI: Add pci_unmap_iospace() to unmap I/O resources
> 
> Tomasz Nowicki (7):
>       PCI, of: Move PCI I/O space management to PCI core code
>       PCI/ACPI: Add generic MCFG table handling
>       PCI: Refactor pci_bus_assign_domain_nr() for CONFIG_PCI_DOMAINS_GENERIC
>       PCI: Factor DT-specific pci_bus_find_domain_nr() code out
>       ARM64: PCI: Add acpi_pci_bus_find_domain_nr()
>       ARM64: PCI: ACPI support for legacy IRQs parsing and consolidation with DT code
>       ARM64: PCI: Support ACPI-based PCI host controller
> 
> dann frazier (2):
>       UBUNTU: [Config] CONFIG_PCI_ECAM=y
>       UBUNTU: [Config] CONFIG_ACPI_MCFG=y
> 
>  arch/arm64/Kconfig                        |   2 +
>  arch/arm64/kernel/pci.c                   | 134 ++++++++++++++++++++++--
>  debian.master/config/config.common.ubuntu |   2 +
>  drivers/acpi/Kconfig                      |   3 +
>  drivers/acpi/Makefile                     |   1 +
>  drivers/acpi/pci_mcfg.c                   |  92 +++++++++++++++++
>  drivers/acpi/pci_root.c                   |  35 +++++++
>  drivers/of/address.c                      | 116 +--------------------
>  drivers/pci/Kconfig                       |   3 +
>  drivers/pci/Makefile                      |   2 +
>  drivers/pci/ecam.c                        | 164 ++++++++++++++++++++++++++++++
>  drivers/pci/host/Kconfig                  |   1 +
>  drivers/pci/host/pci-host-common.c        | 115 +++++++++------------
>  drivers/pci/host/pci-host-common.h        |  56 ----------
>  drivers/pci/host/pci-host-generic.c       |  53 ++--------
>  drivers/pci/host/pci-thunder-ecam.c       |  40 ++------
>  drivers/pci/host/pci-thunder-pem.c        |  94 ++++++++---------
>  drivers/pci/pci.c                         | 144 +++++++++++++++++++++++++-
>  drivers/pci/probe.c                       |   4 +-
>  include/linux/of_address.h                |   9 --
>  include/linux/pci-acpi.h                  |   2 +
>  include/linux/pci-ecam.h                  |  67 ++++++++++++
>  include/linux/pci.h                       |  19 ++--
>  23 files changed, 769 insertions(+), 389 deletions(-)
>  create mode 100644 drivers/acpi/pci_mcfg.c
>  create mode 100644 drivers/pci/ecam.c
>  delete mode 100644 drivers/pci/host/pci-host-common.h
>  create mode 100644 include/linux/pci-ecam.h
> 
Ok, this is huge, ugly and just looking at the file locations this rather looks
scary and it feels wrong that one has to change an old release that much in
order of getting it to boot in a more recent VM environment.

Looking at the details at least there is hope that effects are more limited to
open formware platforms. Though it would probably have been better if there also
was some ppc regression testing. And I hear that there would be good reasons to
want to move that way. But frankly I rather don't want things like this be
needed. For now

Acked-by: Stefan Bader <stefan.bader@canonical.com>

but being prepared to take it out again when problems appear. At least it seems
to compile for all arches still.
Khaled Elmously Nov. 9, 2018, 3:54 a.m. | #3
On 2018-11-01 17:30:58 , dann frazier wrote:
> BugLink: https://bugs.launchpad.net/bugs/1797092
> 
> Please refer to the bug for an explanation of the problem and how this
> solves it. Most patches are clean cherry-picks, but 3 of them required
> some minor backporting, as noted in the sign-off section
> comments. This series does touch generic code - I've included a
> patch-by-patch regression analysis of that in the [Regression Risk]
> section of the bug template.
> 
> I regression tested on the 2 arm64 servers that I know were supported
> by the 4.4 kernel. I also regression tested on armhf, but only in
> QEMU, as I'm unaware of any actual ARMv7 hardware supported by the
> generic kernel with PCI.
> 
> The following changes since commit 001d68ae41c16fb4e9e27ed05a42fe15c8e1862d:
> 
>   UBUNTU: Ubuntu-4.4.0-138.164 (2018-10-02 14:39:37 +0000)
> 
> are available in the Git repository at:
> 
>   git://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux xenial-arm64-acpi-pci
> 
> for you to fetch changes up to 6ea689f10635098db409b1f1af9d08df9d9743e1:
> 
>   ARM64: PCI: Support ACPI-based PCI host controller (2018-10-29 12:03:40 -0600)
> 
> ----------------------------------------------------------------
> Jayachandran C (5):
>       PCI: Provide common functions for ECAM mapping
>       PCI: generic, thunder: Use generic ECAM API
>       PCI: Move ecam.h to linux/include/pci-ecam.h
>       PCI: Add parent device field to ECAM struct pci_config_window
>       PCI/ACPI: Support I/O resources when parsing host bridge resources
> 
> Sinan Kaya (1):
>       PCI: Add pci_unmap_iospace() to unmap I/O resources
> 
> Tomasz Nowicki (7):
>       PCI, of: Move PCI I/O space management to PCI core code
>       PCI/ACPI: Add generic MCFG table handling
>       PCI: Refactor pci_bus_assign_domain_nr() for CONFIG_PCI_DOMAINS_GENERIC
>       PCI: Factor DT-specific pci_bus_find_domain_nr() code out
>       ARM64: PCI: Add acpi_pci_bus_find_domain_nr()
>       ARM64: PCI: ACPI support for legacy IRQs parsing and consolidation with DT code
>       ARM64: PCI: Support ACPI-based PCI host controller
> 
> dann frazier (2):
>       UBUNTU: [Config] CONFIG_PCI_ECAM=y
>       UBUNTU: [Config] CONFIG_ACPI_MCFG=y
> 
>  arch/arm64/Kconfig                        |   2 +
>  arch/arm64/kernel/pci.c                   | 134 ++++++++++++++++++++++--
>  debian.master/config/config.common.ubuntu |   2 +
>  drivers/acpi/Kconfig                      |   3 +
>  drivers/acpi/Makefile                     |   1 +
>  drivers/acpi/pci_mcfg.c                   |  92 +++++++++++++++++
>  drivers/acpi/pci_root.c                   |  35 +++++++
>  drivers/of/address.c                      | 116 +--------------------
>  drivers/pci/Kconfig                       |   3 +
>  drivers/pci/Makefile                      |   2 +
>  drivers/pci/ecam.c                        | 164 ++++++++++++++++++++++++++++++
>  drivers/pci/host/Kconfig                  |   1 +
>  drivers/pci/host/pci-host-common.c        | 115 +++++++++------------
>  drivers/pci/host/pci-host-common.h        |  56 ----------
>  drivers/pci/host/pci-host-generic.c       |  53 ++--------
>  drivers/pci/host/pci-thunder-ecam.c       |  40 ++------
>  drivers/pci/host/pci-thunder-pem.c        |  94 ++++++++---------
>  drivers/pci/pci.c                         | 144 +++++++++++++++++++++++++-
>  drivers/pci/probe.c                       |   4 +-
>  include/linux/of_address.h                |   9 --
>  include/linux/pci-acpi.h                  |   2 +
>  include/linux/pci-ecam.h                  |  67 ++++++++++++
>  include/linux/pci.h                       |  19 ++--
>  23 files changed, 769 insertions(+), 389 deletions(-)
>  create mode 100644 drivers/acpi/pci_mcfg.c
>  create mode 100644 drivers/pci/ecam.c
>  delete mode 100644 drivers/pci/host/pci-host-common.h
>  create mode 100644 include/linux/pci-ecam.h
> 
> -- 
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team