public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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 19:14:10 +0800	[thread overview]
Message-ID: <20190605111410.73564-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>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1880
---
 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


             reply	other threads:[~2019-06-05 11:14 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-05 11:14 Marc W Chen [this message]
2019-06-05 12:00 ` [PATCH] OvmfPkg/QemuVideoDxe: Shouldn't assume system in VGA alias mode Laszlo Ersek
2019-06-05 17:15   ` [edk2-devel] " Laszlo Ersek
2019-06-06  4:18   ` Marc W Chen
  -- strict thread matches above, loose matches on Subject: below --
2019-06-05 10:55 Marc W Chen

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=20190605111410.73564-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