Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp5586989pxb; Mon, 28 Mar 2022 14:36:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwY7Lol5Q2/iy9cFHhfwLDZwgCGPAL3K6SzwF4Cn7m5GD1dEydSklbhPrAA93vTioJSGQo0 X-Received: by 2002:a65:6e0f:0:b0:382:2f78:4369 with SMTP id bd15-20020a656e0f000000b003822f784369mr11479156pgb.406.1648503369466; Mon, 28 Mar 2022 14:36:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648503369; cv=none; d=google.com; s=arc-20160816; b=yLdgyl24emsK2cVwXeGdfo4vgxT4t1KBv7ctA8RxnKHapiUZch3r5DoctARGoya8hO uClEg7R453uJ2yhby7+5Qynxi3fhHFJD/A0B/kNfUkTH1WWCjj6ec1zdgkGvnzR+98Yz MnqH/hYwuZtcu26ADaDMc6OsQAYvjm5iSMUADha5A2vy9ZV8NmE9buS4hi21WZayYdCE g6KhGYV2OSsAcYGM36gqBAIq/U2ykzH4UuzvfeeA560W9kkL8b/tDIN2apIe3ahGDE++ U1dtUL6OtJtOe7ZDGP5L+vEbagu74RP1PU4j1L51joI5KqfIOqa7pR9AxCgXYx06K5iO Zn4Q== 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:dkim-filter; bh=3nPjOLjzGYkPTmC45vtG0SxOCnuiuHJKeB2jpwkXC+g=; b=gN2Ku6GfiEyFBahwsp4K38XNtrmwK0SZqX4Ilvps7wy/L0kH26uQ1rE2AIpkfxQI/V S4MCTwhmk6b0Uifuwpv7oqBkgboVzEpFMHL7Y8hjL2k2guLuqB9QbVraVJWB2uIUGnsp Jm+O8cBDe36dy+SStOcOO7W0NwxcK+kLrPuDh06ZEBCHyUhFKwE7Vhiu/ld0oXS6F1bs P/aXYVk2bey1T/3jO+LFkVMe9nDiqqdo7HT7JV/DaJS2BtGF+nsPT7Sc/y6L+ypxuviS VjwA5P6c1scxilrmMsD/nZ+6EFV/5eGHgo6AMu9GsNBeeI0eAhUSCS5rwpUxWqMaU7Ow 3FcQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baikalelectronics.ru header.s=mail header.b=rxyCCYq4; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id g186-20020a6252c3000000b004fa830c704esi13730152pfb.170.2022.03.28.14.36.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Mar 2022 14:36:09 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@baikalelectronics.ru header.s=mail header.b=rxyCCYq4; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 832DE8909A; Mon, 28 Mar 2022 14:14:09 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244374AbiC1QrN (ORCPT + 99 others); Mon, 28 Mar 2022 12:47:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45254 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242900AbiC1QqD (ORCPT ); Mon, 28 Mar 2022 12:46:03 -0400 Received: from mail.baikalelectronics.ru (mail.baikalelectronics.com [87.245.175.226]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 23BE5220D8; Mon, 28 Mar 2022 09:44:16 -0700 (PDT) Received: from mail.baikalelectronics.ru (unknown [192.168.51.25]) by mail.baikalelectronics.ru (Postfix) with ESMTP id 80EAE1E4948; Thu, 24 Mar 2022 04:48:45 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mail.baikalelectronics.ru 80EAE1E4948 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baikalelectronics.ru; s=mail; t=1648086525; bh=3nPjOLjzGYkPTmC45vtG0SxOCnuiuHJKeB2jpwkXC+g=; h=From:To:CC:Subject:Date:In-Reply-To:References:From; b=rxyCCYq4auhTUcAFE7H/PSIUGJcHizoO/iZhOL5ZLgbHIn3csEt70ME+7gmjyMmdH JT1rA4yp19llwItStSCp8HaeHNOL2zCSljGMgMv+WxprkLX7GttyTCtgVimmbPGqf3 0r49hSlKfhU0+GaTQXTv+mphv8CMwer50WaKKEdY= Received: from localhost (192.168.168.10) by mail (192.168.51.25) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 24 Mar 2022 04:48:45 +0300 From: Serge Semin To: Gustavo Pimentel , Vinod Koul , Jingoo Han , Bjorn Helgaas , Frank Li , Manivannan Sadhasivam CC: Serge Semin , Serge Semin , Alexey Malahov , Pavel Parkhomenko , Lorenzo Pieralisi , Rob Herring , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , , , , Gustavo Pimentel Subject: [PATCH 10/25] dmaengine: dw-edma: Add PCIe bus address getter to the remote EP glue-driver Date: Thu, 24 Mar 2022 04:48:21 +0300 Message-ID: <20220324014836.19149-11-Sergey.Semin@baikalelectronics.ru> In-Reply-To: <20220324014836.19149-1-Sergey.Semin@baikalelectronics.ru> References: <20220324014836.19149-1-Sergey.Semin@baikalelectronics.ru> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MAIL.baikal.int (192.168.51.25) To mail (192.168.51.25) X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no 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 In general the Synopsys PCIe EndPoint IP prototype kit can be attached to a PCIe bus with any PCIe Host controller including to the one with distinctive from CPU address space. Due to that we need to make sure that the source and destination addresses of the DMA-slave devices are properly converted to the PCIe bus address space, otherwise the DMA transaction will not only work as expected, but may cause the memory corruption with subsequent system crash. Let's do that by introducing a new dw_edma_pcie_address() method defined in the dw-edma-pcie.c, which will perform the denoted translation by using the pcibios_resource_to_bus() method. Fixes: 41aaff2a2ac0 ("dmaengine: Add Synopsys eDMA IP PCIe glue-logic") Signed-off-by: Serge Semin --- Note this patch depends on the patch "dmaengine: dw-edma: Add CPU to PCIe bus address translation" from this series. --- drivers/dma/dw-edma/dw-edma-pcie.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/dma/dw-edma/dw-edma-pcie.c b/drivers/dma/dw-edma/dw-edma-pcie.c index 04c95cba1244..f530bacfd716 100644 --- a/drivers/dma/dw-edma/dw-edma-pcie.c +++ b/drivers/dma/dw-edma/dw-edma-pcie.c @@ -95,8 +95,23 @@ static int dw_edma_pcie_irq_vector(struct device *dev, unsigned int nr) return pci_irq_vector(to_pci_dev(dev), nr); } +static u64 dw_edma_pcie_address(struct device *dev, phys_addr_t cpu_addr) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct pci_bus_region region; + struct resource res = { + .flags = IORESOURCE_MEM, + .start = cpu_addr, + .end = cpu_addr, + }; + + pcibios_resource_to_bus(pdev->bus, ®ion, &res); + return region.start; +} + static const struct dw_edma_core_ops dw_edma_pcie_core_ops = { .irq_vector = dw_edma_pcie_irq_vector, + .pci_address = dw_edma_pcie_address, }; static void dw_edma_pcie_get_vsec_dma_data(struct pci_dev *pdev, -- 2.35.1