mbox series

[PULL,v2,Xenial] Support QEMU guests in ACPI mode

Message ID 20180228173308.GA12419@xps13.dannf
State New
Headers show
Series [PULL,v2,Xenial] Support QEMU guests in ACPI mode | expand

Pull-request

git://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux xenial-spcr-annotated

Message

dann frazier Feb. 28, 2018, 5:33 p.m. UTC
BugLink: https://bugs.launchpad.net/bugs/1744754

qemu-efi, the package that provides UEFI firmware used to boot arm64
KVM guests, switched from exposing devicetree to ACPI by default after
the xenial release. This was inherited from upstream. However, the
GA xenial kernel didn't have enough ACPI support to boot in this
mode. That means, for example, that your bionic-based OpenStack won't
be able to boot xenial cloud images. This series backports the minimum
necessary ACPI support back to 4.4: GICv3 and SPCR console detection.

The testing/risk assessment is all there in the bug, as is a
discussion of other possible solutions. The GICv3 support comprises
all clean cherry-picks. Some backporting was required for the console
stuff - I've annotated each patch with the details in each patch above
my S-o-b.

Test builds are available in ppa:dannf/test

v2:
 - Update config annotations for CONFIG_ACPI_SPCR_TABLE (squashed into
   the commit that enables it).
 - Update cover letter to be clear that the change in qemu-efi
   happened after xenial.

The following changes since commit 355335ee775c4016a34b22e99e14cf5bc9534c1b:

  UBUNTU: [Packaging] update urgency to medium by default (2018-01-29 13:09:24 +0100)

are available in the Git repository at:

  git://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux xenial-spcr-annotated

for you to fetch changes up to c3beab50e1cd3bc947773a41da36a4c2e15ff73d:

  serial: pl011: add console matching function (2018-02-28 10:17:16 -0700)

----------------------------------------------------------------
Aleksey Makarov (4):
      ACPICA: Headers: Add new constants for the DBG2 ACPI table
      ACPI: parse SPCR and enable matching console
      ARM64: ACPI: enable ACPI_SPCR_TABLE
      serial: pl011: add console matching function

Hanjun Guo (1):
      irqchip/gic-v3: Remove gic_root_node variable from the ITS code

Leif Lindholm (1):
      of/serial: move earlycon early_param handling to serial

Tomasz Nowicki (4):
      irqchip/gic-v3: Refactor gic_of_init() for GICv3 driver
      irqchip/gic-v3: Add ACPI support for GICv3/4 initialization
      irqchip/gic-v3: ACPI: Add redistributor support via GICC structures
      irqchip/gic-v3-its: Mark its_init() and its children as __init

dann frazier (1):
      UBUNTU: [Config] CONFIG_ACPI_SPCR_TABLE=y

 arch/arm64/Kconfig                        |   1 +
 arch/arm64/kernel/acpi.c                  |  11 +-
 debian.master/config/annotations          |   2 +
 debian.master/config/config.common.ubuntu |   1 +
 drivers/acpi/Kconfig                      |   3 +
 drivers/acpi/Makefile                     |   1 +
 drivers/acpi/spcr.c                       | 111 ++++++++++
 drivers/irqchip/irq-gic-v3-its.c          |  10 +-
 drivers/irqchip/irq-gic-v3.c              | 347 +++++++++++++++++++++++++-----
 drivers/of/fdt.c                          |  11 +-
 drivers/tty/serial/amba-pl011.c           |  55 +++++
 drivers/tty/serial/earlycon.c             |  20 +-
 include/acpi/actbl2.h                     |   7 +-
 include/linux/acpi.h                      |   6 +
 include/linux/of_fdt.h                    |   3 +
 include/linux/serial_core.h               |   9 +-
 16 files changed, 529 insertions(+), 69 deletions(-)
 create mode 100644 drivers/acpi/spcr.c

Comments

