/openbmc/linux/drivers/net/ipa/ |
H A D | ipa_interrupt.c | 1 // SPDX-License-Identifier: GPL-2.0 3 /* Copyright (c) 2014-2018, The Linux Foundation. All rights reserved. 4 * Copyright (C) 2018-2022 Linaro Ltd. 7 /* DOC: IPA Interrupts 9 * The IPA has an interrupt line distinct from the interrupt used by the GSI 11 * transfer completions), IPA interrupts are related to other events related 12 * to the IPA. Some of the IPA interrupts come from a microcontroller 13 * embedded in the IPA. Each IPA interrupt type can be both masked and 16 * Two of the IPA interrupts are initiated by the microcontroller. A third 17 * can be generated to signal the need for a wakeup/resume when an IPA [all …]
|
H A D | ipa_main.c | 1 // SPDX-License-Identifier: GPL-2.0 3 /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. 4 * Copyright (C) 2018-2023 Linaro Ltd. 22 #include "ipa.h" 41 * This driver supports the Qualcomm IP Accelerator (IPA), which is a 42 * networking component found in many Qualcomm SoCs. The IPA is connected 46 * The IPA is the conduit between the AP and the modem that carries network 50 * The IPA provides protocol checksum calculation, offloading this work 51 * from the AP. The IPA offers additional functionality, including routing, 53 * currently supported. Despite that, some resources--including routing [all …]
|
H A D | ipa_endpoint.c | 1 // SPDX-License-Identifier: GPL-2.0 3 /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. 4 * Copyright (C) 2019-2023 Linaro Ltd. 12 #include <linux/dma-direction.h> 16 #include "ipa.h" 27 #define IPA_REPLENISH_BATCH 16 /* Must be non-zero */ 30 #define IPA_RX_BUFFER_OVERHEAD (PAGE_SIZE - SKB_MAX_ORDER(NET_SKB_PAD, 0)) 32 /* Where to find the QMAP mux_id for a packet within modem-supplied metadata */ 37 /** enum ipa_status_opcode - IPA status opcode field hardware values */ 48 /** enum ipa_status_exception - IPA status exception field hardware values */ [all …]
|
H A D | ipa_resource.c | 1 // SPDX-License-Identifier: GPL-2.0 3 /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. 4 * Copyright (C) 2018-2022 Linaro Ltd. 10 #include "ipa.h" 16 * DOC: IPA Resources 18 * The IPA manages a set of resources internally for various purposes. 19 * A given IPA version has a fixed number of resource types, and a fixed 23 * Each version of IPA also has some number of resource groups. Each 29 static bool ipa_resource_limits_valid(struct ipa *ipa, in ipa_resource_limits_valid() argument 39 group_count = data->rsrc_group_src_count; in ipa_resource_limits_valid() [all …]
|
H A D | ipa_table.c | 1 // SPDX-License-Identifier: GPL-2.0 3 /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. 4 * Copyright (C) 2018-2023 Linaro Ltd. 15 #include <linux/dma-mapping.h> 17 #include "ipa.h" 28 * DOC: IPA Filter and Route Tables 30 * The IPA has tables defined in its local (IPA-resident) memory that define 32 * endian 64-bit "slot" that holds the address of a rule definition. (The 38 * by all IPA hardware (IPA v4.2 doesn't support hashed tables). 41 * an object (such as a route or filter table) in IPA-resident memory must [all …]
|
H A D | ipa_reg.c | 1 // SPDX-License-Identifier: GPL-2.0 3 /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. 4 * Copyright (C) 2019-2023 Linaro Ltd. 9 #include "ipa.h" 12 /* Is this register ID valid for the current IPA version? */ 13 static bool ipa_reg_id_valid(struct ipa *ipa, enum ipa_reg_id reg_id) in ipa_reg_id_valid() argument 15 enum ipa_version version = ipa->version; in ipa_reg_id_valid() 101 const struct reg *ipa_reg(struct ipa *ipa, enum ipa_reg_id reg_id) in ipa_reg() argument 103 if (WARN(!ipa_reg_id_valid(ipa, reg_id), "invalid reg %u\n", reg_id)) in ipa_reg() 106 return reg(ipa->regs, reg_id); in ipa_reg() [all …]
|
H A D | ipa_mem.c | 1 // SPDX-License-Identifier: GPL-2.0 3 /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. 4 * Copyright (C) 2019-2023 Linaro Ltd. 10 #include <linux/dma-mapping.h> 15 #include "ipa.h" 29 const struct ipa_mem *ipa_mem_find(struct ipa *ipa, enum ipa_mem_id mem_id) in ipa_mem_find() argument 33 for (i = 0; i < ipa->mem_count; i++) { in ipa_mem_find() 34 const struct ipa_mem *mem = &ipa->mem[i]; in ipa_mem_find() 36 if (mem->id == mem_id) in ipa_mem_find() 47 struct ipa *ipa = container_of(trans->gsi, struct ipa, gsi); in ipa_mem_zero_region_add() local [all …]
|
H A D | ipa_uc.c | 1 // SPDX-License-Identifier: GPL-2.0 3 /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. 4 * Copyright (C) 2018-2022 Linaro Ltd. 12 #include "ipa.h" 17 * DOC: The IPA embedded microcontroller 19 * The IPA incorporates a microcontroller that is able to do some additional 29 * A 128 byte block of structured memory within the IPA SRAM is used together 31 * AP and the IPA microcontroller. Each side writes data to the shared area 43 * struct ipa_uc_mem_area - AP/microcontroller shared memory area 44 * @command: command code (AP->microcontroller) [all …]
|
H A D | ipa_cmd.c | 1 // SPDX-License-Identifier: GPL-2.0 3 /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. 4 * Copyright (C) 2019-2023 Linaro Ltd. 11 #include <linux/dma-direction.h> 15 #include "ipa.h" 22 * DOC: IPA Immediate Commands 24 * The AP command TX endpoint is used to issue immediate commands to the IPA. 25 * An immediate command is generally used to request the IPA do something 30 * has a well-defined format, having a payload of a known length. This 73 /* For IPA v4.0+, the pipeline clear options are encoded in the opcode */ [all …]
|
H A D | Makefile | 1 # SPDX-License-Identifier: GPL-2.0 3 # Makefile for the Qualcomm IPA driver. 7 # Some IPA versions can reuse another set of GSI register definitions. 12 obj-$(CONFIG_QCOM_IPA) += ipa.o 14 ipa-y := ipa_main.o ipa_power.o ipa_reg.o ipa_mem.o \ 21 ipa-y += $(IPA_REG_VERSIONS:%=reg/ipa_reg-v%.o) 23 ipa-y += $(GSI_REG_VERSIONS:%=reg/gsi_reg-v%.o) 25 ipa-y += $(IPA_DATA_VERSIONS:%=data/ipa_data-v%.o)
|
H A D | ipa_reg.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 3 /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. 4 * Copyright (C) 2018-2023 Linaro Ltd. 13 #include "reg.h" 15 struct ipa; 18 * DOC: IPA Registers 20 * IPA registers are located within the "ipa-reg" address space defined by 24 * All IPA registers are 32 bits wide. 27 * instances of something. For example, each IPA endpoint has an set of 35 * Each version of IPA implements an array of ipa_reg structures indexed [all …]
|
H A D | gsi_reg.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 3 /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. 4 * Copyright (C) 2018-2023 Linaro Ltd. 30 * function-like macro that takes a parameter used in the computation. 38 * (though the actual limit is hardware-dependent). 42 * (though the actual limit is hardware-dependent). 45 /* enum gsi_reg_id - GSI register IDs */ 47 INTER_EE_SRC_CH_IRQ_MSK, /* IPA v3.5+ */ 48 INTER_EE_SRC_EV_CH_IRQ_MSK, /* IPA v3.5+ */ 77 HW_PARAM_2, /* IPA v3.5.1+ */ [all …]
|
H A D | gsi.c | 1 // SPDX-License-Identifier: GPL-2.0 3 /* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved. 4 * Copyright (C) 2018-2023 Linaro Ltd. 19 #include "reg.h" 28 * DOC: The IPA Generic Software Interface 30 * The generic software interface (GSI) is an integral component of the IPA, 31 * providing a well-defined communication layer between the AP subsystem 32 * and the IPA core. The modem uses the GSI layer as well. 34 * -------- --------- 36 * | AP +<---. .----+ Modem | [all …]
|
/openbmc/linux/Documentation/devicetree/bindings/net/ |
H A D | qcom,ipa.yaml | 1 # SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause 3 --- 4 $id: http://devicetree.org/schemas/net/qcom,ipa.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Qualcomm IP Accelerator (IPA) 10 - Alex Elder <elder@kernel.org> 13 This binding describes the Qualcomm IPA. The IPA is capable of offloading 17 The IPA sits between multiple independent "execution environments," 18 including the Application Processor (AP) and the modem. The IPA presents 20 The GSI is an integral part of the IPA, but it is logically isolated [all …]
|
/openbmc/linux/arch/arm/boot/dts/qcom/ |
H A D | qcom-sdx65.dtsi | 1 // SPDX-License-Identifier: BSD-3-Clause 9 #include <dt-bindings/clock/qcom,gcc-sdx65.h> 10 #include <dt-bindings/clock/qcom,rpmh.h> 11 #include <dt-bindings/gpio/gpio.h> 12 #include <dt-bindings/interrupt-controller/arm-gic.h> 13 #include <dt-bindings/power/qcom-rpmpd.h> 14 #include <dt-bindings/soc/qcom,rpmh-rsc.h> 15 #include <dt-bindings/interconnect/qcom,sdx65.h> 18 #address-cells = <1>; 19 #size-cells = <1>; [all …]
|
H A D | qcom-sdx55.dtsi | 1 // SPDX-License-Identifier: BSD-3-Clause 9 #include <dt-bindings/clock/qcom,gcc-sdx55.h> 10 #include <dt-bindings/clock/qcom,rpmh.h> 11 #include <dt-bindings/gpio/gpio.h> 12 #include <dt-bindings/interconnect/qcom,sdx55.h> 13 #include <dt-bindings/interrupt-controller/arm-gic.h> 14 #include <dt-bindings/power/qcom-rpmpd.h> 15 #include <dt-bindings/soc/qcom,rpmh-rsc.h> 18 #address-cells = <1>; 19 #size-cells = <1>; [all …]
|
/openbmc/linux/tools/testing/selftests/kvm/lib/s390x/ |
H A D | diag318_test_handler.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 23 * we create an ad-hoc VM here to handle the instruction then extract the 31 uint64_t reg; in diag318_handler() local 36 run = vcpu->run; in diag318_handler() 39 TEST_ASSERT(run->s390_sieic.icptcode == ICPT_INSTRUCTION, in diag318_handler() 40 "Unexpected intercept code: 0x%x", run->s390_sieic.icptcode); in diag318_handler() 41 TEST_ASSERT((run->s390_sieic.ipa & 0xff00) == IPA0_DIAG, in diag318_handler() 42 "Unexpected IPA0 code: 0x%x", (run->s390_sieic.ipa & 0xff00)); in diag318_handler() 44 reg = (run->s390_sieic.ipa & 0x00f0) >> 4; in diag318_handler() 45 diag318_info = run->s.regs.gprs[reg]; in diag318_handler()
|
H A D | ucall.c | 1 // SPDX-License-Identifier: GPL-2.0 11 struct kvm_run *run = vcpu->run; in ucall_arch_get_ucall() 13 if (run->exit_reason == KVM_EXIT_S390_SIEIC && in ucall_arch_get_ucall() 14 run->s390_sieic.icptcode == 4 && in ucall_arch_get_ucall() 15 (run->s390_sieic.ipa >> 8) == 0x83 && /* 0x83 means DIAGNOSE */ in ucall_arch_get_ucall() 16 (run->s390_sieic.ipb >> 16) == 0x501) { in ucall_arch_get_ucall() 17 int reg = run->s390_sieic.ipa & 0xf; in ucall_arch_get_ucall() local 19 return (void *)run->s.regs.gprs[reg]; in ucall_arch_get_ucall()
|
/openbmc/linux/tools/testing/selftests/kvm/s390x/ |
H A D | sync_regs_test.c | 1 // SPDX-License-Identifier: GPL-2.0-only 39 #define REG_COMPARE(reg) \ argument 40 TEST_ASSERT(left->reg == right->reg, \ 41 "Register " #reg \ 43 left->reg, right->reg) 45 #define REG_COMPARE32(reg) \ argument 46 TEST_ASSERT(left->reg == right->reg, \ 47 "Register " #reg \ 49 left->reg, right->reg) 78 struct kvm_run *run = vcpu->run; in test_read_invalid() [all …]
|
/openbmc/linux/drivers/net/ipa/reg/ |
H A D | ipa_reg-v4.2.c | 1 // SPDX-License-Identifier: GPL-2.0 7 #include "../ipa.h" 29 /* Bits 21-31 reserved */ 65 /* Bits 30-31 reserved */ 76 /* Bits 22-23 reserved */ 78 /* Bits 25-31 reserved */ 93 /* Bits 8-31 reserved */ 101 /* Bits 8-15 reserved */ 110 /* Bits 1-3 reserved */ 112 /* Bits 5-7 reserved */ [all …]
|
H A D | ipa_reg-v3.5.1.c | 1 // SPDX-License-Identifier: GPL-2.0 7 #include "../ipa.h" 16 /* Bits 5-31 reserved */ 44 /* Bits 22-31 reserved */ 55 /* Bits 22-23 reserved */ 57 /* Bits 25-31 reserved */ 72 /* Bits 8-31 reserved */ 86 /* Bits 1-3 reserved */ 88 /* Bits 5-7 reserved */ 90 /* Bits 9-11 reserved */ [all …]
|
H A D | ipa_reg-v3.1.c | 1 // SPDX-License-Identifier: GPL-2.0 7 #include "../ipa.h" 16 /* Bits 5-31 reserved */ 39 /* Bits 17-31 reserved */ 50 /* Bits 22-23 reserved */ 52 /* Bits 25-31 reserved */ 67 /* Bits 8-31 reserved */ 81 /* Bits 1-3 reserved */ 83 /* Bits 5-7 reserved */ 85 /* Bits 9-11 reserved */ [all …]
|
H A D | ipa_reg-v4.7.c | 1 // SPDX-License-Identifier: GPL-2.0 7 #include "../ipa.h" 30 /* Bits 22-31 reserved */ 78 /* Bits 22-23 reserved */ 80 /* Bits 25-31 reserved */ 95 /* Bits 8-31 reserved */ 103 /* Bits 8-15 reserved */ 112 /* Bits 1-3 reserved */ 114 /* Bits 5-7 reserved */ 116 /* Bits 9-11 reserved */ [all …]
|
/openbmc/linux/arch/s390/kvm/ |
H A D | diag.c | 1 // SPDX-License-Identifier: GPL-2.0 14 #include <asm/virtio-ccw.h> 15 #include "kvm-s390.h" 17 #include "trace-s390.h" 25 start = vcpu->run->s.regs.gprs[(vcpu->arch.sie_block->ipa & 0xf0) >> 4]; in diag_release_pages() 26 end = vcpu->run->s.regs.gprs[vcpu->arch.sie_block->ipa & 0xf] + PAGE_SIZE; in diag_release_pages() 27 vcpu->stat.instruction_diagnose_10++; in diag_release_pages() 40 gmap_discard(vcpu->arch.gmap, start, end); in diag_release_pages() 48 gmap_discard(vcpu->arch.gmap, start, prefix); in diag_release_pages() 50 gmap_discard(vcpu->arch.gmap, 0, PAGE_SIZE); in diag_release_pages() [all …]
|
H A D | priv.c | 1 // SPDX-License-Identifier: GPL-2.0 17 #include <asm/asm-offsets.h> 23 #include <asm/page-states.h> 29 #include "kvm-s390.h" 34 vcpu->stat.instruction_ri++; in handle_ri() 36 if (test_kvm_facility(vcpu->kvm, 64)) { in handle_ri() 38 vcpu->arch.sie_block->ecb3 |= ECB3_RI; in handle_ri() 47 if ((vcpu->arch.sie_block->ipa & 0xf) <= 4) in kvm_s390_handle_aa() 50 return -EOPNOTSUPP; in kvm_s390_handle_aa() 55 vcpu->stat.instruction_gs++; in handle_gs() [all …]
|