/openbmc/qemu/hw/intc/ |
H A D | pnv_xive.c | 65 #define xive_error(xive, fmt, ...) \ argument 67 (xive)->chip->chip_id, ## __VA_ARGS__); 74 static uint8_t pnv_xive_block_id(PnvXive *xive) in pnv_xive_block_id() argument 76 uint8_t blk = xive->chip->chip_id; in pnv_xive_block_id() 77 uint64_t cfg_val = xive->regs[PC_TCTXT_CFG >> 3]; in pnv_xive_block_id() 102 static uint64_t pnv_xive_vst_addr_direct(PnvXive *xive, uint32_t type, in pnv_xive_vst_addr_direct() argument 113 xive_error(xive, "VST: %s entry %x out of range [ 0 .. %x ] !?", in pnv_xive_vst_addr_direct() 122 static uint64_t pnv_xive_vst_addr_indirect(PnvXive *xive, uint32_t type, in pnv_xive_vst_addr_indirect() argument 135 xive_error(xive, "VST: failed to access %s entry %x @0x%" PRIx64, in pnv_xive_vst_addr_indirect() 142 xive_error(xive, "VST: invalid %s entry %x !?", info->name, idx); in pnv_xive_vst_addr_indirect() [all …]
|
H A D | pnv_xive2.c | 85 #define xive2_error(xive, fmt, ...) \ argument 87 (xive)->chip->chip_id, ## __VA_ARGS__); 92 static uint32_t pnv_xive2_block_id(PnvXive2 *xive) in pnv_xive2_block_id() argument 94 uint8_t blk = xive->chip->chip_id; in pnv_xive2_block_id() 95 uint64_t cfg_val = xive->cq_regs[CQ_XIVE_CFG >> 3]; in pnv_xive2_block_id() 117 PnvXive2 *xive = &chip10->xive; in pnv_xive2_get_remote() local 119 if (pnv_xive2_block_id(xive) == blk) { in pnv_xive2_get_remote() 120 return xive; in pnv_xive2_get_remote() 142 static uint64_t pnv_xive2_vst_addr_direct(PnvXive2 *xive, uint32_t type, in pnv_xive2_vst_addr_direct() argument 153 xive2_error(xive, "VST: %s entry %x out of range [ 0 .. %x ] !?", in pnv_xive2_vst_addr_direct() [all …]
|
H A D | spapr_xive_kvm.c | 79 SpaprXive *xive = SPAPR_XIVE(tctx->xptr); in kvmppc_xive_cpu_set_state() local 83 assert(xive->fd != -1); in kvmppc_xive_cpu_set_state() 101 SpaprXive *xive = SPAPR_XIVE(tctx->xptr); in kvmppc_xive_cpu_get_state() local 105 assert(xive->fd != -1); in kvmppc_xive_cpu_get_state() 154 SpaprXive *xive = SPAPR_XIVE(tctx->xptr); in kvmppc_xive_cpu_connect() local 158 assert(xive->fd != -1); in kvmppc_xive_cpu_connect() 169 ret = kvm_vcpu_enable_cap(tctx->cs, KVM_CAP_PPC_IRQ_XIVE, 0, xive->fd, in kvmppc_xive_cpu_connect() 190 int kvmppc_xive_set_source_config(SpaprXive *xive, uint32_t lisn, XiveEAS *eas, in kvmppc_xive_set_source_config() argument 219 return kvm_device_access(xive->fd, KVM_DEV_XIVE_GRP_SOURCE_CONFIG, lisn, in kvmppc_xive_set_source_config() 223 void kvmppc_xive_sync_source(SpaprXive *xive, uint32_t lisn, Error **errp) in kvmppc_xive_sync_source() argument [all …]
|
H A D | spapr_xive.c | 133 static void spapr_xive_end_pic_print_info(SpaprXive *xive, XiveEND *end, in spapr_xive_end_pic_print_info() argument 155 #define spapr_xive_in_kernel(xive) \ argument 156 (kvm_irqchip_in_kernel() && (xive)->fd != -1) 158 static void spapr_xive_pic_print_info(SpaprXive *xive, GString *buf) in spapr_xive_pic_print_info() argument 160 XiveSource *xsrc = &xive->source; in spapr_xive_pic_print_info() 163 if (spapr_xive_in_kernel(xive)) { in spapr_xive_pic_print_info() 166 kvmppc_xive_synchronize_state(xive, &local_err); in spapr_xive_pic_print_info() 175 for (i = 0; i < xive->nr_irqs; i++) { in spapr_xive_pic_print_info() 177 XiveEAS *eas = &xive->eat[i]; in spapr_xive_pic_print_info() 195 assert(end_idx < xive->nr_ends); in spapr_xive_pic_print_info() [all …]
|
H A D | meson.build | 67 specific_ss.add(when: 'CONFIG_XIVE', if_true: files('xive.c'))
|
H A D | xive.c | 1140 XiveNotifierClass *xnc = XIVE_NOTIFIER_GET_CLASS(xsrc->xive); in xive_source_notify() 1144 xnc->notify(xsrc->xive, srcno, pq_checked); in xive_source_notify() 1364 assert(xsrc->xive); in xive_source_realize() 1415 DEFINE_PROP_LINK("xive", XiveSource, xive, TYPE_XIVE_NOTIFIER,
|
/openbmc/linux/arch/powerpc/kvm/ |
H A D | book3s_xive.c | 390 static void xive_vm_scan_for_rerouted_irqs(struct kvmppc_xive *xive, in xive_vm_scan_for_rerouted_irqs() argument 423 sb = kvmppc_xive_find_source(xive, irq, &src); in xive_vm_scan_for_rerouted_irqs() 459 struct kvmppc_xive *xive = vcpu->kvm->arch.xive; in xive_vm_h_cppr() local 505 xive_vm_scan_for_rerouted_irqs(xive, xc); in xive_vm_h_cppr() 517 struct kvmppc_xive *xive = vcpu->kvm->arch.xive; in xive_vm_h_eoi() local 550 sb = kvmppc_xive_find_source(xive, irq, &src); in xive_vm_h_eoi() 674 struct kvmppc_xive *xive = xc->xive; in kvmppc_xive_check_save_restore() local 676 if (xive->flags & KVMPPC_XIVE_FLAG_SAVE_RESTORE) in kvmppc_xive_check_save_restore() 939 struct kvmppc_xive *xive = xc->xive; in xive_provision_queue() local 948 qpage = (__be32 *)__get_free_pages(GFP_KERNEL, xive->q_page_order); in xive_provision_queue() [all …]
|
H A D | book3s_xive_native.c | 95 if (kvmppc_xive_has_single_escalation(xc->xive)) in kvmppc_xive_native_cleanup_vcpu() 126 struct kvmppc_xive *xive = dev->private; in kvmppc_xive_native_connect_vcpu() local 137 if (xive->kvm != vcpu->kvm) in kvmppc_xive_native_connect_vcpu() 142 mutex_lock(&xive->lock); in kvmppc_xive_native_connect_vcpu() 144 rc = kvmppc_xive_compute_vp_id(xive, server_num, &vp_id); in kvmppc_xive_native_connect_vcpu() 155 xc->xive = xive; in kvmppc_xive_native_connect_vcpu() 179 rc = xive_native_enable_vp(xc->vp_id, kvmppc_xive_has_single_escalation(xive)); in kvmppc_xive_native_connect_vcpu() 191 mutex_unlock(&xive->lock); in kvmppc_xive_native_connect_vcpu() 203 struct kvmppc_xive *xive = kvm->arch.xive; in kvmppc_xive_native_reset_mapped() local 215 mutex_lock(&xive->mapping_lock); in kvmppc_xive_native_reset_mapped() [all …]
|
H A D | book3s_xive.h | 153 struct kvmppc_xive *xive; member 211 static inline struct kvmppc_xive_src_block *kvmppc_xive_find_source(struct kvmppc_xive *xive, in kvmppc_xive_find_source() argument 221 return xive->src_blocks[bid]; in kvmppc_xive_find_source() 235 static inline u32 kvmppc_xive_vp(struct kvmppc_xive *xive, u32 server) in kvmppc_xive_vp() argument 237 return xive->vp_base + kvmppc_pack_vcpu_id(xive->kvm, server); in kvmppc_xive_vp() 296 struct kvmppc_xive *xive, int irq); 303 int kvmppc_xive_compute_vp_id(struct kvmppc_xive *xive, u32 cpu, u32 *vp); 304 int kvmppc_xive_set_nr_servers(struct kvmppc_xive *xive, u64 addr); 307 static inline bool kvmppc_xive_has_single_escalation(struct kvmppc_xive *xive) in kvmppc_xive_has_single_escalation() argument 309 return xive->flags & KVMPPC_XIVE_FLAG_SINGLE_ESCALATION; in kvmppc_xive_has_single_escalation()
|
/openbmc/qemu/include/hw/ppc/ |
H A D | spapr_xive.h | 71 void spapr_xive_mmio_set_enabled(SpaprXive *xive, bool enable); 72 void spapr_xive_map_mmio(SpaprXive *xive); 83 void kvmppc_xive_reset(SpaprXive *xive, Error **errp); 84 int kvmppc_xive_set_source_config(SpaprXive *xive, uint32_t lisn, XiveEAS *eas, 86 void kvmppc_xive_sync_source(SpaprXive *xive, uint32_t lisn, Error **errp); 89 int kvmppc_xive_set_queue_config(SpaprXive *xive, uint8_t end_blk, 92 int kvmppc_xive_get_queue_config(SpaprXive *xive, uint8_t end_blk, 95 void kvmppc_xive_synchronize_state(SpaprXive *xive, Error **errp); 96 int kvmppc_xive_pre_save(SpaprXive *xive); 97 int kvmppc_xive_post_load(SpaprXive *xive, int version_id);
|
H A D | pnv_xive.h | 96 void pnv_xive_pic_print_info(PnvXive *xive, GString *buf); 166 void pnv_xive2_pic_print_info(PnvXive2 *xive, GString *buf);
|
H A D | pnv_chip.h | 85 PnvXive xive; member 119 PnvXive2 xive; member
|
H A D | spapr_irq.h | 99 bool xive; member
|
H A D | xive.h | 202 XiveNotifier *xive; member
|
H A D | spapr.h | 270 SpaprXive *xive; member
|
/openbmc/qemu/hw/ppc/ |
H A D | spapr_irq.c | 112 .xive = false, 121 .xive = true, 138 .xive = true, 208 { SPAPR_INTC((spapr_)->ics), SPAPR_INTC((spapr_)->xive), } 328 if (spapr->irq->xive) { in spapr_irq_init() 344 spapr->xive = SPAPR_XIVE(dev); in spapr_irq_init() 349 = SPAPR_INTC_GET_CLASS(spapr->xive); in spapr_irq_init() 351 if (sicc->claim_irq(SPAPR_INTC(spapr->xive), SPAPR_IRQ_IPI + i, in spapr_irq_init() 435 if (spapr->xive) { in spapr_qirq() 436 assert(irq < spapr->xive->nr_irqs); in spapr_qirq() [all …]
|
H A D | pnv.c | 861 pnv_xive_pic_print_info(&chip9->xive, buf); in pnv_chip_power9_pic_print_info() 908 pnv_xive2_pic_print_info(&chip10->xive, buf); in pnv_chip_power10_pic_print_info() 1334 obj = xive_tctx_create(OBJECT(cpu), XIVE_PRESENTER(&chip9->xive), in pnv_chip_power9_intc_create() 1378 obj = xive_tctx_create(OBJECT(cpu), XIVE_PRESENTER(&chip10->xive), in pnv_chip_power10_intc_create() 1685 object_initialize_child(obj, "xive", &chip9->xive, TYPE_PNV_XIVE); in pnv_chip_power9_instance_init() 1686 object_property_add_alias(obj, "xive-fabric", OBJECT(&chip9->xive), in pnv_chip_power9_instance_init() 1811 object_property_set_int(OBJECT(&chip9->xive), "ic-bar", in pnv_chip_power9_realize() 1813 object_property_set_int(OBJECT(&chip9->xive), "vc-bar", in pnv_chip_power9_realize() 1815 object_property_set_int(OBJECT(&chip9->xive), "pc-bar", in pnv_chip_power9_realize() 1817 object_property_set_int(OBJECT(&chip9->xive), "tm-bar", in pnv_chip_power9_realize() [all …]
|
/openbmc/linux/arch/powerpc/sysdev/xics/ |
H A D | ics-native.c | 104 u32 xive; in ics_native_set_affinity() local 116 xive = in_be32(ics_native_xive(in, vec)); in ics_native_set_affinity() 117 xive = (xive & 0xff) | (server << 8); in ics_native_set_affinity() 118 out_be32(ics_native_xive(in, vec), xive); in ics_native_set_affinity() 159 u32 xive; in ics_native_get_server() local 164 xive = in_be32(ics_native_xive(in, vec)); in ics_native_get_server() 165 return (xive >> 8) & 0xfff; in ics_native_get_server()
|
/openbmc/qemu/docs/specs/ |
H A D | index.rst | 14 ppc-xive 15 ppc-spapr-xive
|
H A D | ppc-spapr-xive.rst | 44 following values: ``xics``, ``xive``, and ``dual`` which is the 86 xive XIVE KVM XIVE emul. XIVE KVM 100 xive QEMU error(3) QEMU error(3) QEMU error(3) 122 xive XIVE emul.(1) XIVE emul. QEMU error (2) 146 xive QEMU error(3) QEMU error(3) QEMU error(3) 177 - ``ibm,xive-eq-sizes`` 182 - ``ibm,xive-lisn-ranges``
|
/openbmc/linux/Documentation/virt/kvm/devices/ |
H A D | index.rst | 19 xive
|
/openbmc/linux/arch/powerpc/sysdev/ |
H A D | Kconfig | 23 source "arch/powerpc/sysdev/xive/Kconfig"
|
H A D | Makefile | 51 obj-$(CONFIG_PPC_XIVE) += xive/
|
/openbmc/linux/arch/powerpc/kernel/ |
H A D | prom_init.c | 182 bool xive; member 1292 support->xive = !prom_xive_disable; in prom_parse_xive_model() 1303 support->xive = true; in prom_parse_xive_model() 1338 .xive = false in prom_check_platform_support() 1387 if (supported.xive) { in prom_check_platform_support()
|
/openbmc/linux/arch/powerpc/include/asm/ |
H A D | kvm_host.h | 322 struct kvmppc_xive *xive; /* Current XIVE device in use */ member
|