From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by mx.groups.io with SMTP id smtpd.web08.5828.1662543890772858805 for ; Wed, 07 Sep 2022 02:44:50 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=utN5Gl7m; spf=pass (domain: kernel.org, ip: 139.178.84.217, mailfrom: ardb@kernel.org) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 2256961834 for ; Wed, 7 Sep 2022 09:44:50 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 89CD4C43470 for ; Wed, 7 Sep 2022 09:44:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1662543889; bh=n9zSd64Pb6As6bbOkRfmguuCl2cwJaEFLIiZAsEufks=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=utN5Gl7m8btDsqNU9iIVOVdesmtSRFI5j4anD6+0DLDiI0A3I4omylguOonF9WO7o AaAIwRptoBp7EAUG5Yi5wyVrKhyEmEnlC8sIRhUFwSJ4ZQwLbJuRt5Lq/ONNScmNTL lrOndyEFQCK0ivT6ySm9sQsGuzk1B/hBNz8cUvvKv6+OXy9RVnCcpgggjrdnieJIbO kdsLb8buRDcYXbyjUGeZ81LOEC3B9/J0fMqRj/g9TsjBGpDYl4TdJoDZO1NgwVBgNM 3bHbTPbiW7UNrFLlg2rmiirsT1JvYy28qZZXgLMa2Oo9pVx4DtgP20GIJZ1ukDH5ob evyNU5Wvq9jTw== Received: by mail-lj1-f175.google.com with SMTP id z23so15330838ljk.1 for ; Wed, 07 Sep 2022 02:44:49 -0700 (PDT) X-Gm-Message-State: ACgBeo1n66rvO05htT/K3qy6DRx789VUzWK4vdeQSJgpuC4rzOgWYuWH 4PRhnvhnI1V2SMgD7frgyAfW1WIFKiYpX8PEJh4= X-Google-Smtp-Source: AA6agR4CXyBbpXSakuXUJK2eBgzq5AvZjh6RqbI5tFkfaGfETxaZk1h+2TNgU4Lcnm8VWvL9sniRb5mhIslKR9B3lJg= X-Received: by 2002:a2e:9b0e:0:b0:268:cb68:575b with SMTP id u14-20020a2e9b0e000000b00268cb68575bmr790692lji.152.1662543887553; Wed, 07 Sep 2022 02:44:47 -0700 (PDT) MIME-Version: 1.0 References: <20220907091504.3152616-1-kraxel@redhat.com> In-Reply-To: <20220907091504.3152616-1-kraxel@redhat.com> From: "Ard Biesheuvel" Date: Wed, 7 Sep 2022 11:44:35 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v3 1/1] OvmfPkg/QemuVideoDxe: fix bochs mode init To: Gerd Hoffmann Cc: devel@edk2.groups.io, Oliver Steffen , Pawel Polawski , Jiewen Yao , Jordan Justen Content-Type: text/plain; charset="UTF-8" On Wed, 7 Sept 2022 at 11:15, Gerd Hoffmann wrote: > > Add VgaInb() helper function to read vga registers. With that in place > fix the unblanking. We need to put the ATT_ADDRESS_REGISTER flip flop > into a known state, which is done by reading the > INPUT_STATUS_1_REGISTER. Reading the INPUT_STATUS_1_REGISTER only works > when the device is in color mode, so make sure that bit (0x01) is set in > MISC_OUTPUT_REGISTER. > > Currently the mode setting works more by luck because > ATT_ADDRESS_REGISTER flip flop happens to be in the state we need. > > Signed-off-by: Gerd Hoffmann Merged as #3310 Thanks, > --- > OvmfPkg/QemuVideoDxe/Driver.c | 33 ++++++++++++++++++++++++++++++++- > 1 file changed, 32 insertions(+), 1 deletion(-) > > diff --git a/OvmfPkg/QemuVideoDxe/Driver.c b/OvmfPkg/QemuVideoDxe/Driver.c > index b91909a14e59..1f9ba046ef04 100644 > --- a/OvmfPkg/QemuVideoDxe/Driver.c > +++ b/OvmfPkg/QemuVideoDxe/Driver.c > @@ -984,6 +984,33 @@ VgaOutb ( > } > } > > +UINT8 > +VgaInb ( > + QEMU_VIDEO_PRIVATE_DATA *Private, > + UINTN Reg > + ) > +{ > + EFI_STATUS Status; > + UINT8 Data; > + > + if (Private->Variant == QEMU_VIDEO_BOCHS_MMIO) { > + Data = 0; > + Status = Private->PciIo->Mem.Read ( > + Private->PciIo, > + EfiPciIoWidthUint8, > + PCI_BAR_IDX2, > + 0x400 - 0x3c0 + Reg, > + 1, > + &Data > + ); > + ASSERT_EFI_ERROR (Status); > + } else { > + Data = inb (Private, Reg); > + } > + > + return Data; > +} > + > VOID > InitializeBochsGraphicsMode ( > QEMU_VIDEO_PRIVATE_DATA *Private, > @@ -998,7 +1025,11 @@ InitializeBochsGraphicsMode ( > ModeData->ColorDepth > )); > > - /* unblank */ > + /* set color mode */ > + VgaOutb (Private, MISC_OUTPUT_REGISTER, 0x01); > + > + /* reset flip flop + unblank */ > + VgaInb (Private, INPUT_STATUS_1_REGISTER); > VgaOutb (Private, ATT_ADDRESS_REGISTER, 0x20); > > BochsWrite (Private, VBE_DISPI_INDEX_ENABLE, 0); > -- > 2.37.3 >