public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Michael Zimmermann <sigmaepsilon92@gmail.com>
To: Leif Lindholm <leif.lindholm@linaro.org>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: Re: [PATCH] ArmPlatformPkg: MemoryInitPei: fix wrong check for system memory
Date: Mon, 16 Jan 2017 19:43:05 +0100	[thread overview]
Message-ID: <CAN9vWDJBezuMeuF_7yzqLwWBeSWSkXs=RuVaQt2cx3_BSkLrLw@mail.gmail.com> (raw)
In-Reply-To: <20170116180940.GO25883@bivouac.eciton.net>

The code in question is supposed to check if the memory range defined
in the PCD is fully included in the memory resource descriptor of the
current iteration. The condition for that is wrong. example:
PcdSystemMemoryBase = 0x80000000
PcdSystemMemorySize  = 0x10000000
ResourceDescriptor->PhysicalStart = 0x40000000
NextHob.ResourceDescriptor->ResourceLength = 0x10000000

obviously, the resource descriptor doesn't contain the system memory.
but the old logic would have selected this Hob because:
0x80000000>=0x40000000 && 0x50000000 <= 0x90000000
The second comparison probably was supposed to have the
ResourceDescriptor values on the right side,
I fixed it by just inverting the direction of the comparison which then becomes:
0x80000000>=0x40000000 && 0x50000000 >= 0x90000000

And this comparison now successfully fails but will still be
successful for the case we're checking for.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Michael Zimmermann <sigmaepsilon92@gmail.com>
---
 ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
b/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
index 2feb11f..8f67812 100644
--- a/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
+++ b/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
@@ -103,7 +103,7 @@ MemoryPeim (
   while ((NextHob.Raw = GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR,
NextHob.Raw)) != NULL) {
     if ((NextHob.ResourceDescriptor->ResourceType ==
EFI_RESOURCE_SYSTEM_MEMORY) &&
         (PcdGet64 (PcdSystemMemoryBase) >=
NextHob.ResourceDescriptor->PhysicalStart) &&
-        (NextHob.ResourceDescriptor->PhysicalStart +
NextHob.ResourceDescriptor->ResourceLength <= PcdGet64
(PcdSystemMemoryBase) + PcdGet64 (PcdSystemMemorySize)))
+        (NextHob.ResourceDescriptor->PhysicalStart +
NextHob.ResourceDescriptor->ResourceLength >= PcdGet64
(PcdSystemMemoryBase) + PcdGet64 (PcdSystemMemorySize)))
     {
       Found = TRUE;
       break;

On Mon, Jan 16, 2017 at 7:09 PM, Leif Lindholm <leif.lindholm@linaro.org> wrote:
> Hi Michael,
>
> Could you provide a message body explaining the error that this patch
> fixes so that I don't sprain my brain trying to figure it out?
>
> On Thu, Jan 12, 2017 at 04:46:57PM +0100, Michael Zimmermann wrote:
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Michael Zimmermann <sigmaepsilon92@gmail.com>
>> ---
>>  ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
>> b/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
>> index 2feb11f21d..8f6781212e 100644
>> --- a/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
>> +++ b/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
>> @@ -103,7 +103,7 @@ MemoryPeim (
>>    while ((NextHob.Raw = GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR,
>> NextHob.Raw)) != NULL) {
>>      if ((NextHob.ResourceDescriptor->ResourceType ==
>> EFI_RESOURCE_SYSTEM_MEMORY) &&
>>          (PcdGet64 (PcdSystemMemoryBase) >=
>> NextHob.ResourceDescriptor->PhysicalStart) &&
>> -        (NextHob.ResourceDescriptor->PhysicalStart +
>> NextHob.ResourceDescriptor->ResourceLength <= PcdGet64
>> (PcdSystemMemoryBase) + PcdGet64 (PcdSystemMemorySize)))
>
> It looks like the patch got corrupted on submission (lines wrapped).
> Could you resend it please?
>
>> +        (NextHob.ResourceDescriptor->PhysicalStart +
>> NextHob.ResourceDescriptor->ResourceLength >= PcdGet64
>> (PcdSystemMemoryBase) + PcdGet64 (PcdSystemMemorySize)))
>>      {
>>        Found = TRUE;
>>        break;
>> --
>> 2.11.0
>> _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.01.org
>> https://lists.01.org/mailman/listinfo/edk2-devel


  reply	other threads:[~2017-01-16 18:43 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-12 15:46 [PATCH] ArmPlatformPkg: MemoryInitPei: fix wrong check for system memory Michael Zimmermann
2017-01-13  4:47 ` Michael Zimmermann
2017-01-16 18:09 ` Leif Lindholm
2017-01-16 18:43   ` Michael Zimmermann [this message]
2017-01-16 18:44     ` Michael Zimmermann

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='CAN9vWDJBezuMeuF_7yzqLwWBeSWSkXs=RuVaQt2cx3_BSkLrLw@mail.gmail.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