diff -ru ../etherboot-5.4.3.patched/src/core/config.c ./src/core/config.c
--- ../etherboot-5.4.3.patched/src/core/config.c	2007-02-24 06:44:59.000000000 -0800
+++ ./src/core/config.c	2008-10-27 16:08:51.000000000 -0700
@@ -127,7 +127,7 @@
 		dev->to_probe = PROBE_PCI;
 		memset(&dev->state, 0, sizeof(dev->state));
 	}
-	if (dev->to_probe == PROBE_PCI) {
+	if (dev->to_probe == PROBE_PCI || dev->to_probe == PROBE_AWAKE) {
 #ifdef	CONFIG_PCI
 		dev->how_probe = pci_probe(dev, type_name);
 #else
diff -ru ../etherboot-5.4.3.patched/src/core/pxe_export.c ./src/core/pxe_export.c
--- ../etherboot-5.4.3.patched/src/core/pxe_export.c	2008-10-16 18:19:48.000000000 -0700
+++ ./src/core/pxe_export.c	2008-10-28 09:56:18.000000000 -0700
@@ -137,12 +137,12 @@
 	 * PROBE_AWAKE.  If one was specifed via PXENV_START_UNDI, try
 	 * that one first.  Otherwise, set PROBE_FIRST.
 	 */
-	if ( nic.dev.state.pci.dev.use_specified == 1 ) {
-		nic.dev.how_probe = PROBE_NEXT;
-		DBG ( " initialising NIC specified via START_UNDI" );
-	} else if ( nic.dev.state.pci.dev.driver ) {
+	if ( nic.dev.state.pci.dev.driver ) {
 		DBG ( " reinitialising NIC" );
 		nic.dev.how_probe = PROBE_AWAKE;
+	} else if ( nic.dev.state.pci.dev.use_specified == 1 ) {
+		nic.dev.how_probe = PROBE_NEXT;
+		DBG ( " initialising NIC specified via START_UNDI" );
 	} else {
 		DBG ( " probing for any NIC" );
 		nic.dev.how_probe = PROBE_FIRST;