Stefan Bader March 2, 2018, 10:34 a.m. UTC | #1
On 28.02.2018 18:33, dann frazier wrote:
> BugLink: https://bugs.launchpad.net/bugs/1744754
> 
> qemu-efi, the package that provides UEFI firmware used to boot arm64
> KVM guests, switched from exposing devicetree to ACPI by default after
> the xenial release. This was inherited from upstream. However, the
> GA xenial kernel didn't have enough ACPI support to boot in this
> mode. That means, for example, that your bionic-based OpenStack won't
> be able to boot xenial cloud images. This series backports the minimum
> necessary ACPI support back to 4.4: GICv3 and SPCR console detection.
> 
> The testing/risk assessment is all there in the bug, as is a
> discussion of other possible solutions. The GICv3 support comprises
> all clean cherry-picks. Some backporting was required for the console
> stuff - I've annotated each patch with the details in each patch above
> my S-o-b.
> 
> Test builds are available in ppa:dannf/test
> 
> v2:
>  - Update config annotations for CONFIG_ACPI_SPCR_TABLE (squashed into
>    the commit that enables it).
>  - Update cover letter to be clear that the change in qemu-efi
>    happened after xenial.
> 
> The following changes since commit 355335ee775c4016a34b22e99e14cf5bc9534c1b:
> 
>   UBUNTU: [Packaging] update urgency to medium by default (2018-01-29 13:09:24 +0100)
> 
> are available in the Git repository at:
> 
>   git://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux xenial-spcr-annotated
> 
> for you to fetch changes up to c3beab50e1cd3bc947773a41da36a4c2e15ff73d:
> 
>   serial: pl011: add console matching function (2018-02-28 10:17:16 -0700)
> 
> ----------------------------------------------------------------
> Aleksey Makarov (4):
>       ACPICA: Headers: Add new constants for the DBG2 ACPI table
>       ACPI: parse SPCR and enable matching console
>       ARM64: ACPI: enable ACPI_SPCR_TABLE
>       serial: pl011: add console matching function
> 
> Hanjun Guo (1):
>       irqchip/gic-v3: Remove gic_root_node variable from the ITS code
> 
> Leif Lindholm (1):
>       of/serial: move earlycon early_param handling to serial
> 
> Tomasz Nowicki (4):
>       irqchip/gic-v3: Refactor gic_of_init() for GICv3 driver
>       irqchip/gic-v3: Add ACPI support for GICv3/4 initialization
>       irqchip/gic-v3: ACPI: Add redistributor support via GICC structures
>       irqchip/gic-v3-its: Mark its_init() and its children as __init
> 
> dann frazier (1):
>       UBUNTU: [Config] CONFIG_ACPI_SPCR_TABLE=y
> 
>  arch/arm64/Kconfig                        |   1 +
>  arch/arm64/kernel/acpi.c                  |  11 +-
>  debian.master/config/annotations          |   2 +
>  debian.master/config/config.common.ubuntu |   1 +
>  drivers/acpi/Kconfig                      |   3 +
>  drivers/acpi/Makefile                     |   1 +
>  drivers/acpi/spcr.c                       | 111 ++++++++++
>  drivers/irqchip/irq-gic-v3-its.c          |  10 +-
>  drivers/irqchip/irq-gic-v3.c              | 347 +++++++++++++++++++++++++-----
>  drivers/of/fdt.c                          |  11 +-
>  drivers/tty/serial/amba-pl011.c           |  55 +++++
>  drivers/tty/serial/earlycon.c             |  20 +-
>  include/acpi/actbl2.h                     |   7 +-
>  include/linux/acpi.h                      |   6 +
>  include/linux/of_fdt.h                    |   3 +
>  include/linux/serial_core.h               |   9 +-
>  16 files changed, 529 insertions(+), 69 deletions(-)
>  create mode 100644 drivers/acpi/spcr.c
> 

The biggest changes are those adding the new console and the new irq chip. The
remainder changes look sensible. Positive testing, too. And annotated to explain
why. So

