qemu-efi-aarch64 in >= artful can't boot xenial cloud images
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
cloud-images |
Invalid
|
Undecided
|
Unassigned | ||
edk2 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Xenial |
Invalid
|
Undecided
|
Unassigned | ||
linux (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Xenial |
Fix Released
|
Undecided
|
dann frazier |
Bug Description
[Impact]
After upgrading an Ubuntu/arm64 KVM host past xenial, your xenial-based guests will fail to boot.
[Test Case]
Boot a xenial cloud image with qemu-efi-aarch64 from artful/bionic.
[Regression Risk]
I've tested booting a xenial cloud image in bionic (ACPI mode), and regression tested w/ xenial's qemu-efi (DTB mode). I've regression tested on a Cavium ThunderX CRB1S, Caviumt ThunderX CRB2S and an APM X-Gene 2 Merlin board.
Patches 1-5 change only code in the GICv3 driver. The xenial GA kernel only supported 2 GICv3 systems - the 1 socket and 2 socket variants of the Cavium ThunderX CRB - and I've regression tested on those systems.
Patch 6 only adds new macro definitions.
Patch 7 is restricted to devicetree code, except for a change to earlycon.
Patch 8 adds the SPCR table parser, but no caller to it yet. It also modifies the same earlycon code as Patch 7 - here it avoids earlycon init in the case that the devicetree-specific 'earlycon' was passed. As mentioned in my analysis Patch 7, this codepath is only supported for devicetree systems, and has been regression tested on x86.
Patch 9 turns on CONFIG_
Patch 10 only touches arm64-specific code, adding the call to parse_spcr(), so risk is limited to arm64.
Patch 11 adds a new match method to the ARM-specific pl011 console driver, so regression risk to other architectures is negligible.
description: | updated |
Changed in linux (Ubuntu Xenial): | |
assignee: | nobody → dann frazier (dannf) |
description: | updated |
description: | updated |
tags: | added: id-5a674ab10c375ca04060ea9a |
Changed in linux (Ubuntu Xenial): | |
status: | In Progress → Fix Committed |
I bisected this down to the following edk2 commit:
commit 78c41ff519b187d 8979cda7074f007 a6323f9acd (refs/bisect/bad)
Author: Ard Biesheuvel <email address hidden>
Date: Thu Mar 9 16:59:34 2017 +0100
ArmVirtPkg/ FdtClientDxe: make DT table installation !ACPI dependent
Instead of having a build time switch to prevent the FDT configuration
table from being installed, make this behavior dependent on whether we
are passing ACPI tables to the OS. This is done by looking for the
ACPI 2.0 configuration table, and only installing the FDT one if the
ACPI one cannot be found.
Which makes sense - arm64/ACPI support wasn't baked yet upstream in v4.4.