Home
last modified time | relevance | path

Searched full:gsi (Results 1 – 25 of 174) sorted by relevance

1234567

/linux/drivers/net/ipa/
H A Dgsi.c16 #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 Dgsi.h26 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 Dgsi_reg.c8 #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 Dipa_gsi.h11 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 Dgsi_trans.h21 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 Dipa_version.h13 * @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 Dgsi_reg.h9 /* === 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 Dipa_gsi.c18 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 Dgsi_trans.c14 #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 Dipa_data.h16 * DOC: IPA/GSI Configuration Data
19 * IPA and GSI resources to use for a given platform. This data is supplied
30 * GSI channels. A channel is a GSI construct, and represents a single
34 * the only GSI channels of concern to this driver belong to the AP.
40 * added. IPA endpoint and GSI channel configuration data are defined
44 * are common to IPA and GSI (EE ID, channel ID, endpoint ID, and direction);
45 * properties associated with the GSI channel; and properties associated with
71 * struct gsi_channel_data - GSI channel configuration data
76 * A GSI channel is a unidirectional means of transferring data to or
77 * from (and through) the IPA. A GSI channel has a ring buffer made
[all …]
H A Dgsi_private.h9 /* === 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 Dipa.h12 #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 Dipa_cmd.c13 #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 Dipa_main.c57 * interface (GSI) is an integral component of the IPA, providing a
59 * core. The GSI implements a set of "channels" used for communication
62 * The IPA layer uses GSI channels to implement its "endpoints". And while
63 * a GSI channel carries data between the AP and the IPA, a pair of IPA
70 /* The name of the GSI firmware file relative to /lib/firmware */
84 * enum ipa_firmware_loader: How GSI firmware gets loaded
87 * @IPA_LOADER_SELF: AP loads GSI firmware
88 * @IPA_LOADER_MODEM: Modem loads GSI firmware, signals when done
89 * @IPA_LOADER_SKIP: Neither AP nor modem need to load GSI firmware
90 * @IPA_LOADER_INVALID: GSI firmware loader specification is invalid
[all …]
/linux/drivers/infiniband/hw/mlx5/
H A Dgsi.c46 /* 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/drivers/acpi/
H A Dirq.c3 * ACPI GSI IRQ layer
15 static struct fwnode_handle *(*acpi_get_gsi_domain_id)(u32 gsi);
16 static u32 (*acpi_gsi_to_irq_fallback)(u32 gsi);
19 * acpi_gsi_to_irq() - Retrieve the linux irq number for a given GSI
20 * @gsi: GSI IRQ number to map
28 int acpi_gsi_to_irq(u32 gsi, unsigned int *irq) in acpi_gsi_to_irq() argument
32 d = irq_find_matching_fwnode(acpi_get_gsi_domain_id(gsi), in acpi_gsi_to_irq()
34 *irq = irq_find_mapping(d, gsi); in acpi_gsi_to_irq()
40 *irq = acpi_gsi_to_irq_fallback(gsi); in acpi_gsi_to_irq()
47 * acpi_register_gsi() - Map a GSI to a linux IRQ number
[all …]
H A Devged.c51 unsigned int gsi; member
61 acpi_ret = acpi_execute_simple_method(event->handle, NULL, event->gsi); in acpi_ged_irq_handler()
73 unsigned int gsi; in acpi_ged_request_interrupt() local
93 gsi = p->interrupts[0]; in acpi_ged_request_interrupt()
96 gsi = pext->interrupts[0]; in acpi_ged_request_interrupt()
102 switch (gsi) { in acpi_ged_request_interrupt()
105 trigger == ACPI_EDGE_SENSITIVE ? 'E' : 'L', gsi); in acpi_ged_request_interrupt()
122 event->gsi = gsi; in acpi_ged_request_interrupt()
136 dev_dbg(dev, "GED listening GSI %u @ IRQ %u\n", gsi, irq); in acpi_ged_request_interrupt()
171 dev_dbg(geddev->dev, "GED releasing GSI %u @ IRQ %u\n", in ged_shutdown()
[all …]
/linux/Documentation/devicetree/bindings/net/
H A Dqcom,ipa.yaml19 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/arch/x86/pci/
H A Dxen.c4 * initial domain support. We also handle the DSDT _PRT callbacks for GSI's
38 u8 gsi; in xen_pcifront_enable_irq() local
40 rc = pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &gsi); in xen_pcifront_enable_irq()
47 pirq = gsi; in xen_pcifront_enable_irq()
49 if (gsi < nr_legacy_irqs()) in xen_pcifront_enable_irq()
52 rc = xen_bind_pirq_gsi_to_irq(gsi, pirq, share, "pcifront"); in xen_pcifront_enable_irq()
54 dev_warn(&dev->dev, "Xen PCI: failed to bind GSI%d (PIRQ%d) to IRQ: %d\n", in xen_pcifront_enable_irq()
55 gsi, pirq, rc); in xen_pcifront_enable_irq()
60 dev_info(&dev->dev, "Xen PCI mapped GSI%d to IRQ%d\n", gsi, dev->irq); in xen_pcifront_enable_irq()
65 static int xen_register_pirq(u32 gsi, int triggering, bool set_pirq) in xen_register_pirq() argument
[all …]
/linux/drivers/perf/
H A Darm_pmu_acpi.c25 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 Dirqchip.c22 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 …]
H A Deventfd.c49 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()
324 irqfd->gsi = args->gsi; in kvm_irqfd_assign()
360 if (resampler->notifier.gsi == irqfd->gsi) { in kvm_irqfd_assign()
377 resampler->notifier.gsi = irqfd->gsi; in kvm_irqfd_assign()
[all …]
/linux/arch/x86/kernel/acpi/
H A Dboot.c98 * any gsi as specified by an interrupt source override.
343 u8 trigger, u32 gsi);
346 u32 gsi) in mp_override_legacy_irq() argument
364 if (mp_register_ioapic_irq(bus_irq, polarity, trigger, gsi) < 0) in mp_override_legacy_irq()
367 * Reset default identity mapping if gsi is also an legacy IRQ, in mp_override_legacy_irq()
368 * otherwise there will be more than one entry with the same GSI in mp_override_legacy_irq()
371 if (gsi < nr_legacy_irqs() && isa_irq_to_gsi[gsi] == gsi) in mp_override_legacy_irq()
372 isa_irq_to_gsi[gsi] = INVALID_ACPI_IRQ; in mp_override_legacy_irq()
373 isa_irq_to_gsi[bus_irq] = gsi; in mp_override_legacy_irq()
376 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 Dlatent_entropy_plugin.c342 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 …]
/linux/drivers/irqchip/
H A Dirq-loongarch-cpu.c21 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()

1234567