From patchwork Mon Jul 17 06:54:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 121092 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp958899vqt; Mon, 17 Jul 2023 00:33:03 -0700 (PDT) X-Google-Smtp-Source: APBJJlHNCoR5ta1jWYYUc07rYW9SX6Uhhkp9qOs42e8hRQp0aYD2o9DJVr+3uVtxW4B2nUUH77IA X-Received: by 2002:a17:90b:2242:b0:262:dec3:5477 with SMTP id hk2-20020a17090b224200b00262dec35477mr8826466pjb.7.1689579183009; Mon, 17 Jul 2023 00:33:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689579182; cv=none; d=google.com; s=arc-20160816; b=FI4qDiaq8Yq2uHPN8oiN4M0L+4qyWhwjc72Rl3IBx7uZ6GWCxCwpeLFkkU1tj4CNr8 EwVLeklx9xUx4/sGZ8mHu6GG5Wyrg630TMRlnLNx6kd3pn5icKLyJ4UmVKS/2u55AkN+ wcax/NlpAVso9sXS0hFTm7y++gS172UkJFUQZrIrwVUNnb3BIQuPMsaiMiEr+UGslXZb Q1s6UmzWAK4qqsrISdHgkfg1Yy/R9YmgMiN6Ad3fqZCrjzGl0Pw+ReNb3Uv31aOu0DJM 2qIJos0XG0dkvI0JuNXnLMQJxpZT9HCzyq4+AKmSr4rkNdNJ3KCKwWjL+hoRr/BwLsr7 zKXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=EIQbVzJDtQSLAjOmeG/MuTeyAG4mQGjdI8C010Z2eIw=; fh=oXSbR7qPhIu/pj3Zq0qWqQt6y9AXFbKKex0wUQ+Gvi4=; b=QqSd9Hlz8eRULsdjXmsctosZe4m2ImndTy8B/fyI9NKtIzzUxTE/tznsNTywodxdXK NXVh7pbjwm4FQYv4VaS+yFMV617UQAhvUZ0/pT9fgb74apHVlljRNr0s3JFRfO7UjaF4 Lo2HNuuT9yfGBoj2YTdKzW8TMd8MAuYxiJTEHO2u2tY6qU9IzMhjtQ2+sYwFzxlJMDiz eIkCWqvns1u59uV6tH5eCcgbF8LltFOB+359OisgTovvWANnyrViALMQUPq9SAJc5jXn edo9E8XdgBUAXGbKeP5Ftzla9Io2TRJRkLe/LQ6fu/ovDh1CBa5PdJkEsNrUoqFcHRjd wfdA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=UFMVPuRT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id fw22-20020a17090b129600b002676612ea3asi5322475pjb.132.2023.07.17.00.32.50; Mon, 17 Jul 2023 00:33:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=UFMVPuRT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229955AbjGQGzP (ORCPT + 99 others); Mon, 17 Jul 2023 02:55:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46996 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229791AbjGQGzM (ORCPT ); Mon, 17 Jul 2023 02:55:12 -0400 Received: from mail-pf1-x432.google.com (mail-pf1-x432.google.com [IPv6:2607:f8b0:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 39608E47 for ; Sun, 16 Jul 2023 23:55:11 -0700 (PDT) Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-66767d628e2so2566167b3a.2 for ; Sun, 16 Jul 2023 23:55:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1689576910; x=1692168910; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EIQbVzJDtQSLAjOmeG/MuTeyAG4mQGjdI8C010Z2eIw=; b=UFMVPuRT1vwBT6WcyU1rl+qgHXKkfojP83VPshcp2cwXes6ul+kRV05GZKAUFec+4h CneFfJe0sEDye/vnfoAuBBWb7u1OQ9XodxMCMi8juMsKL84ESG7j61XcHSDzHaYmeA1D aw6Xu1bQiHFPDYBRT7dVtbYPBMsKq5kmi+FA6tMVYpxMiSugjIadlhM6JmFAYfA1QAB9 TP6s1/9CwjQEnOISa0V3gOhlQoS4B8HPgfx1rNOAOwQ/7Me/tzJDe6AvC9Zrr2stkn2h Wma9tGAWzXXmjOckOWrkbCyKlHGnzdTvKo1T6EPPh+iwAKqEYtNRUQYyejXf2VxrOlVU 4wTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689576910; x=1692168910; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EIQbVzJDtQSLAjOmeG/MuTeyAG4mQGjdI8C010Z2eIw=; b=OwHfK9HitW/8cdNm/uaVWvq2TIiKauyDtqpIY2uthRITQuaoYrMSuthA3fQw0zzeQG 87Yly/zpVJdziRWEw09mz/nY8U6J3M6EWQ6llSlB0B+IPAN7IYtD3pnsGkOPXh/sio9d 8PiEXVZcE4i5TwFrV9uT2OJSOgYu1P4s9NVAEoDkjZ19aflW46Uw61Cgb4QtGY31pYwe N8GsqobSwbMsdtPP4euuSf0TV1tnVVeBZ+37Fy+W91qzrF+IxydmDXjZhkWM/NM1eWyC PF693u2UM4cYtS1HNLuSVqZnk8aoRMzPdXkl2/2ctMJBT6uvoexDIvkMbt1ILzLdbNkW kqyg== X-Gm-Message-State: ABy/qLbiWrHtdik2sU+eZkLy6isfeAV6SO9kESCtgEmONtnXAoXf7XyK dUX+NbweSurxmv8m6GkV/IGc X-Received: by 2002:a05:6a00:3989:b0:67a:a4d1:e70 with SMTP id fi9-20020a056a00398900b0067aa4d10e70mr10863192pfb.16.1689576910693; Sun, 16 Jul 2023 23:55:10 -0700 (PDT) Received: from localhost.localdomain ([117.193.215.209]) by smtp.gmail.com with ESMTPSA id x7-20020a62fb07000000b006675c242548sm11196422pfm.182.2023.07.16.23.55.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Jul 2023 23:55:10 -0700 (PDT) From: Manivannan Sadhasivam To: lpieralisi@kernel.org, kw@linux.com Cc: kishon@kernel.org, bhelgaas@google.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH v2 1/7] PCI: qcom-ep: Pass alignment restriction to the EPF core Date: Mon, 17 Jul 2023 12:24:53 +0530 Message-Id: <20230717065459.14138-2-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230717065459.14138-1-manivannan.sadhasivam@linaro.org> References: <20230717065459.14138-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771652181133071600 X-GMAIL-MSGID: 1771652181133071600 Qcom PCIe EP controllers have 4K alignment restriction for the outbound window address. Hence, pass this info to the EPF core so that the EPF drivers can make use of this info. Signed-off-by: Manivannan Sadhasivam --- drivers/pci/controller/dwc/pcie-qcom-ep.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/pci/controller/dwc/pcie-qcom-ep.c b/drivers/pci/controller/dwc/pcie-qcom-ep.c index 0fe7f06f2102..736be5bee458 100644 --- a/drivers/pci/controller/dwc/pcie-qcom-ep.c +++ b/drivers/pci/controller/dwc/pcie-qcom-ep.c @@ -706,6 +706,7 @@ static const struct pci_epc_features qcom_pcie_epc_features = { .core_init_notifier = true, .msi_capable = true, .msix_capable = false, + .align = SZ_4K, }; static const struct pci_epc_features * From patchwork Mon Jul 17 06:54:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 121085 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp956938vqt; Mon, 17 Jul 2023 00:27:39 -0700 (PDT) X-Google-Smtp-Source: APBJJlFHD/Oje5wDUY3wdZNBS0LxEwxjkFnHiXSkjDKnovL5KOxrK5dWxZOWfS5JupZDF2gC4MOv X-Received: by 2002:aa7:d74f:0:b0:51e:5603:5073 with SMTP id a15-20020aa7d74f000000b0051e56035073mr13139045eds.3.1689578859260; Mon, 17 Jul 2023 00:27:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689578859; cv=none; d=google.com; s=arc-20160816; b=K8veX6fMQHA59FEKzo7+xxVnGDxd/2KLMPr4aqjP6mUhWaJK8oDF0PdMf22fJzT/9D HcQhiBdsEWCtQITVABp4EBV8mnm8tCQ5AuwPSnzqCvQ7effKjTrvJaN5b5ntpbgPr5O1 +wwJ0W2egWyxpy122C5r6QrcFJNNmCgrN++7/akETQsLTMZNwUbGaIg8R8qbrKyiTc8j lzUVBYW7Pzjf+EbgwOKcz2h7ntTQk0wN2Kv1Ro2Pizc2b3+7pnGVMEilVSsqsrNBVeCE aOXNrGeJcyPBv4iedwXu9Lw/eOffbLuO30qMGRAFIGKghztDlT0v80Rm6LVaGFMU44pd Sfag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ywAnQod/2AqwT52mE4IcwiOccI2A/vlz7fI3wixXChQ=; fh=oXSbR7qPhIu/pj3Zq0qWqQt6y9AXFbKKex0wUQ+Gvi4=; b=aUxry7j9O8iHGOGM02iciyEXrqr9kJ4SXmA4iubREAPnmzwN8ganTnahJhmF3eneta k31neO16SLhL655pb6VPwDQvH+amIu/4lW4vrmfWapKQ0DjJCfKunKwJ1eMX2LhE7f0W qxTZpoP07mCGcesZuAlh6b5U3g/cCwzalKDsGbeyVvFp/TMS+RwmIIQAwwmQo7tfN/Ot ZBYLlL6GIq6ZBkw5LRXguyMdMWpSurIJGPy9ho5DHvyi6vGHzVizJmDF6s7uo/zSuIhB cywpmzbPrOrtFTDLrru+XkFveMtIHu2SHGAHdKmRtw8SnNEOIQobB2T+l4e0eFu+Ctnu EOtQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=COxSewSo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g26-20020aa7d1da000000b0051e012dfcf1si14167660edp.292.2023.07.17.00.27.16; Mon, 17 Jul 2023 00:27:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=COxSewSo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229964AbjGQGzX (ORCPT + 99 others); Mon, 17 Jul 2023 02:55:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47076 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229978AbjGQGzP (ORCPT ); Mon, 17 Jul 2023 02:55:15 -0400 Received: from mail-oo1-xc2d.google.com (mail-oo1-xc2d.google.com [IPv6:2607:f8b0:4864:20::c2d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5D8AAE71 for ; Sun, 16 Jul 2023 23:55:14 -0700 (PDT) Received: by mail-oo1-xc2d.google.com with SMTP id 006d021491bc7-56352146799so2863238eaf.3 for ; Sun, 16 Jul 2023 23:55:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1689576913; x=1692168913; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ywAnQod/2AqwT52mE4IcwiOccI2A/vlz7fI3wixXChQ=; b=COxSewSo57T9BYc2XB2RPZ4S4/p9vHVhb/9T0vJbWnE3ejosuOiGQqop/S61n/1m3J gkiP8ON7pKLZ4ZVgLDBQauxT8OH/GamXdZYAaroBax+c+pJyxkwIDgHV4BvBvU9cz9gC ORuA9rzT+Y+pVl7xVbwIs18jJZgMBzv68WrrTbl3zb0fVEbvL9sLnd0o7OinkY7ktJHR IpPkpcEIYO0/QaLZJB1U2axaO88F7fOPuIflkBqIFtuV0HCdprTqD5/abDDBplGCj/Ux w8aGmGaoDRFuS8oyYO93MLY3hceXm7PI38z7O0T9iTutiJPqwfc8HRnO4u/bLl7wJUjM XbQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689576913; x=1692168913; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ywAnQod/2AqwT52mE4IcwiOccI2A/vlz7fI3wixXChQ=; b=EtS9gQMAQhzD1nF4ylEtUBZJYkYnqoHDOLmq9uO5YJLPU+IZuWFZs+WUajaCk5Vh3B +JGhcbgzn6/fYEQ1Otnneo5x+DDyWZTCbvVhff2Tyl4PuI7Wwh6TM77jKUPdKwE1049v cdfWgZ/pGFOssZ/exeklHN3RV4jYDLEdQUvFAGny0onmpDI3Sq+GFxdKhr02r/yazi0H N6bawHx+ct7TuI0HVCdgw/RGvuVaM9Q0tIDbm81gz4usvtkHd7S02DXXNuWvchwnZWNG T+d7bRKMHWaCTR89V2NEsU06d0MYFMrMtQFJR9gfbh9E5i39KVHzxKV58bo7+j+WjxgS HG7Q== X-Gm-Message-State: ABy/qLZphuAyeP8PXfxuDePuORMCeXx/rA6dqmxkj+Qs+uh5QpTysjxt XiD3waJ1vGnKCxS5us45/fkFxA4RPo7QVv4BoA== X-Received: by 2002:a05:6358:9184:b0:134:c37f:4b64 with SMTP id j4-20020a056358918400b00134c37f4b64mr8163188rwa.30.1689576913646; Sun, 16 Jul 2023 23:55:13 -0700 (PDT) Received: from localhost.localdomain ([117.193.215.209]) by smtp.gmail.com with ESMTPSA id x7-20020a62fb07000000b006675c242548sm11196422pfm.182.2023.07.16.23.55.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Jul 2023 23:55:13 -0700 (PDT) From: Manivannan Sadhasivam To: lpieralisi@kernel.org, kw@linux.com Cc: kishon@kernel.org, bhelgaas@google.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH v2 2/7] PCI: epf-mhi: Make use of the alignment restriction from EPF core Date: Mon, 17 Jul 2023 12:24:54 +0530 Message-Id: <20230717065459.14138-3-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230717065459.14138-1-manivannan.sadhasivam@linaro.org> References: <20230717065459.14138-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771651842054849568 X-GMAIL-MSGID: 1771651842054849568 Instead of hardcoding the alignment restriction in the EPF_MHI driver, make use of the info available from the EPF core that reflects the alignment restriction of the endpoint controller. For this purpose, let's introduce the get_align_offset() static function. Signed-off-by: Manivannan Sadhasivam --- drivers/pci/endpoint/functions/pci-epf-mhi.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-mhi.c b/drivers/pci/endpoint/functions/pci-epf-mhi.c index 9c1f5a154fbd..bb7de6884824 100644 --- a/drivers/pci/endpoint/functions/pci-epf-mhi.c +++ b/drivers/pci/endpoint/functions/pci-epf-mhi.c @@ -102,6 +102,11 @@ struct pci_epf_mhi { int irq; }; +static size_t get_align_offset(struct pci_epc *epc, u64 addr) +{ + return addr % epc->mem->window.page_size; +} + static int __pci_epf_mhi_alloc_map(struct mhi_ep_cntrl *mhi_cntrl, u64 pci_addr, phys_addr_t *paddr, void __iomem **vaddr, size_t offset, size_t size) @@ -134,7 +139,7 @@ static int pci_epf_mhi_alloc_map(struct mhi_ep_cntrl *mhi_cntrl, u64 pci_addr, { struct pci_epf_mhi *epf_mhi = to_epf_mhi(mhi_cntrl); struct pci_epc *epc = epf_mhi->epf->epc; - size_t offset = pci_addr & (epc->mem->window.page_size - 1); + size_t offset = get_align_offset(epc, pci_addr); return __pci_epf_mhi_alloc_map(mhi_cntrl, pci_addr, paddr, vaddr, offset, size); @@ -161,7 +166,7 @@ static void pci_epf_mhi_unmap_free(struct mhi_ep_cntrl *mhi_cntrl, u64 pci_addr, struct pci_epf_mhi *epf_mhi = to_epf_mhi(mhi_cntrl); struct pci_epf *epf = epf_mhi->epf; struct pci_epc *epc = epf->epc; - size_t offset = pci_addr & (epc->mem->window.page_size - 1); + size_t offset = get_align_offset(epc, pci_addr); __pci_epf_mhi_unmap_free(mhi_cntrl, pci_addr, paddr, vaddr, offset, size); @@ -185,7 +190,8 @@ static int pci_epf_mhi_read_from_host(struct mhi_ep_cntrl *mhi_cntrl, u64 from, void *to, size_t size) { struct pci_epf_mhi *epf_mhi = to_epf_mhi(mhi_cntrl); - size_t offset = from % SZ_4K; + struct pci_epc *epc = epf_mhi->epf->epc; + size_t offset = get_align_offset(epc, from); void __iomem *tre_buf; phys_addr_t tre_phys; int ret; @@ -213,7 +219,8 @@ static int pci_epf_mhi_write_to_host(struct mhi_ep_cntrl *mhi_cntrl, void *from, u64 to, size_t size) { struct pci_epf_mhi *epf_mhi = to_epf_mhi(mhi_cntrl); - size_t offset = to % SZ_4K; + struct pci_epc *epc = epf_mhi->epf->epc; + size_t offset = get_align_offset(epc, to); void __iomem *tre_buf; phys_addr_t tre_phys; int ret; From patchwork Mon Jul 17 06:54:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 121073 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp948592vqt; Mon, 17 Jul 2023 00:03:51 -0700 (PDT) X-Google-Smtp-Source: APBJJlEg2yGoNNYhw/42YV/h5wFn55fvYri+si5VsxIyXcLrXjJI+ol1KdjVDxJ0V8qj1OrYkyi9 X-Received: by 2002:a17:902:ea82:b0:1ad:f138:b2f6 with SMTP id x2-20020a170902ea8200b001adf138b2f6mr10158608plb.16.1689577431206; Mon, 17 Jul 2023 00:03:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689577431; cv=none; d=google.com; s=arc-20160816; b=Vhcz3xZCB3PDPC4NFeQlkJEE6a2TnistVJcdCYatmDwzsEc3ZjiFNn6oTayk+vAeyZ Bfqy0bUnp6FYik9/6tqREWtktgj8wiNLYz5FS4R1XcpQvbRkkZ1Dii3igmFgKy4mQQN/ elZIqSCzxDSMu4wbAtaLkuG8+LABF62iuGiRXTSj6RODKP0aYbQ/q+3M1SPvvW7Ccras bUAUYB2NCBkx4tqdSlKMgIh3upRIshfp+OYkSlmgRLS/ag+yQe+6Nty9JNPWsVx9m8wW TlADnTm+m3GEgttelpj2ZNp+L6k4sa5c2VonhTT0xa1rfS+vsn350OYeE9A4jyQ1ZrQn dXtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=mb9LlQcGjFjNwM13Qknh1i1JQ2UWaF+8pLaINltAQNI=; fh=oXSbR7qPhIu/pj3Zq0qWqQt6y9AXFbKKex0wUQ+Gvi4=; b=lHV45+HfcI4HnyzzHusCQxc9rotDTmLOl35Fmi3Lv6AJ2dv7Impd9bA6AhJsJ8YWoM kIG5JYfQK2PN2N2/P2FLIcQGf/KTRLKvKs4wRizyuJS0ftv1wKka8s5YiPOhH4ZmoKzo AdySDtHWHtc1BTAi8BLcSJyA2GIGpWB8NRP/gUmh/m1V9mT7nJzNHnaLaMGPgiKdclBu lcQ+NsBkXt4LISBtzBGTH5x50U0DJw7jG3mVeewAEf1ndeDSPaanF1fNWKFLPa7O3JBA ZEyziXHhjbsWsAnAe+eiH1sWb5eZpltr8AFHU5vd3eQRPF+Q9T8AmGT4TAB4lyBIX4Xu Odag== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=DbjIHxX8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q1-20020a170902dac100b001b9d335180dsi12036041plx.618.2023.07.17.00.03.37; Mon, 17 Jul 2023 00:03:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=DbjIHxX8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230008AbjGQGz0 (ORCPT + 99 others); Mon, 17 Jul 2023 02:55:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47064 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230004AbjGQGzV (ORCPT ); Mon, 17 Jul 2023 02:55:21 -0400 Received: from mail-pf1-x429.google.com (mail-pf1-x429.google.com [IPv6:2607:f8b0:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4625310DE for ; Sun, 16 Jul 2023 23:55:17 -0700 (PDT) Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-668704a5b5bso4273346b3a.0 for ; Sun, 16 Jul 2023 23:55:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1689576916; x=1692168916; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mb9LlQcGjFjNwM13Qknh1i1JQ2UWaF+8pLaINltAQNI=; b=DbjIHxX88jeFICr7g1j9fsD29rDdWOtUu2IOiOfD/bNC6WuiQrRMtIVaBgJjv7sHnE zUZ79J9y91fEZuRsoi/nAN6P4NuEfG2LPGXl+SiSEykzobOtG0XNAyuV8UGrtFDLn4nT Q6tgZK8O3h8/Ea2XRXAk9ESvVOaqkn7pQYRXDBDQzh91/XKTDVvEyOPqxlv8Het/dEzd nDi3M2z7kLnCZmh3Hv+3DG+x+E+OsGXWWaA52UONNq6MbNjqcWM31U2zkMpD4E57sIHI /x6idkHrLgIA1QgMvAaoIZkJIW7xLItLZ0UYNoLyMqtyXXJcRq1RzyTK8tdvC+tBY7Pl 6ryw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689576916; x=1692168916; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mb9LlQcGjFjNwM13Qknh1i1JQ2UWaF+8pLaINltAQNI=; b=iUgJ1hsRu/xRnoEkBov3CMIatCc8SwROnPNbgq0OtA6guaqKiGAYX7oodsXTcvTSa0 +S8asQ+G2mDFfNTqf6IJc0FnP9Rv43QNg1G4Jc1MbmQmw2aR7VASk0qq+XdpUMSnsVwg 3gCtN0BSLEdLnr83i2yxMc+A1322Q4n7R5gaMIjPzNYovSdFlKbJUeGyN++h8I2p3B5v TR07Av7Z0aeksIkkmB8kS88fW+BgaJHW3lFoOgM2+b/qRuahP40kwbE/AIIZqWLdvhwT lwBU3tnxbW0QyxAHTwHfdmmuQoCgxl4B/Kh8ECaOaThctiSxbSlEV9Fb0UaDobN6KdFp qPJg== X-Gm-Message-State: ABy/qLbxWToMGt//aOirtlGtUgJ7H/C2T79NCjEPZg3LOkiqrrbKlWLi 9+XewtuOJBONQMqHfSG7XuYj X-Received: by 2002:a05:6a21:585:b0:12f:382d:2a37 with SMTP id lw5-20020a056a21058500b0012f382d2a37mr10650798pzb.15.1689576916635; Sun, 16 Jul 2023 23:55:16 -0700 (PDT) Received: from localhost.localdomain ([117.193.215.209]) by smtp.gmail.com with ESMTPSA id x7-20020a62fb07000000b006675c242548sm11196422pfm.182.2023.07.16.23.55.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Jul 2023 23:55:16 -0700 (PDT) From: Manivannan Sadhasivam To: lpieralisi@kernel.org, kw@linux.com Cc: kishon@kernel.org, bhelgaas@google.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH v2 3/7] PCI: qcom-ep: Add eDMA support Date: Mon, 17 Jul 2023 12:24:55 +0530 Message-Id: <20230717065459.14138-4-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230717065459.14138-1-manivannan.sadhasivam@linaro.org> References: <20230717065459.14138-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771650344838090019 X-GMAIL-MSGID: 1771650344838090019 Qualcomm PCIe Endpoint controllers have the in-built Embedded DMA (eDMA) peripheral for offloading the data transfer between PCIe bus and memory. Let's add the support for it by enabling the eDMA IRQ in the driver. Rest of the functionality will be handled by the eDMA DMA Engine driver. Since the eDMA on Qualcomm platforms only uses a single IRQ for all channels, use 1 for edma.nr_irqs. Signed-off-by: Manivannan Sadhasivam --- drivers/pci/controller/dwc/pcie-qcom-ep.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pcie-qcom-ep.c b/drivers/pci/controller/dwc/pcie-qcom-ep.c index 736be5bee458..1baec81183b6 100644 --- a/drivers/pci/controller/dwc/pcie-qcom-ep.c +++ b/drivers/pci/controller/dwc/pcie-qcom-ep.c @@ -74,6 +74,7 @@ #define PARF_INT_ALL_PLS_ERR BIT(15) #define PARF_INT_ALL_PME_LEGACY BIT(16) #define PARF_INT_ALL_PLS_PME BIT(17) +#define PARF_INT_ALL_EDMA BIT(22) /* PARF_BDF_TO_SID_CFG register fields */ #define PARF_BDF_TO_SID_BYPASS BIT(0) @@ -395,7 +396,7 @@ static int qcom_pcie_perst_deassert(struct dw_pcie *pci) writel_relaxed(0, pcie_ep->parf + PARF_INT_ALL_MASK); val = PARF_INT_ALL_LINK_DOWN | PARF_INT_ALL_BME | PARF_INT_ALL_PM_TURNOFF | PARF_INT_ALL_DSTATE_CHANGE | - PARF_INT_ALL_LINK_UP; + PARF_INT_ALL_LINK_UP | PARF_INT_ALL_EDMA; writel_relaxed(val, pcie_ep->parf + PARF_INT_ALL_MASK); ret = dw_pcie_ep_init_complete(&pcie_ep->pci.ep); @@ -744,6 +745,7 @@ static int qcom_pcie_ep_probe(struct platform_device *pdev) pcie_ep->pci.dev = dev; pcie_ep->pci.ops = &pci_ops; pcie_ep->pci.ep.ops = &pci_ep_ops; + pcie_ep->pci.edma.nr_irqs = 1; platform_set_drvdata(pdev, pcie_ep); ret = qcom_pcie_ep_get_resources(pdev, pcie_ep); From patchwork Mon Jul 17 06:54:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 121090 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp958796vqt; Mon, 17 Jul 2023 00:32:45 -0700 (PDT) X-Google-Smtp-Source: APBJJlFMVxSfbFSTznok6P2ZpkEBGlYeBLQaanipqWJeTGZRTV5z7tASiHTMbU8xflO5O2K6O5Om X-Received: by 2002:a17:903:41cb:b0:1ac:aba5:7885 with SMTP id u11-20020a17090341cb00b001acaba57885mr13391899ple.47.1689579165124; Mon, 17 Jul 2023 00:32:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689579165; cv=none; d=google.com; s=arc-20160816; b=Pl4Qm1b17dvFp/imnUCOMN1OA/wuc4b+l2cGmpCZN3upmBWRlsAcbkZ2Re4ery6Bo5 Iniry9GHG9NfjO84+U3S7tcKc2s4vJ6pSsDFc6Y1J2BW40ejrrP0E5Mo7TZYp/JXItVC s2VDRlY9EGvbz7agDd1bf6HpkRo+Y5g87YHGSAVYmWeo7ZnST2X9HjAq49mritMQd31t 0ucRxqtHmJW3jjIkZ+8G6dMYJiHaJSTe6CflIcYFVSq6zLG5krbFWBOYBQ9Ve7LBqrSz EHRenIHANURGqgOlIrNIlxRruB8fO4uHd/EstnBy/ONE3JjAWnku79JQnwfCrkXecDiu X4tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=hjtjOezI/tJCSlnQI9LmJZKtZfC531WE24MAnZrZ1ew=; fh=oXSbR7qPhIu/pj3Zq0qWqQt6y9AXFbKKex0wUQ+Gvi4=; b=GcxCJEhETiBgo2xSRDGX6qHYPUFA72uaRTlW8vB6hDLqz0p5m4xzyrLMlhexf1AxB9 FJJcf5pl0QLzfHs58YrRfvbzrELJPNChcZQMEikXwVWxAQr35sxkqRnpnDRysDCAxPQR a9YxjMMgdxqIqTaMy5T8ny6RmFv7NLI/Qvxs4rRbhen71DR8uFUR9dekg/uxMVLzDD9J 4n1xVcGzgDUJyqFYRHgTIr7G7xFil3H3c/x4v762IQaPPHjQ70hjR6fiJwely93X93Iu QCllhQjWsgF4Ot59go8jiQ3DJM+Ye/Z/f1BteQ+l50/7lV+RYMj69WUu7ezJUz5CxU7o wIEg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=DwtVNkdh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id kz13-20020a170902f9cd00b001b9ca3550c0si3739451plb.52.2023.07.17.00.32.31; Mon, 17 Jul 2023 00:32:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=DwtVNkdh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230070AbjGQGzi (ORCPT + 99 others); Mon, 17 Jul 2023 02:55:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47226 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229973AbjGQGzZ (ORCPT ); Mon, 17 Jul 2023 02:55:25 -0400 Received: from mail-pf1-x42f.google.com (mail-pf1-x42f.google.com [IPv6:2607:f8b0:4864:20::42f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 77A4C170A for ; Sun, 16 Jul 2023 23:55:20 -0700 (PDT) Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-6686c74183cso4262873b3a.1 for ; Sun, 16 Jul 2023 23:55:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1689576919; x=1692168919; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hjtjOezI/tJCSlnQI9LmJZKtZfC531WE24MAnZrZ1ew=; b=DwtVNkdhmkQfgM/0GPujCvSZ/8i2A7UkYKN5NNNFSs6fzjfTx8nVe0CcindieQcJYE 29UHAFL1tKAIuK3tXbi8THx4HzmyCKaoJfoNK1zquw/0MhL73VULrydxaXFc4Jx2ecc7 0QzrYDHJCOm5kupiX1Gf1teg+q4lqN/tvU5XwYG6ZXJPBHvPuuggx1t5/cQ1mw6KNXqH dlxVIEQfVIB0NxMhKgStrOkIMWG3AllBi/PcRNJHZdXgUeW+DSjfTrFXLFaLJo+2QmJA Q+lCIKXVox/OGeGtul7Kae6WuAVGWY8GyNmvLQxZwi1cLpysWtcUH+Dz2gBEDCvKXVK2 8SUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689576919; x=1692168919; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hjtjOezI/tJCSlnQI9LmJZKtZfC531WE24MAnZrZ1ew=; b=OJFde0H/wjZoWYoiHNbJUU6I7MFVx9G3HtWxDlqr/fOELCUk8UW6rnMww0O/fw8sNs JJzhtYaYhmmom+q1470YnIS8QPy4mMAD30C8CZZBdG0U6fuEsDzg5EhtYevgCi1UZ2AT euej/6h3fXq7OBh57eFuHMDW14Ln/Gj+r0EazYM+iQRY6HHlEIRbhWPhKWjRzyPU44PF WC0ce6h4dWOb/73j7eXRVvBGSBWfdYl3QUm3fpEDQQlU6oEuiBku8NIiavAcOKpQkc4F EkAfh8msyJPzBSW4bOf9wLVrbzb6sEgQBAwRdBe2Lm1XqXWgPR03aWkNM+Q7XTnDuMPe 9Ocw== X-Gm-Message-State: ABy/qLZOzF4bUgtLNmr3vLLIsZpbDfQcG/NQkTmRiEXlmqn9EXByCoVT eWDQb03KEzp+PeZcbe6Shpeh X-Received: by 2002:a05:6a00:1951:b0:668:731b:517e with SMTP id s17-20020a056a00195100b00668731b517emr14299584pfk.24.1689576919541; Sun, 16 Jul 2023 23:55:19 -0700 (PDT) Received: from localhost.localdomain ([117.193.215.209]) by smtp.gmail.com with ESMTPSA id x7-20020a62fb07000000b006675c242548sm11196422pfm.182.2023.07.16.23.55.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Jul 2023 23:55:19 -0700 (PDT) From: Manivannan Sadhasivam To: lpieralisi@kernel.org, kw@linux.com Cc: kishon@kernel.org, bhelgaas@google.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH v2 4/7] PCI: epf-mhi: Add eDMA support Date: Mon, 17 Jul 2023 12:24:56 +0530 Message-Id: <20230717065459.14138-5-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230717065459.14138-1-manivannan.sadhasivam@linaro.org> References: <20230717065459.14138-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771652162630554176 X-GMAIL-MSGID: 1771652162630554176 Add support for Embedded DMA (eDMA) available in the Designware PCIe IP to transfer the MHI buffers between host and the endpoint. Use of eDMA helps in achieving greater throughput as the transfers are offloaded from CPUs. For differentiating the iATU and eDMA APIs, the pci_epf_mhi_{read/write} APIs are renamed to pci_epf_mhi_iatu_{read/write} and separate eDMA specific APIs pci_epf_mhi_edma_{read/write} are introduced. Platforms that require eDMA support can pass the MHI_EPF_USE_DMA flag through pci_epf_mhi_ep_info. Signed-off-by: Manivannan Sadhasivam --- drivers/pci/endpoint/functions/pci-epf-mhi.c | 237 ++++++++++++++++++- 1 file changed, 231 insertions(+), 6 deletions(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-mhi.c b/drivers/pci/endpoint/functions/pci-epf-mhi.c index bb7de6884824..abebe44d0061 100644 --- a/drivers/pci/endpoint/functions/pci-epf-mhi.c +++ b/drivers/pci/endpoint/functions/pci-epf-mhi.c @@ -6,8 +6,10 @@ * Author: Manivannan Sadhasivam */ +#include #include #include +#include #include #include #include @@ -16,6 +18,9 @@ #define to_epf_mhi(cntrl) container_of(cntrl, struct pci_epf_mhi, cntrl) +/* Platform specific flags */ +#define MHI_EPF_USE_DMA BIT(0) + struct pci_epf_mhi_ep_info { const struct mhi_ep_cntrl_config *config; struct pci_epf_header *epf_header; @@ -23,6 +28,7 @@ struct pci_epf_mhi_ep_info { u32 epf_flags; u32 msi_count; u32 mru; + u32 flags; }; #define MHI_EP_CHANNEL_CONFIG(ch_num, ch_name, direction) \ @@ -98,6 +104,8 @@ struct pci_epf_mhi { struct mutex lock; void __iomem *mmio; resource_size_t mmio_phys; + struct dma_chan *dma_chan_tx; + struct dma_chan *dma_chan_rx; u32 mmio_size; int irq; }; @@ -186,8 +194,8 @@ static void pci_epf_mhi_raise_irq(struct mhi_ep_cntrl *mhi_cntrl, u32 vector) vector + 1); } -static int pci_epf_mhi_read_from_host(struct mhi_ep_cntrl *mhi_cntrl, u64 from, - void *to, size_t size) +static int pci_epf_mhi_iatu_read(struct mhi_ep_cntrl *mhi_cntrl, u64 from, + void *to, size_t size) { struct pci_epf_mhi *epf_mhi = to_epf_mhi(mhi_cntrl); struct pci_epc *epc = epf_mhi->epf->epc; @@ -215,8 +223,8 @@ static int pci_epf_mhi_read_from_host(struct mhi_ep_cntrl *mhi_cntrl, u64 from, return 0; } -static int pci_epf_mhi_write_to_host(struct mhi_ep_cntrl *mhi_cntrl, - void *from, u64 to, size_t size) +static int pci_epf_mhi_iatu_write(struct mhi_ep_cntrl *mhi_cntrl, + void *from, u64 to, size_t size) { struct pci_epf_mhi *epf_mhi = to_epf_mhi(mhi_cntrl); struct pci_epc *epc = epf_mhi->epf->epc; @@ -244,6 +252,200 @@ static int pci_epf_mhi_write_to_host(struct mhi_ep_cntrl *mhi_cntrl, return 0; } +static void pci_epf_mhi_dma_callback(void *param) +{ + complete(param); +} + +static int pci_epf_mhi_edma_read(struct mhi_ep_cntrl *mhi_cntrl, u64 from, + void *to, size_t size) +{ + struct pci_epf_mhi *epf_mhi = to_epf_mhi(mhi_cntrl); + struct device *dma_dev = epf_mhi->epf->epc->dev.parent; + struct dma_chan *chan = epf_mhi->dma_chan_rx; + struct device *dev = &epf_mhi->epf->dev; + DECLARE_COMPLETION_ONSTACK(complete); + struct dma_async_tx_descriptor *desc; + struct dma_slave_config config = {}; + dma_cookie_t cookie; + dma_addr_t dst_addr; + int ret; + + mutex_lock(&epf_mhi->lock); + + config.direction = DMA_DEV_TO_MEM; + config.src_addr = from; + + ret = dmaengine_slave_config(chan, &config); + if (ret) { + dev_err(dev, "Failed to configure DMA channel\n"); + goto err_unlock; + } + + dst_addr = dma_map_single(dma_dev, to, size, DMA_FROM_DEVICE); + ret = dma_mapping_error(dma_dev, dst_addr); + if (ret) { + dev_err(dev, "Failed to map remote memory\n"); + goto err_unlock; + } + + desc = dmaengine_prep_slave_single(chan, dst_addr, size, DMA_DEV_TO_MEM, + DMA_CTRL_ACK | DMA_PREP_INTERRUPT); + if (!desc) { + dev_err(dev, "Failed to prepare DMA\n"); + ret = -EIO; + goto err_unmap; + } + + desc->callback = pci_epf_mhi_dma_callback; + desc->callback_param = &complete; + + cookie = dmaengine_submit(desc); + ret = dma_submit_error(cookie); + if (ret) { + dev_err(dev, "Failed to do DMA submit\n"); + goto err_unmap; + } + + dma_async_issue_pending(chan); + ret = wait_for_completion_timeout(&complete, msecs_to_jiffies(1000)); + if (!ret) { + dev_err(dev, "DMA transfer timeout\n"); + dmaengine_terminate_sync(chan); + ret = -ETIMEDOUT; + } + +err_unmap: + dma_unmap_single(dma_dev, dst_addr, size, DMA_FROM_DEVICE); +err_unlock: + mutex_unlock(&epf_mhi->lock); + + return ret; +} + +static int pci_epf_mhi_edma_write(struct mhi_ep_cntrl *mhi_cntrl, void *from, + u64 to, size_t size) +{ + struct pci_epf_mhi *epf_mhi = to_epf_mhi(mhi_cntrl); + struct device *dma_dev = epf_mhi->epf->epc->dev.parent; + struct dma_chan *chan = epf_mhi->dma_chan_tx; + struct device *dev = &epf_mhi->epf->dev; + DECLARE_COMPLETION_ONSTACK(complete); + struct dma_async_tx_descriptor *desc; + struct dma_slave_config config = {}; + dma_cookie_t cookie; + dma_addr_t src_addr; + int ret; + + mutex_lock(&epf_mhi->lock); + + config.direction = DMA_MEM_TO_DEV; + config.dst_addr = to; + + ret = dmaengine_slave_config(chan, &config); + if (ret) { + dev_err(dev, "Failed to configure DMA channel\n"); + goto err_unlock; + } + + src_addr = dma_map_single(dma_dev, from, size, DMA_TO_DEVICE); + ret = dma_mapping_error(dma_dev, src_addr); + if (ret) { + dev_err(dev, "Failed to map remote memory\n"); + goto err_unlock; + } + + desc = dmaengine_prep_slave_single(chan, src_addr, size, DMA_MEM_TO_DEV, + DMA_CTRL_ACK | DMA_PREP_INTERRUPT); + if (!desc) { + dev_err(dev, "Failed to prepare DMA\n"); + ret = -EIO; + goto err_unmap; + } + + desc->callback = pci_epf_mhi_dma_callback; + desc->callback_param = &complete; + + cookie = dmaengine_submit(desc); + ret = dma_submit_error(cookie); + if (ret) { + dev_err(dev, "Failed to do DMA submit\n"); + goto err_unmap; + } + + dma_async_issue_pending(chan); + ret = wait_for_completion_timeout(&complete, msecs_to_jiffies(1000)); + if (!ret) { + dev_err(dev, "DMA transfer timeout\n"); + dmaengine_terminate_sync(chan); + ret = -ETIMEDOUT; + } + +err_unmap: + dma_unmap_single(dma_dev, src_addr, size, DMA_FROM_DEVICE); +err_unlock: + mutex_unlock(&epf_mhi->lock); + + return ret; +} + +struct epf_dma_filter { + struct device *dev; + u32 dma_mask; +}; + +static bool pci_epf_mhi_filter(struct dma_chan *chan, void *node) +{ + struct epf_dma_filter *filter = node; + struct dma_slave_caps caps; + + memset(&caps, 0, sizeof(caps)); + dma_get_slave_caps(chan, &caps); + + return chan->device->dev == filter->dev && filter->dma_mask & + caps.directions; +} + +static int pci_epf_mhi_dma_init(struct pci_epf_mhi *epf_mhi) +{ + struct device *dma_dev = epf_mhi->epf->epc->dev.parent; + struct device *dev = &epf_mhi->epf->dev; + struct epf_dma_filter filter; + dma_cap_mask_t mask; + + dma_cap_zero(mask); + dma_cap_set(DMA_SLAVE, mask); + + filter.dev = dma_dev; + filter.dma_mask = BIT(DMA_MEM_TO_DEV); + epf_mhi->dma_chan_tx = dma_request_channel(mask, pci_epf_mhi_filter, + &filter); + if (IS_ERR_OR_NULL(epf_mhi->dma_chan_tx)) { + dev_err(dev, "Failed to request tx channel\n"); + return -ENODEV; + } + + filter.dma_mask = BIT(DMA_DEV_TO_MEM); + epf_mhi->dma_chan_rx = dma_request_channel(mask, pci_epf_mhi_filter, + &filter); + if (IS_ERR_OR_NULL(epf_mhi->dma_chan_rx)) { + dev_err(dev, "Failed to request rx channel\n"); + dma_release_channel(epf_mhi->dma_chan_tx); + epf_mhi->dma_chan_tx = NULL; + return -ENODEV; + } + + return 0; +} + +static void pci_epf_mhi_dma_deinit(struct pci_epf_mhi *epf_mhi) +{ + dma_release_channel(epf_mhi->dma_chan_tx); + dma_release_channel(epf_mhi->dma_chan_rx); + epf_mhi->dma_chan_tx = NULL; + epf_mhi->dma_chan_rx = NULL; +} + static int pci_epf_mhi_core_init(struct pci_epf *epf) { struct pci_epf_mhi *epf_mhi = epf_get_drvdata(epf); @@ -289,6 +491,14 @@ static int pci_epf_mhi_link_up(struct pci_epf *epf) struct device *dev = &epf->dev; int ret; + if (info->flags & MHI_EPF_USE_DMA) { + ret = pci_epf_mhi_dma_init(epf_mhi); + if (ret) { + dev_err(dev, "Failed to initialize DMA: %d\n", ret); + return ret; + } + } + mhi_cntrl->mmio = epf_mhi->mmio; mhi_cntrl->irq = epf_mhi->irq; mhi_cntrl->mru = info->mru; @@ -298,13 +508,20 @@ static int pci_epf_mhi_link_up(struct pci_epf *epf) mhi_cntrl->raise_irq = pci_epf_mhi_raise_irq; mhi_cntrl->alloc_map = pci_epf_mhi_alloc_map; mhi_cntrl->unmap_free = pci_epf_mhi_unmap_free; - mhi_cntrl->read_from_host = pci_epf_mhi_read_from_host; - mhi_cntrl->write_to_host = pci_epf_mhi_write_to_host; + if (info->flags & MHI_EPF_USE_DMA) { + mhi_cntrl->read_from_host = pci_epf_mhi_edma_read; + mhi_cntrl->write_to_host = pci_epf_mhi_edma_write; + } else { + mhi_cntrl->read_from_host = pci_epf_mhi_iatu_read; + mhi_cntrl->write_to_host = pci_epf_mhi_iatu_write; + } /* Register the MHI EP controller */ ret = mhi_ep_register_controller(mhi_cntrl, info->config); if (ret) { dev_err(dev, "Failed to register MHI EP controller: %d\n", ret); + if (info->flags & MHI_EPF_USE_DMA) + pci_epf_mhi_dma_deinit(epf_mhi); return ret; } @@ -314,10 +531,13 @@ static int pci_epf_mhi_link_up(struct pci_epf *epf) static int pci_epf_mhi_link_down(struct pci_epf *epf) { struct pci_epf_mhi *epf_mhi = epf_get_drvdata(epf); + const struct pci_epf_mhi_ep_info *info = epf_mhi->info; struct mhi_ep_cntrl *mhi_cntrl = &epf_mhi->mhi_cntrl; if (mhi_cntrl->mhi_dev) { mhi_ep_power_down(mhi_cntrl); + if (info->flags & MHI_EPF_USE_DMA) + pci_epf_mhi_dma_deinit(epf_mhi); mhi_ep_unregister_controller(mhi_cntrl); } @@ -327,6 +547,7 @@ static int pci_epf_mhi_link_down(struct pci_epf *epf) static int pci_epf_mhi_bme(struct pci_epf *epf) { struct pci_epf_mhi *epf_mhi = epf_get_drvdata(epf); + const struct pci_epf_mhi_ep_info *info = epf_mhi->info; struct mhi_ep_cntrl *mhi_cntrl = &epf_mhi->mhi_cntrl; struct device *dev = &epf->dev; int ret; @@ -339,6 +560,8 @@ static int pci_epf_mhi_bme(struct pci_epf *epf) ret = mhi_ep_power_up(mhi_cntrl); if (ret) { dev_err(dev, "Failed to power up MHI EP: %d\n", ret); + if (info->flags & MHI_EPF_USE_DMA) + pci_epf_mhi_dma_deinit(epf_mhi); mhi_ep_unregister_controller(mhi_cntrl); } } @@ -389,6 +612,8 @@ static void pci_epf_mhi_unbind(struct pci_epf *epf) */ if (mhi_cntrl->mhi_dev) { mhi_ep_power_down(mhi_cntrl); + if (info->flags & MHI_EPF_USE_DMA) + pci_epf_mhi_dma_deinit(epf_mhi); mhi_ep_unregister_controller(mhi_cntrl); } From patchwork Mon Jul 17 06:54:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 121082 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp954414vqt; Mon, 17 Jul 2023 00:19:30 -0700 (PDT) X-Google-Smtp-Source: APBJJlG4SM3jXsDoqwMqHmmBUhI9YgX8Q04c+unAf2DPKXemBnOZRmrzKacozYT2nSorTMP/WP9y X-Received: by 2002:a05:6512:b0f:b0:4fb:5dd5:715c with SMTP id w15-20020a0565120b0f00b004fb5dd5715cmr7555299lfu.4.1689578370057; Mon, 17 Jul 2023 00:19:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689578370; cv=none; d=google.com; s=arc-20160816; b=VJAlHLhvARPTmpJD/r6P+ADDdo7F7nJsVzC9OfCt++qYLdsxq6pw/yrfjohnO8f6Aj zUS+fyfd6As2EF2pSFcI6cCV8W1XUDRj42u80tZIp8squD7YWO9UZ417byp93cOzUm1U gt/riM4kMcLHFkm4AGRB/iWBFhHZ0VgJ1pk0aOQezASd1tCjK0e4Wtnrh09PsUL5/+AE sZNWL8EjYP/f0cXpx3PxyPokG+AqInCwq1KtOIApq0lbIZXwXggkKLibZXX8XN8nzomx U1YIqWhFGhyWtoczABFjzK1AsDZ6xpT8s1EpzeS3sz2pAuSYl2ThRkvLCC9kR591D1Jm oTOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=z/T79Vv6wGjrVta/fmtMY7cgnbUYDWoxJshDnFQvPqc=; fh=oXSbR7qPhIu/pj3Zq0qWqQt6y9AXFbKKex0wUQ+Gvi4=; b=hYiBkQ8VLBz2ba+kAo9hMYBqkWZKIxrH94YWSirNnhL3UZaxudAcUu56d6h7krS5Xc qhG2ldqCdIXx6dOjm2VA5khFymr6j9gN26tNmZaopmVAm5NazxQ91si9++4R+CExW2yM ya2QOyrycf4XqN30KhcTNpZ2zvR3grGzf6SotZpF2lZGKuM0w8R4EMdn0rwqerR2/o00 iZcCrmizv7/tB8n9qrPl9lufKMbEc1frc4yFCnTSvq/VW22YYlTYNPbZOXvXztyIqPhr L/l30OIODSwu9Y4v2/g7BJt0XAQXJt9BVACa4ygwL/REsvW9UKgmtwSc0rCe8uA0U3Lf M+9Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Z2kjvW81; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k26-20020a05640212da00b0051e0e87e913si12996214edx.63.2023.07.17.00.19.06; Mon, 17 Jul 2023 00:19:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Z2kjvW81; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230161AbjGQGzr (ORCPT + 99 others); Mon, 17 Jul 2023 02:55:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47610 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230040AbjGQGze (ORCPT ); Mon, 17 Jul 2023 02:55:34 -0400 Received: from mail-pf1-x42d.google.com (mail-pf1-x42d.google.com [IPv6:2607:f8b0:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E2596172B for ; Sun, 16 Jul 2023 23:55:23 -0700 (PDT) Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-6686708c986so4282651b3a.0 for ; Sun, 16 Jul 2023 23:55:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1689576922; x=1692168922; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=z/T79Vv6wGjrVta/fmtMY7cgnbUYDWoxJshDnFQvPqc=; b=Z2kjvW81cGF4WC3fZ8mJfRP6pHhzBxZZsveK2Hm9KB0SbDlt3BTTn5jKlIrpLDHwU7 CKcSg6FQZt8si2sebsYOUfRrT9zbWHr9itL9AR9XV1P5qt4tC2x5FVvCH8XHWsNrbunY Iu/ivd42A1hBph2V2tURzamxOgIifZv8OoSfua3Jjps1iLa/48VgxRx6pb2xLLf9D2A1 4I0HY4+tybPvOf7a2FTqMPgPkPAetiHo5z0XrNa1ILxWfLZSVbLX7JapAQ+xsW8x5lJ/ qDTwe7QMnHaw1VfU4/5Pj3rrPN6eqjuDRyKPeJBOszCr+44w4zNHyKetqZbifJBo1G7t INGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689576922; x=1692168922; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=z/T79Vv6wGjrVta/fmtMY7cgnbUYDWoxJshDnFQvPqc=; b=SRf8Q7elXE/+P7UNmD2kvBGTOYoif5y+Qn2YOZDMUeB/jGuPa0Rd8Wb6dEStMUKW3U 6989XBegz2Cwq4FyewQ+ZX5OnKRuEO4IRBZQNjAZuRWAwk37X1IlXdebLHWUx4XrAQ/F rlN9FHErVX+Bg3lsHZNQG3Fg91+ZtIjfFXMwdcKc6wt0+l3ilf/U99I7+gTRH3yS2ky4 XH1PPqWmwIdY3rdQRVEvB1bZUMWkyPASmqSqAHWKD7wY37uwPgrQCL9zhmdhoFr4OV2A M20xM7Tp98wJky0P2Z0IhcZH5tNb1x2b3BQ1eDNjOh3q//gMtmLXj14+UOKaXvRFHT0e RcTA== X-Gm-Message-State: ABy/qLZHZBNx3g48wN5S44u4ymD85DnTOsyJql8eQTqZWGdEtFQEO2h0 4yfkEKkn+uzQSl+oCCW7ohy8 X-Received: by 2002:a05:6a00:851:b0:668:9fb6:b311 with SMTP id q17-20020a056a00085100b006689fb6b311mr17759321pfk.32.1689576922468; Sun, 16 Jul 2023 23:55:22 -0700 (PDT) Received: from localhost.localdomain ([117.193.215.209]) by smtp.gmail.com with ESMTPSA id x7-20020a62fb07000000b006675c242548sm11196422pfm.182.2023.07.16.23.55.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Jul 2023 23:55:22 -0700 (PDT) From: Manivannan Sadhasivam To: lpieralisi@kernel.org, kw@linux.com Cc: kishon@kernel.org, bhelgaas@google.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH v2 5/7] PCI: epf-mhi: Add support for SM8450 Date: Mon, 17 Jul 2023 12:24:57 +0530 Message-Id: <20230717065459.14138-6-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230717065459.14138-1-manivannan.sadhasivam@linaro.org> References: <20230717065459.14138-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771651328947491028 X-GMAIL-MSGID: 1771651328947491028 Add support for Qualcomm Snapdragon SM8450 SoC to the EPF driver. SM8450 has the dedicated PID (0x0306) and supports eDMA. Currently, it has no fixed PCI class, so it is being advertised as "PCI_CLASS_OTHERS". Signed-off-by: Manivannan Sadhasivam --- drivers/pci/endpoint/functions/pci-epf-mhi.c | 22 +++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-mhi.c b/drivers/pci/endpoint/functions/pci-epf-mhi.c index abebe44d0061..dc6692e2c623 100644 --- a/drivers/pci/endpoint/functions/pci-epf-mhi.c +++ b/drivers/pci/endpoint/functions/pci-epf-mhi.c @@ -97,6 +97,23 @@ static const struct pci_epf_mhi_ep_info sdx55_info = { .mru = 0x8000, }; +static struct pci_epf_header sm8450_header = { + .vendorid = PCI_VENDOR_ID_QCOM, + .deviceid = 0x0306, + .baseclass_code = PCI_CLASS_OTHERS, + .interrupt_pin = PCI_INTERRUPT_INTA, +}; + +static const struct pci_epf_mhi_ep_info sm8450_info = { + .config = &mhi_v1_config, + .epf_header = &sm8450_header, + .bar_num = BAR_0, + .epf_flags = PCI_BASE_ADDRESS_MEM_TYPE_32, + .msi_count = 32, + .mru = 0x8000, + .flags = MHI_EPF_USE_DMA, +}; + struct pci_epf_mhi { const struct pci_epf_mhi_ep_info *info; struct mhi_ep_cntrl mhi_cntrl; @@ -654,9 +671,8 @@ static int pci_epf_mhi_probe(struct pci_epf *epf, } static const struct pci_epf_device_id pci_epf_mhi_ids[] = { - { - .name = "sdx55", .driver_data = (kernel_ulong_t)&sdx55_info, - }, + { .name = "sdx55", .driver_data = (kernel_ulong_t)&sdx55_info }, + { .name = "sm8450", .driver_data = (kernel_ulong_t)&sm8450_info }, {}, }; From patchwork Mon Jul 17 06:54:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 121076 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp953008vqt; Mon, 17 Jul 2023 00:15:19 -0700 (PDT) X-Google-Smtp-Source: APBJJlG8jlKbRthZL+cz8zYHB4Ol06Um0+rXVso6VMZq6PjrWGcxV29O6r4B3OP+T7Q3ZjI6MEIX X-Received: by 2002:a05:6808:1506:b0:3a4:34c8:f84e with SMTP id u6-20020a056808150600b003a434c8f84emr12921792oiw.2.1689578118762; Mon, 17 Jul 2023 00:15:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689578118; cv=none; d=google.com; s=arc-20160816; b=UnOgcrn9xky+rVa0D9UpyU4D5eONr5eH9d/XXzzJH/96kBstRNOjxB+pi8bAbp1Elf YQ8wXtNP0Rqn53wG96SxbwfuPhPVpl7pM9FGdsZkthOBXPcqmIo7mLxhhYE4uwxObVRr ks9HT6/YSqtfkgp+5Fo+rpOWi5PDDvZ59ihiAQFHt9AdQ6h/owLnOerPmgVAUJW06Iln PEhM6A5No6+Plbc/ZBzxaX0d2FtxBTTTW9YZ0ZN+cjsV7e3syO17RnFK1xIkB6kAdUdA 5Rn0VCpPQ4QrwWhteU/ihH2mTQeAxE8aZTh1+9CO0PHJGiznAdFBeviip0JI57zSI/d8 t7NA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=cs9rLL7bx7fqFkHGVFAk/Y/uGVQ21uUextviykreOKw=; fh=oXSbR7qPhIu/pj3Zq0qWqQt6y9AXFbKKex0wUQ+Gvi4=; b=oAZkC06t5Zw/XPK0+HTSLdTsmZgf4mqf21E5iimLdpeW9xIOIBkplHP9YSDSbGEn8P fTgg7pujlddcnZHfz4tE+UWD7WOKY32kxe0sKBIPZOdDLynE4oplH3KAyxaur0GiEdml 5prfkBgys0qW9W1THHQRVlQzsHcu2e6XN9ZSDHTxn9PyIAi8ntfcT2+xX4PlZ17pdedw MgDqZsFI//Trnr/nD7odZYMiQUTO3SEu846k/7LWE0yOT4NC6IW/ASkrKkMGcbAZ2NKi No4vPBVH40To1gRKcg7EwY9t8nw0g+MFg2G/SfLzGGkWqiM0jFq11xNUrm0f1jOUWEOU O/jw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=HwNjr2P9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m14-20020a654c8e000000b00543a6ce8c33si10956698pgt.78.2023.07.17.00.15.05; Mon, 17 Jul 2023 00:15:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=HwNjr2P9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229528AbjGQGz4 (ORCPT + 99 others); Mon, 17 Jul 2023 02:55:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47026 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230078AbjGQGzk (ORCPT ); Mon, 17 Jul 2023 02:55:40 -0400 Received: from mail-oi1-x22b.google.com (mail-oi1-x22b.google.com [IPv6:2607:f8b0:4864:20::22b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EB485173E for ; Sun, 16 Jul 2023 23:55:26 -0700 (PDT) Received: by mail-oi1-x22b.google.com with SMTP id 5614622812f47-3a3a8d21208so3318080b6e.0 for ; Sun, 16 Jul 2023 23:55:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1689576926; x=1692168926; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cs9rLL7bx7fqFkHGVFAk/Y/uGVQ21uUextviykreOKw=; b=HwNjr2P9tOww+JHwfHyigFNfFxxwdVXSJKEampMs5trspIMhdz8BHhK5rl3S/W6TFL c1HH2I67MhDD8U1znqvQDFKe2UaEIpJdo01HAvg184SHDZxpnbeZvekVjiNMX8Cpr00q BA9nQuKgHPzvXmahjHV+u9rXszw5fox8gYgg/YyP8UPEB9iMrwOoibSSXX5jG4D9M/42 AEf7Ck//eBif8RMtSHpNBj0wor7FGxRg6PNADWI0t6EZYFfc35R5xxy/wJLxGKyVU9nZ X6zAMxg36DiACfMvEEbnnR/UPLta25+QCtRfmYrdDsdNvf+1Lreng750on8awwF08sMn tRdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689576926; x=1692168926; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cs9rLL7bx7fqFkHGVFAk/Y/uGVQ21uUextviykreOKw=; b=N8LsvIaivDHfsgFR3Xe5vz5GHJJNEQfszfn0y1nV+P+mPgm3gYWZEq/B7az4/0e1zS SlGCpKNJlRJoR7Qg+3cEApQ/Bw4sOaz/FPvs60idnrpU27qMPZt6jSk/hzcMbOSOo+3t 7sCcSJ2XGh8otjbtWqV6SW5cUOD68Qu/069iDqFPovvOa5v9hc15lF5HB+LD/VOFtRQR c2XLYvICfc6TTaKTpidqQTCJre/zlkf9IYAxUatvqUFlz5WYnsiWkVgrnq+kKXev/96d plioThCTHPedu/kvWEwJPWMrqzbxU2ahergee9v/1PxMz/iXjczAJQvigUn2cyOH8kSd +eJw== X-Gm-Message-State: ABy/qLZAA1O1Kb94ARADFElcDO5QEhGFlH6OzTejioRpfLU0lD24hZkv DeTXFGtISsbzJU+gNGmjyFWc X-Received: by 2002:a05:6358:52c1:b0:134:d282:92e9 with SMTP id z1-20020a05635852c100b00134d28292e9mr10471981rwz.29.1689576925697; Sun, 16 Jul 2023 23:55:25 -0700 (PDT) Received: from localhost.localdomain ([117.193.215.209]) by smtp.gmail.com with ESMTPSA id x7-20020a62fb07000000b006675c242548sm11196422pfm.182.2023.07.16.23.55.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Jul 2023 23:55:25 -0700 (PDT) From: Manivannan Sadhasivam To: lpieralisi@kernel.org, kw@linux.com Cc: kishon@kernel.org, bhelgaas@google.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH v2 6/7] PCI: epf-mhi: Use iATU for small transfers Date: Mon, 17 Jul 2023 12:24:58 +0530 Message-Id: <20230717065459.14138-7-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230717065459.14138-1-manivannan.sadhasivam@linaro.org> References: <20230717065459.14138-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771651065641255142 X-GMAIL-MSGID: 1771651065641255142 For transfers below 4K, let's use iATU since using eDMA for such small transfers is not efficient. This is mainly due to the fact that setting up a eDMA transfer and waiting for its completion adds some latency. This latency is negligible for large transfers but not for the smaller ones. With this hack, there is an increase in ~50Mbps throughput on both MHI UL (Uplink) and DL (Downlink) channels. Signed-off-by: Manivannan Sadhasivam --- drivers/pci/endpoint/functions/pci-epf-mhi.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/pci/endpoint/functions/pci-epf-mhi.c b/drivers/pci/endpoint/functions/pci-epf-mhi.c index dc6692e2c623..a8feb03061aa 100644 --- a/drivers/pci/endpoint/functions/pci-epf-mhi.c +++ b/drivers/pci/endpoint/functions/pci-epf-mhi.c @@ -288,6 +288,9 @@ static int pci_epf_mhi_edma_read(struct mhi_ep_cntrl *mhi_cntrl, u64 from, dma_addr_t dst_addr; int ret; + if (size < SZ_4K) + return pci_epf_mhi_iatu_read(mhi_cntrl, from, to, size); + mutex_lock(&epf_mhi->lock); config.direction = DMA_DEV_TO_MEM; @@ -354,6 +357,9 @@ static int pci_epf_mhi_edma_write(struct mhi_ep_cntrl *mhi_cntrl, void *from, dma_addr_t src_addr; int ret; + if (size < SZ_4K) + return pci_epf_mhi_iatu_write(mhi_cntrl, from, to, size); + mutex_lock(&epf_mhi->lock); config.direction = DMA_MEM_TO_DEV; From patchwork Mon Jul 17 06:54:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 121093 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp958902vqt; Mon, 17 Jul 2023 00:33:04 -0700 (PDT) X-Google-Smtp-Source: APBJJlFrMy2ZSIQDS9Fjj3z7p93a5EeX4D9eMNcnCxt/9a8tb6UdvOZFvNAI0A3K4yn2mig0It0/ X-Received: by 2002:a05:6a20:7345:b0:134:2b44:decf with SMTP id v5-20020a056a20734500b001342b44decfmr7799495pzc.21.1689579184301; Mon, 17 Jul 2023 00:33:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689579184; cv=none; d=google.com; s=arc-20160816; b=T8rIoO4aR1xFkRk5K/u0/p9duIjVb0Ci/xKn+N/BoSNKy+votejzQIT35eOjrckzf6 PpScJ1qAgDMvu7cvZwEftferoN/c15qrLwoVmoc9s5StYddGMS1lGAT0wlTqbfPYv8Fu VYAMZ8XQKi7Xosq+z1bX+jVRe1So8g71J69a6+SuHxh725Zb/zBTM6Bua39bvX1Wsf/W nhfrmFxebsrUbIwHilD6G+Ipm0ASUSfEUB/yxQiYCuOJ6u93VNSMux9VJHck/6Vkk/ic 2v4k939N9ASFyXrD9t5LHMPluKnggDgRgF0hY6RMzl3tPYSPOxS6HNes33aHVKs3JgEs j/6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=cRwHHVBuwFdTSPfIU1R1ZLyGoM8LybFGSYGhuRMiUuk=; fh=oXSbR7qPhIu/pj3Zq0qWqQt6y9AXFbKKex0wUQ+Gvi4=; b=nW/f1gPbiWuaqkM3RmkSWBeq2BcuUiRLuwCdgccXdkzc2CjU7o927aEBr4UQ+d6djK NjqXhhiqbJQ+drQCBFQ4z2X1l7Slq+wwylc829GwWKupJ/KhOIhpbt+J9K+ugTLY25Hq 4u4iVWm2OGycFLpXOHdI/XENNhDcpI3D/MY3rrdCj583vEmoBlB71vgYouMctOscqS77 gJPKhYR5bsNXlI/9FVlEXnuT9bMonZpeqLOwEhk5BCsY06xBvNHMz5bwxfFbujrMnmU4 fgCmwPRnaLg+PHYhZylvqkJHX7KCDV6RRdYmXN7OsLwJCOQhlc5n7qndkFwvwI9BFl5k XviQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="kSVx8Wk/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id lo16-20020a170903435000b001b8a998c2ebsi10921570plb.363.2023.07.17.00.32.51; Mon, 17 Jul 2023 00:33:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="kSVx8Wk/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230095AbjGQG4D (ORCPT + 99 others); Mon, 17 Jul 2023 02:56:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47598 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230093AbjGQGzp (ORCPT ); Mon, 17 Jul 2023 02:55:45 -0400 Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BE01619AA for ; Sun, 16 Jul 2023 23:55:29 -0700 (PDT) Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-6682909acadso2622281b3a.3 for ; Sun, 16 Jul 2023 23:55:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1689576928; x=1692168928; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cRwHHVBuwFdTSPfIU1R1ZLyGoM8LybFGSYGhuRMiUuk=; b=kSVx8Wk/UdV6T3ySTsoCWHjmRp7PQqIlR1Asg6XqAdVC2L3DfGAYYvNgU0CLQAGoik kb9RlF+7lRH2uctGidrXT9GDHJvclhslSq7CQuzokRMM2Xh4c0gIlwJfscGF7zU8ZGg+ utgqJrbCJttTV1GGHqw3LfBtgRcFcCItEnXulZ+5+eGxY7Qb0spCSpbE2Kp7duQqLUBJ CQY9bAntoLYs6yPGX19LWWdyTs3VX+NUg4IdORjto6yFlh7tDvr3hGq3uGCJiS6QIwqH zUlDixthW871aJxwAkTAEWYHHA2wq4SrL7eNnLKde2kZhJQYY1Uilduz+LOMMXQAbIS0 Y0Mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689576928; x=1692168928; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cRwHHVBuwFdTSPfIU1R1ZLyGoM8LybFGSYGhuRMiUuk=; b=hWXyB4QFkKzzpxJfL142kRYsDuBCNoCHAWF7FKtDnvlXGlMlqmaq7Te3uwLrEZU3+N oBfqyw5rfOOivoWPxD3JLei9fbmnh8kL4+e9X+ucFRjrB37nGO6GxtW64xF64J3McWCu bEbFftjRupfLayNxK+xfHE0wZaulHDv61EE/oBj/HlcS7S2loXf7TFzDHFFuBLbgH11n tlM7QMGTL9ebjt3EKyMn1u1m8W7Afl6kEjOXI7UURl0ukc830evfrLOSyBUeBTO9QTET 5t7xlYS5d8v8VEzOsqNisswtjUEwD3IbG8/jwUIGIkEaj/yDjQ3vZb/MRD4DS3M4ZlWh QH5g== X-Gm-Message-State: ABy/qLYctchhomJRxZvdHSiw/QBkDaLOxwSJ95Ro16caWASwUsvXk8/u bj8Ur7t77sv0thHfbR0c3cUP X-Received: by 2002:a05:6a00:3983:b0:668:7e84:32e6 with SMTP id fi3-20020a056a00398300b006687e8432e6mr14433427pfb.29.1689576928654; Sun, 16 Jul 2023 23:55:28 -0700 (PDT) Received: from localhost.localdomain ([117.193.215.209]) by smtp.gmail.com with ESMTPSA id x7-20020a62fb07000000b006675c242548sm11196422pfm.182.2023.07.16.23.55.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 16 Jul 2023 23:55:28 -0700 (PDT) From: Manivannan Sadhasivam To: lpieralisi@kernel.org, kw@linux.com Cc: kishon@kernel.org, bhelgaas@google.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH v2 7/7] PCI: endpoint: Add kernel-doc for pci_epc_mem_init() API Date: Mon, 17 Jul 2023 12:24:59 +0530 Message-Id: <20230717065459.14138-8-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230717065459.14138-1-manivannan.sadhasivam@linaro.org> References: <20230717065459.14138-1-manivannan.sadhasivam@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771651088425431083 X-GMAIL-MSGID: 1771652182693538694 Add missing kernel-doc for pci_epc_mem_init() API. Signed-off-by: Manivannan Sadhasivam --- drivers/pci/endpoint/pci-epc-mem.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/pci/endpoint/pci-epc-mem.c b/drivers/pci/endpoint/pci-epc-mem.c index 7dcf6f480b82..a9c028f58da1 100644 --- a/drivers/pci/endpoint/pci-epc-mem.c +++ b/drivers/pci/endpoint/pci-epc-mem.c @@ -115,6 +115,16 @@ int pci_epc_multi_mem_init(struct pci_epc *epc, } EXPORT_SYMBOL_GPL(pci_epc_multi_mem_init); +/** + * pci_epc_mem_init() - Initialize the pci_epc_mem structure + * @epc: the EPC device that invoked pci_epc_mem_init + * @base: Physical address of the window region + * @size: Total Size of the window region + * @page_size: Page size of the window region + * + * Invoke to initialize a single pci_epc_mem structure used by the + * endpoint functions to allocate memory for mapping the PCI host memory + */ int pci_epc_mem_init(struct pci_epc *epc, phys_addr_t base, size_t size, size_t page_size) {