diff --git a/src/device/root_device.c b/src/device/root_device.c
index 0575b56..d4ad034 100644
--- a/src/device/root_device.c
+++ b/src/device/root_device.c
@@ -49,7 +49,7 @@
  * @return The largest bus number used.
  */
 
-static unsigned int scan_static_bus(device_t bus, unsigned int max)
+static unsigned int scan_static_bus(device_t bus, unsigned int passthru)
 {
 	device_t child;
 	struct bus *link;
@@ -68,21 +68,21 @@
 		}
 	}
 
-	return max;
+	return passthru;
 }
 
-unsigned int scan_lpc_bus(device_t bus, unsigned int max)
+unsigned int scan_lpc_bus(device_t bus, unsigned int passthru)
 {
 	printk(BIOS_SPEW, "%s for %s\n", __func__, dev_path(bus));
 
-	max = scan_static_bus(bus, max);
+	scan_static_bus(bus, 0);
 
 	printk(BIOS_SPEW, "%s for %s done\n", __func__, dev_path(bus));
 
-	return max;
+	return passthru;
 }
 
-unsigned int scan_smbus(device_t bus, unsigned int max)
+unsigned int scan_smbus(device_t bus, unsigned int passthru)
 {
 	device_t child;
 	struct bus *link;
@@ -112,7 +112,7 @@
 
 	printk(BIOS_SPEW, "%s for %s done\n", __func__, dev_path(bus));
 
-	return max;
+	return passthru;
 }
 
 /**
@@ -124,14 +124,15 @@
  * @param max The current bus number scanned so far, usually 0x00.
  * @return The largest bus number used.
  */
-static unsigned int root_dev_scan_bus(device_t bus, unsigned int max)
+static unsigned int root_dev_scan_bus(device_t bus, unsigned int passthru)
 {
 	device_t child;
 	struct bus *link;
+	unsigned int max = 0;
 
 	printk(BIOS_SPEW, "%s for %s\n", __func__, dev_path(bus));
 
-	max = scan_static_bus(bus, max);
+	scan_static_bus(bus, 0);
 
 	for (link = bus->link_list; link; link = link->next) {
 		for (child = link->children; child; child = child->sibling) {
@@ -144,7 +145,7 @@
 
 	printk(BIOS_SPEW, "%s for %s done\n", __func__, dev_path(bus));
 
-	return max;
+	return passthru;
 }
 
 static void root_dev_reset(struct bus *bus)
diff --git a/src/mainboard/emulation/qemu-i440fx/northbridge.c b/src/mainboard/emulation/qemu-i440fx/northbridge.c
index f12a272..1967c8b 100644
--- a/src/mainboard/emulation/qemu-i440fx/northbridge.c
+++ b/src/mainboard/emulation/qemu-i440fx/northbridge.c
@@ -241,7 +241,7 @@
 	initialize_cpus(dev->link_list);
 }
 
-static unsigned int cpu_bus_scan(device_t bus, unsigned int max)
+static unsigned int cpu_bus_scan(device_t bus, unsigned int passthru)
 {
 	int max_cpus = fw_cfg_max_cpus();
 	device_t cpu;
diff --git a/src/northbridge/amd/agesa/family10/northbridge.c b/src/northbridge/amd/agesa/family10/northbridge.c
index 9f2555f..c9e4200 100644
--- a/src/northbridge/amd/agesa/family10/northbridge.c
+++ b/src/northbridge/amd/agesa/family10/northbridge.c
@@ -1010,7 +1010,7 @@
 	last->next = NULL;
 }
 
-static u32 cpu_bus_scan(device_t dev, u32 max)
+static u32 cpu_bus_scan(device_t dev, u32 passthru)
 {
 	struct bus *cpu_bus;
 	device_t dev_mc;
@@ -1186,7 +1186,7 @@
 				amd_cpu_topology(cpu, i, j);
 		} //j
 	}
-	return max;
+	return passthru;
 }
 
 static void cpu_bus_init(device_t dev)
diff --git a/src/northbridge/amd/agesa/family14/northbridge.c b/src/northbridge/amd/agesa/family14/northbridge.c
index 355a458..426ec74 100644
--- a/src/northbridge/amd/agesa/family14/northbridge.c
+++ b/src/northbridge/amd/agesa/family14/northbridge.c
@@ -765,7 +765,7 @@
 
 /* Bus related code */
 
-static u32 cpu_bus_scan(struct device *dev, u32 max)
+static u32 cpu_bus_scan(struct device *dev, u32 passthru)
 {
 	struct bus *cpu_bus = dev->link_list;
 	device_t cpu;
@@ -784,7 +784,7 @@
 		if (cpu)
 			amd_cpu_topology(cpu, 0, apic_id);
 	}
-	return max;
+	return passthru;
 }
 
 static void cpu_bus_init(device_t dev)
diff --git a/src/northbridge/amd/agesa/family15/northbridge.c b/src/northbridge/amd/agesa/family15/northbridge.c
index a4f78f1..5a08f23 100644
--- a/src/northbridge/amd/agesa/family15/northbridge.c
+++ b/src/northbridge/amd/agesa/family15/northbridge.c
@@ -1009,7 +1009,7 @@
 	last->next = NULL;
 }
 
