* 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;