Lines Matching refs:n

49 static void handle_vq(struct vhost_test *n)  in handle_vq()  argument
51 struct vhost_virtqueue *vq = &n->vqs[VHOST_TEST_VQ]; in handle_vq()
64 vhost_disable_notify(&n->dev, vq); in handle_vq()
76 if (unlikely(vhost_enable_notify(&n->dev, vq))) { in handle_vq()
77 vhost_disable_notify(&n->dev, vq); in handle_vq()
93 vhost_add_used_and_signal(&n->dev, vq, head, 0); in handle_vq()
106 struct vhost_test *n = container_of(vq->dev, struct vhost_test, dev); in handle_vq_kick() local
108 handle_vq(n); in handle_vq_kick()
113 struct vhost_test *n = kmalloc(sizeof *n, GFP_KERNEL); in vhost_test_open() local
117 if (!n) in vhost_test_open()
121 kfree(n); in vhost_test_open()
125 dev = &n->dev; in vhost_test_open()
126 vqs[VHOST_TEST_VQ] = &n->vqs[VHOST_TEST_VQ]; in vhost_test_open()
127 n->vqs[VHOST_TEST_VQ].handle_kick = handle_vq_kick; in vhost_test_open()
131 f->private_data = n; in vhost_test_open()
136 static void *vhost_test_stop_vq(struct vhost_test *n, in vhost_test_stop_vq() argument
148 static void vhost_test_stop(struct vhost_test *n, void **privatep) in vhost_test_stop() argument
150 *privatep = vhost_test_stop_vq(n, n->vqs + VHOST_TEST_VQ); in vhost_test_stop()
153 static void vhost_test_flush(struct vhost_test *n) in vhost_test_flush() argument
155 vhost_dev_flush(&n->dev); in vhost_test_flush()
160 struct vhost_test *n = f->private_data; in vhost_test_release() local
163 vhost_test_stop(n, &private); in vhost_test_release()
164 vhost_test_flush(n); in vhost_test_release()
165 vhost_dev_stop(&n->dev); in vhost_test_release()
166 vhost_dev_cleanup(&n->dev); in vhost_test_release()
167 kfree(n->dev.vqs); in vhost_test_release()
168 kfree(n); in vhost_test_release()
172 static long vhost_test_run(struct vhost_test *n, int test) in vhost_test_run() argument
181 mutex_lock(&n->dev.mutex); in vhost_test_run()
182 r = vhost_dev_check_owner(&n->dev); in vhost_test_run()
186 for (index = 0; index < n->dev.nvqs; ++index) { in vhost_test_run()
188 if (!vhost_vq_access_ok(&n->vqs[index])) { in vhost_test_run()
194 for (index = 0; index < n->dev.nvqs; ++index) { in vhost_test_run()
195 vq = n->vqs + index; in vhost_test_run()
197 priv = test ? n : NULL; in vhost_test_run()
203 r = vhost_vq_init_access(&n->vqs[index]); in vhost_test_run()
211 vhost_test_flush(n); in vhost_test_run()
215 mutex_unlock(&n->dev.mutex); in vhost_test_run()
219 mutex_unlock(&n->dev.mutex); in vhost_test_run()
223 static long vhost_test_reset_owner(struct vhost_test *n) in vhost_test_reset_owner() argument
229 mutex_lock(&n->dev.mutex); in vhost_test_reset_owner()
230 err = vhost_dev_check_owner(&n->dev); in vhost_test_reset_owner()
238 vhost_test_stop(n, &priv); in vhost_test_reset_owner()
239 vhost_test_flush(n); in vhost_test_reset_owner()
240 vhost_dev_stop(&n->dev); in vhost_test_reset_owner()
241 vhost_dev_reset_owner(&n->dev, umem); in vhost_test_reset_owner()
243 mutex_unlock(&n->dev.mutex); in vhost_test_reset_owner()
247 static int vhost_test_set_features(struct vhost_test *n, u64 features) in vhost_test_set_features() argument
251 mutex_lock(&n->dev.mutex); in vhost_test_set_features()
253 !vhost_log_access_ok(&n->dev)) { in vhost_test_set_features()
254 mutex_unlock(&n->dev.mutex); in vhost_test_set_features()
257 vq = &n->vqs[VHOST_TEST_VQ]; in vhost_test_set_features()
261 mutex_unlock(&n->dev.mutex); in vhost_test_set_features()
265 static long vhost_test_set_backend(struct vhost_test *n, unsigned index, int fd) in vhost_test_set_backend() argument
273 mutex_lock(&n->dev.mutex); in vhost_test_set_backend()
274 r = vhost_dev_check_owner(&n->dev); in vhost_test_set_backend()
282 vq = &n->vqs[index]; in vhost_test_set_backend()
304 vhost_test_flush(n); in vhost_test_set_backend()
307 mutex_unlock(&n->dev.mutex); in vhost_test_set_backend()
313 mutex_unlock(&n->dev.mutex); in vhost_test_set_backend()
321 struct vhost_test *n = f->private_data; in vhost_test_ioctl() local
331 return vhost_test_run(n, test); in vhost_test_ioctl()
335 return vhost_test_set_backend(n, backend.index, backend.fd); in vhost_test_ioctl()
346 return vhost_test_set_features(n, features); in vhost_test_ioctl()
348 return vhost_test_reset_owner(n); in vhost_test_ioctl()
350 mutex_lock(&n->dev.mutex); in vhost_test_ioctl()
351 r = vhost_dev_ioctl(&n->dev, ioctl, argp); in vhost_test_ioctl()
353 r = vhost_vring_ioctl(&n->dev, ioctl, argp); in vhost_test_ioctl()
354 vhost_test_flush(n); in vhost_test_ioctl()
355 mutex_unlock(&n->dev.mutex); in vhost_test_ioctl()