Acked-by: Stefan Bader <stefan.bader@canonical.com>
Kleber Sacilotto de Souza March 2, 2018, 11:10 a.m. UTC | #2
On 02/28/18 18:33, dann frazier wrote:
> BugLink: https://bugs.launchpad.net/bugs/1744754
> 
> qemu-efi, the package that provides UEFI firmware used to boot arm64
> KVM guests, switched from exposing devicetree to ACPI by default after
> the xenial release. This was inherited from upstream. However, the
> GA xenial kernel didn't have enough ACPI support to boot in this
> mode. That means, for example, that your bionic-based OpenStack won't
> be able to boot xenial cloud images. This series backports the minimum
> necessary ACPI support back to 4.4: GICv3 and SPCR console detection.
> 
> The testing/risk assessment is all there in the bug, as is a
> discussion of other possible solutions. The GICv3 support comprises
> all clean cherry-picks. Some backporting was required for the console
> stuff - I've annotated each patch with the details in each patch above
> my S-o-b.
> 
> Test builds are available in ppa:dannf/test
> 
> v2:
>  - Update config annotations for CONFIG_ACPI_SPCR_TABLE (squashed into
>    the commit that enables it).
>  - Update cover letter to be clear that the change in qemu-efi
>    happened after xenial.
> 
> The following changes since commit 355335ee775c4016a34b22e99e14cf5bc9534c1b:
> 
>   UBUNTU: [Packaging] update urgency to medium by default (2018-01-29 13:09:24 +0100)
> 
> are available in the Git repository at:
> 
>   git://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux xenial-spcr-annotated
> 
> for you to fetch changes up to c3beab50e1cd3bc947773a41da36a4c2e15ff73d:
> 
>   serial: pl011: add console matching function (2018-02-28 10:17:16 -0700)
> 
> ----------------------------------------------------------------
> Aleksey Makarov (4):
>       ACPICA: Headers: Add new constants for the DBG2 ACPI table
>       ACPI: parse SPCR and enable matching console
>       ARM64: ACPI: enable ACPI_SPCR_TABLE
>       serial: pl011: add console matching function
> 
> Hanjun Guo (1):
>       irqchip/gic-v3: Remove gic_root_node variable from the ITS code
> 
> Leif Lindholm (1):
>       of/serial: move earlycon early_param handling to serial
> 
> Tomasz Nowicki (4):
>       irqchip/gic-v3: Refactor gic_of_init() for GICv3 driver
>       irqchip/gic-v3: Add ACPI support for GICv3/4 initialization
>       irqchip/gic-v3: ACPI: Add redistributor support via GICC structures
>       irqchip/gic-v3-its: Mark its_init() and its children as __init
> 
> dann frazier (1):
>       UBUNTU: [Config] CONFIG_ACPI_SPCR_TABLE=y
> 
>  arch/arm64/Kconfig                        |   1 +
>  arch/arm64/kernel/acpi.c                  |  11 +-
>  debian.master/config/annotations          |   2 +
>  debian.master/config/config.common.ubuntu |   1 +
>  drivers/acpi/Kconfig                      |   3 +
>  drivers/acpi/Makefile                     |   1 +
>  drivers/acpi/spcr.c                       | 111 ++++++++++
>  drivers/irqchip/irq-gic-v3-its.c          |  10 +-
>  drivers/irqchip/irq-gic-v3.c              | 347 +++++++++++++++++++++++++-----
>  drivers/of/fdt.c                          |  11 +-
>  drivers/tty/serial/amba-pl011.c           |  55 +++++
>  drivers/tty/serial/earlycon.c             |  20 +-
>  include/acpi/actbl2.h                     |   7 +-
>  include/linux/acpi.h                      |   6 +
>  include/linux/of_fdt.h                    |   3 +
>  include/linux/serial_core.h               |   9 +-
>  16 files changed, 529 insertions(+), 69 deletions(-)
>  create mode 100644 drivers/acpi/spcr.c
> 

