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.5020.1662474998123642056 for ; Tue, 06 Sep 2022 07:36:38 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=K9h0uyUh; 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 6A4306134E for ; Tue, 6 Sep 2022 14:36:37 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D2BABC433D7 for ; Tue, 6 Sep 2022 14:36:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1662474996; bh=fVhLtIiDzfEtb30DBNQ/8bt/foF6Wn/42hxqkHN3Upg=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=K9h0uyUhWr49YvUO4IoXf/oeGWCJj7Gw2RkKhWoUOceU2pljwbZvrafI3JlSeQr4H GpYzoa+b/GYNSQDUKG1mqCvduP4f5BcE0G5eF9AF+WS6S4lI5qBWb4glwBt+oJhhF9 eUfFVlKbhx7M2duhG1YXh0XxIK20IMrSdIlGbw8wYq++CNjSJv7wWWkOSwPtYxnOzs 1TW4Xve7YPh/12t4aRZZVKp/JCtC8hO8TiBWXfUL3U6GUyDyypyeTi+R5ZDvTRNpaw vZGtu0Ei7lV9JOuB/ulSl71UyB+Rjf30e3IwBgg0w8tlFWl7fmpxxx8tgmHBzZzQAD oRFnikci0SCsg== Received: by mail-lf1-f54.google.com with SMTP id w8so17652758lft.12 for ; Tue, 06 Sep 2022 07:36:36 -0700 (PDT) X-Gm-Message-State: ACgBeo0g5ku6K9vv18Gh0s6gj03weehro6UzWv0+SCQll9elDtFcLvef cGgBrz6gWJDIzf+V/iqA/HY74MtWMjjNOZFYvs8= X-Google-Smtp-Source: AA6agR5IXMI/4V1jGLMVMmSZDAFUPEeb0UoM+Og/zhZCy2DKu+vCMmNhyO0MLThc5TPcRXrsAQZpIMmCvb8x8afjcP8= X-Received: by 2002:a05:6512:401f:b0:497:a21f:42f0 with SMTP id br31-20020a056512401f00b00497a21f42f0mr278366lfb.539.1662474994828; Tue, 06 Sep 2022 07:36:34 -0700 (PDT) MIME-Version: 1.0 References: <20220906142736.2762874-1-kraxel@redhat.com> In-Reply-To: <20220906142736.2762874-1-kraxel@redhat.com> From: "Ard Biesheuvel" Date: Tue, 6 Sep 2022 16:36:23 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 1/1] OvmfPkg/QemuVideoDxe: fix bochs mode init To: Gerd Hoffmann Cc: devel@edk2.groups.io, Pawel Polawski , Jiewen Yao , Ard Biesheuvel , Oliver Steffen , Jordan Justen Content-Type: text/plain; charset="UTF-8" On Tue, 6 Sept 2022 at 16:27, 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 flip Is a flip flip a special kind of 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 flip happens to be in the state we need. > > Signed-off-by: Gerd Hoffmann > --- > OvmfPkg/QemuVideoDxe/Driver.c | 31 ++++++++++++++++++++++++++++++- > 1 file changed, 30 insertions(+), 1 deletion(-) > > diff --git a/OvmfPkg/QemuVideoDxe/Driver.c b/OvmfPkg/QemuVideoDxe/Driver.c > index b91909a14e59..bfa92ae96022 100644 > --- a/OvmfPkg/QemuVideoDxe/Driver.c > +++ b/OvmfPkg/QemuVideoDxe/Driver.c > @@ -984,6 +984,31 @@ VgaOutb ( > } > } > > +UINT8 > +VgaInb ( > + QEMU_VIDEO_PRIVATE_DATA *Private, > + UINTN Reg > + ) > +{ > + EFI_STATUS Status; > + UINT8 Data = 0; > + > + if (Private->Variant == QEMU_VIDEO_BOCHS_MMIO) { > + 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 +1023,11 @@ InitializeBochsGraphicsMode ( > ModeData->ColorDepth > )); > > - /* unblank */ > + /* set color mode */ > + VgaOutb (Private, MISC_OUTPUT_REGISTER, 0x01); > + > + /* reset flop flop + unblank */ And what is a flop flop? > + VgaInb (Private, INPUT_STATUS_1_REGISTER); > VgaOutb (Private, ATT_ADDRESS_REGISTER, 0x20); > > BochsWrite (Private, VBE_DISPI_INDEX_ENABLE, 0); > -- > 2.37.3 >