#include <asm/iseries/hv_call_xm.h>
 #include <asm/iseries/iommu.h>
 
-extern struct kset devices_subsys; /* needed for vio_find_name() */
-
 static struct bus_type vio_bus_type;
 
 static struct vio_dev vio_bus_device  = { /* fake "parent" device */
 #ifdef CONFIG_PPC_PSERIES
 /* vio_find_name() - internal because only vio.c knows how we formatted the
  * kobject name
- * XXX once vio_bus_type.devices is actually used as a kset in
- * drivers/base/bus.c, this function should be removed in favor of
- * "device_find(kobj_name, &vio_bus_type)"
  */
-static struct vio_dev *vio_find_name(const char *kobj_name)
+static struct vio_dev *vio_find_name(const char *name)
 {
-       struct kobject *found;
+       struct device *found;
 
-       found = kset_find_obj(&devices_subsys, kobj_name);
+       found = bus_find_device_by_name(&vio_bus_type, NULL, name);
        if (!found)
                return NULL;
 
-       return to_vio_dev(container_of(found, struct device, kobj));
+       return to_vio_dev(found);
 }
 
 /**