static struct iommu_table *vio_build_iommu_table(struct vio_dev *);
 static int vio_num_address_cells;
 #endif
-static struct vio_dev *vio_bus_device; /* fake "parent" device */
-
 #ifdef CONFIG_PPC_ISERIES
-static struct vio_dev *__init vio_register_device_iseries(char *type,
-               uint32_t unit_num);
-
 static struct iommu_table veth_iommu_table;
 static struct iommu_table vio_iommu_table;
-
-static struct vio_dev _vio_dev  = {
+#endif
+static struct vio_dev vio_bus_device  = { /* fake "parent" device */
+       .name = vio_bus_device.dev.bus_id,
+       .type = "",
+#ifdef CONFIG_PPC_ISERIES
        .iommu_table = &vio_iommu_table,
-       .dev.bus = &vio_bus_type
+#endif
+       .dev.bus_id = "vio",
+       .dev.bus = &vio_bus_type,
 };
-struct device *iSeries_vio_dev = &_vio_dev.dev;
+
+#ifdef CONFIG_PPC_ISERIES
+static struct vio_dev *__init vio_register_device_iseries(char *type,
+               uint32_t unit_num);
+
+struct device *iSeries_vio_dev = &vio_bus_device.dev;
 EXPORT_SYMBOL(iSeries_vio_dev);
 
 #define device_is_compatible(a, b)     1
        }
 
        /* the fake parent of all vio devices, just to give us a nice directory */
-       vio_bus_device = kmalloc(sizeof(struct vio_dev), GFP_KERNEL);
-       if (!vio_bus_device) {
-               return 1;
-       }
-       memset(vio_bus_device, 0, sizeof(struct vio_dev));
-       strcpy(vio_bus_device->dev.bus_id, "vio");
-
-       err = device_register(&vio_bus_device->dev);
+       err = device_register(&vio_bus_device.dev);
        if (err) {
                printk(KERN_WARNING "%s: device_register returned %i\n", __FUNCTION__,
                        err);
-               kfree(vio_bus_device);
                return err;
        }
 
        viodev->unit_address = unit_address;
        viodev->iommu_table = iommu_table;
        /* init generic 'struct device' fields: */
-       viodev->dev.parent = &vio_bus_device->dev;
+       viodev->dev.parent = &vio_bus_device.dev;
        viodev->dev.bus = &vio_bus_type;
        viodev->dev.release = vio_dev_release;
 
        .name = "vio",
        .match = vio_bus_match,
 };
-
-EXPORT_SYMBOL(vio_bus_type);