-static u32 cpu_bus_scan(device_t dev, u32 max)
+static u32 cpu_bus_scan(device_t dev, u32 passthru)
 {
 	struct bus *cpu_bus;
 	device_t dev_mc;
@@ -1185,7 +1185,7 @@
 				amd_cpu_topology(cpu, i, j);
 		} //j
 	}
-	return max;
+	return passthru;
 }
 
 static void cpu_bus_init(device_t dev)
diff --git a/src/northbridge/amd/agesa/family15rl/northbridge.c b/src/northbridge/amd/agesa/family15rl/northbridge.c
index 1f11f1d..d322fdc 100644
--- a/src/northbridge/amd/agesa/family15rl/northbridge.c
+++ b/src/northbridge/amd/agesa/family15rl/northbridge.c
@@ -992,7 +992,7 @@
 	last->next = NULL;
 }
 
-static u32 cpu_bus_scan(device_t dev, u32 max)
+static u32 cpu_bus_scan(device_t dev, u32 passthru)
 {
 	struct bus *cpu_bus;
 	device_t dev_mc;
@@ -1166,7 +1166,7 @@
 				amd_cpu_topology(cpu, i, j);
 		} //j
 	}
-	return max;
+	return passthru;
 }
 
 static void cpu_bus_init(struct device *dev)
diff --git a/src/northbridge/amd/agesa/family15tn/northbridge.c b/src/northbridge/amd/agesa/family15tn/northbridge.c
index c39ebd1..08287dc 100644
--- a/src/northbridge/amd/agesa/family15tn/northbridge.c
+++ b/src/northbridge/amd/agesa/family15tn/northbridge.c
@@ -991,7 +991,7 @@
 	last->next = NULL;
 }
 
-static u32 cpu_bus_scan(device_t dev, u32 max)
+static u32 cpu_bus_scan(device_t dev, u32 passthru)
 {
 	struct bus *cpu_bus;
 	device_t dev_mc;
@@ -1165,7 +1165,7 @@
 				amd_cpu_topology(cpu, i, j);
 		} //j
 	}
-	return max;
+	return passthru;
 }
 
 static void cpu_bus_init(device_t dev)
diff --git a/src/northbridge/amd/agesa/family16kb/northbridge.c b/src/northbridge/amd/agesa/family16kb/northbridge.c
index d1b06ec..7c603c0 100644
--- a/src/northbridge/amd/agesa/family16kb/northbridge.c
+++ b/src/northbridge/amd/agesa/family16kb/northbridge.c
@@ -1008,7 +1008,7 @@
 	last->next = NULL;
 }
 
-static u32 cpu_bus_scan(device_t dev, u32 max)
+static u32 cpu_bus_scan(device_t dev, u32 passthru)
 {
 	struct bus *cpu_bus;
 	device_t dev_mc;
@@ -1182,7 +1182,7 @@
 				amd_cpu_topology(cpu, i, j);
 		} //j
 	}
-	return max;
+	return passthru;
 }
 
 static void cpu_bus_init(device_t dev)
diff --git a/src/northbridge/amd/amdk8/northbridge.c b/src/northbridge/amd/amdk8/northbridge.c
index 51e1e2d..c0174de 100644
--- a/src/northbridge/amd/amdk8/northbridge.c
+++ b/src/northbridge/amd/amdk8/northbridge.c
@@ -1180,7 +1180,7 @@
 	last->next = NULL;
 }
 
-static u32 cpu_bus_scan(device_t dev, u32 max)
+static u32 cpu_bus_scan(device_t dev, u32 passthru)
 {
 	struct bus *cpu_bus;
 	device_t dev_mc;
@@ -1319,7 +1319,7 @@
 				amd_cpu_topology(cpu, i, j);
 		} //j
 	}
-	return max;
+	return passthru;
 }
 
 static void cpu_bus_init(device_t dev)
diff --git a/src/northbridge/amd/pi/00630F01/northbridge.c b/src/northbridge/amd/pi/00630F01/northbridge.c
index 15892c6..e0fc11e 100644
--- a/src/northbridge/amd/pi/00630F01/northbridge.c
+++ b/src/northbridge/amd/pi/00630F01/northbridge.c
@@ -985,7 +985,7 @@
 	last->next = NULL;
 }
 
-static u32 cpu_bus_scan(device_t dev, u32 max)
+static u32 cpu_bus_scan(device_t dev, u32 passthru)
 {
 	struct bus *cpu_bus;
 	device_t dev_mc;
@@ -1176,7 +1176,7 @@
 				amd_cpu_topology(cpu, i, j);
 		} //j
 	}
-	return max;
+	return passthru;
 }
 
 static void cpu_bus_init(device_t dev)
diff --git a/src/northbridge/amd/pi/00730F01/northbridge.c b/src/northbridge/amd/pi/00730F01/northbridge.c
index c44c189..71099d9 100644
--- a/src/northbridge/amd/pi/00730F01/northbridge.c
+++ b/src/northbridge/amd/pi/00730F01/northbridge.c
@@ -1001,7 +1001,7 @@
 	last->next = NULL;
 }
 
-static u32 cpu_bus_scan(device_t dev, u32 max)
+static u32 cpu_bus_scan(device_t dev, u32 passthru)
 {
 	struct bus *cpu_bus;
 	device_t dev_mc;
@@ -1187,7 +1187,7 @@
 				amd_cpu_topology(cpu, i, j);
 		} //j
 	}
-	return max;
+	return passthru;
 }
 
 static void cpu_bus_init(device_t dev)
