* Return: 0 for success, otherwise negative errno value indicating reason for
  *         failure
  */
-static int visorbus_create_instance(struct visor_device *dev)
+int visorbus_create_instance(struct visor_device *dev)
 {
        int id = dev->chipset_bus_no;
        int err;
 
        list_add_tail(&dev->list_all, &list_all_bus_instances);
 
+       dev->state.created = 1;
        dev->vbus_hdr_info = (void *)hdr_info;
        write_vbus_chp_info(dev->visorchannel, hdr_info,
                            &chipset_driverinfo);
        write_vbus_bus_info(dev->visorchannel, hdr_info,
                            &clientbus_driverinfo);
 
+       visorbus_response(dev, err, CONTROLVM_BUS_CREATE);
+
        return 0;
 
 err_debugfs_dir:
        }
 }
 
-int visorchipset_bus_create(struct visor_device *dev)
-{
-       int err;
-
-       err = visorbus_create_instance(dev);
-       if (err < 0)
-               return err;
-
-       visorbus_response(dev, err, CONTROLVM_BUS_CREATE);
-       dev->state.created = 1;
-
-       return 0;
-}
-
 void visorchipset_bus_destroy(struct visor_device *dev)
 {
        visorbus_remove_instance(dev);
 
 #include "vbuschannel.h"
 #include "visorbus.h"
 
-int visorchipset_bus_create(struct visor_device *bus_info);
+int visorbus_create_instance(struct visor_device *dev);
 void visorchipset_bus_destroy(struct visor_device *bus_info);
 int visorchipset_device_create(struct visor_device *dev_info);
 void visorchipset_device_destroy(struct visor_device *dev_info);
 void visorbus_exit(void);
 
 /* visorchannel access functions */
-
 struct visorchannel *visorchannel_create(u64 physaddr,
                                         unsigned long channel_bytes,
                                         gfp_t gfp, const guid_t *guid);
 
 
        bus_info->visorchannel = visorchannel;
 
-       /* Response will be handled by visorchipset_bus_create */
-       err = visorchipset_bus_create(bus_info);
-       /* If visorchipset_bus_create didn't respond, need to respond here */
+       /* Response will be handled by visorbus_create_instance on success */
+       err = visorbus_create_instance(bus_info);
        if (err)
                goto err_destroy_channel;