video: hyperv_fb: Fix the cache type when mapping the VRAM

Bug #1908569 reported by Joseph Salisbury
8
This bug affects 1 person
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 5f1251a48c17b54939d7477305e39679a565382c in the mainline kernel)

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.

Marcelo Cerri (mhcerri)
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)
Marcelo Cerri (mhcerri)
description: updated
Marcelo Cerri (mhcerri)
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
Revision history for this message
Marcelo Cerri (mhcerri) wrote :
Stefan Bader (smb)
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
Revision history for this message
Marcelo Cerri (mhcerri) wrote :

This fix was already released to -updates via upstream stable updates to the following Azure kernel versions:

4.15.0-1108.120
5.4.0-1040.42
5.8.0-1023.25

Changed in linux-azure (Ubuntu Focal):
status: Fix Committed → Fix Released
Changed in linux-azure-4.15 (Ubuntu Bionic):
status: Fix Committed → Fix Released
Changed in linux-azure (Ubuntu Groovy):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.