public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: Laszlo Ersek <lersek@redhat.com>
Cc: Chandni Cherukuri <chandni.cherukuri@arm.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	Nariman Poushin <nariman.poushin@linaro.org>
Subject: Re: [PATCH edk2-platforms 0/3] drop GUIDs from NOR flash bank descriptors
Date: Thu, 22 Nov 2018 17:37:22 +0100	[thread overview]
Message-ID: <B26A6CED-49A7-4E32-B29B-F8DC5903A0DD@linaro.org> (raw)
In-Reply-To: <abe2daac-3f48-a964-a270-487d9f0c1e7a@redhat.com>



> On 22 Nov 2018, at 17:30, Laszlo Ersek <lersek@redhat.com> wrote:
> 
>> On 11/22/18 14:08, Ard Biesheuvel wrote:
>>> On Thu, 22 Nov 2018 at 12:37, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote:
>>> 
>>> On Thu, 22 Nov 2018 at 12:19, chandni cherukuri
>>> <chandni.cherukuri@arm.com> wrote:
>>>> 
>>>> On Thu, Nov 22, 2018 at 1:20 PM Ard Biesheuvel
>>>> <ard.biesheuvel@linaro.org> wrote:
>>>>> 
>>>>>> On Thu, 22 Nov 2018 at 05:01, Thomas Abraham <thomas.abraham@arm.com> wrote:
>>>>>> 
>>>>>> Hi Ard,
>>>>>> 
>>>>>> On Thu, Nov 22, 2018 at 3:46 AM Ard Biesheuvel
>>>>>> <ard.biesheuvel@linaro.org> wrote:
>>>>>>> 
>>>>>>>> On Wed, 21 Nov 2018 at 14:48, Thomas Abraham <thomas.abraham@arm.com> wrote:
>>>>>>>> 
>>>>>>>> Hi Ard,
>>>>>>>> 
>>>>>>>> On Wed, Nov 21, 2018 at 5:31 PM Ard Biesheuvel
>>>>>>>> <ard.biesheuvel@linaro.org> wrote:
>>>>>>>>> 
>>>>>>>>> Align edk2-platform with upcoming changes to EDK2 to get rid of per-bank
>>>>>>>>> NOR flash GUIDs.
>>>>>>>>> 
>>>>>>>>> Ard Biesheuvel (3):
>>>>>>>>>  Platform/ARM: replace hardcoded VenHW() device paths referring to NOR
>>>>>>>>>    flash
>>>>>>>>>  Silicon/SynQuacer: drop per-bank NOR flash GUIDs
>>>>>>>>>  Platform/ARM: drop per-bank NOR flash GUIDs
>>>>>>>>> 
>>>>>>>>> Platform/ARM/JunoPkg/ArmJuno.dec                   |  2 +-
>>>>>>>>> Platform/ARM/JunoPkg/ArmJuno.dsc                   |  2 +-
>>>>>>>>> .../JunoPkg/Library/NorFlashJunoLib/NorFlashJuno.c |  2 --
>>>>>>>>> .../ARM/SgiPkg/Library/NorFlashLib/NorFlashLib.c   |  2 --
>>>>>>>>> Platform/ARM/SgiPkg/SgiPlatform.dsc                |  2 +-
>>>>>>>>> Platform/ARM/VExpressPkg/ArmVExpress-CTA15-A7.dsc  |  2 +-
>>>>>>>>> Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc       |  2 +-
>>>>>>>>> .../NorFlashArmVExpressLib/NorFlashArmVExpress.c   |  4 ----
>>>>>>>>> .../SynQuacer/Drivers/Fip006Dxe/NorFlashDxe.c      | 14 +++++++-------
>>>>>>>>> .../SynQuacer/Drivers/Fip006Dxe/NorFlashDxe.h      |  3 +++
>>>>>>>>> .../NorFlashSynQuacerLib/NorFlashSynQuacer.c       |  6 ------
>>>>>>>>> 11 files changed, 15 insertions(+), 26 deletions(-)
>>>>>>>> 
>>>>>>>> Tested this patch series and "[PATCH v2 0/5] ArmPlatformPkg,
>>>>>>>> ArmVirtPkg: discover NOR flash banks from DTB" patch series on the
>>>>>>>> Juno board. With these patches applied, the boot fails on Juno board
>>>>>>>> with the following messages. I have not yet tried to debug the issue
>>>>>>>> but wanted to let you know this.
>>>>>>>> 
>>>>>>>> [...]
>>>>>>>> Loading driver at 0x000F830C000 EntryPoint=0x000F831B2AC IScsiDxe.efi
>>>>>>>> add-symbol-file
>>>>>>>> /home/thopan01/devel/juno/uefi/uefi/edk2/Build/ArmJuno/DEBUG_GCC5/AARCH64/MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe/DEBUG/Udp4Dxe.dll
>>>>>>>> 0xF8300000
>>>>>>>> Loading driver at 0x000F82FF000 EntryPoint=0x000F8306DF0 Udp4Dxe.efi
>>>>>>>> add-symbol-file
>>>>>>>> /home/thopan01/devel/juno/uefi/uefi/edk2/Build/ArmJuno/DEBUG_GCC5/AARCH64/Platform/ARM/Drivers/FdtPlatformDxe/FdtPlatformDxe/DEBUG/FdtPlatformDxe.dll
>>>>>>>> 0xF82EE000
>>>>>>>> Loading driver at 0x000F82ED000 EntryPoint=0x000F82F76EC FdtPlatformDxe.efi
>>>>>>>> Found image: fip in block 5.
>>>>>>>> Found image: norkern in block 20.
>>>>>>>> Found image: ramdisk.img in block 116.
>>>>>>>> Found image: hdlcdclk in block 151.
>>>>>>>> Found image: selftest in block 152.
>>>>>>>> Found image: board.dtb in block 156.
>>>>>>>> Found image: scp_bl1 in block 249.
>>>>>>>> Found image: bl1 in block 251.
>>>>>>>> Found image: startup.nsh in block 252.
>>>>>>>> ASSERT [BootMonFs]
>>>>>>>> /home/thopan01/devel/juno/uefi/uefi/edk2/MdePkg/Library/BaseLib/String.c(173):
>>>>>>>> ((UINTN) String & 0x00000001) == 0
>>>>>>>> 
>> ...
>>> Could you please share the backtrace and the results of
>>> 
>>> nm -n Build/ArmJuno/DEBUG_GCC5/AARCH64/Platform/ARM/Drivers/BootMonFs/BootMonFs/DEBUG/BootMonFs.dll
>>> 
>>> for the failing case?
>>> 
>> 
>> It seems like BootMonFsOpenFile() is being called from FdtClientDxe
> 
> I think you mean "FdtPlatformDxe".
> 

