RE: [PATCH v4] video: hyperv: hyperv_fb: Use physical memory for fb on HyperV Gen 1 VMs.
From: Michael Kelley <hidden>
Date: 2019-12-09 16:33:35
Also in:
dri-devel, linux-hyperv, lkml
From: Wei Hu <redacted> Sent: Sunday, December 8, 2019 11:58 PM
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 performence for VM. The physical memory assigned to framebuffer
must be contiguous. We use CMA allocator to get contiguouse 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
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 +++++++++++++++++++++++++-------
2 files changed, 144 insertions(+), 39 deletions(-)Reviewed-by: Michael Kelley <redacted>