Thread (4 messages) 4 messages, 4 authors, 2020-01-15

RE: [PATCH v4] video: hyperv: hyperv_fb: Use physical memory for fb on HyperV Gen 1 VMs.

From: Dexuan Cui <decui@microsoft.com>
Date: 2020-01-06 22:38:12
Also in: dri-devel, linux-fbdev, lkml

From: Michael Kelley <redacted>
Sent: Monday, December 9, 2019 8:33 AM
To: Wei Hu <redacted>; b.zolnierkie@samsung.com; KY
Srinivasan [off-list ref]; Haiyang Zhang [off-list ref];
Stephen Hemminger [off-list ref]; sashal@kernel.org;
hch@lst.de; m.szyprowski@samsung.com; mchehab+samsung@kernel.org;
sam@ravnborg.org; gregkh@linuxfoundation.org;
alexandre.belloni@bootlin.com; info@metux.net; arnd@arndb.de;
dri-devel@lists.freedesktop.org; linux-fbdev@vger.kernel.org;
linux-kernel@vger.kernel.org; linux-hyperv@vger.kernel.org; Dexuan Cui
[off-list ref]
Cc: kbuild test robot <redacted>
Subject: RE: [PATCH v4] video: hyperv: hyperv_fb: Use physical memory for
fb on HyperV Gen 1 VMs.

From: Wei Hu <redacted> Sent: Sunday, December 8, 2019 11:58
PM
quoted
On Hyper-V, Generation 1 VMs can directly use VM's physical memory for
their framebuffers. This can improve the efficiency of framebuffer and
overall performance for VM. The physical memory assigned to framebuffer
must be contiguous. We use CMA allocator to get contiguous physicial
memory when the framebuffer size is greater than 4MB. For size under
4MB, we use alloc_pages to achieve this.

To enable framebuffer memory allocation from CMA, supply a kernel
parameter to give enough space to CMA allocator at boot time. For
example:
    cma=130m
This gives 130MB memory to CAM allocator that can be allocated to
framebuffer. If this fails, we fall back to the old way of using
mmio for framebuffer.

Reported-by: kbuild test robot <redacted>
Signed-off-by: Wei Hu <redacted>
---
    v2: Incorporated review comments form hch@lst.de, Michael Kelley
and
quoted
    Dexuan Cui
    - Use dma_alloc_coherent to allocate large contiguous memory
    - Use phys_addr_t for physical addresses
    - Corrected a few spelling errors and minor cleanups
    - Also tested on 32 bit Ubuntu guest
    v3: Fixed a build issue reported by kbuild test robot and incorported
    some review comments from Michael Kelley
    - Add CMA check to avoid link failure
    - Fixed small memory leak introduced by alloc_apertures
    - Cleaned up so code
    v4: Removed request_pages variable as it is no longer needed

 drivers/video/fbdev/Kconfig     |   1 +
 drivers/video/fbdev/hyperv_fb.c | 182
+++++++++++++++++++++++++-------
quoted
 2 files changed, 144 insertions(+), 39 deletions(-)
Reviewed-by: Michael Kelley <redacted>
Tested-by: Dexuan Cui <decui@microsoft.com>

For a Gen-1 VM running on recent Hyper-V hosts, this patch can greatly 
reduce the CPU utilization because it avoids the slow data copy from the 
shadow framebuffer to the MMIO framebuffer, and hence it resolves the
"blurred screen" issue when we output a lot of characters on the text-mode
ternimal (e.g. "dmesg").
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help