[syslinux] HP EFI binaries

Gene Cumm gene.cumm at gmail.com
Fri Aug 28 02:53:17 PDT 2015


On Fri, Aug 28, 2015 at 4:22 AM, Patrick Masotta <masottaus at yahoo.com> wrote:
> Thanks Derrik; I got your efi-dh.txt
>
> I've found this:
>
> 252: SimpleNetwork PXEBaseCode LoadFile DevicePath(0000:0000:0000:0000:0000:0000))
> 267: SimpleNetwork PXEBaseCode LoadFile DevicePath(065F36E00EE,0x1)/IPv4(0.0.0.0))
> 27C: SimpleNetwork PXEBaseCode LoadFile DevicePath(0000:0000:0000:0000:0000:0000))
> 291: SimpleNetwork PXEBaseCode LoadFile DevicePath(065F36E00EF,0x1)/IPv4(0.0.0.0))
> 2A6: SimpleNetwork PXEBaseCode LoadFile DevicePath(0000:0000:0000:0000:0000:0000))
> 2BB: SimpleNetwork PXEBaseCode LoadFile DevicePath(CDCD40CA5F0,0x0)/IPv4(0.0.0.0))
> 2D0: SimpleNetwork PXEBaseCode LoadFile DevicePath(0000:0000:0000:0000:0000:0000))
> 2E5: SimpleNetwork PXEBaseCode LoadFile DevicePath(CDCD40CA5F4,0x0)/IPv4(0.0.0.0))
>
> 23E: MTFTPv4ServiceBinding DHCPv4ServiceBinding UDPv4ServiceBinding UnknownDevice TCPv4ServiceBinding IPv4ServiceBinding ARPServiceBinding UnknownDevice EfiMtftp6ServiceBindingProtocolGuid IPv4Config EfiDhcp6ServiceBindingProtocolGuid EfiUdp6ServiceBindingProtocolGuid UnknownDevice EfiTcp6ServiceBindingProtocolGuid EfiIp6ConfigProtocolGuid EfiIp6ServiceBindingProtocolGuid ManagedNetworkServiceBinding EfiVlanConfigProtocolGuid SimpleNetwork HIIConfigAccess AdapterInfo(AdapterInfo)
>  EfiFirmwareManagementProtocolGuid UnknownDevice UnknownDevice NetworkInterfaceIdentifier31 UnknownDevice DevicePath(0x0,0x0)/MAC(5065F36E00EE,0x1))
>  UnknownDevice
>
> 268: MTFTPv4ServiceBinding DHCPv4ServiceBinding UDPv4ServiceBinding UnknownDevice TCPv4ServiceBinding IPv4ServiceBinding ARPServiceBinding UnknownDevice EfiMtftp6ServiceBindingProtocolGuid IPv4Config EfiDhcp6ServiceBindingProtocolGuid EfiUdp6ServiceBindingProtocolGuid UnknownDevice EfiTcp6ServiceBindingProtocolGuid EfiIp6ConfigProtocolGuid EfiIp6ServiceBindingProtocolGuid ManagedNetworkServiceBinding EfiVlanConfigProtocolGuid SimpleNetwork HIIConfigAccess AdapterInfo(AdapterInfo)
>  UnknownDevice UnknownDevice NetworkInterfaceIdentifier31 UnknownDevice DevicePath(0x0,0x1)/MAC(5065F36E00EF,0x1))
>  UnknownDevice
>
> 292: MTFTPv4ServiceBinding DHCPv4ServiceBinding UDPv4ServiceBinding UnknownDevice TCPv4ServiceBinding IPv4ServiceBinding ARPServiceBinding UnknownDevice EfiMtftp6ServiceBindingProtocolGuid IPv4Config EfiDhcp6ServiceBindingProtocolGuid EfiUdp6ServiceBindingProtocolGuid UnknownDevice EfiTcp6ServiceBindingProtocolGuid EfiIp6ConfigProtocolGuid EfiIp6ServiceBindingProtocolGuid ManagedNetworkServiceBinding EfiVlanConfigProtocolGuid SimpleNetwork HIIConfigAccess EfiFirmwareManagementProtocolGuid AdapterInfo(AdapterInfo)
>  EfiDriverHealthProtocolGuid UnknownDevice UnknownDevice DevicePath(0x0,0x0)/MAC(8CDCD40CA5F0,0x0))
>  NetworkInterfaceIdentifier NetworkInterfaceIdentifier31
>
> 2BC: MTFTPv4ServiceBinding DHCPv4ServiceBinding UDPv4ServiceBinding UnknownDevice TCPv4ServiceBinding IPv4ServiceBinding ARPServiceBinding UnknownDevice EfiMtftp6ServiceBindingProtocolGuid IPv4Config EfiDhcp6ServiceBindingProtocolGuid EfiUdp6ServiceBindingProtocolGuid UnknownDevice EfiTcp6ServiceBindingProtocolGuid EfiIp6ConfigProtocolGuid EfiIp6ServiceBindingProtocolGuid ManagedNetworkServiceBinding EfiVlanConfigProtocolGuid SimpleNetwork HIIConfigAccess EfiFirmwareManagementProtocolGuid AdapterInfo(AdapterInfo)
>  EfiDriverHealthProtocolGuid UnknownDevice UnknownDevice DevicePath(0x0,0x1)/MAC(8CDCD40CA5F4,0x0))
>  NetworkInterfaceIdentifier NetworkInterfaceIdentifier31
>
>
> Then we have:
>
> 1) Handles 267,291,2BB,2E5
> correspond to the IPv4 PXEBaseCode protocols (one handle per NIC in your system).
> one of these handles is used every time you boot syslinux.efi as NBP.
>
> 2) Handles 252,27C,2A6,2D0
> idem before but for IPv6 (ignore them)
>
> 3) Handles 23E,268,292,2BC
> correspond (among other things) to the Service Binding protocols we are looking for (UDPv4ServiceBinding)
> (one handle per NIC in your system)
>
>
> The goal:
> We must bind the UDPv4ServiceBinding handle that has a matching MAC with the PXEBaseCode used for
> booting syslinux.efi
>
>
> The problem:
> It is supposed there's always a possible MAC match between PXEBaseCode and UDPv4ServiceBinding protocols,
> but this does not happen in what I consider your faulty FW.
> i.e.
> if we consider
> PXEBaseCode            handle 267 -> MAC 0065F36E00EE

