#include <asm/topology.h>
 #include <asm/pci-bridge.h>
 #include <asm/ppc-pci.h>
+#include <asm/atomic.h>
+
 
 /*
  * The list of OF IDs below is used for matching bus types in the
        {},
 };
 
+static atomic_t bus_no_reg_magic;
+
 /*
  *
  * OF platform device type definition & base infrastructure
        char *name = dev->dev.bus_id;
        const u32 *reg;
        u64 addr;
+       long magic;
 
        /*
         * If it's a DCR based device, use 'd' for native DCRs
        }
 
        /*
-        * No BusID, use the node name and pray
+        * No BusID, use the node name and add a globally incremented
+        * counter (and pray...)
         */
-       snprintf(name, BUS_ID_SIZE, "%s", node->name);
+       magic = atomic_add_return(1, &bus_no_reg_magic);
+       snprintf(name, BUS_ID_SIZE, "%s.%d", node->name, magic - 1);
 }
 
 struct of_device* of_platform_device_create(struct device_node *np,