Lines Matching refs:nsim_bus_dev
21 static struct nsim_bus_dev *to_nsim_bus_dev(struct device *dev)
23 return container_of(dev, struct nsim_bus_dev, dev);
30 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev);
41 ret = nsim_drv_configure_vfs(nsim_bus_dev, num_vfs);
51 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev);
53 return sprintf(buf, "%u\n", nsim_bus_dev->num_vfs);
64 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev);
68 /* Prevent to use nsim_bus_dev before initialization. */
69 if (!smp_load_acquire(&nsim_bus_dev->init))
75 ret = nsim_drv_port_add(nsim_bus_dev, NSIM_DEV_PORT_TYPE_PF, port_index);
85 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev);
89 /* Prevent to use nsim_bus_dev before initialization. */
90 if (!smp_load_acquire(&nsim_bus_dev->init))
96 ret = nsim_drv_port_del(nsim_bus_dev, NSIM_DEV_PORT_TYPE_PF, port_index);
120 struct nsim_bus_dev *nsim_bus_dev;
122 nsim_bus_dev = container_of(dev, struct nsim_bus_dev, dev);
123 kfree(nsim_bus_dev);
131 static struct nsim_bus_dev *
138 struct nsim_bus_dev *nsim_bus_dev;
167 nsim_bus_dev = nsim_bus_dev_new(id, port_count, num_queues);
168 if (IS_ERR(nsim_bus_dev)) {
169 err = PTR_ERR(nsim_bus_dev);
173 /* Allow using nsim_bus_dev */
174 smp_store_release(&nsim_bus_dev->init, true);
176 list_add_tail(&nsim_bus_dev->list, &nsim_bus_dev_list);
186 static void nsim_bus_dev_del(struct nsim_bus_dev *nsim_bus_dev);
191 struct nsim_bus_dev *nsim_bus_dev, *tmp;
215 list_for_each_entry_safe(nsim_bus_dev, tmp, &nsim_bus_dev_list, list) {
216 if (nsim_bus_dev->dev.id != id)
218 list_del(&nsim_bus_dev->list);
219 nsim_bus_dev_del(nsim_bus_dev);
237 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev);
239 return nsim_drv_probe(nsim_bus_dev);
244 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev);
246 nsim_drv_remove(nsim_bus_dev);
251 struct nsim_bus_dev *nsim_bus_dev = to_nsim_bus_dev(dev);
253 return nsim_bus_dev->num_vfs;
267 static struct nsim_bus_dev *
270 struct nsim_bus_dev *nsim_bus_dev;
273 nsim_bus_dev = kzalloc(sizeof(*nsim_bus_dev), GFP_KERNEL);
274 if (!nsim_bus_dev)
280 nsim_bus_dev->dev.id = err;
281 nsim_bus_dev->dev.bus = &nsim_bus;
282 nsim_bus_dev->dev.type = &nsim_bus_dev_type;
283 nsim_bus_dev->port_count = port_count;
284 nsim_bus_dev->num_queues = num_queues;
285 nsim_bus_dev->initial_net = current->nsproxy->net_ns;
286 nsim_bus_dev->max_vfs = NSIM_BUS_DEV_MAX_VFS;
287 /* Disallow using nsim_bus_dev */
288 smp_store_release(&nsim_bus_dev->init, false);
290 err = device_register(&nsim_bus_dev->dev);
294 return nsim_bus_dev;
297 ida_free(&nsim_bus_dev_ids, nsim_bus_dev->dev.id);
298 put_device(&nsim_bus_dev->dev);
299 nsim_bus_dev = NULL;
301 kfree(nsim_bus_dev);
305 static void nsim_bus_dev_del(struct nsim_bus_dev *nsim_bus_dev)
307 /* Disallow using nsim_bus_dev */
308 smp_store_release(&nsim_bus_dev->init, false);
309 ida_free(&nsim_bus_dev_ids, nsim_bus_dev->dev.id);
310 device_unregister(&nsim_bus_dev->dev);
340 struct nsim_bus_dev *nsim_bus_dev, *tmp;
346 list_for_each_entry_safe(nsim_bus_dev, tmp, &nsim_bus_dev_list, list) {
347 list_del(&nsim_bus_dev->list);
348 nsim_bus_dev_del(nsim_bus_dev);