video: hyperv_fb: Fix the cache type when mapping the VRAM
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux-azure (Ubuntu) |
New
|
Undecided
|
Marcelo Cerri | ||
Bionic |
Invalid
|
Undecided
|
Unassigned | ||
Focal |
Fix Released
|
Medium
|
Marcelo Cerri | ||
Groovy |
Fix Released
|
Medium
|
Marcelo Cerri | ||
linux-azure-4.15 (Ubuntu) |
New
|
Undecided
|
Marcelo Cerri | ||
Bionic |
Fix Released
|
Medium
|
Marcelo Cerri | ||
Focal |
Invalid
|
Undecided
|
Unassigned | ||
Groovy |
Invalid
|
Undecided
|
Unassigned |
Bug Description
[Impact]
We identified a problem that is causing slow logging to the console for customers.
The following commit resolves this issue as well as other cache relates issues:
325073ae3485 ("video: hyperv_fb: Fix the cache type when mapping the VRAM")
(marcelo.cerri: it's actually commit id 5f1251a48c17b54
Patch details from it's commit message:
x86 Hyper-V used to essentially always overwrite the effective cache type
of guest memory accesses to WB. This was problematic in cases where there
is a physical device assigned to the VM, since that often requires that
the VM should have control over cache types. Thus, on newer Hyper-V since
2018, Hyper-V always honors the VM's cache type, but unexpectedly Linux VM
users start to complain that Linux VM's VRAM becomes very slow, and it
turns out that Linux VM should not map the VRAM uncacheable by ioremap().
Fix this slowness issue by using ioremap_cache().
With this change, the VRAM on new Hyper-V is as fast as regular RAM, so
it's no longer necessary to use the hacks we added to mitigate the
slowness, i.e. we no longer need to allocate physical memory and use
it to back up the VRAM in Generation-1 VM, and we also no longer need to
allocate physical memory to back up the framebuffer in a Generation-2 VM
and copy the framebuffer to the real VRAM. A further big change will
address these for v5.11.
Microsoft would like to request this patch in all supported releases.
[Test Case]
The test is very simple. When using the console in a local Hyper-V instance and running a command with output with several lines (ie `ls -l /`) the output delay is very noticeable and it should be instantaneous with the fix.
[Where problems could occur]
The change might cause regressions in the hyperv_fb driver, affecting one of the alternatives users have to debug problems.
description: | updated |
Changed in linux-azure (Ubuntu): | |
assignee: | nobody → Marcelo Cerri (mhcerri) |
Changed in linux-azure (Ubuntu Bionic): | |
assignee: | nobody → Marcelo Cerri (mhcerri) |
Changed in linux-azure (Ubuntu Focal): | |
assignee: | nobody → Marcelo Cerri (mhcerri) |
Changed in linux-azure (Ubuntu Groovy): | |
assignee: | nobody → Marcelo Cerri (mhcerri) |
Changed in linux-azure-4.15 (Ubuntu): | |
assignee: | nobody → Marcelo Cerri (mhcerri) |
Changed in linux-azure (Ubuntu Bionic): | |
assignee: | Marcelo Cerri (mhcerri) → nobody |
status: | New → Invalid |
Changed in linux-azure-4.15 (Ubuntu Focal): | |
status: | New → Invalid |
Changed in linux-azure-4.15 (Ubuntu Groovy): | |
status: | New → Invalid |
Changed in linux-azure-4.15 (Ubuntu Bionic): | |
assignee: | nobody → Marcelo Cerri (mhcerri) |
description: | updated |
Changed in linux-azure (Ubuntu Focal): | |
status: | New → In Progress |
Changed in linux-azure-4.15 (Ubuntu Bionic): | |
status: | New → In Progress |
Changed in linux-azure (Ubuntu Groovy): | |
status: | New → In Progress |
Changed in linux-azure-4.15 (Ubuntu Bionic): | |
importance: | Undecided → Medium |
Changed in linux-azure (Ubuntu Groovy): | |
importance: | Undecided → Medium |
Changed in linux-azure (Ubuntu Focal): | |
importance: | Undecided → Medium |
Changed in linux-azure-4.15 (Ubuntu Bionic): | |
status: | In Progress → Fix Committed |
Changed in linux-azure (Ubuntu Focal): | |
status: | In Progress → Fix Committed |
Changed in linux-azure (Ubuntu Groovy): | |
status: | In Progress → Fix Committed |
SRU submission: https:/ /lists. ubuntu. com/archives/ kernel- team/2021- January/ 116548. html