xive 324 arch/powerpc/include/asm/kvm_host.h struct kvmppc_xive *xive; /* Current XIVE device in use */ xive 183 arch/powerpc/kernel/prom_init.c bool xive; xive 1238 arch/powerpc/kernel/prom_init.c support->xive = !prom_xive_disable; xive 1249 arch/powerpc/kernel/prom_init.c support->xive = true; xive 1286 arch/powerpc/kernel/prom_init.c .xive = false xive 1334 arch/powerpc/kernel/prom_init.c if (supported.xive) { xive 248 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = xc->xive; xive 257 arch/powerpc/kvm/book3s_xive.c qpage = (__be32 *)__get_free_pages(GFP_KERNEL, xive->q_page_order); xive 263 arch/powerpc/kvm/book3s_xive.c memset(qpage, 0, 1 << xive->q_order); xive 273 arch/powerpc/kvm/book3s_xive.c xive->q_order, true); xive 283 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = kvm->arch.xive; xive 287 arch/powerpc/kvm/book3s_xive.c lockdep_assert_held(&xive->lock); xive 290 arch/powerpc/kvm/book3s_xive.c if (xive->qmap & (1 << prio)) xive 300 arch/powerpc/kvm/book3s_xive.c if (rc == 0 && !xive->single_escalation) xive 302 arch/powerpc/kvm/book3s_xive.c xive->single_escalation); xive 309 arch/powerpc/kvm/book3s_xive.c xive->qmap |= (1 << prio); xive 391 arch/powerpc/kvm/book3s_xive.c static u8 xive_lock_and_mask(struct kvmppc_xive *xive, xive 436 arch/powerpc/kvm/book3s_xive.c kvmppc_xive_vp(xive, state->act_server), xive 471 arch/powerpc/kvm/book3s_xive.c static void xive_finish_unmask(struct kvmppc_xive *xive, xive 492 arch/powerpc/kvm/book3s_xive.c kvmppc_xive_vp(xive, state->act_server), xive 532 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = kvm->arch.xive; xive 569 arch/powerpc/kvm/book3s_xive.c kvmppc_xive_vp(xive, server), xive 616 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = kvm->arch.xive; xive 623 arch/powerpc/kvm/book3s_xive.c if (!xive) xive 631 arch/powerpc/kvm/book3s_xive.c mutex_lock(&xive->lock); xive 632 arch/powerpc/kvm/book3s_xive.c rc = xive_check_provisioning(xive->kvm, xive 634 arch/powerpc/kvm/book3s_xive.c mutex_unlock(&xive->lock); xive 641 arch/powerpc/kvm/book3s_xive.c sb = kvmppc_xive_find_source(xive, irq, &idx); xive 661 arch/powerpc/kvm/book3s_xive.c xive_lock_and_mask(xive, sb, state); xive 702 arch/powerpc/kvm/book3s_xive.c xive_finish_unmask(xive, sb, state, priority); xive 717 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = kvm->arch.xive; xive 722 arch/powerpc/kvm/book3s_xive.c if (!xive) xive 725 arch/powerpc/kvm/book3s_xive.c sb = kvmppc_xive_find_source(xive, irq, &idx); xive 739 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = kvm->arch.xive; xive 744 arch/powerpc/kvm/book3s_xive.c if (!xive) xive 747 arch/powerpc/kvm/book3s_xive.c sb = kvmppc_xive_find_source(xive, irq, &idx); xive 770 arch/powerpc/kvm/book3s_xive.c xive_finish_unmask(xive, sb, state, state->saved_priority); xive 778 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = kvm->arch.xive; xive 783 arch/powerpc/kvm/book3s_xive.c if (!xive) xive 786 arch/powerpc/kvm/book3s_xive.c sb = kvmppc_xive_find_source(xive, irq, &idx); xive 796 arch/powerpc/kvm/book3s_xive.c state->saved_priority = xive_lock_and_mask(xive, sb, state); xive 802 arch/powerpc/kvm/book3s_xive.c static bool xive_restore_pending_irq(struct kvmppc_xive *xive, u32 irq) xive 808 arch/powerpc/kvm/book3s_xive.c sb = kvmppc_xive_find_source(xive, irq, &idx); xive 840 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = vcpu->kvm->arch.xive; xive 844 arch/powerpc/kvm/book3s_xive.c if (!xc || !xive) xive 887 arch/powerpc/kvm/book3s_xive.c if (xisr > XICS_IPI && !xive_restore_pending_irq(xive, xisr)) { xive 889 arch/powerpc/kvm/book3s_xive.c xive->delayed_irqs++; xive 899 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = kvm->arch.xive; xive 909 arch/powerpc/kvm/book3s_xive.c if (!xive) xive 914 arch/powerpc/kvm/book3s_xive.c sb = kvmppc_xive_find_source(xive, guest_irq, &idx); xive 943 arch/powerpc/kvm/book3s_xive.c prio = xive_lock_and_mask(xive, sb, state); xive 954 arch/powerpc/kvm/book3s_xive.c if (xive->ops && xive->ops->reset_mapped) xive 955 arch/powerpc/kvm/book3s_xive.c xive->ops->reset_mapped(kvm, guest_irq); xive 968 arch/powerpc/kvm/book3s_xive.c kvmppc_xive_vp(xive, state->act_server), xive 996 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = kvm->arch.xive; xive 1004 arch/powerpc/kvm/book3s_xive.c if (!xive) xive 1009 arch/powerpc/kvm/book3s_xive.c sb = kvmppc_xive_find_source(xive, guest_irq, &idx); xive 1019 arch/powerpc/kvm/book3s_xive.c prio = xive_lock_and_mask(xive, sb, state); xive 1046 arch/powerpc/kvm/book3s_xive.c if (xive->ops && xive->ops->reset_mapped) { xive 1047 arch/powerpc/kvm/book3s_xive.c xive->ops->reset_mapped(kvm, guest_irq); xive 1052 arch/powerpc/kvm/book3s_xive.c kvmppc_xive_vp(xive, state->act_server), xive 1078 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = kvm->arch.xive; xive 1081 arch/powerpc/kvm/book3s_xive.c for (i = 0; i <= xive->max_sbid; i++) { xive 1082 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive_src_block *sb = xive->src_blocks[i]; xive 1153 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = vcpu->kvm->arch.xive; xive 1174 arch/powerpc/kvm/book3s_xive.c if (xc->xive->single_escalation) xive 1196 arch/powerpc/kvm/book3s_xive.c xive->q_page_order); xive 1217 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = dev->private; xive 1228 arch/powerpc/kvm/book3s_xive.c if (xive->kvm != vcpu->kvm) xive 1238 arch/powerpc/kvm/book3s_xive.c mutex_lock(&xive->lock); xive 1240 arch/powerpc/kvm/book3s_xive.c vp_id = kvmppc_xive_vp(xive, cpu); xive 1241 arch/powerpc/kvm/book3s_xive.c if (kvmppc_xive_vp_in_use(xive->kvm, vp_id)) { xive 1254 arch/powerpc/kvm/book3s_xive.c xc->xive = xive; xive 1286 arch/powerpc/kvm/book3s_xive.c r = xive_native_enable_vp(xc->vp_id, xive->single_escalation); xive 1303 arch/powerpc/kvm/book3s_xive.c if (i == 7 && xive->single_escalation) xive 1307 arch/powerpc/kvm/book3s_xive.c if (xive->qmap & (1 << i)) { xive 1309 arch/powerpc/kvm/book3s_xive.c if (r == 0 && !xive->single_escalation) xive 1311 arch/powerpc/kvm/book3s_xive.c vcpu, i, xive->single_escalation); xive 1326 arch/powerpc/kvm/book3s_xive.c r = kvmppc_xive_attach_escalation(vcpu, 0, xive->single_escalation); xive 1336 arch/powerpc/kvm/book3s_xive.c mutex_unlock(&xive->lock); xive 1349 arch/powerpc/kvm/book3s_xive.c static void xive_pre_save_set_queued(struct kvmppc_xive *xive, u32 irq) xive 1355 arch/powerpc/kvm/book3s_xive.c sb = kvmppc_xive_find_source(xive, irq, &idx); xive 1379 arch/powerpc/kvm/book3s_xive.c static void xive_pre_save_mask_irq(struct kvmppc_xive *xive, xive 1389 arch/powerpc/kvm/book3s_xive.c state->saved_scan_prio = xive_lock_and_mask(xive, sb, state); xive 1399 arch/powerpc/kvm/book3s_xive.c static void xive_pre_save_unmask_irq(struct kvmppc_xive *xive, xive 1417 arch/powerpc/kvm/book3s_xive.c xive_finish_unmask(xive, sb, state, state->saved_scan_prio); xive 1423 arch/powerpc/kvm/book3s_xive.c static void xive_pre_save_queue(struct kvmppc_xive *xive, struct xive_q *q) xive 1432 arch/powerpc/kvm/book3s_xive.c xive_pre_save_set_queued(xive, irq); xive 1436 arch/powerpc/kvm/book3s_xive.c static void xive_pre_save_scan(struct kvmppc_xive *xive) xive 1445 arch/powerpc/kvm/book3s_xive.c for (i = 0; i <= xive->max_sbid; i++) { xive 1446 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive_src_block *sb = xive->src_blocks[i]; xive 1450 arch/powerpc/kvm/book3s_xive.c xive_pre_save_mask_irq(xive, sb, j); xive 1454 arch/powerpc/kvm/book3s_xive.c kvm_for_each_vcpu(i, vcpu, xive->kvm) { xive 1460 arch/powerpc/kvm/book3s_xive.c xive_pre_save_queue(xive, &xc->queues[j]); xive 1465 arch/powerpc/kvm/book3s_xive.c for (i = 0; i <= xive->max_sbid; i++) { xive 1466 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive_src_block *sb = xive->src_blocks[i]; xive 1470 arch/powerpc/kvm/book3s_xive.c xive_pre_save_unmask_irq(xive, sb, j); xive 1474 arch/powerpc/kvm/book3s_xive.c static void xive_post_save_scan(struct kvmppc_xive *xive) xive 1479 arch/powerpc/kvm/book3s_xive.c for (i = 0; i <= xive->max_sbid; i++) { xive 1480 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive_src_block *sb = xive->src_blocks[i]; xive 1488 arch/powerpc/kvm/book3s_xive.c xive->saved_src_count = 0; xive 1494 arch/powerpc/kvm/book3s_xive.c static int xive_get_source(struct kvmppc_xive *xive, long irq, u64 addr) xive 1502 arch/powerpc/kvm/book3s_xive.c sb = kvmppc_xive_find_source(xive, irq, &idx); xive 1529 arch/powerpc/kvm/book3s_xive.c if (xive->saved_src_count == 0) xive 1530 arch/powerpc/kvm/book3s_xive.c xive_pre_save_scan(xive); xive 1531 arch/powerpc/kvm/book3s_xive.c xive->saved_src_count++; xive 1567 arch/powerpc/kvm/book3s_xive.c if (xive->saved_src_count == xive->src_count) xive 1568 arch/powerpc/kvm/book3s_xive.c xive_post_save_scan(xive); xive 1578 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive, int irq) xive 1585 arch/powerpc/kvm/book3s_xive.c mutex_lock(&xive->lock); xive 1588 arch/powerpc/kvm/book3s_xive.c if (xive->src_blocks[bid]) xive 1606 arch/powerpc/kvm/book3s_xive.c xive->src_blocks[bid] = sb; xive 1608 arch/powerpc/kvm/book3s_xive.c if (bid > xive->max_sbid) xive 1609 arch/powerpc/kvm/book3s_xive.c xive->max_sbid = bid; xive 1612 arch/powerpc/kvm/book3s_xive.c mutex_unlock(&xive->lock); xive 1613 arch/powerpc/kvm/book3s_xive.c return xive->src_blocks[bid]; xive 1616 arch/powerpc/kvm/book3s_xive.c static bool xive_check_delayed_irq(struct kvmppc_xive *xive, u32 irq) xive 1618 arch/powerpc/kvm/book3s_xive.c struct kvm *kvm = xive->kvm; xive 1630 arch/powerpc/kvm/book3s_xive.c xive->delayed_irqs--; xive 1637 arch/powerpc/kvm/book3s_xive.c static int xive_set_source(struct kvmppc_xive *xive, long irq, u64 addr) xive 1654 arch/powerpc/kvm/book3s_xive.c sb = kvmppc_xive_find_source(xive, irq, &idx); xive 1657 arch/powerpc/kvm/book3s_xive.c sb = kvmppc_xive_create_src_block(xive, irq); xive 1699 arch/powerpc/kvm/book3s_xive.c xive_lock_and_mask(xive, sb, state); xive 1722 arch/powerpc/kvm/book3s_xive.c mutex_lock(&xive->lock); xive 1723 arch/powerpc/kvm/book3s_xive.c rc = xive_check_provisioning(xive->kvm, act_prio); xive 1724 arch/powerpc/kvm/book3s_xive.c mutex_unlock(&xive->lock); xive 1728 arch/powerpc/kvm/book3s_xive.c rc = xive_target_interrupt(xive->kvm, state, xive 1741 arch/powerpc/kvm/book3s_xive.c if (xive->delayed_irqs && xive_check_delayed_irq(xive, irq)) { xive 1788 arch/powerpc/kvm/book3s_xive.c xive_finish_unmask(xive, sb, state, guest_prio); xive 1794 arch/powerpc/kvm/book3s_xive.c xive->src_count++; xive 1803 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = kvm->arch.xive; xive 1808 arch/powerpc/kvm/book3s_xive.c if (!xive) xive 1811 arch/powerpc/kvm/book3s_xive.c sb = kvmppc_xive_find_source(xive, irq, &idx); xive 1839 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = dev->private; xive 1844 arch/powerpc/kvm/book3s_xive.c return xive_set_source(xive, attr->attr, attr->addr); xive 1851 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = dev->private; xive 1856 arch/powerpc/kvm/book3s_xive.c return xive_get_source(xive, attr->attr, attr->addr); xive 1907 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = dev->private; xive 1908 arch/powerpc/kvm/book3s_xive.c struct kvm *kvm = xive->kvm; xive 1923 arch/powerpc/kvm/book3s_xive.c debugfs_remove(xive->dentry); xive 1948 arch/powerpc/kvm/book3s_xive.c kvm->arch.xive = NULL; xive 1951 arch/powerpc/kvm/book3s_xive.c for (i = 0; i <= xive->max_sbid; i++) { xive 1952 arch/powerpc/kvm/book3s_xive.c if (xive->src_blocks[i]) xive 1953 arch/powerpc/kvm/book3s_xive.c kvmppc_xive_free_sources(xive->src_blocks[i]); xive 1954 arch/powerpc/kvm/book3s_xive.c kfree(xive->src_blocks[i]); xive 1955 arch/powerpc/kvm/book3s_xive.c xive->src_blocks[i] = NULL; xive 1958 arch/powerpc/kvm/book3s_xive.c if (xive->vp_base != XIVE_INVALID_VP) xive 1959 arch/powerpc/kvm/book3s_xive.c xive_native_free_vp_block(xive->vp_base); xive 1985 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = *kvm_xive_device; xive 1987 arch/powerpc/kvm/book3s_xive.c if (!xive) { xive 1988 arch/powerpc/kvm/book3s_xive.c xive = kzalloc(sizeof(*xive), GFP_KERNEL); xive 1989 arch/powerpc/kvm/book3s_xive.c *kvm_xive_device = xive; xive 1991 arch/powerpc/kvm/book3s_xive.c memset(xive, 0, sizeof(*xive)); xive 1994 arch/powerpc/kvm/book3s_xive.c return xive; xive 2002 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive; xive 2009 arch/powerpc/kvm/book3s_xive.c if (kvm->arch.xive) xive 2012 arch/powerpc/kvm/book3s_xive.c xive = kvmppc_xive_get_device(kvm, type); xive 2013 arch/powerpc/kvm/book3s_xive.c if (!xive) xive 2016 arch/powerpc/kvm/book3s_xive.c dev->private = xive; xive 2017 arch/powerpc/kvm/book3s_xive.c xive->dev = dev; xive 2018 arch/powerpc/kvm/book3s_xive.c xive->kvm = kvm; xive 2019 arch/powerpc/kvm/book3s_xive.c mutex_init(&xive->lock); xive 2022 arch/powerpc/kvm/book3s_xive.c xive->q_order = xive_native_default_eq_shift(); xive 2023 arch/powerpc/kvm/book3s_xive.c if (xive->q_order < PAGE_SHIFT) xive 2024 arch/powerpc/kvm/book3s_xive.c xive->q_page_order = 0; xive 2026 arch/powerpc/kvm/book3s_xive.c xive->q_page_order = xive->q_order - PAGE_SHIFT; xive 2029 arch/powerpc/kvm/book3s_xive.c xive->vp_base = xive_native_alloc_vp_block(KVM_MAX_VCPUS); xive 2030 arch/powerpc/kvm/book3s_xive.c pr_devel("VP_Base=%x\n", xive->vp_base); xive 2032 arch/powerpc/kvm/book3s_xive.c if (xive->vp_base == XIVE_INVALID_VP) xive 2035 arch/powerpc/kvm/book3s_xive.c xive->single_escalation = xive_native_has_single_escalation(); xive 2040 arch/powerpc/kvm/book3s_xive.c kvm->arch.xive = xive; xive 2084 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = m->private; xive 2085 arch/powerpc/kvm/book3s_xive.c struct kvm *kvm = xive->kvm; xive 2142 arch/powerpc/kvm/book3s_xive.c static void xive_debugfs_init(struct kvmppc_xive *xive) xive 2146 arch/powerpc/kvm/book3s_xive.c name = kasprintf(GFP_KERNEL, "kvm-xive-%p", xive); xive 2152 arch/powerpc/kvm/book3s_xive.c xive->dentry = debugfs_create_file(name, S_IRUGO, powerpc_debugfs_root, xive 2153 arch/powerpc/kvm/book3s_xive.c xive, &xive_debug_fops); xive 2161 arch/powerpc/kvm/book3s_xive.c struct kvmppc_xive *xive = (struct kvmppc_xive *)dev->private; xive 2164 arch/powerpc/kvm/book3s_xive.c xive_debugfs_init(xive); xive 147 arch/powerpc/kvm/book3s_xive.h struct kvmppc_xive *xive; xive 205 arch/powerpc/kvm/book3s_xive.h static inline struct kvmppc_xive_src_block *kvmppc_xive_find_source(struct kvmppc_xive *xive, xive 215 arch/powerpc/kvm/book3s_xive.h return xive->src_blocks[bid]; xive 218 arch/powerpc/kvm/book3s_xive.h static inline u32 kvmppc_xive_vp(struct kvmppc_xive *xive, u32 server) xive 220 arch/powerpc/kvm/book3s_xive.h return xive->vp_base + kvmppc_pack_vcpu_id(xive->kvm, server); xive 291 arch/powerpc/kvm/book3s_xive.h struct kvmppc_xive *xive, int irq); xive 92 arch/powerpc/kvm/book3s_xive_native.c if (xc->xive->single_escalation) xive 124 arch/powerpc/kvm/book3s_xive_native.c struct kvmppc_xive *xive = dev->private; xive 135 arch/powerpc/kvm/book3s_xive_native.c if (xive->kvm != vcpu->kvm) xive 144 arch/powerpc/kvm/book3s_xive_native.c mutex_lock(&xive->lock); xive 146 arch/powerpc/kvm/book3s_xive_native.c vp_id = kvmppc_xive_vp(xive, server_num); xive 147 arch/powerpc/kvm/book3s_xive_native.c if (kvmppc_xive_vp_in_use(xive->kvm, vp_id)) { xive 160 arch/powerpc/kvm/book3s_xive_native.c xc->xive = xive; xive 178 arch/powerpc/kvm/book3s_xive_native.c rc = xive_native_enable_vp(xc->vp_id, xive->single_escalation); xive 190 arch/powerpc/kvm/book3s_xive_native.c mutex_unlock(&xive->lock); xive 202 arch/powerpc/kvm/book3s_xive_native.c struct kvmppc_xive *xive = kvm->arch.xive; xive 214 arch/powerpc/kvm/book3s_xive_native.c mutex_lock(&xive->mapping_lock); xive 215 arch/powerpc/kvm/book3s_xive_native.c if (xive->mapping) xive 216 arch/powerpc/kvm/book3s_xive_native.c unmap_mapping_range(xive->mapping, xive 219 arch/powerpc/kvm/book3s_xive_native.c mutex_unlock(&xive->mapping_lock); xive 231 arch/powerpc/kvm/book3s_xive_native.c struct kvmppc_xive *xive = dev->private; xive 248 arch/powerpc/kvm/book3s_xive_native.c sb = kvmppc_xive_find_source(xive, irq, &src); xive 304 arch/powerpc/kvm/book3s_xive_native.c struct kvmppc_xive *xive = dev->private; xive 327 arch/powerpc/kvm/book3s_xive_native.c xive->mapping = vma->vm_file->f_mapping; xive 331 arch/powerpc/kvm/book3s_xive_native.c static int kvmppc_xive_native_set_source(struct kvmppc_xive *xive, long irq, xive 346 arch/powerpc/kvm/book3s_xive_native.c sb = kvmppc_xive_find_source(xive, irq, &idx); xive 349 arch/powerpc/kvm/book3s_xive_native.c sb = kvmppc_xive_create_src_block(xive, irq); xive 397 arch/powerpc/kvm/book3s_xive_native.c xive->src_count++; xive 408 arch/powerpc/kvm/book3s_xive_native.c static int kvmppc_xive_native_update_source_config(struct kvmppc_xive *xive, xive 414 arch/powerpc/kvm/book3s_xive_native.c struct kvm *kvm = xive->kvm; xive 440 arch/powerpc/kvm/book3s_xive_native.c kvmppc_xive_vp(xive, server), xive 455 arch/powerpc/kvm/book3s_xive_native.c static int kvmppc_xive_native_set_source_config(struct kvmppc_xive *xive, xive 468 arch/powerpc/kvm/book3s_xive_native.c sb = kvmppc_xive_find_source(xive, irq, &src); xive 497 arch/powerpc/kvm/book3s_xive_native.c return kvmppc_xive_native_update_source_config(xive, sb, state, server, xive 501 arch/powerpc/kvm/book3s_xive_native.c static int kvmppc_xive_native_sync_source(struct kvmppc_xive *xive, xive 513 arch/powerpc/kvm/book3s_xive_native.c sb = kvmppc_xive_find_source(xive, irq, &src); xive 551 arch/powerpc/kvm/book3s_xive_native.c static int kvmppc_xive_native_set_queue_config(struct kvmppc_xive *xive, xive 554 arch/powerpc/kvm/book3s_xive_native.c struct kvm *kvm = xive->kvm; xive 692 arch/powerpc/kvm/book3s_xive_native.c xive->single_escalation); xive 699 arch/powerpc/kvm/book3s_xive_native.c static int kvmppc_xive_native_get_queue_config(struct kvmppc_xive *xive, xive 702 arch/powerpc/kvm/book3s_xive_native.c struct kvm *kvm = xive->kvm; xive 797 arch/powerpc/kvm/book3s_xive_native.c static int kvmppc_xive_reset(struct kvmppc_xive *xive) xive 799 arch/powerpc/kvm/book3s_xive_native.c struct kvm *kvm = xive->kvm; xive 805 arch/powerpc/kvm/book3s_xive_native.c mutex_lock(&xive->lock); xive 819 arch/powerpc/kvm/book3s_xive_native.c if (prio == 7 && xive->single_escalation) xive 833 arch/powerpc/kvm/book3s_xive_native.c for (i = 0; i <= xive->max_sbid; i++) { xive 834 arch/powerpc/kvm/book3s_xive_native.c struct kvmppc_xive_src_block *sb = xive->src_blocks[i]; xive 843 arch/powerpc/kvm/book3s_xive_native.c mutex_unlock(&xive->lock); xive 906 arch/powerpc/kvm/book3s_xive_native.c static int kvmppc_xive_native_eq_sync(struct kvmppc_xive *xive) xive 908 arch/powerpc/kvm/book3s_xive_native.c struct kvm *kvm = xive->kvm; xive 914 arch/powerpc/kvm/book3s_xive_native.c mutex_lock(&xive->lock); xive 915 arch/powerpc/kvm/book3s_xive_native.c for (i = 0; i <= xive->max_sbid; i++) { xive 916 arch/powerpc/kvm/book3s_xive_native.c struct kvmppc_xive_src_block *sb = xive->src_blocks[i]; xive 928 arch/powerpc/kvm/book3s_xive_native.c mutex_unlock(&xive->lock); xive 936 arch/powerpc/kvm/book3s_xive_native.c struct kvmppc_xive *xive = dev->private; xive 942 arch/powerpc/kvm/book3s_xive_native.c return kvmppc_xive_reset(xive); xive 944 arch/powerpc/kvm/book3s_xive_native.c return kvmppc_xive_native_eq_sync(xive); xive 948 arch/powerpc/kvm/book3s_xive_native.c return kvmppc_xive_native_set_source(xive, attr->attr, xive 951 arch/powerpc/kvm/book3s_xive_native.c return kvmppc_xive_native_set_source_config(xive, attr->attr, xive 954 arch/powerpc/kvm/book3s_xive_native.c return kvmppc_xive_native_set_queue_config(xive, attr->attr, xive 957 arch/powerpc/kvm/book3s_xive_native.c return kvmppc_xive_native_sync_source(xive, attr->attr, xive 966 arch/powerpc/kvm/book3s_xive_native.c struct kvmppc_xive *xive = dev->private; xive 970 arch/powerpc/kvm/book3s_xive_native.c return kvmppc_xive_native_get_queue_config(xive, attr->attr, xive 1005 arch/powerpc/kvm/book3s_xive_native.c struct kvmppc_xive *xive = dev->private; xive 1006 arch/powerpc/kvm/book3s_xive_native.c struct kvm *kvm = xive->kvm; xive 1016 arch/powerpc/kvm/book3s_xive_native.c mutex_lock(&xive->mapping_lock); xive 1017 arch/powerpc/kvm/book3s_xive_native.c xive->mapping = NULL; xive 1018 arch/powerpc/kvm/book3s_xive_native.c mutex_unlock(&xive->mapping_lock); xive 1030 arch/powerpc/kvm/book3s_xive_native.c debugfs_remove(xive->dentry); xive 1055 arch/powerpc/kvm/book3s_xive_native.c kvm->arch.xive = NULL; xive 1057 arch/powerpc/kvm/book3s_xive_native.c for (i = 0; i <= xive->max_sbid; i++) { xive 1058 arch/powerpc/kvm/book3s_xive_native.c if (xive->src_blocks[i]) xive 1059 arch/powerpc/kvm/book3s_xive_native.c kvmppc_xive_free_sources(xive->src_blocks[i]); xive 1060 arch/powerpc/kvm/book3s_xive_native.c kfree(xive->src_blocks[i]); xive 1061 arch/powerpc/kvm/book3s_xive_native.c xive->src_blocks[i] = NULL; xive 1064 arch/powerpc/kvm/book3s_xive_native.c if (xive->vp_base != XIVE_INVALID_VP) xive 1065 arch/powerpc/kvm/book3s_xive_native.c xive_native_free_vp_block(xive->vp_base); xive 1082 arch/powerpc/kvm/book3s_xive_native.c struct kvmppc_xive *xive; xive 1088 arch/powerpc/kvm/book3s_xive_native.c if (kvm->arch.xive) xive 1091 arch/powerpc/kvm/book3s_xive_native.c xive = kvmppc_xive_get_device(kvm, type); xive 1092 arch/powerpc/kvm/book3s_xive_native.c if (!xive) xive 1095 arch/powerpc/kvm/book3s_xive_native.c dev->private = xive; xive 1096 arch/powerpc/kvm/book3s_xive_native.c xive->dev = dev; xive 1097 arch/powerpc/kvm/book3s_xive_native.c xive->kvm = kvm; xive 1098 arch/powerpc/kvm/book3s_xive_native.c mutex_init(&xive->mapping_lock); xive 1099 arch/powerpc/kvm/book3s_xive_native.c mutex_init(&xive->lock); xive 1106 arch/powerpc/kvm/book3s_xive_native.c xive->vp_base = xive_native_alloc_vp_block(KVM_MAX_VCPUS); xive 1107 arch/powerpc/kvm/book3s_xive_native.c pr_devel("VP_Base=%x\n", xive->vp_base); xive 1109 arch/powerpc/kvm/book3s_xive_native.c if (xive->vp_base == XIVE_INVALID_VP) xive 1112 arch/powerpc/kvm/book3s_xive_native.c xive->single_escalation = xive_native_has_single_escalation(); xive 1113 arch/powerpc/kvm/book3s_xive_native.c xive->ops = &kvmppc_xive_native_ops; xive 1118 arch/powerpc/kvm/book3s_xive_native.c kvm->arch.xive = xive; xive 1169 arch/powerpc/kvm/book3s_xive_native.c struct kvmppc_xive *xive = vcpu->kvm->arch.xive; xive 1177 arch/powerpc/kvm/book3s_xive_native.c if (!xc || !xive) xive 1205 arch/powerpc/kvm/book3s_xive_native.c struct kvmppc_xive *xive = m->private; xive 1206 arch/powerpc/kvm/book3s_xive_native.c struct kvm *kvm = xive->kvm; xive 1248 arch/powerpc/kvm/book3s_xive_native.c static void xive_native_debugfs_init(struct kvmppc_xive *xive) xive 1252 arch/powerpc/kvm/book3s_xive_native.c name = kasprintf(GFP_KERNEL, "kvm-xive-%p", xive); xive 1258 arch/powerpc/kvm/book3s_xive_native.c xive->dentry = debugfs_create_file(name, 0444, powerpc_debugfs_root, xive 1259 arch/powerpc/kvm/book3s_xive_native.c xive, &xive_native_debug_fops); xive 1267 arch/powerpc/kvm/book3s_xive_native.c struct kvmppc_xive *xive = (struct kvmppc_xive *)dev->private; xive 1270 arch/powerpc/kvm/book3s_xive_native.c xive_native_debugfs_init(xive); xive 373 arch/powerpc/kvm/book3s_xive_template.c static void GLUE(X_PFX,scan_for_rerouted_irqs)(struct kvmppc_xive *xive, xive 406 arch/powerpc/kvm/book3s_xive_template.c sb = kvmppc_xive_find_source(xive, irq, &src); xive 442 arch/powerpc/kvm/book3s_xive_template.c struct kvmppc_xive *xive = vcpu->kvm->arch.xive; xive 488 arch/powerpc/kvm/book3s_xive_template.c GLUE(X_PFX,scan_for_rerouted_irqs)(xive, xc); xive 500 arch/powerpc/kvm/book3s_xive_template.c struct kvmppc_xive *xive = vcpu->kvm->arch.xive; xive 533 arch/powerpc/kvm/book3s_xive_template.c sb = kvmppc_xive_find_source(xive, irq, &src); xive 16 arch/powerpc/kvm/irq.h ret = ret || (kvm->arch.xive != NULL); xive 1993 arch/powerpc/kvm/powerpc.c if (kvm->arch.xics || kvm->arch.xive)