/linux/drivers/net/ipa/ |
H A D | gsi.c | 16 #include "gsi.h" 28 * The generic software interface (GSI) is an integral component of the IPA, 30 * and the IPA core. The modem uses the GSI layer as well. 40 * | GSI | 51 * Each EE uses a set of unidirectional GSI "channels," which allow transfer 63 * Each channel has a GSI "event ring" associated with it. An event ring 67 * The GSI then writes its doorbell for the event ring, causing the target 83 * Note that all GSI registers are little-endian, which is the assumed 169 return channel - &channel->gsi->channel[0]; in gsi_channel_id() 172 /* An initialized channel has a non-null GSI pointer */ [all …]
|
H A D | gsi.h | 26 struct gsi; 100 struct gsi *gsi; member 136 struct gsi { struct 147 u32 type_enabled_bitmap; /* GSI IRQ types enabled */ 150 struct completion completion; /* Signals GSI command completion */ 158 * gsi_setup() - Set up the GSI subsystem 159 * @gsi: Address of GSI structure embedded in an IPA structure argument 163 * Performs initialization that must wait until the GSI hardware is 166 int gsi_setup(struct gsi *gsi); 169 * gsi_teardown() - Tear down GSI subsystem [all …]
|
H A D | gsi_reg.c | 8 #include "gsi.h" 12 /* Is this register ID valid for the current GSI version? */ 13 static bool gsi_reg_id_valid(struct gsi *gsi, enum gsi_reg_id reg_id) in gsi_reg_id_valid() argument 18 return gsi->version >= IPA_VERSION_3_5; in gsi_reg_id_valid() 21 return gsi->version >= IPA_VERSION_3_5_1; in gsi_reg_id_valid() 24 return gsi->version >= IPA_VERSION_5_0; in gsi_reg_id_valid() 82 const struct reg *gsi_reg(struct gsi *gsi, enum gsi_reg_id reg_id) in gsi_reg() argument 84 if (WARN(!gsi_reg_id_valid(gsi, reg_id), "invalid reg %u\n", reg_id)) in gsi_reg() 87 return reg(gsi->regs, reg_id); in gsi_reg() 90 static const struct regs *gsi_regs(struct gsi *gsi) in gsi_regs() argument [all …]
|
H A D | ipa_gsi.h | 11 struct gsi; 16 * ipa_gsi_trans_complete() - GSI transaction completion callback 19 * This called from the GSI layer to notify the IPA layer that a 25 * ipa_gsi_trans_release() - GSI transaction release callback 28 * This called from the GSI layer to notify the IPA layer that a 35 * ipa_gsi_channel_tx_queued() - GSI queued to hardware notification 36 * @gsi: GSI pointer 41 * This called from the GSI layer to notify the IPA layer that some 44 void ipa_gsi_channel_tx_queued(struct gsi *gsi, u32 channel_id, u32 count, 48 * ipa_gsi_channel_tx_completed() - GSI transaction completion callback [all …]
|
H A D | gsi_trans.h | 21 struct gsi; 28 * struct gsi_trans - a GSI transaction 31 * @gsi: GSI pointer 51 struct gsi *gsi; member 76 * @pool: GSI transaction pool pointer 136 * @gsi: GSI pointer 142 bool gsi_channel_trans_idle(struct gsi *gsi, u32 channel_id); 145 * gsi_channel_trans_alloc() - Allocate a GSI transaction on a channel 146 * @gsi: GSI pointer 151 * Return: A GSI transaction structure, or a null pointer if all [all …]
|
H A D | ipa_version.h | 13 * @IPA_VERSION_3_0: IPA version 3.0/GSI version 1.0 14 * @IPA_VERSION_3_1: IPA version 3.1/GSI version 1.0 15 * @IPA_VERSION_3_5: IPA version 3.5/GSI version 1.2 16 * @IPA_VERSION_3_5_1: IPA version 3.5.1/GSI version 1.3 17 * @IPA_VERSION_4_0: IPA version 4.0/GSI version 2.0 18 * @IPA_VERSION_4_1: IPA version 4.1/GSI version 2.0 19 * @IPA_VERSION_4_2: IPA version 4.2/GSI version 2.2 20 * @IPA_VERSION_4_5: IPA version 4.5/GSI version 2.5 21 * @IPA_VERSION_4_7: IPA version 4.7/GSI version 2.7 22 * @IPA_VERSION_4_9: IPA version 4.9/GSI version 2.9 [all …]
|
H A D | gsi_reg.h | 9 /* === Only "gsi.c" and "gsi_reg.c" should include this file === */ 15 struct gsi; 18 * DOC: GSI Registers 20 * GSI registers are located within the "gsi" address space defined by Device 22 * symbols defined below. The GSI address space is mapped to virtual memory 23 * space in gsi_init(). All GSI registers are 32 bits wide. 26 * For example, each GSI channel has its own set of registers defining its 45 /* enum gsi_reg_id - GSI register IDs */ 262 * enum gsi_irq_type_id: GSI IRQ types 282 /** enum gsi_global_irq_id: Global GSI interrupt events */ [all …]
|
H A D | ipa_gsi.c | 18 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_gsi_trans_complete() 25 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_gsi_trans_release() 30 void ipa_gsi_channel_tx_queued(struct gsi *gsi, u32 channel_id, u32 count, in ipa_gsi_channel_tx_queued() argument 33 struct ipa *ipa = container_of(gsi, struct ipa, gsi); in ipa_gsi_channel_tx_queued() 41 void ipa_gsi_channel_tx_completed(struct gsi *gsi, u32 channel_id, u32 count, in ipa_gsi_channel_tx_completed() argument 44 struct ipa *ipa = container_of(gsi, struct ipa, gsi); in ipa_gsi_channel_tx_completed()
|
H A D | gsi_trans.c | 14 #include "gsi.h" 22 * DOC: GSI Transactions 24 * A GSI transaction abstracts the behavior of a GSI channel by representing 27 * command.) Most details of interaction with the GSI hardware are managed 28 * by the GSI transaction core, allowing users to simply describe operations 33 * To perform an operation (or set of them), a user of the GSI transaction 52 * transaction to the GSI transaction core. The GSI transaction code 57 * GSI hardware has completed it. Because transfers described by TREs are 63 * GSI code into the IPA layer, allowing it to perform any final cleanup 221 struct gsi_channel *channel = &trans->gsi->channel[trans->channel_id]; in gsi_trans_map() [all …]
|
H A D | gsi_private.h | 9 /* === Only "gsi.c" and "gsi_trans.c" should include this file === */ 13 struct gsi; 21 * gsi_trans_move_complete() - Mark a GSI transaction completed 33 * gsi_trans_complete() - Complete a GSI transaction 45 * Return: The GSI transaction pointer associated with the TRE index 73 * gsi_channel_trans_init() - Initialize a channel's GSI transaction info 74 * @gsi: GSI pointer 81 int gsi_channel_trans_init(struct gsi *gsi, u32 channel_id); 93 * Rings a channel's doorbell to inform the GSI hardware that new
|
H A D | ipa.h | 12 #include "gsi.h" 26 * @gsi: Embedded GSI structure 66 * @channel_map: Mapping of GSI channel to IPA endpoint 74 struct gsi gsi; member 144 * The setup stage is performed only after the GSI hardware is ready 151 * In order for the GSI hardware to be functional it needs firmware to be 153 * GSI initialization can be done either by Trust Zone on the AP or by the 156 * If it's done by Trust Zone, the AP loads the GSI firmware and supplies 158 * verification was successful, the GSI layer is ready and ipa_setup() 161 * If the modem performs early GSI initialization, the AP needs to know
|
H A D | ipa_cmd.c | 13 #include "gsi.h" 29 * Immediate commands are represented by GSI transactions just like other 30 * transfer requests, and use a single GSI TRE. Each immediate command 329 struct device *dev = channel->gsi->dev; in ipa_cmd_pool_init() 343 struct device *dev = channel->gsi->dev; in ipa_cmd_pool_exit() 355 trans_info = &ipa->gsi.channel[endpoint->channel_id].trans_info; in ipa_cmd_payload_alloc() 366 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_cmd_table_init_add() 404 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_cmd_hdr_init_local_add() 433 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_cmd_register_write_add() 490 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_cmd_ip_packet_init_add() [all …]
|
H A D | ipa_cmd.h | 58 * @channel: AP->IPA command TX GSI channel pointer 67 * @channel: AP->IPA command TX GSI channel pointer 73 * @trans: GSI transaction 91 * @trans: GSI transaction 103 * @trans: GSI transaction 114 * @trans: GSI transaction 125 * @trans: GSI transaction 148 * Return: A GSI transaction structure, or a null pointer if all
|
/linux/drivers/infiniband/hw/mlx5/ |
H A D | gsi.c | 46 /* Call with gsi->lock locked */ 49 struct mlx5_ib_gsi_qp *gsi = &mqp->gsi; in generate_completions() local 54 for (index = gsi->outstanding_ci; index != gsi->outstanding_pi; in generate_completions() 56 wr = &gsi->outstanding_wrs[index % gsi->cap.max_send_wr]; in generate_completions() 65 gsi->outstanding_ci = index; in generate_completions() 70 struct mlx5_ib_gsi_qp *gsi = cq->cq_context; in handle_single_completion() local 73 struct mlx5_ib_qp *mqp = container_of(gsi, struct mlx5_ib_qp, gsi); in handle_single_completion() 77 spin_lock_irqsave(&gsi->lock, flags); in handle_single_completion() 85 spin_unlock_irqrestore(&gsi->lock, flags); in handle_single_completion() 92 struct mlx5_ib_gsi_qp *gsi; in mlx5_ib_create_gsi() local [all …]
|
/linux/Documentation/devicetree/bindings/net/ |
H A D | qcom,ipa.yaml | 19 a Generic Software Interface (GSI) to each execution environment. 20 The GSI is an integral part of the IPA, but it is logically isolated 37 | GSI | 66 - description: GSI registers 72 - const: gsi 87 - description: GSI interrupt (hardware IRQ) 94 - const: gsi 135 qcom,gsi-loader: 141 Indicates how GSI firmware should be loaded. If the AP loads 142 and validates GSI firmware, this property has value "self". [all …]
|
/linux/drivers/perf/ |
H A D | arm_pmu_acpi.c | 25 int gsi, trigger; in arm_pmu_acpi_register_irq() local 29 gsi = gicc->performance_interrupt; in arm_pmu_acpi_register_irq() 33 * have an interrupt. QEMU advertises this by using a GSI of zero, in arm_pmu_acpi_register_irq() 36 * GSI of zero for now. in arm_pmu_acpi_register_irq() 38 if (!gsi) in arm_pmu_acpi_register_irq() 57 return acpi_register_gsi(NULL, gsi, trigger, ACPI_ACTIVE_HIGH); in arm_pmu_acpi_register_irq() 63 int gsi; in arm_pmu_acpi_unregister_irq() local 67 gsi = gicc->performance_interrupt; in arm_pmu_acpi_unregister_irq() 68 if (gsi) in arm_pmu_acpi_unregister_irq() 69 acpi_unregister_gsi(gsi); in arm_pmu_acpi_unregister_irq() [all …]
|
/linux/virt/kvm/ |
H A D | eventfd.c | 49 kvm_set_irq(kvm, KVM_USERSPACE_IRQ_SOURCE_ID, irqfd->gsi, 1, in irqfd_inject() 51 kvm_set_irq(kvm, KVM_USERSPACE_IRQ_SOURCE_ID, irqfd->gsi, 0, in irqfd_inject() 55 irqfd->gsi, 1, false); in irqfd_inject() 69 * then notify all of the resampler irqfds using this GSI. We can't 84 resampler->notifier.gsi, 0, false); in irqfd_resampler_ack() 109 resampler->notifier.gsi, 0, false); in irqfd_resampler_shutdown() 264 n_entries = kvm_irq_map_gsi(kvm, entries, irqfd->gsi); in irqfd_update() 323 irqfd->gsi = args->gsi; in kvm_irqfd_assign() 359 if (resampler->notifier.gsi == irqfd->gsi) { in kvm_irqfd_assign() 376 resampler->notifier.gsi = irqfd->gsi; in kvm_irqfd_assign() [all …]
|
H A D | irqchip.c | 22 struct kvm_kernel_irq_routing_entry *entries, int gsi) in kvm_irq_map_gsi() argument 30 if (irq_rt && gsi < irq_rt->nr_rt_entries) { in kvm_irq_map_gsi() 31 hlist_for_each_entry(e, &irq_rt->map[gsi], link) { in kvm_irq_map_gsi() 134 u32 gsi = array_index_nospec(ue->gsi, KVM_MAX_IRQ_ROUTES); in setup_routing_entry() local 137 * Do not allow GSI to be mapped to the same irqchip more than once. in setup_routing_entry() 138 * Allow only one to one mapping between GSI and non-irqchip routing. in setup_routing_entry() 140 hlist_for_each_entry(ei, &rt->map[gsi], link) in setup_routing_entry() 146 e->gsi = gsi; in setup_routing_entry() 152 rt->chip[e->irqchip.irqchip][e->irqchip.pin] = e->gsi; in setup_routing_entry() 154 hlist_add_head(&e->link, &rt->map[e->gsi]); in setup_routing_entry() [all …]
|
/linux/arch/x86/kernel/acpi/ |
H A D | boot.c | 100 * any gsi as specified by an interrupt source override. 366 u8 trigger, u32 gsi); 369 u32 gsi) in mp_override_legacy_irq() argument 387 if (mp_register_ioapic_irq(bus_irq, polarity, trigger, gsi) < 0) in mp_override_legacy_irq() 390 * Reset default identity mapping if gsi is also an legacy IRQ, in mp_override_legacy_irq() 391 * otherwise there will be more than one entry with the same GSI in mp_override_legacy_irq() 394 if (gsi < nr_legacy_irqs() && isa_irq_to_gsi[gsi] == gsi) in mp_override_legacy_irq() 395 isa_irq_to_gsi[gsi] = INVALID_ACPI_IRQ; in mp_override_legacy_irq() 396 isa_irq_to_gsi[bus_irq] = gsi; in mp_override_legacy_irq() 399 static void mp_config_acpi_gsi(struct device *dev, u32 gsi, int trigger, in mp_config_acpi_gsi() argument [all …]
|
/linux/scripts/gcc-plugins/ |
H A D | latent_entropy_plugin.c | 342 gimple_stmt_iterator gsi; in perturb_local_entropy() local 349 gsi = gsi_after_labels(bb); in perturb_local_entropy() 350 gsi_insert_before(&gsi, assign, GSI_NEW_STMT); in perturb_local_entropy() 354 static void __perturb_latent_entropy(gimple_stmt_iterator *gsi, in __perturb_latent_entropy() argument 368 gsi_insert_before(gsi, assign, GSI_NEW_STMT); in __perturb_latent_entropy() 374 gsi_insert_after(gsi, assign, GSI_NEW_STMT); in __perturb_latent_entropy() 379 gsi_insert_after(gsi, assign, GSI_NEW_STMT); in __perturb_latent_entropy() 385 gimple_stmt_iterator gsi; in handle_tail_calls() local 387 for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) { in handle_tail_calls() 389 gimple stmt = gsi_stmt(gsi); in handle_tail_calls() [all …]
|
H A D | stackleak_plugin.c | 54 static void add_stack_tracking_gcall(gimple_stmt_iterator *gsi, bool after) in add_stack_tracking_gcall() argument 65 gsi_insert_after(gsi, gimple_call, GSI_CONTINUE_LINKING); in add_stack_tracking_gcall() 67 gsi_insert_before(gsi, gimple_call, GSI_SAME_STMT); in add_stack_tracking_gcall() 113 static void add_stack_tracking_gasm(gimple_stmt_iterator *gsi, bool after) in add_stack_tracking_gasm() argument 134 add_stack_tracking_gcall(gsi, after); in add_stack_tracking_gasm() 144 gsi_insert_after(gsi, asm_call, GSI_CONTINUE_LINKING); in add_stack_tracking_gasm() 146 gsi_insert_before(gsi, asm_call, GSI_SAME_STMT); in add_stack_tracking_gasm() 150 static void add_stack_tracking(gimple_stmt_iterator *gsi, bool after) in add_stack_tracking() argument 161 add_stack_tracking_gasm(gsi, after); in add_stack_tracking() 163 add_stack_tracking_gcall(gsi, after); in add_stack_tracking() [all …]
|
/linux/drivers/acpi/ |
H A D | pci_irq.c | 30 u32 index; /* GSI, or link _CRS index */ 327 dev_dbg(&dev->dev, "Derived GSI INT %c from %s\n", in acpi_pci_irq_lookup() 350 dev_warn(&dev->dev, "PCI INT %c: no GSI - using ISA IRQ %d\n", in acpi_isa_register_gsi() 386 int gsi; in acpi_pci_irq_enable() local 426 gsi = acpi_pci_link_allocate_irq(entry->link, in acpi_pci_irq_enable() 431 gsi = entry->index; in acpi_pci_irq_enable() 433 gsi = -1; in acpi_pci_irq_enable() 435 if (gsi < 0) { in acpi_pci_irq_enable() 446 dev_warn(&dev->dev, "PCI INT %c: no GSI\n", in acpi_pci_irq_enable() 453 rc = acpi_register_gsi(&dev->dev, gsi, triggering, polarity); in acpi_pci_irq_enable() [all …]
|
/linux/drivers/irqchip/ |
H A D | irq-loongarch-cpu.c | 21 static u32 lpic_gsi_to_irq(u32 gsi) in lpic_gsi_to_irq() argument 26 if (gsi >= GSI_MIN_PCH_IRQ && gsi <= GSI_MAX_PCH_IRQ) in lpic_gsi_to_irq() 27 irq = acpi_register_gsi(NULL, gsi, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_HIGH); in lpic_gsi_to_irq() 32 static struct fwnode_handle *lpic_get_gsi_domain_id(u32 gsi) in lpic_get_gsi_domain_id() argument 37 switch (gsi) { in lpic_get_gsi_domain_id() 49 id = find_pch_pic(gsi); in lpic_get_gsi_domain_id()
|
/linux/arch/x86/xen/ |
H A D | enlighten_pvh.c | 35 int xen_pvh_setup_gsi(int gsi, int trigger, int polarity) in xen_pvh_setup_gsi() argument 40 setup_gsi.gsi = gsi; in xen_pvh_setup_gsi() 46 xen_raw_printk("Already setup the GSI :%d\n", gsi); in xen_pvh_setup_gsi() 49 xen_raw_printk("Fail to setup GSI (%d)!\n", gsi); in xen_pvh_setup_gsi()
|
/linux/drivers/xen/ |
H A D | acpi.c | 92 int gsi; in xen_acpi_get_gsi_info() local 109 gsi = acpi_pci_link_allocate_irq(entry->link, in xen_acpi_get_gsi_info() 114 gsi = entry->index; in xen_acpi_get_gsi_info() 116 gsi = -1; in xen_acpi_get_gsi_info() 118 if (gsi < 0) in xen_acpi_get_gsi_info() 121 *gsi_out = gsi; in xen_acpi_get_gsi_info()
|