Re: [edk2] running the StdLib socket test apps in OVMF [was: ovmf pxeboot]

Subject: Re: [edk2] running the StdLib socket test apps in OVMF [was: ovmf pxeboot]

From: Laszlo Ersek <lersek@redhat.com>

To: Duane Voth <duanev@gmail.com>

Date: 2013-04-25 03:11:10

Hi Duane,

On 04/24/13 17:34, Duane Voth wrote:
> Gentlemen, pardon the intrusion but I'm approaching a deadline and need
> to attract a little attention to posts with the subject: [edk2] OVMF
> networking for real this time
> 
> I noticed the two of you discussing this a few months ago:
> 
> On Thu, Jan 17, 2013 at 10:53 AM, Laszlo Ersek  > wrote:
> 
>     On 01/17/13 16:00, Gerd Hoffmann wrote:
>     >
>     > I'm running ovmf with networking enabled and ipxe efi roms.  Network
>     > driver seems to work properly.  In efi shell I can ifconfig the
>     > interface with a static ip address and ping the default gateway.
> 
>     I tried something similar, but didn't get this far.
> 
> 
> 
> I also am using an ipxe based PXE boot payload in OVMF with -D
> NETWORK_ENABLE.  "ifconfig -s eth0 dhcp" appears to work but
> suspiciously returns immediately with the PXE boot IP with *no* network
> traffic for the dhcp handshake.  (I would be thrilled if the dhcp lease
> negotiation during the PXE boot was carried forward to uEFI, but doubt
> that this is actually what is happening!)
> 
> In any case I canNOT ping the gateway after ifconfig.  The error is:
> 
> "There is no route to the destination '192.168.1.1' from the source
> '' was found."
> 
> I don't recall ever seeing routing table configs in uEFI - could someone
> explain how the uEFI routing tables are setup?
> 
> GetServByPort.efi btw, works fine.

I'm not ignoring you in the least, I just can't help. The most that I
got out of OVMF networking I documented in this exact thread. As usual I
have no better idea than to read the relevant edk2 docs, narrow down the
affected source (eg. starting with the ifconfig utility), and
carpet-bomb it with DEBUGs.

Wrt. identifying the source code, there's the question of which shell
you're using. For Shell2 you need a -D option at build time, and in that
case I *think* your ifconfig would come from
"ShellPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c".

If you use Shell1 (which I think is the default), then the build process
embeds the Shell1 binary present in the edk2 tree into the firmware. The
source is available (see "EdkShellBinPkg/ReadMe.txt") from a separate
repo. The ifconfig utility is implemented in "IfConfig/IfConfig.c" in
this case.

http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Shell_FAQ
http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Efi-shell
http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=ShellPkg

Anyway both seem to call mHiiConfigRouting->RouteConfig() at some point.
The protocol providing this function seems to be
EFI_HII_CONFIG_ROUTING_PROTOCOL, with a GUID
("gEfiHiiConfigRoutingProtocolGuid") that starts with 0x587e72d7.

In my OVMF build that protocol is installed by InitializeHiiDatabase()
in MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseEntry.c. The
protocol implementation seems to consist of

    HiiConfigRoutingExtractConfig,
    HiiConfigRoutingExportConfig,
    HiiConfigRoutingRouteConfig,
    HiiBlockToConfig,
    HiiConfigToBlock,
    HiiGetAltCfg

See "30.3 EFI HII Configuration Routing Protocol" in the UEFI spec, and
HiiConfigRoutingRouteConfig() in
"MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c".

Just an idea anyway, no idea how much of the routing configuration
happens in the proprietary "Intel3.5/EFIX64/E3507X2.EFI" driver.

Laszlo

------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel