From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=211.23.38.101; helo=synology.com; envelope-from=yuchenlin@synology.com; receiver=edk2-devel@lists.01.org Received: from synology.com (mail.synology.com [211.23.38.101]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0D23B21A07A82 for ; Tue, 20 Nov 2018 17:36:29 -0800 (PST) Received: from _ (localhost [127.0.0.1]) by synology.com (Postfix) with ESMTPA id 42ACA16F4BF6; Wed, 21 Nov 2018 09:36:28 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synology.com; s=123; t=1542764188; bh=zaIwgGIQP55JBVy7bt2qKyawac+N3fTtTIdGSWPDuC8=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=JEeJsQus1IjT02HeTORaZ6wVuuxSslWVZ8iSNtKbGzjJH9rzA3jYh3V9h1vi6airV Wc+lKtZL+JNWrk2Fa8IQ+gZ5AwB5HLp7pQipOfalEslR8+Sp0hfVsKjn2Fm3UaEblX zxPcRUiqMr8Nhc7ylW7FfyWh3jfSkN4rC4cccTBg= MIME-Version: 1.0 Date: Wed, 21 Nov 2018 09:36:28 +0800 From: yuchenlin To: Laszlo Ersek Cc: edk2-devel@lists.01.org, phil@philjordan.eu, jordan.l.justen@intel.com, anthony.perard@citrix.com In-Reply-To: References: <20181107034713.24907-1-yuchenlin@synology.com> Message-ID: <1891007b82344eb6a86cb331923df057@synology.com> X-Sender: yuchenlin@synology.com User-Agent: Roundcube Webmail/1.1.2 X-Synology-MCP-Status: no X-Synology-Spam-Flag: no X-Synology-Spam-Status: score=0, required 6, WHITELIST_FROM_ADDRESS 0 X-Synology-Virus-Status: no Subject: Re: [PATCH v3] OvmfPkg: simply use the Bochs interface for vmsvga X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Nov 2018 01:36:30 -0000 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit On 2018-11-21 03:59, Laszlo Ersek wrote: > On 11/07/18 18:06, Laszlo Ersek wrote: >> On 11/07/18 04:47, yuchenlin@synology.com wrote: >>> From: yuchenlin >>> >>> BAR | std vga | vmsvga >>> --------------------------------- >>> 0 | Framebuffer | I/O space >>> 1 | Reserved | Framebuffer >>> 2 | MMIO | FIFO >>> >>> - We cannot recognize VMW SVGA as BOCHS because that would confuse >>> the >>> IsQxl setting in QemuVideoControllerDriverStart(), >>> >>> - We cannot recognize VMW SVGA as BOCHS_MMIO because BAR2 on VMW SVGA >>> is >>> not the BOCHS MMIO BAR (we can only use port IO). >>> >>> Therefore the list of reasons for which we should introduce >>> QEMU_VIDEO_VMWARE_SVGA should name three reasons: >>> >>> (1) Get framebuffer from correct PCI BAR >>> (2) Prevent using BAR2 for MMIO >>> (3) Prevent mis-recognizing VMW SVGA as QXL >>> >>> Contributed-under: TianoCore Contribution Agreement 1.1 >>> Signed-off-by: yuchenlin >>> --- >>> Changelog: >>> >>> v1 -> v2 >>> * use 'else' clause (Thanks Philippe). >>> * add more comment in revert patches (Thanks Philippe). >>> * reorder the revert patches, we should revert the last commit first. >>> * use correct framebuffer to ClearScreen. >>> * revert VMWare svga definitions. >>> >>> v2 -> v3 >>> * Update commit message (Thanks Laszlo) >>> * Treat QEMU_VIDEO_VMWARE_SVGA as QEMU_VIDEO_BOCHS (Thanks Laszlo) >>> >>> --- >>> OvmfPkg/QemuVideoDxe/Driver.c | 16 +++++++++++++++- >>> OvmfPkg/QemuVideoDxe/Gop.c | 2 +- >>> OvmfPkg/QemuVideoDxe/Qemu.h | 2 ++ >>> 3 files changed, 18 insertions(+), 2 deletions(-) >>> >>> diff --git a/OvmfPkg/QemuVideoDxe/Driver.c >>> b/OvmfPkg/QemuVideoDxe/Driver.c >>> index 2304afd1e6..8e02700d39 100644 >>> --- a/OvmfPkg/QemuVideoDxe/Driver.c >>> +++ b/OvmfPkg/QemuVideoDxe/Driver.c >>> @@ -69,6 +69,12 @@ QEMU_VIDEO_CARD gQemuVideoCardList[] = { >>> 0x1050, >>> QEMU_VIDEO_BOCHS_MMIO, >>> L"QEMU VirtIO VGA" >>> + },{ >>> + PCI_CLASS_DISPLAY_VGA, >>> + 0x15ad, >>> + 0x0405, >>> + QEMU_VIDEO_VMWARE_SVGA, >>> + L"QEMU VMWare SVGA" >>> },{ >>> 0 /* end of list */ >>> } >>> @@ -316,6 +322,14 @@ QemuVideoControllerDriverStart ( >>> } >>> } >>> >>> + // >>> + // VMWare SVGA is handled like Bochs (with port IO only). >>> + // >>> + if (Private->Variant == QEMU_VIDEO_VMWARE_SVGA) { >>> + Private->Variant = QEMU_VIDEO_BOCHS; >>> + Private->FrameBufferVramBarIndex = PCI_BAR_IDX1; >>> + } >>> + >>> // >>> // Check if accessing the bochs interface works. >>> // >>> @@ -764,7 +778,7 @@ ClearScreen ( >>> Private->PciIo->Mem.Write ( >>> Private->PciIo, >>> EfiPciIoWidthFillUint32, >>> - 0, >>> + Private->FrameBufferVramBarIndex, >>> 0, >>> 0x400000 >> 2, >>> &Color >>> diff --git a/OvmfPkg/QemuVideoDxe/Gop.c b/OvmfPkg/QemuVideoDxe/Gop.c >>> index d490fa7a2e..6f542d9eac 100644 >>> --- a/OvmfPkg/QemuVideoDxe/Gop.c >>> +++ b/OvmfPkg/QemuVideoDxe/Gop.c >>> @@ -60,7 +60,7 @@ QemuVideoCompleteModeData ( >>> >>> Private->PciIo->GetBarAttributes ( >>> Private->PciIo, >>> - 0, >>> + Private->FrameBufferVramBarIndex, >>> NULL, >>> (VOID**) &FrameBufDesc >>> ); >>> diff --git a/OvmfPkg/QemuVideoDxe/Qemu.h >>> b/OvmfPkg/QemuVideoDxe/Qemu.h >>> index d7da761705..3aac9eeca6 100644 >>> --- a/OvmfPkg/QemuVideoDxe/Qemu.h >>> +++ b/OvmfPkg/QemuVideoDxe/Qemu.h >>> @@ -92,6 +92,7 @@ typedef enum { >>> QEMU_VIDEO_CIRRUS_5446, >>> QEMU_VIDEO_BOCHS, >>> QEMU_VIDEO_BOCHS_MMIO, >>> + QEMU_VIDEO_VMWARE_SVGA, >>> } QEMU_VIDEO_VARIANT; >>> >>> typedef struct { >>> @@ -120,6 +121,7 @@ typedef struct { >>> QEMU_VIDEO_VARIANT Variant; >>> FRAME_BUFFER_CONFIGURE *FrameBufferBltConfigure; >>> UINTN FrameBufferBltConfigureSize; >>> + UINT8 FrameBufferVramBarIndex; >>> } QEMU_VIDEO_PRIVATE_DATA; >>> >>> /// >>> >> >> Reviewed-by: Laszlo Ersek >> >> I'm not pushing this patch at once, for two reasons: >> >> - I should leave time for other reviewers to comment, >> - we are now in the soft feature freeze period >> , >> and this is not a bugfix, but a feature (re-)enablement that is only >> now >> being reviewed. >> >> I'll keep this tagged on my queue until after the edk2-stable201811 >> tag >> is pushed, and then I'll push this patch. Please do ping me, should I >> forget. > > I haven't forgotten. :) > > * First, I've cherry-picked the first four patches (from the v2 series) > from the git history. See > . > > * Second, I've added PhilMD's R-b to those four patches. See > . > > * Third, PhilMD got busy with other stuff meanwhile, so I've tested the > patch I'm replying to, myself. I have confirmed the following device > models continue to work: > - Cirrus 5446 > - QEMU Standard VGA > - QEMU QXL VGA > - QEMU VirtIO VGA > > Therefore, for patch #5 (the present patch), > > Regression-tested-by: Laszlo Ersek > > * Fourth, I've also determined that the patch enables OVMF to drive: > - QEMU VMWare SVGA > > therefore, for this patch, > > Tested-by: Laszlo Ersek > > * Fifth, the full series has been pushed as commit range > 7f3b0bad4bbb..d021868ccf49. > > > Thank you for the contribution, and also for your patience! > Laszlo Thank all for testing and all your effort. YuChen