linux-azure: CONFIG_FB_EFI=y
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux-azure (Ubuntu) |
Fix Committed
|
Medium
|
Tim Gardner | ||
Bionic |
Invalid
|
Undecided
|
Unassigned | ||
Focal |
Fix Released
|
Medium
|
Tim Gardner | ||
Impish |
Fix Released
|
Medium
|
Tim Gardner | ||
Jammy |
Fix Committed
|
Medium
|
Tim Gardner | ||
linux-azure-4.15 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
Medium
|
Tim Gardner | ||
Focal |
Invalid
|
Undecided
|
Unassigned | ||
Impish |
Invalid
|
Undecided
|
Unassigned | ||
Jammy |
Invalid
|
Undecided
|
Unassigned | ||
linux-azure-5.11 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Bionic |
Invalid
|
Undecided
|
Unassigned | ||
Focal |
Fix Committed
|
Medium
|
Tim Gardner | ||
Impish |
Invalid
|
Undecided
|
Unassigned | ||
Jammy |
Invalid
|
Undecided
|
Unassigned | ||
linux-azure-5.13 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Bionic |
Invalid
|
Undecided
|
Unassigned | ||
Focal |
Fix Released
|
Medium
|
Tim Gardner | ||
Impish |
Invalid
|
Undecided
|
Unassigned | ||
Jammy |
Invalid
|
Undecided
|
Unassigned |
Bug Description
SRU Justification
[Impact]
Secure boot instances of linux-azure require an EFI framebuffer in some cases in order for the VM to boot.
The issue was noticed in Ubuntu 18.04 linux-azure kernel, but actually exists in the latest mainline kernel. The issue happens when the below conditions are met:
hyperv_pci is built into the kernel and hyperv_fb is not, i.e., this means hyperv_pci loads before hyperv_fb loads.
CONFIG_FB_EFI is not defined, i.e., the efifb driver is not used.
Here is how the bug happens:
Linux VM starts, and vmbus_reserve_fb() reserves the VRAM [base=0xf8000000, length=8MB].
hyper-pci loads, gets MMIO [base=0xf8800000, lengh=8KB] as the bridge config window, and may get some other 64-bit MMIO ranges, and some 32-bit MMIO ranges (if needed.)
hyperv-fb loads, and gets MMIO [base=0xf8000000, lengh=8MB or a different length], and sets screen_
VM panics.
The kdump kernel starts to run, and vmbus_reserve_fb() is not reserving [base=0xf8000000, length=8MB] due to the lfb_base==0.
hyperv-pci loads and gets [base=0xf8000000, lengh=8KB] and the host PCI VSP driver rejects this address as the bridge config window.
The crux of the problem is that Linux vmbus driver itself is unable to detect the VRAM base/length (it looks like a video BIOS call is needed to get this info and such a BIOS call is inappropriate or impossible in hv_vmbus) and has to rely on screen_
Solution: Enable CONFIG_FB_EFI=y
[Test Case]
Microsoft tested. This config is also enabled on the master branch.
[Where things could go wrong]
VMs on certain instance types could fail to boot.
[Other Info]
SF: #00327005
tags: | added: bot-stop-nagging |
Changed in linux-azure (Ubuntu Bionic): | |
status: | New → In Progress |
Changed in linux-azure (Ubuntu Focal): | |
status: | New → In Progress |
Changed in linux-azure (Ubuntu Impish): | |
status: | New → In Progress |
Changed in linux-azure (Ubuntu Jammy): | |
status: | New → In Progress |
Changed in linux-azure (Ubuntu Bionic): | |
importance: | Undecided → Medium |
Changed in linux-azure (Ubuntu Focal): | |
importance: | Undecided → Medium |
Changed in linux-azure (Ubuntu Impish): | |
importance: | Undecided → Medium |
Changed in linux-azure (Ubuntu Jammy): | |
importance: | Undecided → Medium |
Changed in linux-azure (Ubuntu Bionic): | |
assignee: | nobody → Tim Gardner (timg-tpi) |
Changed in linux-azure (Ubuntu Focal): | |
assignee: | nobody → Tim Gardner (timg-tpi) |
Changed in linux-azure (Ubuntu Impish): | |
assignee: | nobody → Tim Gardner (timg-tpi) |
Changed in linux-azure (Ubuntu Jammy): | |
assignee: | nobody → Tim Gardner (timg-tpi) |
Changed in linux-azure-4.15 (Ubuntu Bionic): | |
assignee: | nobody → Tim Gardner (timg-tpi) |
status: | New → In Progress |
Changed in linux-azure-4.15 (Ubuntu Focal): | |
status: | New → Invalid |
Changed in linux-azure-4.15 (Ubuntu Impish): | |
status: | New → Invalid |
Changed in linux-azure-4.15 (Ubuntu Jammy): | |
status: | New → Invalid |
Changed in linux-azure (Ubuntu Jammy): | |
status: | In Progress → Fix Committed |
Changed in linux-azure-5.13 (Ubuntu Focal): | |
assignee: | nobody → Tim Gardner (timg-tpi) |
importance: | Undecided → Medium |
status: | New → In Progress |
Changed in linux-azure-4.15 (Ubuntu Bionic): | |
importance: | Undecided → Medium |
Changed in linux-azure-5.13 (Ubuntu Bionic): | |
status: | New → Invalid |
Changed in linux-azure-5.13 (Ubuntu Impish): | |
status: | New → Invalid |
Changed in linux-azure-5.13 (Ubuntu Jammy): | |
status: | New → Invalid |
Changed in linux-azure-5.11 (Ubuntu Bionic): | |
status: | New → Invalid |
Changed in linux-azure-5.11 (Ubuntu Focal): | |
assignee: | nobody → Tim Gardner (timg-tpi) |
importance: | Undecided → Medium |
status: | New → In Progress |
Changed in linux-azure-5.11 (Ubuntu Impish): | |
status: | New → Invalid |
Changed in linux-azure-5.11 (Ubuntu Jammy): | |
status: | New → Invalid |
description: | updated |
Changed in linux-azure-4.15 (Ubuntu Bionic): | |
status: | In Progress → Fix Committed |
Changed in linux-azure-5.11 (Ubuntu Focal): | |
status: | In Progress → Fix Committed |
Changed in linux-azure-5.13 (Ubuntu Focal): | |
status: | In Progress → Fix Committed |
Changed in linux-azure (Ubuntu Impish): | |
status: | In Progress → Fix Committed |
Changed in linux-azure (Ubuntu Focal): | |
status: | In Progress → Fix Committed |
Changed in linux-azure (Ubuntu Bionic): | |
assignee: | Tim Gardner (timg-tpi) → nobody |
importance: | Medium → Undecided |
status: | In Progress → Invalid |
tags: |
added: verification-done-bionic removed: verification-needed-bionic |
https:/ /lists. ubuntu. com/archives/ kernel- team/2022- January/ 127528. html