Thanks, -- Dexuan > -----Original Message----- > From: linux-hyperv-owner@xxxxxxxxxxxxxxx > <linux-hyperv-owner@xxxxxxxxxxxxxxx> On Behalf Of Dexuan Cui > Sent: Thursday, September 12, 2019 11:38 PM > To: Wei Hu <weh@xxxxxxxxxxxxx>; Michael Kelley <mikelley@xxxxxxxxxxxxx>; > rdunlap@xxxxxxxxxxxxx; shc_work@xxxxxxx; gregkh@xxxxxxxxxxxxxxxxxxx; > lee.jones@xxxxxxxxxx; alexandre.belloni@xxxxxxxxxxx; > baijiaju1990@xxxxxxxxx; fthain@xxxxxxxxxxxxxxxxxxx; info@xxxxxxxxx; > linux-hyperv@xxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx; > linux-fbdev@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; sashal@xxxxxxxxxx; > Stephen Hemminger <sthemmin@xxxxxxxxxxxxx>; Haiyang Zhang > <haiyangz@xxxxxxxxxxxxx>; KY Srinivasan <kys@xxxxxxxxxxxxx> > Subject: RE: [PATCH v5] video: hyperv: hyperv_fb: Support deferred IO for > Hyper-V frame buffer driver > > > From: Wei Hu <weh@xxxxxxxxxxxxx> > > Sent: Thursday, September 12, 2019 11:03 PM > > > > Without deferred IO support, hyperv_fb driver informs the host to refresh > > the entire guest frame buffer at fixed rate, e.g. at 20Hz, no matter there > > is screen update or not. This patch supports deferred IO for screens in > > graphics mode and also enables the frame buffer on-demand refresh. The > > highest refresh rate is still set at 20Hz. > > > > Currently Hyper-V only takes a physical address from guest as the starting > > address of frame buffer. This implies the guest must allocate contiguous > > physical memory for frame buffer. In addition, Hyper-V Gen 2 VMs only > > accept address from MMIO region as frame buffer address. Due to these > > limitations on Hyper-V host, we keep a shadow copy of frame buffer > > in the guest. This means one more copy of the dirty rectangle inside > > guest when doing the on-demand refresh. This can be optimized in the > > future with help from host. For now the host performance gain from deferred > > IO outweighs the shadow copy impact in the guest. > > > > Signed-off-by: Wei Hu <weh@xxxxxxxxxxxxx> > > --- > > v2: Incorporated review comments from Michael Kelley > > - Increased dirty rectangle by one row in deferred IO case when sending > > to Hyper-V. > > - Corrected the dirty rectangle size in the text mode. > > - Added more comments. > > - Other minor code cleanups. > > > > v3: Incorporated more review comments > > - Removed a few unnecessary variable tests > > > > v4: Incorporated test and review feedback from Dexuan Cui > > - Not disable interrupt while acquiring docopy_lock in > > hvfb_update_work(). This avoids significant bootup delay in > > large vCPU count VMs. > > > > v5: Completely remove the unnecessary docopy_lock after discussing > > with Dexuan Cui. > > Thanks! Looks good to me. > > Reviewed-by: Dexuan Cui <decui@xxxxxxxxxxxxx> Hi Wei, It turns out we need to make a further fix. :-) The patch forgets to take par->update into consideration. When the VM Connection window is closed (or minimized?), the host sends a message to the guest, and the guest sets par->update to false in synthvid_recv_sub(). If par->update is false, the guest doesn't need to call synthvid_update(). Thanks, -- Dexuan