From: "Marc W Chen" <marc.w.chen@intel.com>
To: devel@edk2.groups.io
Cc: "Marc Chen" <marc.w.chen@intel.com>,
"Jordan Justen" <jordan.l.justen@intel.com>,
"Laszlo Ersek" <lersek@redhat.com>,
"Ard Biesheuvel" <ard.biesheuvel@linaro.org>,
"Anthony Perard" <anthony.perard@citrix.com>,
"Julien Grall" <julien.grall@arm.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Stefan Berger" <stefanb@linux.ibm.com>
Subject: [PATCH] OvmfPkg/QemuVideoDxe: Shouldn't assume system in VGA alias mode.
Date: Wed, 5 Jun 2019 18:55:33 +0800 [thread overview]
Message-ID: <20190605105533.65212-1-marc.w.chen@intel.com> (raw)
Query the supported attributes firstly, then AND (&&) both
VGA_IO and VGA_IO_16. Since the supported attributes should
only have VGA_IO or VGA_IO_16 set, the result of AND (&&) is
either VGA_IO or IO_16. Then the result can be passed to
PciIo->Attributes() to set the attributes.
Signed-off-by: Marc Chen <marc.w.chen@intel.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Anthony Perard <anthony.perard@citrix.com>
Cc: Julien Grall <julien.grall@arm.com>
Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
Cc: Stefan Berger <stefanb@linux.ibm.com>
---
OvmfPkg/QemuVideoDxe/Driver.c | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/OvmfPkg/QemuVideoDxe/Driver.c b/OvmfPkg/QemuVideoDxe/Driver.c
index e8a613ef33..ba9210f24b 100644
--- a/OvmfPkg/QemuVideoDxe/Driver.c
+++ b/OvmfPkg/QemuVideoDxe/Driver.c
@@ -201,6 +201,7 @@ QemuVideoControllerDriverStart (
PCI_TYPE00 Pci;
QEMU_VIDEO_CARD *Card;
EFI_PCI_IO_PROTOCOL *ChildPciIo;
+ UINT64 Supports;
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
@@ -277,13 +278,32 @@ QemuVideoControllerDriverStart (
goto ClosePciIo;
}
+ //
+ // Get supported PCI attributes
+ //
+ Status = Private->PciIo->Attributes (
+ Private->PciIo,
+ EfiPciIoAttributeOperationSupported,
+ 0,
+ &Supports
+ );
+ if (EFI_ERROR (Status)) {
+ goto ClosePciIo;
+ }
+
+ Supports &= (UINT64)(EFI_PCI_IO_ATTRIBUTE_VGA_IO | EFI_PCI_IO_ATTRIBUTE_VGA_IO_16);
+ if ((Supports == 0) || (Supports == (EFI_PCI_IO_ATTRIBUTE_VGA_IO | EFI_PCI_IO_ATTRIBUTE_VGA_IO_16))) {
+ Status = EFI_UNSUPPORTED;
+ goto ClosePciIo;
+ }
+
//
// Set new PCI attributes
//
Status = Private->PciIo->Attributes (
Private->PciIo,
EfiPciIoAttributeOperationEnable,
- EFI_PCI_DEVICE_ENABLE | EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY | EFI_PCI_IO_ATTRIBUTE_VGA_IO,
+ EFI_PCI_DEVICE_ENABLE | EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY | Supports,
NULL
);
if (EFI_ERROR (Status)) {
--
2.16.2.windows.1
next reply other threads:[~2019-06-05 10:55 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-05 10:55 Marc W Chen [this message]
-- strict thread matches above, loose matches on Subject: below --
2019-06-05 11:14 [PATCH] OvmfPkg/QemuVideoDxe: Shouldn't assume system in VGA alias mode Marc W Chen
2019-06-05 12:00 ` Laszlo Ersek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190605105533.65212-1-marc.w.chen@intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox