public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "David Woodhouse" <dwmw2@infradead.org>
To: devel@edk2.groups.io
Cc: Hao A Wu <hao.a.wu@intel.com>, Ray Ni <ray.ni@intel.com>,
	Jordan Justen <jordan.l.justen@intel.com>,
	Laszlo Ersek <lersek@redhat.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: [PATCH v2 11/10] OvmfPkg/Csm/LegacyBiosDxe: Fix Legacy16GetTableAddress call for E820 data
Date: Thu, 13 Jun 2019 09:40:05 +0100	[thread overview]
Message-ID: <20190613084005.530806-1-dwmw2@infradead.org> (raw)
In-Reply-To: <18b24dae9f4e5c022849502fc4b60ac3ba59d6f1.camel@infradead.org>

The DX register is supposed to contain the required alignment for the
allocation. It was zero, and SeaBIOS doesn't (well, didn't) cope well
with that. Set it appropriately.

Also set BX to indicate the regions it's OK to allocate in too. That
wasn't being initialised and was just using whatever the previous user
of the structure had left there.

Finally, actually return an error if the allocation fails. Instead of
going all the way through into the CSM and just letting it have a bogus
pointer to the E820 data.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
---
 OvmfPkg/Csm/LegacyBiosDxe/LegacyBootSupport.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/OvmfPkg/Csm/LegacyBiosDxe/LegacyBootSupport.c b/OvmfPkg/Csm/LegacyBiosDxe/LegacyBootSupport.c
index 211750c012..cd4cd24f42 100644
--- a/OvmfPkg/Csm/LegacyBiosDxe/LegacyBootSupport.c
+++ b/OvmfPkg/Csm/LegacyBiosDxe/LegacyBootSupport.c
@@ -928,7 +928,9 @@ GenericLegacyBoot (
   if (CopySize > Private->Legacy16Table->E820Length) {
     ZeroMem (&Regs, sizeof (EFI_IA32_REGISTER_SET));
     Regs.X.AX = Legacy16GetTableAddress;
+    Regs.X.BX = (UINT16) 0x0; // Any region
     Regs.X.CX = (UINT16) CopySize;
+    Regs.X.DX = (UINT16) 0x4; // Alignment
     Private->LegacyBios.FarCall86 (
       &Private->LegacyBios,
       Private->Legacy16Table->Compatibility16CallSegment,
@@ -942,6 +944,7 @@ GenericLegacyBoot (
     Private->Legacy16Table->E820Length  = (UINT32) CopySize;
     if (Regs.X.AX != 0) {
       DEBUG ((EFI_D_ERROR, "Legacy16 E820 length insufficient\n"));
+      return EFI_OUT_OF_RESOURCES;
     } else {
       CopyMem (
         (VOID *)(UINTN) Private->Legacy16Table->E820Pointer,
-- 
2.21.0


  parent reply	other threads:[~2019-06-13  8:40 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-27  3:03 [PATCH v2 00/10] Duplicate required CSM components for OVMF Wu, Hao A
2019-05-27  3:03 ` [PATCH v2 01/10] Maintainers.txt: Add maintainer for CSM components in OvmfPkg Wu, Hao A
2019-06-13 13:26   ` [edk2-devel] " Laszlo Ersek
2019-05-27  3:03 ` [PATCH v2 02/10] OvmfPkg: Copy the required CSM components from framework packages Wu, Hao A
2019-06-13 13:40   ` [edk2-devel] " Laszlo Ersek
2019-05-27  3:03 ` [PATCH v2 03/10] OvmfPkg/OvmfPkg.dec: Add definitions for CSM-related Guid & Protocol Wu, Hao A
2019-06-13 13:49   ` [edk2-devel] " Laszlo Ersek
2019-05-27  3:03 ` [PATCH v2 04/10] OvmfPkg/OvmfPkg.dec: Add the new include folder for CSM header files Wu, Hao A
2019-06-13 13:49   ` [edk2-devel] " Laszlo Ersek
2019-05-27  3:03 ` [PATCH v2 05/10] OvmfPkg/OvmfPkg.dec: Add PCD definitions used by copied CSM modules Wu, Hao A
2019-06-13 14:09   ` [edk2-devel] " Laszlo Ersek
2019-05-27  3:03 ` [PATCH v2 06/10] OvmfPkg/Csm/VideoDxe: Update to make it build for OVMF Wu, Hao A
2019-06-13 14:10   ` [edk2-devel] " Laszlo Ersek
2019-05-27  3:03 ` [PATCH v2 07/10] OvmfPkg/Csm/LegacyBiosDxe: " Wu, Hao A
2019-06-13 14:15   ` [edk2-devel] " Laszlo Ersek
2019-05-27  3:03 ` [PATCH v2 08/10] OvmfPkg/Csm/LegacyBootMaintUiLib: " Wu, Hao A
2019-06-13 14:16   ` [edk2-devel] " Laszlo Ersek
2019-05-27  3:03 ` [PATCH v2 09/10] OvmfPkg/Csm/LegacyBootManagerLib: " Wu, Hao A
2019-06-13 14:17   ` [edk2-devel] " Laszlo Ersek
2019-05-27  3:03 ` [PATCH v2 10/10] OvmfPkg: Update DSC/FDF files to consume CSM components in OvmfPkg Wu, Hao A
2019-06-13 14:22   ` [edk2-devel] " Laszlo Ersek
2019-05-28 11:48 ` [edk2-devel] [PATCH v2 00/10] Duplicate required CSM components for OVMF Laszlo Ersek
2019-05-29  1:12   ` Wu, Hao A
2019-06-03  9:29     ` Laszlo Ersek
2019-06-12 21:40 ` David Woodhouse
2019-06-14  5:08   ` [edk2-devel] " Wu, Hao A
2019-06-12 21:43 ` [PATCH 11/10] OvmfPkg/Csm/LegacyBiosDxe: Correct Legacy16GetTableAddress call for E820 data David Woodhouse
2019-06-13  6:28   ` [edk2-devel] " Wu, Hao A
2019-06-13  7:10     ` Ni, Ray
2019-06-13  7:40     ` Jordan Justen
2019-06-13  8:00       ` David Woodhouse
2019-06-13  8:34     ` David Woodhouse
2019-06-13 12:45       ` Laszlo Ersek
2019-06-13  8:40   ` David Woodhouse [this message]
2019-06-13 14:23     ` [edk2-devel] [PATCH v2 11/10] OvmfPkg/Csm/LegacyBiosDxe: Fix " 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=20190613084005.530806-1-dwmw2@infradead.org \
    --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