On 1/6/20 11:37 PM, Dexuan Cui wrote: >> From: Michael Kelley <mikelley@xxxxxxxxxxxxx> >> Sent: Monday, December 9, 2019 8:33 AM >> To: Wei Hu <weh@xxxxxxxxxxxxx>; b.zolnierkie@xxxxxxxxxxx; KY >> Srinivasan <kys@xxxxxxxxxxxxx>; Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>; >> Stephen Hemminger <sthemmin@xxxxxxxxxxxxx>; sashal@xxxxxxxxxx; >> hch@xxxxxx; m.szyprowski@xxxxxxxxxxx; mchehab+samsung@xxxxxxxxxx; >> sam@xxxxxxxxxxxx; gregkh@xxxxxxxxxxxxxxxxxxx; >> alexandre.belloni@xxxxxxxxxxx; info@xxxxxxxxx; arnd@xxxxxxxx; >> dri-devel@xxxxxxxxxxxxxxxxxxxxx; linux-fbdev@xxxxxxxxxxxxxxx; >> linux-kernel@xxxxxxxxxxxxxxx; linux-hyperv@xxxxxxxxxxxxxxx; Dexuan Cui >> <decui@xxxxxxxxxxxxx> >> Cc: kbuild test robot <lkp@xxxxxxxxx> >> Subject: RE: [PATCH v4] video: hyperv: hyperv_fb: Use physical memory for >> fb on HyperV Gen 1 VMs. >> >> From: Wei Hu <weh@xxxxxxxxxxxxx> 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 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 <lkp@xxxxxxxxx> >>> Signed-off-by: Wei Hu <weh@xxxxxxxxxxxxx> >>> --- >>> v2: Incorporated review comments form hch@xxxxxx, 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 <mikelley@xxxxxxxxxxxxx> > > Tested-by: Dexuan Cui <decui@xxxxxxxxxxxxx> > > 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"). Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@xxxxxxxxxxx> Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics