Skip to content

Commit

Permalink
OvmfPkg: QemuBootOrder: recognize Ethernet OFW device paths
Browse files Browse the repository at this point in the history
Tested with the e1000, ne2k_pci, pcnet, rtl8139, and virtio iPXE UEFI
oprom drivers distributed with qemu-1.5.0-rc1. Also tested with Intel's
e1000 driver.

Contributed-under: TianoCore Contribution Agreement 1.0

Signed-off-by: Laszlo Ersek <[email protected]>
Reviewed-by: Jordan Justen <[email protected]>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14367 6f19259b-4bc3-4df7-8a09-765794883524
  • Loading branch information
jljusten committed May 15, 2013
1 parent 7628b0f commit e7a7e48
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c
Original file line number Diff line number Diff line change
Expand Up @@ -677,6 +677,35 @@ TranslateOfwNodes (
TargetLun[0],
TargetLun[1]
);
} else if (NumNodes >= 3 &&
SubstringEq (OfwNode[1].DriverName, "ethernet") &&
SubstringEq (OfwNode[2].DriverName, "ethernet-phy")
) {
//
// OpenFirmware device path (Ethernet NIC):
//
// /pci@i0cf8/ethernet@3[,2]/ethernet-phy@0
// ^ ^ ^
// | | fixed
// | PCI slot[, function] holding Ethernet card
// PCI root at system bus port, PIO
//
// UEFI device path prefix (dependent on presence of nonzero PCI function):
//
// PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400E15EEF,0x1)
// PciRoot(0x0)/Pci(0x3,0x2)/MAC(525400E15EEF,0x1)
// ^ ^
// MAC address IfType (1 == Ethernet)
//
// (Some UEFI NIC drivers don't set 0x1 for IfType.)
//
Written = UnicodeSPrintAsciiFormat (
Translated,
*TranslatedSize * sizeof (*Translated), // BufferSize in bytes
"PciRoot(0x0)/Pci(0x%x,0x%x)/MAC",
PciDevFun[0],
PciDevFun[1]
);
} else {
return RETURN_UNSUPPORTED;
}
Expand Down

0 comments on commit e7a7e48

Please sign in to comment.