Looks good to me, thanks for sending a v2 with the suggested changes.

Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
Kleber Sacilotto de Souza March 2, 2018, 1:14 p.m. UTC | #3
On 02/28/18 18:33, dann frazier wrote:
> BugLink: https://bugs.launchpad.net/bugs/1744754
> 
> qemu-efi, the package that provides UEFI firmware used to boot arm64
> KVM guests, switched from exposing devicetree to ACPI by default after
> the xenial release. This was inherited from upstream. However, the
> GA xenial kernel didn't have enough ACPI support to boot in this
> mode. That means, for example, that your bionic-based OpenStack won't
> be able to boot xenial cloud images. This series backports the minimum
> necessary ACPI support back to 4.4: GICv3 and SPCR console detection.
> 
> The testing/risk assessment is all there in the bug, as is a
> discussion of other possible solutions. The GICv3 support comprises
> all clean cherry-picks. Some backporting was required for the console
> stuff - I've annotated each patch with the details in each patch above
> my S-o-b.
> 
> Test builds are available in ppa:dannf/test
> 
> v2:
>  - Update config annotations for CONFIG_ACPI_SPCR_TABLE (squashed into
>    the commit that enables it).
>  - Update cover letter to be clear that the change in qemu-efi
>    happened after xenial.
> 
> The following changes since commit 355335ee775c4016a34b22e99e14cf5bc9534c1b:
> 
>   UBUNTU: [Packaging] update urgency to medium by default (2018-01-29 13:09:24 +0100)
> 
> are available in the Git repository at:
> 
>   git://git.launchpad.net/~dannf/ubuntu/+source/linux/+git/linux xenial-spcr-annotated
> 
> for you to fetch changes up to c3beab50e1cd3bc947773a41da36a4c2e15ff73d:
> 
>   serial: pl011: add console matching function (2018-02-28 10:17:16 -0700)
> 
> ----------------------------------------------------------------
> Aleksey Makarov (4):
>       ACPICA: Headers: Add new constants for the DBG2 ACPI table
>       ACPI: parse SPCR and enable matching console
>       ARM64: ACPI: enable ACPI_SPCR_TABLE
>       serial: pl011: add console matching function
> 
> Hanjun Guo (1):
>       irqchip/gic-v3: Remove gic_root_node variable from the ITS code
> 
> Leif Lindholm (1):
>       of/serial: move earlycon early_param handling to serial
> 
> Tomasz Nowicki (4):
>       irqchip/gic-v3: Refactor gic_of_init() for GICv3 driver
>       irqchip/gic-v3: Add ACPI support for GICv3/4 initialization
>       irqchip/gic-v3: ACPI: Add redistributor support via GICC structures
>       irqchip/gic-v3-its: Mark its_init() and its children as __init
> 
> dann frazier (1):
>       UBUNTU: [Config] CONFIG_ACPI_SPCR_TABLE=y
> 
>  arch/arm64/Kconfig                        |   1 +
>  arch/arm64/kernel/acpi.c                  |  11 +-
>  debian.master/config/annotations          |   2 +
>  debian.master/config/config.common.ubuntu |   1 +
>  drivers/acpi/Kconfig                      |   3 +
>  drivers/acpi/Makefile                     |   1 +
>  drivers/acpi/spcr.c                       | 111 ++++++++++
>  drivers/irqchip/irq-gic-v3-its.c          |  10 +-
>  drivers/irqchip/irq-gic-v3.c              | 347 +++++++++++++++++++++++++-----
>  drivers/of/fdt.c                          |  11 +-
>  drivers/tty/serial/amba-pl011.c           |  55 +++++
>  drivers/tty/serial/earlycon.c             |  20 +-
>  include/acpi/actbl2.h                     |   7 +-
>  include/linux/acpi.h                      |   6 +
>  include/linux/of_fdt.h                    |   3 +
>  include/linux/serial_core.h               |   9 +-
>  16 files changed, 529 insertions(+), 69 deletions(-)
>  create mode 100644 drivers/acpi/spcr.c
> 

Applied to xenial/master-next-backlog branch.

Thanks,
Kleber