From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BFF36C433EF for ; Thu, 24 Mar 2022 19:23:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239554AbiCXTZY (ORCPT ); Thu, 24 Mar 2022 15:25:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33618 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1352149AbiCXTZX (ORCPT ); Thu, 24 Mar 2022 15:25:23 -0400 Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40066.outbound.protection.outlook.com [40.107.4.66]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A54746C969; Thu, 24 Mar 2022 12:23:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=baMrGs6krSQDlpdZsNwJmZSUY5bsK0Bur57pEjabF3TEYq4yEUrl4TYtno12+1HHGTz1sW2XMcqzeMf56FsRRNguitun3T+cAvrCud5C12IkEERbZvdiDXbl+Ns3EPwoYsmMOuCxFHbvr3zZoszr1SiY++ZCUzQLItS/xbmQk7izQcfrqQqYGgwnlFdBbWuTy4FvRh6bTK2X/yT3G++6cElsVdRLlVQWmO+mh4cWzr1VUc23dPZZA4q2DJjPxtV5/UrNTGpYxagfE048hURSIuqyqYZLSJCeRqjK3f0PX115P4L9ioU7sgenVLAmrJLRxEhW+xcRieiYyXH6PY6asw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=VlY39VL3b5r+jGRhp2pxcuiX5IlLvhDOTavZwGTwe8E=; b=QODNvoaFV+fAIJJg9W2aHRiiL3mAZp2a4dYNkJVOXZt+j0p710WbeNZnUDupPgGVoRvOTzChqPJQ4sIMNFFa1DYj5WZNTHVd+tiPoXGrlXK9Kgw6FDy/xM1laSwbLMFXyFp1MyIW8Cja3bkqgaZPJ4RDFXhcGuwxSSuwM/eOGGr7daBVT9JbVD5aYKx11wCcvFOuhz/6yrBsQSqnwb2A1PpL4Qv6uCumq5ubzIC+0MA07EfBpnlmOA288lsB8gDV+/PrjpF4LYlo8rY4q83E43+6Li31PwKE01DBN8xfKc5z4tgrLq/cOQAAcFJLQJyoRiWdcNiwN6bNaVD8n/7cuw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VlY39VL3b5r+jGRhp2pxcuiX5IlLvhDOTavZwGTwe8E=; b=X9hTf9VJuAJIA0vYwjdGY97gnv7dTEYlxwRmPGvZFaWUssr3Ls7MS2iNJPHb6BG6hmGmR2Xpb5i16VHSllKYqSgOhRdub60wZoY5RznG4bvYZ4zDZow44ccaYMT1jHIGZwyGN8LbIkqiiZxjYiY+rVS1RXiOQEz0OL4FgLmFGkU= Received: from PAXPR04MB9186.eurprd04.prod.outlook.com (2603:10a6:102:232::18) by AS8PR04MB8897.eurprd04.prod.outlook.com (2603:10a6:20b:42c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Thu, 24 Mar 2022 19:23:47 +0000 Received: from PAXPR04MB9186.eurprd04.prod.outlook.com ([fe80::bcbf:f029:4f34:1be1]) by PAXPR04MB9186.eurprd04.prod.outlook.com ([fe80::bcbf:f029:4f34:1be1%6]) with mapi id 15.20.5102.016; Thu, 24 Mar 2022 19:23:47 +0000 From: Frank Li To: Serge Semin , Gustavo Pimentel , Vinod Koul , Jingoo Han , Bjorn Helgaas , Manivannan Sadhasivam CC: Serge Semin , Alexey Malahov , Pavel Parkhomenko , Lorenzo Pieralisi , Rob Herring , =?iso-8859-2?Q?Krzysztof_Wilczy=F1ski?= , "linux-pci@vger.kernel.org" , "dmaengine@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Gustavo Pimentel Subject: RE: [PATCH 05/25] dmaengine: dw-edma: Convert ll/dt phys-address to PCIe bus/DMA address Thread-Topic: [PATCH 05/25] dmaengine: dw-edma: Convert ll/dt phys-address to PCIe bus/DMA address Thread-Index: Adg/s0NoSnoXlcHAT2WbtdKjk+atng== Date: Thu, 24 Mar 2022 19:23:47 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 12cb0abd-bc24-4b16-6d02-08da0dcbd1d9 x-ms-traffictypediagnostic: AS8PR04MB8897:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: UMXSVaDaBhmjW+4xVKdpC/QhQSIfPNLzzOvDZG30TRdCceq9PDnuFoInDCu8OidX1JaQfLglYpox1A6eYuq2hq6wryZh6EcTZeO30a/7QFQu4mjM/tzIRk/Z4iXoeGZeoRpqNzB7/b5gLGJshjcsZK27qO1PSxrkgD5yfvfYjX2cWT+dx9Y9ju7OEL8mh3/EnGrbcdPTdPUQtZTVUI9v2Fwz5B8MA421raKQVPSi0GadUfR+YPSkuUF9/RqysYDFLHo8jT+bNzm89Isa7Ln7iVak3heZOVMZoUxwdAdr9TIa92UO6qAa56dsHsksXP9FXzYSII2IwYkxfCMzp3/LJLj3rhYSIYsNeCkuMO3odAfRkU6LE2uBjicKTxEq6yzi/q7K48vX5LUYl8ziI8aDtsrUDUoH08g4qVkfv8g1mW8ow8FZqd0JwTt2ERKFccm5yd8OxeUqVUzC3eniKNm0FyGaedLiV3bBbV/lNDJy3rZ+M7FCe2iVkI7uY2rb0SiGxRrQ6wQr5sgrE7alJR/8ROUmVXS74EYiXXDBaamn1wlhIiFXqaBYjUpUZylP1G2mTPtN94sdas9rOvYredha1s/UMex3gZwfRhQv31G7W89XQ3jUZQmDJoZqeFrhE2WpfDgzxsbAIqTo65FhyeBaMt7Gqoo6u0rzmHByJ2LfDzmHYNHhMzkCOgFaEPLELw3bLdEMPBYFU9zCjdFuOscMVA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB9186.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(2906002)(122000001)(55016003)(7696005)(6506007)(53546011)(9686003)(55236004)(8676002)(66946007)(76116006)(4326008)(64756008)(66446008)(66476007)(66556008)(7416002)(8936002)(38100700002)(44832011)(52536014)(5660300002)(54906003)(110136005)(316002)(83380400001)(38070700005)(508600001)(71200400001)(186003)(86362001)(26005)(33656002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-2?Q?v+KFCJ7NvkMTRIxAUBBx+hg30MZdWD3sRNQ/k7bukgeyijy7OLMugtUr+v?= =?iso-8859-2?Q?zJtpaLeDNB9VCrIhHuiFr8OVnRBSi3FNKI397yqN70KSAh5ELd+QPLe5f8?= =?iso-8859-2?Q?YOKGvuQtxuAA8BT0pqn2dl2uEuw/2+4nw5ryBOp4QefzwnfH/hgZ30GBDc?= =?iso-8859-2?Q?FVzRp4RErrLe6erjb5Gna095vyk3uxJnXaUjkSZdXr/imEdhLTtmweeYi1?= =?iso-8859-2?Q?omQveNQhPvOGa/SVSjlbdnWXMdebAtYbl3eywW7L5ID85Kgjp0T4FDGnYx?= =?iso-8859-2?Q?Ndlouap3x02powI5ZUbYFJL5fQPcOxu0EKfF/KrZf/WTuE9xWQ7Zy8ySQs?= =?iso-8859-2?Q?OZI6GpMENSBZrO7idGYGrFspoL7ozLEoPAu4fg/Dy8wpVH8bTAHVlag1WO?= =?iso-8859-2?Q?p4Gzm6tFRDCO3OQfamN6qNvGR4BFVv84+YqaPzuh3pjnomLcCgFBRN1RxK?= =?iso-8859-2?Q?+lCukp/AYDac75rNCI995d2oanhD3E4DHSg172Vwdex8O1M9SBRHH2kARg?= =?iso-8859-2?Q?5utmjCDhHXB7gDNX8qCy0eRFrEReoryCyoWwuxBz0SP0A1J7afFC8Q6oId?= =?iso-8859-2?Q?ShA4uXJ2GxZRFdqSqMrYt1vzoDTxIq2qEC5Q+khAgk5IXvwOW/sdR/KhdM?= =?iso-8859-2?Q?lJ6txefJuPX5RTi5U4LNYhhB0ygAufsRpm6d92icyIG8OtyBq++hPzBoFK?= =?iso-8859-2?Q?HgRpiIMarYhHmDLylIWlkDkjQdrJkhLEHQn/Psnt1T7tNLKphzYKhzJPOK?= =?iso-8859-2?Q?wPjc3b2ElE/IkqpQIAnDQQoLplWySENrsfrRqJDTXJNyCK12b3LTGJkVKv?= =?iso-8859-2?Q?ZwFEOzlwhnFP2Ysl2ZDhpadU8BStzS3RzhsmI+gXoSLxpPxpU05kYkK7y4?= =?iso-8859-2?Q?epG4UsmONZUUHl8SNf3bJnEE89vG0MFJ/U6bIvM5QdmrpTfronHka7eCor?= =?iso-8859-2?Q?6Jmpe4TMorJpOQKSKyWeW3HRqF0Mvy7JPhRNzquCoSezRuJldKWxn8GPlj?= =?iso-8859-2?Q?94PUGJeDVxFx5EaWVm8V652wrlqaUquIgSBgVC1XfJ/C4/ncuVWsQbkC+o?= =?iso-8859-2?Q?O147zfvLiJYjph2JZMYiDJxT3DQBnlVwGkSEmziOjA7QbA7C7Ni3kx8bXD?= =?iso-8859-2?Q?nuxPe4Rpo+iAURC/BG79JRope5ZyfGVse0u9AL/Np9ZBBrpggCaCpfOik9?= =?iso-8859-2?Q?ltuOGHSJ1tSxrpOQv+U7WPX+LqMnHJxahLzJrwAJsKXcj+Nc4/Ccei1Oci?= =?iso-8859-2?Q?Xfnhi+9OB3iSVJP3amfiTc0ya6Q+nBkmLesOsSkt4U9Wwq/o2ks1Evw6/O?= =?iso-8859-2?Q?mACbZ3DSYjws8nzVUoXuFjgCr7e+WiR/USSAugT0+iixwc4vWifZPx0tdI?= =?iso-8859-2?Q?O+uC+JJ3CQYoF2kzhORgr6OkuNy+11ngZTESQRk2f86W5fi3gEx9FfXcUI?= =?iso-8859-2?Q?SFE4H+e7CSPjJFwWEVpz3KHIwI+2YeUqKBBRK5rHkOxCZBmSjX4SmF7sIm?= =?iso-8859-2?Q?SVMvF46jbtk6TZN9MyBMKk3y8J9PahqVLUEzbksTJ+6j+ZLcDfYZi9SKR8?= =?iso-8859-2?Q?ucZGIMavDQJUxdPEg/P2GBHhrbxdVTc0vpeWVRLiPMPOw63j9tnQuiYl2v?= =?iso-8859-2?Q?bhKAkNhzCcd27sSE1L41C7suKXCFniSv+k8bNiGU2jjKgGzx4LJnpJELCX?= =?iso-8859-2?Q?tCTikleHJBwOwYBjKib5lyWDU3FuNDKZJJ0gUy41krhNr8kEGwi6iJ5wyh?= =?iso-8859-2?Q?zmUBo/6ohCCXsoMkIZQ2HIe3wpIGszRAoaWKrvBuGJbk9wcaXIeQ2pUGOh?= =?iso-8859-2?Q?QsaWxEZvpA=3D=3D?= Content-Type: text/plain; charset="iso-8859-2" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9186.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 12cb0abd-bc24-4b16-6d02-08da0dcbd1d9 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Mar 2022 19:23:47.4993 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: PB/1oiIg3Bm4DIfdDvk29+qjvugILX+e6J08a8cuOT7IZsNmyHDSugaACpAT8Y4CJTLDUERP8cnqSjImGgwyVw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8897 Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org > -----Original Message----- > From: Serge Semin > Sent: Wednesday, March 23, 2022 8:48 PM > 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 ; Krzysztof > Wilczy=F1ski ; linux-pci@vger.kernel.org; > dmaengine@vger.kernel.org; linux-kernel@vger.kernel.org; Gustavo Pimentel > > Subject: [EXT] [PATCH 05/25] dmaengine: dw-edma: Convert ll/dt phys-addre= ss > to PCIe bus/DMA address >=20 > Caution: EXT Email >=20 > In accordance with the dw_edma_region.paddr field semantics it is suppose= d > to be initialized with a memory base address visible by the DW eDMA > controller. If the DMA engine is embedded into the DW PCIe Host/EP > controller, then the address should belong to the Local CPU/Application > memory. If eDMA is remotely accessible across the PCIe bus via the PCIe > memory IOs, then the address needs to be a part of the PCIe bus memory > space. The later case hasn't been well covered in the corresponding > glue-driver. Since in general the PCIe memory space doesn't have to match > the CPU memory space and the pci_dev.resource[] arrays contain the > resources defined in the CPU memory space, a proper conversion needs to b= e > performed, otherwise either the driver won't properly work or much worse > the memory corruption will happen. The conversion can be done by means of > the pci_bus_address() method. Let's use it to retrieve the LL, DT and CSR= s > PCIe memory ranges. Actually, This driver is dead driver. And no one use it and don't know How to test it.=20 I think pci_bus_address can't resolve this problem. If remote side using iATU map bar 0 into 0x7000_0000 I supposed DMA link should be use 0x7000_0000, how host side pci_bus_addres= s know such iATU mapping information of EP side? Best regards Frank Li >=20 > Note in addition to that we need to extend the dw_edma_region.paddr field > size. The field normally contains a memory range base address to be set i= n > the DW eDMA Linked-List pointer register or as a base address of the > Linked-List data buffer. In accordance with [1] the LL range is supposed > to be created in the Local CPU/Application memory, but depending on the D= W > eDMA utilization the memory can be created as a part of the PCIe bus > address space (as in the case of the DW PCIe EP prototype kit). Thus in > the former case the dw_edma_region.paddr field should have the dma_addr_t > type, while in the later one - pci_bus_addr_t. Seeing the corresponding > CSRs are always 64-bits wide let's convert the dw_edma_region.paddr field > type to be u64 and let the client code logic to make sure it has a valid > address visible by the DW eDMA controller. For instance the DW eDMA PCIe > glue-driver initializes the field with the addresses from the PCIe bus > memory space. >=20 > [1] DesignWare Cores PCI Express Controller Databook - DWC PCIe Root Port= , > v.5.40a, March 2019, p.1103 >=20 > Fixes: 41aaff2a2ac0 ("dmaengine: Add Synopsys eDMA IP PCIe glue-logic") > Signed-off-by: Serge Semin > --- > drivers/dma/dw-edma/dw-edma-pcie.c | 8 ++++---- > include/linux/dma/edma.h | 2 +- > 2 files changed, 5 insertions(+), 5 deletions(-) >=20 > diff --git a/drivers/dma/dw-edma/dw-edma-pcie.c b/drivers/dma/dw-edma/dw- > edma-pcie.c > index d6b5e2463884..04c95cba1244 100644 > --- a/drivers/dma/dw-edma/dw-edma-pcie.c > +++ b/drivers/dma/dw-edma/dw-edma-pcie.c > @@ -231,7 +231,7 @@ static int dw_edma_pcie_probe(struct pci_dev *pdev, > return -ENOMEM; >=20 > ll_region->vaddr +=3D ll_block->off; > - ll_region->paddr =3D pdev->resource[ll_block->bar].start; > + ll_region->paddr =3D pci_bus_address(pdev, ll_block->bar)= ; > ll_region->paddr +=3D ll_block->off; > ll_region->sz =3D ll_block->sz; >=20 > @@ -240,7 +240,7 @@ static int dw_edma_pcie_probe(struct pci_dev *pdev, > return -ENOMEM; >=20 > dt_region->vaddr +=3D dt_block->off; > - dt_region->paddr =3D pdev->resource[dt_block->bar].start; > + dt_region->paddr =3D pci_bus_address(pdev, dt_block->bar)= ; > dt_region->paddr +=3D dt_block->off; > dt_region->sz =3D dt_block->sz; > } > @@ -256,7 +256,7 @@ static int dw_edma_pcie_probe(struct pci_dev *pdev, > return -ENOMEM; >=20 > ll_region->vaddr +=3D ll_block->off; > - ll_region->paddr =3D pdev->resource[ll_block->bar].start; > + ll_region->paddr =3D pci_bus_address(pdev, ll_block->bar)= ; > ll_region->paddr +=3D ll_block->off; > ll_region->sz =3D ll_block->sz; >=20 > @@ -265,7 +265,7 @@ static int dw_edma_pcie_probe(struct pci_dev *pdev, > return -ENOMEM; >=20 > dt_region->vaddr +=3D dt_block->off; > - dt_region->paddr =3D pdev->resource[dt_block->bar].start; > + dt_region->paddr =3D pci_bus_address(pdev, dt_block->bar)= ; > dt_region->paddr +=3D dt_block->off; > dt_region->sz =3D dt_block->sz; > } > diff --git a/include/linux/dma/edma.h b/include/linux/dma/edma.h > index 8897f8a79b52..5abac9640a4e 100644 > --- a/include/linux/dma/edma.h > +++ b/include/linux/dma/edma.h > @@ -18,7 +18,7 @@ > struct dw_edma; >=20 > struct dw_edma_region { > - phys_addr_t paddr; > + u64 paddr; > void __iomem *vaddr; > size_t sz; > }; > -- > 2.35.1