Yes. Yay for multitasking :-)

>> with a misaligned CHAR16* argument for Filename.
> 
> Yup, that's not an infrequent bug.
> 
> Device paths are packed. Once we introduce a UINT8 field to a device
> path node, the rest of the nodes in the same device path will shift by 1
> byte. If there is a CHAR16 array field in one of those "later" device
> path nodes, such as "FILEPATH_DEVICE_PATH.PathName", then it might go
> from naturally aligned to mis-aligned, or vice versa. Therefore, passing
> such CHAR16 fields to string functions in BaseLib, that is, right out of
> the containing device path node, is never portable. If it happens to
> work, that is by chance only.
> 
> For example:
> 
>  https://bugzilla.tianocore.org/show_bug.cgi?id=1003
>  https://bugzilla.tianocore.org/show_bug.cgi?id=1008
> 
> I suggest grepping "FdtPlatformDxe" (or, well, rather "BootMonFs"!) for
> "PathName", and wherever it is passed to StrLen() -- because
> MdePkg/Library/BaseLib/String.c(173) is in StrLen() --, make sure the
> pathname is first re-aligned naturally, temporarily. For example, with
> AllocateCopyPool().
> 
> gBS->AllocatePool() guarantees 8-byte alignment per spec. While
> AllocatePool() / AllocateCopyPool() from MemoryAllocationLib don't
> explicitly guarantee the same "on the tin", I think that's not by
> design, but by omission. FWIW, for TianoCore BZs 1003 and 1008 above, we
> assumed AllocateCopyPool() would ensure 8-byte alignment as well.
> 

I tracked this down to BdsLib (a remnant of the illustrious ARM bds), which is a bit of a mess. I’ll have some patches out shortly.




  reply	other threads:[~2018-11-22 16:37 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-21 12:01 [PATCH edk2-platforms 0/3] drop GUIDs from NOR flash bank descriptors Ard Biesheuvel
2018-11-21 12:01 ` [PATCH edk2-platforms 1/3] Platform/ARM: replace hardcoded VenHW() device paths referring to NOR flash Ard Biesheuvel
2018-11-21 12:01 ` [PATCH edk2-platforms 2/3] Silicon/SynQuacer: drop per-bank NOR flash GUIDs Ard Biesheuvel
2018-11-21 12:01 ` [PATCH edk2-platforms 3/3] Platform/ARM: " Ard Biesheuvel
2018-11-21 13:48 ` [PATCH edk2-platforms 0/3] drop GUIDs from NOR flash bank descriptors Thomas Abraham
2018-11-21 22:16   ` Ard Biesheuvel
2018-11-22  4:01     ` Thomas Abraham
2018-11-22  7:50       ` Ard Biesheuvel
2018-11-22 11:19         ` chandni cherukuri
2018-11-22 11:37           ` Ard Biesheuvel
2018-11-22 12:54             ` Thomas Abraham
2018-11-22 13:08             ` Ard Biesheuvel
2018-11-22 13:33               ` Thomas Abraham
2018-11-22 16:30               ` Laszlo Ersek
2018-11-22 16:37                 ` Ard Biesheuvel [this message]
2018-11-26 15:15 ` Leif Lindholm
2018-11-26 17:26   ` Ard Biesheuvel

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=B26A6CED-49A7-4E32-B29B-F8DC5903A0DD@linaro.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