Hmm, moving the Ethernet stack initialization into the driver entrypoint is a
bit dirty but it looks to be the best solution so far. Thanks Andrew for the
suggestion.
Just to give more information on what I am trying to achieve with
EmbeddedPkg/Drivers/FdtPlatformDxe. I am trying to do the same as
MdeModulePkg/Universal/Acpi/AcpiPlatformDxe but on more generic.
MdeModulePkg/Universal/Acpi/AcpiPlatformDxe only looks for ACPI tables in the
FV. While with FdtPlatformDxe, the Device Tree is defined by a EFI Device Path.
So it could be located in the FV but also on a mass-storage or TFTP sever.
From: Andrew Fish [mailto:af...@apple.com]
Sent: 07 April 2015 22:03
To: edk2-devel@lists.sourceforge.net
Subject: Re: [edk2] Downloading a file from the network before starting BDS -
TPL issue
On Apr 7, 2015, at 1:46 PM, Carsey, Jaben
<jaben.car...@intel.com<mailto:jaben.car...@intel.com>> wrote:
I think you’re right that there is no ideal event for your purpose.
I don’t know what the guaranteed behavior is for BDS and DRIVER#### variables.
What about using BOOT#### variables to launch your app? This would also mean
you’re running at TPL_APPLICATION.
Why not just add a driver to the ROM to do this? Connect the network stack on
driver entry and download the data. Server the data on the event.
The Network Stack drivers don’t have a Depex, so they depend on all the
architectural protocols being present. If you place your driver in the FV after
the network stack drivers the entry point will be called after all the network
stack driver binding protocols have been registered. Note: This depends on an
implementation artifact on how the dispatcher works (early location in FV
breaks ties when it comes to dispatch order), but it sounds like this is a tool
for debugging so no big deal.
Thanks,
Andrew Fish
From: Olivier Martin [mailto:olivier.mar...@arm.com]
Sent: Tuesday, April 07, 2015 11:18 AM
To: edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
Subject: Re: [edk2] Downloading a file from the network before starting BDS -
TPL issue
The network stack is guarantee to be loaded (but not started) before my ideal
event (which is before the EFI OS Loader is started).
The EFI OS Loader is likely to be loaded from the EFI System partition that
might not have any link with the network stack.
And ideally I would like this ideal event to be the same when my ACPI/FDT file
is loaded from any other supported media (eg: a removable device).
From: Carsey, Jaben [mailto:jaben.car...@intel.com]
Sent: 07 April 2015 19:07
To: edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
Subject: Re: [edk2] Downloading a file from the network before starting BDS -
TPL issue
Is the network stack guaranteed to be installed before your ideal event or are
you doing the install of it?
-Jaben
From: Olivier Martin [mailto:olivier.mar...@arm.com]
Sent: Tuesday, April 07, 2015 10:31 AM
To: edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
Subject: [edk2] Downloading a file from the network before starting BDS - TPL
issue
Importance: High
Hello,
I am trying to solve a TPL issue…
Use Case: Download ACPI tables (actually it is the Device Tree but the
principle is the same) from the network before BDS is started for enabling
developers to work on his ACPI/FDT tables on his host machine. The path of the
file is defined by a UEFI Device Path.
My current design was to make the ACPI/FDT Platform driver waiting for the PI
signal EndOfDxe
(https://github.com/tianocore/edk2/blob/master/EmbeddedPkg/Drivers/FdtPlatformDxe/FdtPlatform.c#L124).
And to download the file(s) when this event is signalled
(https://github.com/tianocore/edk2/blob/master/EmbeddedPkg/Drivers/FdtPlatformDxe/FdtPlatform.c#L204).
The issue with this design is the EndOfDxe event is called at TPL_CALLBACK. And
the DHCP & TFTP stack cannot be initialized at TPL_CALLBACK
(https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.c#L824).
I can see few solutions to solve my issue but I do not like none of them ☹:
- Solution A: Encapsulate the use case in an EFI application/Driver
that would be invoked by the user in BDS (either in the EFI Shell or as a
Driver#### boot entry)
Drawback: it means the user has to do a specific action for this use case.
- Solution B: Replace EnfOfDxe event to use a dummy EFI protocol that
would be installed by the BDS
Drawback: it means the mechanism must be implemented in every BDS. While I am
looking for a generic solution.
- Solution C: Return an error saying the UEFI specification does not
allow this use case.
Drawback: So what is the alternative? Changing the spec?
- Solution D: Change my implementation to download a file from TFTP
and make the implementation non-blocking/asynchronous when called at
TPL_CALLBACK.
Drawback: it makes the implementation much more complicated to maintain. And I
cannot guarantee the file is downloaded when the BDS is started.
Any comment/suggestion?
Thanks,
Olivier
-- IMPORTANT NOTICE: The contents of this email and any attachments are
confidential and may also be privileged. If you are not the intended recipient,
please notify the sender immediately and do not disclose the contents to any
other person, use it for any purpose, or store or copy the information in any
medium. Thank you.
ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered
in England & Wales, Company No: 2557590
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
Registered in England & Wales, Company No: 2548782
-- IMPORTANT NOTICE: The contents of this email and any attachments are
confidential and may also be privileged. If you are not the intended recipient,
please notify the sender immediately and do not disclose the contents to any
other person, use it for any purpose, or store or copy the information in any
medium. Thank you.
ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered
in England & Wales, Company No: 2557590
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
Registered in England & Wales, Company No: 2548782
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/edk2-devel
-- IMPORTANT NOTICE: The contents of this email and any attachments are
confidential and may also be privileged. If you are not the intended recipient,
please notify the sender immediately and do not disclose the contents to any
other person, use it for any purpose, or store or copy the information in any
medium. Thank you.
ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered
in England & Wales, Company No: 2557590
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
Registered in England & Wales, Company No: 2548782
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel