From: Georgi Djakov <quic_c_gdjako@quicinc.com> To: <robh+dt@kernel.org>, <krzysztof.kozlowski+dt@linaro.org>, <conor+dt@kernel.org>, <will@kernel.org>, <robin.murphy@arm.com>, <joro@8bytes.org>, <iommu@lists.linux.dev> Cc: <devicetree@vger.kernel.org>, <andersson@kernel.org>, <konrad.dybcio@linaro.org>, <robdclark@gmail.com>, <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>, <quic_cgoldswo@quicinc.com>, <quic_sukadev@quicinc.com>, <quic_pdaly@quicinc.com>, <quic_sudaraja@quicinc.com>, <djakov@kernel.org> Subject: [PATCH v6 0/7] Add support for Translation Buffer Units Date: Thu, 7 Mar 2024 11:05:18 -0800 [thread overview] Message-ID: <20240307190525.395291-1-quic_c_gdjako@quicinc.com> (raw) The TCUs (Translation Control Units) and TBUs (Translation Buffer Units) are key components of the MMU-500. Multiple TBUs are connected to a single TCU over an interconnect. Each TBU contains a TLB that caches page tables. The MMU-500 implements a TBU for each connected master, and the TBU is designed, so that it is local to the master. A common TBU DT schema is added to describe the TBUs. The Qualcomm SDM845 and SC7280 platforms have an implementation of the SMMU-500, that has multiple TBUs. A vendor-specific DT schema is added to describe the resources for each TBU (register space, power-domains, interconnects and clocks). The TBU driver will manage the resources and allow the system to operate the TBUs during a context fault to obtain details by doing s1 inv, software + hardware page table walks etc. This is implemented with ATOS/eCATs as the ATS feature is not supported. Being able to query the TBUs is useful for debugging various hardware/software issues on these platforms. v6: - Use SoC-specific compatibles (Krzysztof) - Use additionalProperties: false (Krzysztof) - Wrap description text to 80 cols (Krzysztof) v5: https://lore.kernel.org/r/20240226172218.69486-1-quic_c_gdjako@quicinc.com - Drop the common TBU bindings and child nodes. These TBU functionalities are only Qualcomm specific and not generic. In the unmodified ARM MMU-500 implementation there are no TBU-specific resources, so just make them standalone DT nodes. (Robin) - The "qcom,stream-id-range" DT property now takes a phandle to the smmu and a stream ID range. v4: https://lore.kernel.org/r/20240201210529.7728-1-quic_c_gdjako@quicinc.com/ - Create a common TBU schema. Move the vendor-specific properties into a separate schema that references the common one. (Rob) - Drop unused DT labels in example, fix regex. (Rob) - Properly rebase on latest code. v3: https://lore.kernel.org/r/20231220060236.18600-1-quic_c_gdjako@quicinc.com - Having a TBU is not Qualcomm specific, so allow having TBU child nodes with no specific constraints on properties. For some of the vendor compatibles however, add a schema to describe specific properties and allow validation. (Rob) - Drop the useless reg-names DT property on TBUs. (Rob) - Make the stream-id-range DT property a common one. (Rob) - Fix the DT example. (Rob) - Minor fixes on the TBU driver. - Add support for SC7280 platforms. v2: https://lore.kernel.org/r/20231118042730.2799-1-quic_c_gdjako@quicinc.com - Improve DT binding description, add full example. (Konrad) - Drop Qcom specific stuff from the generic binding. (Rob) - Unconditionally try to populate subnodes. (Konrad) - Improve TBU driver commit text, remove memory barriers. (Bjorn) - Move TBU stuff into separate file. Make the driver builtin. - TODO: Evaluate whether to keep TBU support as a separate driver or just instantiate things from qcom_smmu_impl_init() v1: https://lore.kernel.org/r/20231019021923.13939-1-quic_c_gdjako@quicinc.com Georgi Djakov (7): dt-bindings: iommu: Add Qualcomm TBU iommu/arm-smmu-qcom-tbu: Add Qualcomm TBU driver iommu/arm-smmu: Allow using a threaded handler for context interrupts iommu/arm-smmu-qcom: Use a custom context fault handler for sdm845 arm64: dts: qcom: sdm845: Add DT nodes for the TBUs iommu/arm-smmu-qcom: Use the custom fault handler on more platforms arm64: dts: qcom: sc7280: Add DT nodes for the TBUs .../devicetree/bindings/iommu/qcom,tbu.yaml | 69 +++ arch/arm64/boot/dts/qcom/sc7280.dtsi | 89 ++++ arch/arm64/boot/dts/qcom/sdm845.dtsi | 70 +++ drivers/iommu/Kconfig | 9 + drivers/iommu/arm/arm-smmu/Makefile | 1 + .../iommu/arm/arm-smmu/arm-smmu-qcom-tbu.c | 496 ++++++++++++++++++ drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 8 + drivers/iommu/arm/arm-smmu/arm-smmu-qcom.h | 2 + drivers/iommu/arm/arm-smmu/arm-smmu.c | 12 +- drivers/iommu/arm/arm-smmu/arm-smmu.h | 3 + 10 files changed, 757 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/iommu/qcom,tbu.yaml create mode 100644 drivers/iommu/arm/arm-smmu/arm-smmu-qcom-tbu.c
WARNING: multiple messages have this Message-ID (diff)
From: Georgi Djakov <quic_c_gdjako@quicinc.com> To: <robh+dt@kernel.org>, <krzysztof.kozlowski+dt@linaro.org>, <conor+dt@kernel.org>, <will@kernel.org>, <robin.murphy@arm.com>, <joro@8bytes.org>, <iommu@lists.linux.dev> Cc: <devicetree@vger.kernel.org>, <andersson@kernel.org>, <konrad.dybcio@linaro.org>, <robdclark@gmail.com>, <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>, <quic_cgoldswo@quicinc.com>, <quic_sukadev@quicinc.com>, <quic_pdaly@quicinc.com>, <quic_sudaraja@quicinc.com>, <djakov@kernel.org> Subject: [PATCH v6 0/7] Add support for Translation Buffer Units Date: Thu, 7 Mar 2024 11:05:18 -0800 [thread overview] Message-ID: <20240307190525.395291-1-quic_c_gdjako@quicinc.com> (raw) The TCUs (Translation Control Units) and TBUs (Translation Buffer Units) are key components of the MMU-500. Multiple TBUs are connected to a single TCU over an interconnect. Each TBU contains a TLB that caches page tables. The MMU-500 implements a TBU for each connected master, and the TBU is designed, so that it is local to the master. A common TBU DT schema is added to describe the TBUs. The Qualcomm SDM845 and SC7280 platforms have an implementation of the SMMU-500, that has multiple TBUs. A vendor-specific DT schema is added to describe the resources for each TBU (register space, power-domains, interconnects and clocks). The TBU driver will manage the resources and allow the system to operate the TBUs during a context fault to obtain details by doing s1 inv, software + hardware page table walks etc. This is implemented with ATOS/eCATs as the ATS feature is not supported. Being able to query the TBUs is useful for debugging various hardware/software issues on these platforms. v6: - Use SoC-specific compatibles (Krzysztof) - Use additionalProperties: false (Krzysztof) - Wrap description text to 80 cols (Krzysztof) v5: https://lore.kernel.org/r/20240226172218.69486-1-quic_c_gdjako@quicinc.com - Drop the common TBU bindings and child nodes. These TBU functionalities are only Qualcomm specific and not generic. In the unmodified ARM MMU-500 implementation there are no TBU-specific resources, so just make them standalone DT nodes. (Robin) - The "qcom,stream-id-range" DT property now takes a phandle to the smmu and a stream ID range. v4: https://lore.kernel.org/r/20240201210529.7728-1-quic_c_gdjako@quicinc.com/ - Create a common TBU schema. Move the vendor-specific properties into a separate schema that references the common one. (Rob) - Drop unused DT labels in example, fix regex. (Rob) - Properly rebase on latest code. v3: https://lore.kernel.org/r/20231220060236.18600-1-quic_c_gdjako@quicinc.com - Having a TBU is not Qualcomm specific, so allow having TBU child nodes with no specific constraints on properties. For some of the vendor compatibles however, add a schema to describe specific properties and allow validation. (Rob) - Drop the useless reg-names DT property on TBUs. (Rob) - Make the stream-id-range DT property a common one. (Rob) - Fix the DT example. (Rob) - Minor fixes on the TBU driver. - Add support for SC7280 platforms. v2: https://lore.kernel.org/r/20231118042730.2799-1-quic_c_gdjako@quicinc.com - Improve DT binding description, add full example. (Konrad) - Drop Qcom specific stuff from the generic binding. (Rob) - Unconditionally try to populate subnodes. (Konrad) - Improve TBU driver commit text, remove memory barriers. (Bjorn) - Move TBU stuff into separate file. Make the driver builtin. - TODO: Evaluate whether to keep TBU support as a separate driver or just instantiate things from qcom_smmu_impl_init() v1: https://lore.kernel.org/r/20231019021923.13939-1-quic_c_gdjako@quicinc.com Georgi Djakov (7): dt-bindings: iommu: Add Qualcomm TBU iommu/arm-smmu-qcom-tbu: Add Qualcomm TBU driver iommu/arm-smmu: Allow using a threaded handler for context interrupts iommu/arm-smmu-qcom: Use a custom context fault handler for sdm845 arm64: dts: qcom: sdm845: Add DT nodes for the TBUs iommu/arm-smmu-qcom: Use the custom fault handler on more platforms arm64: dts: qcom: sc7280: Add DT nodes for the TBUs .../devicetree/bindings/iommu/qcom,tbu.yaml | 69 +++ arch/arm64/boot/dts/qcom/sc7280.dtsi | 89 ++++ arch/arm64/boot/dts/qcom/sdm845.dtsi | 70 +++ drivers/iommu/Kconfig | 9 + drivers/iommu/arm/arm-smmu/Makefile | 1 + .../iommu/arm/arm-smmu/arm-smmu-qcom-tbu.c | 496 ++++++++++++++++++ drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 8 + drivers/iommu/arm/arm-smmu/arm-smmu-qcom.h | 2 + drivers/iommu/arm/arm-smmu/arm-smmu.c | 12 +- drivers/iommu/arm/arm-smmu/arm-smmu.h | 3 + 10 files changed, 757 insertions(+), 2 deletions(-) create mode 100644 Documentation/devicetree/bindings/iommu/qcom,tbu.yaml create mode 100644 drivers/iommu/arm/arm-smmu/arm-smmu-qcom-tbu.c _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2024-03-07 19:05 UTC|newest] Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-03-07 19:05 Georgi Djakov [this message] 2024-03-07 19:05 ` [PATCH v6 0/7] Add support for Translation Buffer Units Georgi Djakov 2024-03-07 19:05 ` [PATCH v6 1/7] dt-bindings: iommu: Add Qualcomm TBU Georgi Djakov 2024-03-07 19:05 ` Georgi Djakov 2024-03-07 22:24 ` Rob Herring 2024-03-07 22:24 ` Rob Herring 2024-03-07 19:05 ` [PATCH v6 2/7] iommu/arm-smmu-qcom-tbu: Add Qualcomm TBU driver Georgi Djakov 2024-03-07 19:05 ` Georgi Djakov 2024-03-07 19:05 ` [PATCH v6 3/7] iommu/arm-smmu: Allow using a threaded handler for context interrupts Georgi Djakov 2024-03-07 19:05 ` Georgi Djakov 2024-03-07 19:05 ` [PATCH v6 4/7] iommu/arm-smmu-qcom: Use a custom context fault handler for sdm845 Georgi Djakov 2024-03-07 19:05 ` Georgi Djakov 2024-03-12 18:14 ` Konrad Dybcio 2024-03-12 18:14 ` Konrad Dybcio 2024-03-07 19:05 ` [PATCH v6 5/7] arm64: dts: qcom: sdm845: Add DT nodes for the TBUs Georgi Djakov 2024-03-07 19:05 ` Georgi Djakov 2024-03-07 19:05 ` [PATCH v6 6/7] iommu/arm-smmu-qcom: Use the custom fault handler on more platforms Georgi Djakov 2024-03-07 19:05 ` Georgi Djakov 2024-03-07 19:05 ` [PATCH v6 7/7] arm64: dts: qcom: sc7280: Add DT nodes for the TBUs Georgi Djakov 2024-03-07 19:05 ` Georgi Djakov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20240307190525.395291-1-quic_c_gdjako@quicinc.com \ --to=quic_c_gdjako@quicinc.com \ --cc=andersson@kernel.org \ --cc=conor+dt@kernel.org \ --cc=devicetree@vger.kernel.org \ --cc=djakov@kernel.org \ --cc=iommu@lists.linux.dev \ --cc=joro@8bytes.org \ --cc=konrad.dybcio@linaro.org \ --cc=krzysztof.kozlowski+dt@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-arm-msm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=quic_cgoldswo@quicinc.com \ --cc=quic_pdaly@quicinc.com \ --cc=quic_sudaraja@quicinc.com \ --cc=quic_sukadev@quicinc.com \ --cc=robdclark@gmail.com \ --cc=robh+dt@kernel.org \ --cc=robin.murphy@arm.com \ --cc=will@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.