More importantly: look at the actual captured text.  It does NOT
specify a valid MAC in its entirety and leaves off the leading nibble
(11 characters, not 12).  Handle 267 shows "065F36E00EE" not
"0065F36E00EE".

> UDPv4ServiceBinding  handle 23E -> MAC 5065F36E00EE
>
> You can see the MACs are "almost" identical but there's not match!
> While 5065F36E00EE is a valid HP MAC, 0065F36E00EE is not.
> something identical happens with the rest of handle pairs.
>
> My code relies on a full MAC match in order to decide which UDPv4ServiceBinding to use.
> Of course in your case you'll get an error; there's never a suitable UDPv4ServiceBinding available.
> I do not know why on earth HP uses different MACs for the same hardware, they are even changing
> their MAC vendor signature!

It is possible that this is a visual bug but it DOES give a hint that
there may be an issue in the MAC addresses.

> I can only think you are running a test version of the FW where the different MAC signatures
> are probably used at the DHCP/PXE server side to know what protocol is the client using for transfers
> (just a shot in the dark guess).
>
> Conclusion:
> I think you should update your firmware. IMHO it does not make sense to mod Syslinux code in order to
> catch this issue.

Derrick is already running the latest firmware on this machine.

-- 
-Gene



More information about the Syslinux mailing list