Lines Matching refs:xive
98 if (xc->xive->single_escalation) in kvmppc_xive_native_cleanup_vcpu()
130 struct kvmppc_xive *xive = dev->private; in kvmppc_xive_native_connect_vcpu() local
141 if (xive->kvm != vcpu->kvm) in kvmppc_xive_native_connect_vcpu()
146 mutex_lock(&xive->lock); in kvmppc_xive_native_connect_vcpu()
148 rc = kvmppc_xive_compute_vp_id(xive, server_num, &vp_id); in kvmppc_xive_native_connect_vcpu()
159 xc->xive = xive; in kvmppc_xive_native_connect_vcpu()
177 rc = xive_native_enable_vp(xc->vp_id, xive->single_escalation); in kvmppc_xive_native_connect_vcpu()
189 mutex_unlock(&xive->lock); in kvmppc_xive_native_connect_vcpu()
201 struct kvmppc_xive *xive = kvm->arch.xive; in kvmppc_xive_native_reset_mapped() local
213 mutex_lock(&xive->mapping_lock); in kvmppc_xive_native_reset_mapped()
214 if (xive->mapping) in kvmppc_xive_native_reset_mapped()
215 unmap_mapping_range(xive->mapping, in kvmppc_xive_native_reset_mapped()
218 mutex_unlock(&xive->mapping_lock); in kvmppc_xive_native_reset_mapped()
230 struct kvmppc_xive *xive = dev->private; in xive_native_esb_fault() local
247 sb = kvmppc_xive_find_source(xive, irq, &src); in xive_native_esb_fault()
310 struct kvmppc_xive *xive = dev->private; in kvmppc_xive_native_mmap() local
333 xive->mapping = vma->vm_file->f_mapping; in kvmppc_xive_native_mmap()
337 static int kvmppc_xive_native_set_source(struct kvmppc_xive *xive, long irq, in kvmppc_xive_native_set_source() argument
352 sb = kvmppc_xive_find_source(xive, irq, &idx); in kvmppc_xive_native_set_source()
355 sb = kvmppc_xive_create_src_block(xive, irq); in kvmppc_xive_native_set_source()
403 xive->src_count++; in kvmppc_xive_native_set_source()
414 static int kvmppc_xive_native_update_source_config(struct kvmppc_xive *xive, in kvmppc_xive_native_update_source_config() argument
420 struct kvm *kvm = xive->kvm; in kvmppc_xive_native_update_source_config()
446 kvmppc_xive_vp(xive, server), in kvmppc_xive_native_update_source_config()
461 static int kvmppc_xive_native_set_source_config(struct kvmppc_xive *xive, in kvmppc_xive_native_set_source_config() argument
474 sb = kvmppc_xive_find_source(xive, irq, &src); in kvmppc_xive_native_set_source_config()
503 return kvmppc_xive_native_update_source_config(xive, sb, state, server, in kvmppc_xive_native_set_source_config()
507 static int kvmppc_xive_native_sync_source(struct kvmppc_xive *xive, in kvmppc_xive_native_sync_source() argument
519 sb = kvmppc_xive_find_source(xive, irq, &src); in kvmppc_xive_native_sync_source()
557 static int kvmppc_xive_native_set_queue_config(struct kvmppc_xive *xive, in kvmppc_xive_native_set_queue_config() argument
560 struct kvm *kvm = xive->kvm; in kvmppc_xive_native_set_queue_config()
698 xive->single_escalation); in kvmppc_xive_native_set_queue_config()
705 static int kvmppc_xive_native_get_queue_config(struct kvmppc_xive *xive, in kvmppc_xive_native_get_queue_config() argument
708 struct kvm *kvm = xive->kvm; in kvmppc_xive_native_get_queue_config()
803 static int kvmppc_xive_reset(struct kvmppc_xive *xive) in kvmppc_xive_reset() argument
805 struct kvm *kvm = xive->kvm; in kvmppc_xive_reset()
811 mutex_lock(&xive->lock); in kvmppc_xive_reset()
825 if (prio == 7 && xive->single_escalation) in kvmppc_xive_reset()
839 for (i = 0; i <= xive->max_sbid; i++) { in kvmppc_xive_reset()
840 struct kvmppc_xive_src_block *sb = xive->src_blocks[i]; in kvmppc_xive_reset()
849 mutex_unlock(&xive->lock); in kvmppc_xive_reset()
912 static int kvmppc_xive_native_eq_sync(struct kvmppc_xive *xive) in kvmppc_xive_native_eq_sync() argument
914 struct kvm *kvm = xive->kvm; in kvmppc_xive_native_eq_sync()
920 mutex_lock(&xive->lock); in kvmppc_xive_native_eq_sync()
921 for (i = 0; i <= xive->max_sbid; i++) { in kvmppc_xive_native_eq_sync()
922 struct kvmppc_xive_src_block *sb = xive->src_blocks[i]; in kvmppc_xive_native_eq_sync()
934 mutex_unlock(&xive->lock); in kvmppc_xive_native_eq_sync()
942 struct kvmppc_xive *xive = dev->private; in kvmppc_xive_native_set_attr() local
948 return kvmppc_xive_reset(xive); in kvmppc_xive_native_set_attr()
950 return kvmppc_xive_native_eq_sync(xive); in kvmppc_xive_native_set_attr()
952 return kvmppc_xive_set_nr_servers(xive, attr->addr); in kvmppc_xive_native_set_attr()
956 return kvmppc_xive_native_set_source(xive, attr->attr, in kvmppc_xive_native_set_attr()
959 return kvmppc_xive_native_set_source_config(xive, attr->attr, in kvmppc_xive_native_set_attr()
962 return kvmppc_xive_native_set_queue_config(xive, attr->attr, in kvmppc_xive_native_set_attr()
965 return kvmppc_xive_native_sync_source(xive, attr->attr, in kvmppc_xive_native_set_attr()
974 struct kvmppc_xive *xive = dev->private; in kvmppc_xive_native_get_attr() local
978 return kvmppc_xive_native_get_queue_config(xive, attr->attr, in kvmppc_xive_native_get_attr()
1014 struct kvmppc_xive *xive = dev->private; in kvmppc_xive_native_release() local
1015 struct kvm *kvm = xive->kvm; in kvmppc_xive_native_release()
1025 mutex_lock(&xive->mapping_lock); in kvmppc_xive_native_release()
1026 xive->mapping = NULL; in kvmppc_xive_native_release()
1027 mutex_unlock(&xive->mapping_lock); in kvmppc_xive_native_release()
1039 debugfs_remove(xive->dentry); in kvmppc_xive_native_release()
1064 kvm->arch.xive = NULL; in kvmppc_xive_native_release()
1066 for (i = 0; i <= xive->max_sbid; i++) { in kvmppc_xive_native_release()
1067 if (xive->src_blocks[i]) in kvmppc_xive_native_release()
1068 kvmppc_xive_free_sources(xive->src_blocks[i]); in kvmppc_xive_native_release()
1069 kfree(xive->src_blocks[i]); in kvmppc_xive_native_release()
1070 xive->src_blocks[i] = NULL; in kvmppc_xive_native_release()
1073 if (xive->vp_base != XIVE_INVALID_VP) in kvmppc_xive_native_release()
1074 xive_native_free_vp_block(xive->vp_base); in kvmppc_xive_native_release()
1091 struct kvmppc_xive *xive; in kvmppc_xive_native_create() local
1096 if (kvm->arch.xive) in kvmppc_xive_native_create()
1099 xive = kvmppc_xive_get_device(kvm, type); in kvmppc_xive_native_create()
1100 if (!xive) in kvmppc_xive_native_create()
1103 dev->private = xive; in kvmppc_xive_native_create()
1104 xive->dev = dev; in kvmppc_xive_native_create()
1105 xive->kvm = kvm; in kvmppc_xive_native_create()
1106 mutex_init(&xive->mapping_lock); in kvmppc_xive_native_create()
1107 mutex_init(&xive->lock); in kvmppc_xive_native_create()
1110 xive->vp_base = XIVE_INVALID_VP; in kvmppc_xive_native_create()
1114 xive->nr_servers = KVM_MAX_VCPUS; in kvmppc_xive_native_create()
1116 xive->single_escalation = xive_native_has_single_escalation(); in kvmppc_xive_native_create()
1117 xive->ops = &kvmppc_xive_native_ops; in kvmppc_xive_native_create()
1119 kvm->arch.xive = xive; in kvmppc_xive_native_create()
1170 struct kvmppc_xive *xive = vcpu->kvm->arch.xive; in kvmppc_xive_native_set_vp() local
1178 if (!xc || !xive) in kvmppc_xive_native_set_vp()
1206 struct kvmppc_xive *xive = m->private; in xive_native_debug_show() local
1207 struct kvm *kvm = xive->kvm; in xive_native_debug_show()
1239 static void xive_native_debugfs_init(struct kvmppc_xive *xive) in xive_native_debugfs_init() argument
1243 name = kasprintf(GFP_KERNEL, "kvm-xive-%p", xive); in xive_native_debugfs_init()
1249 xive->dentry = debugfs_create_file(name, 0444, powerpc_debugfs_root, in xive_native_debugfs_init()
1250 xive, &xive_native_debug_fops); in xive_native_debugfs_init()
1258 struct kvmppc_xive *xive = (struct kvmppc_xive *)dev->private; in kvmppc_xive_native_init() local
1261 xive_native_debugfs_init(xive); in kvmppc_xive_native_init()