Lines Matching defs:info
152 static inline u8 *get_summary_indicator(struct airq_info *info)
154 return summary_indicators + info->summary_indicator_idx;
191 static void drop_airq_indicator(struct virtqueue *vq, struct airq_info *info)
195 write_lock_irqsave(&info->lock, flags);
196 for (i = 0; i < airq_iv_end(info->aiv); i++) {
197 if (vq == (void *)airq_iv_get_ptr(info->aiv, i)) {
198 airq_iv_free_bit(info->aiv, i);
199 airq_iv_set_ptr(info->aiv, i, 0);
203 write_unlock_irqrestore(&info->lock, flags);
208 struct airq_info *info = container_of(airq, struct airq_info, airq);
212 read_lock(&info->lock);
215 ai = airq_iv_scan(info->aiv, ai, airq_iv_end(info->aiv));
218 vring_interrupt(0, (void *)airq_iv_get_ptr(info->aiv, ai));
220 *(get_summary_indicator(info)) = 0;
224 ai = airq_iv_scan(info->aiv, ai, airq_iv_end(info->aiv));
227 vring_interrupt(0, (void *)airq_iv_get_ptr(info->aiv, ai));
229 read_unlock(&info->lock);
234 struct airq_info *info;
237 info = kzalloc(sizeof(*info), GFP_KERNEL);
238 if (!info)
240 rwlock_init(&info->lock);
241 info->aiv = airq_iv_create(VIRTIO_IV_BITS, AIRQ_IV_ALLOC | AIRQ_IV_PTR
243 if (!info->aiv) {
244 kfree(info);
247 info->airq.handler = virtio_airq_handler;
248 info->summary_indicator_idx = index;
249 info->airq.lsi_ptr = get_summary_indicator(info);
250 info->airq.lsi_mask = 0xff;
251 info->airq.isc = VIRTIO_AIRQ_ISC;
252 rc = register_adapter_interrupt(&info->airq);
254 airq_iv_release(info->aiv);
255 kfree(info);
258 return info;
265 struct airq_info *info;
273 info = airq_areas[i];
275 if (!info)
277 write_lock_irqsave(&info->lock, flags);
278 bit = airq_iv_alloc(info->aiv, nvqs);
281 write_unlock_irqrestore(&info->lock, flags);
285 *airq_info = info;
286 indicator_addr = (unsigned long)info->aiv->vector;
288 airq_iv_set_ptr(info->aiv, bit + j,
291 write_unlock_irqrestore(&info->lock, flags);
298 struct virtio_ccw_vq_info *info;
302 list_for_each_entry(info, &vcdev->virtqueues, node)
303 drop_airq_indicator(info->vq, vcdev->airq_info);
418 struct virtio_ccw_vq_info *info = vq->priv;
422 vcdev = to_vc_device(info->vq->vdev);
424 info->cookie = do_kvm_notify(schid, vq->index, info->cookie);
425 if (info->cookie < 0)
449 struct virtio_ccw_vq_info *info = vq->priv;
456 list_del(&info->node);
461 info->info_block->l.queue = 0;
462 info->info_block->l.align = 0;
463 info->info_block->l.index = index;
464 info->info_block->l.num = 0;
465 ccw->count = sizeof(info->info_block->l);
467 info->info_block->s.desc = 0;
468 info->info_block->s.index = index;
469 info->info_block->s.num = 0;
470 info->info_block->s.avail = 0;
471 info->info_block->s.used = 0;
472 ccw->count = sizeof(info->info_block->s);
476 ccw->cda = (__u32)(unsigned long)(info->info_block);
488 ccw_device_dma_free(vcdev->cdev, info->info_block,
489 sizeof(*info->info_block));
490 kfree(info);
519 struct virtio_ccw_vq_info *info;
525 info = kzalloc(sizeof(struct virtio_ccw_vq_info), GFP_KERNEL);
526 if (!info) {
527 dev_warn(&vcdev->cdev->dev, "no info\n");
531 info->info_block = ccw_device_dma_zalloc(vcdev->cdev,
532 sizeof(*info->info_block));
533 if (!info->info_block) {
534 dev_warn(&vcdev->cdev->dev, "no info block\n");
538 info->num = virtio_ccw_read_vq_conf(vcdev, ccw, i);
539 if (info->num < 0) {
540 err = info->num;
544 vq = vring_create_virtqueue(i, info->num, KVM_VIRTIO_CCW_RING_ALIGN,
555 info->num = virtqueue_get_vring_size(vq);
560 info->info_block->l.queue = queue;
561 info->info_block->l.align = KVM_VIRTIO_CCW_RING_ALIGN;
562 info->info_block->l.index = i;
563 info->info_block->l.num = info->num;
564 ccw->count = sizeof(info->info_block->l);
566 info->info_block->s.desc = queue;
567 info->info_block->s.index = i;
568 info->info_block->s.num = info->num;
569 info->info_block->s.avail = (__u64)virtqueue_get_avail_addr(vq);
570 info->info_block->s.used = (__u64)virtqueue_get_used_addr(vq);
571 ccw->count = sizeof(info->info_block->s);
575 ccw->cda = (__u32)(unsigned long)(info->info_block);
582 info->vq = vq;
583 vq->priv = info;
587 list_add(&info->node, &vcdev->virtqueues);
595 if (info) {
596 ccw_device_dma_free(vcdev->cdev, info->info_block,
597 sizeof(*info->info_block));
599 kfree(info);
609 struct airq_info *info;
625 info = vcdev->airq_info;
627 (unsigned long) get_summary_indicator(info);
1051 struct virtio_ccw_vq_info *info;
1057 list_for_each_entry(info, &vcdev->virtqueues, node) {
1058 if (info->vq->index == index) {
1059 vq = info->vq;