From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752679AbcEKD2U (ORCPT ); Tue, 10 May 2016 23:28:20 -0400 Received: from relmlor3.renesas.com ([210.160.252.173]:57551 "EHLO relmlie2.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752651AbcEKD2Q (ORCPT ); Tue, 10 May 2016 23:28:16 -0400 X-IronPort-AV: E=Sophos;i="5.22,559,1449500400"; d="scan'";a="210576999" Authentication-Results: ideasonboard.com; dkim=none (message not signed) header.d=none;ideasonboard.com; dmarc=none action=none header.from=renesas.com; Message-ID: <87wpn1th2q.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto To: Laurent Pinchart CC: Vinod Koul , Geert Uytterhoeven , Laurent Pinchart , sakato , OSD2 ML , , Subject: Re: [PATCH] dma: rcar-dmac: use list_add() on rcar_dmac_desc_put() In-Reply-To: <1529191.mKmgdgIODm@avalon> References: <87r3dywh6u.wl%kuninori.morimoto.gx@renesas.com> <20160502093712.GE2274@localhost> <1529191.mKmgdgIODm@avalon> User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset="US-ASCII" Date: Wed, 11 May 2016 03:28:04 +0000 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: TYXPR0101CA0022.jpnprd01.prod.outlook.com (10.168.40.160) To KL1PR06MB1703.apcprd06.prod.outlook.com (10.167.63.17) X-MS-Office365-Filtering-Correlation-Id: ffb8ceaf-8a88-4fad-4575-08d3794c4429 X-Microsoft-Exchange-Diagnostics: 1;KL1PR06MB1703;2:wjGB2CbdTpWu3XOcJXcwGkCEm7O+FfnqG1qd1i6/5b+MtQVW4Plwnpebf8FmsOmHy4d5ZhA9HyEEzqzctlhvx3s/HscmlRG6Kn+mj2qx2f5oiiW0isxrxAKmbrq66qyUE8w0ODuDmFSe3TSsC96XVTx4SxX/FJpr46tf4TKKIZumY4P3+G7paZ+7sUiOTTGR;3:2+tagZQYQZHnTdhbTEIbcuUvKYSz3QdmmwSyunHXyn7rpukVfdzIw7yF7ZdBDWnhugjz3WIbQcRrZThOja4syIkMZwMeys3PnX4wOwESeDL6L2dvw5X1TqO8mNXSCSW0 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:KL1PR06MB1703; X-Microsoft-Exchange-Diagnostics: 1;KL1PR06MB1703;25:vJqUuiK+2AumMr+tUXT4BM9BaSqWDLjklid5NrRoUbtlNPPoK5IiQWu5uWdW0pF5R+JJbpwsUMgikzhUP+PjvfEmxAhjm6bjzg629CC4Q4ZPyANHyufwTe9mEJqYe89ComjNrlcz9S4pBa5SUmjzNIsw2mKQm9ahiBb2TEKhklQUrE4TfB4rzgRUNI+hFqG5N4+eMjVBG5OsG4lSHkA4dgxGaBB5dX/EHKQ01jcNzH9JMdylAh7Zy2q0wyiifyeQVF2vnZybmvOHwlU6U7sGfLSy15i2wRAu4vQgPkgNvNqpwFSD2lDf2pR/89U/dnqQcAGOlybYB8DQtvCuNPjehBIeQ2rXu+l0C6s9TGGe8MG2f8oMLTpK8fgjgjk/CNAMPZ2vuR5OF7ovQ5M0MNC1gA82gizM+1zgIYpS2iPEF83ByJFF2dizReV14iClT3zDIJb+EVYkslzRTYTYC9wHZEvlMcDb4ceIepR1w+PKcrEezNYdBCwjGYK9+JCS1Q63RcGAXrzC0g2RGNwHTG49xYMLSUK1V771G2oJVrUP5Nox10cPEtWQVXRSporPfEPhwGEilj0hQP7NtsCTG2eqZk4gGwJixZgNp6Nn9C3zXSnkvLmgd9gQiYkA4jHr85Py8H5TRPaSBAXM4lJ71/rHcDR07wvM3dCwLzOihq7N2ANih8fQZ7x6vHry7oB8ZRFvVP4KjU1GliC97G25Ns2ttXeYIYEVGtJOcOasBK4SwiUqZNkUxpCsulhDUq+QAZeG X-Microsoft-Exchange-Diagnostics: 1;KL1PR06MB1703;20:0++cGwyK58Avy+fzFqCXhFPQZP1nA0ZmrjDwc1oR/iWWxSaXMYfhitQJ4UD7GVnIDVRu//AMzRCLinA7vzd2MzRCNIBf06JzDRSuWKuXp7ASxdr7uE5NJtgJPyKnMhOmNAZIrOdhYfBUo3ZIY47GEB5iJqeoxdnpdWqC9l6nMwDy/2TDGsPCT4Q5pNH2A2sWqY0KDwSu+EWgkqJsqAPQ7bss/vvba43Dh/Y8xk2Gs6M8xRoOMiYVhSCNNhk44AOZ6NroA2iAOVvvz/dOR4svpUQQp5JiVp/JgApCk9/pBg1Jp+KK4bq7kHquA8O5pYxAKjYctqVzSkTvB2kiOGsSY6rZuP9DbrDOr4VBI++8PNQnY+AefsH6Wp88TGpvIo/3lBkIzSAzj8NWeUEM9OeYLF2W7VN/g4GfvWqp0vflfAOWSnWCaNoEtrKAXQchxs5XS5PhAv1JsPFvOa7Tk+/8484nebyQQkFNVA52u6TewIGgML4z5kOxkx9JcswYtXAm;4:NolDbMqm/i3Tm08mt3BQTTnrHeeBXRhbE+Y5cBsJVG96p24M3P4Eojh68RwwN5KezV36VhZ4GqQEa5IjK6me6AfWjerurEXaxepKenJlD1rSLfL7GwIP/Ng2nUUeB7BdvnOVIfsCh8KyJd4ml7Q7A3SNP9Zf/ZVKcWGg9aJj9K5Ls5tNeUgBFbG2Bw5F6eltc7Q0KSExwHmeFB4VncWWmkJ6iF3kXo9JX/l6TqeYW35eaCsNBj1LomhBVDaPnyBHvPsM8DZoPFeVU3mZe3dV1xF4FoC5UeV0SHgp0NWeW5DQjQLOTmjzXYYFgxXAKWrWRvpjllhlkXuxVDVdzglJB7nKQ+JOCqKBBVph7xVk2DHft7l45q0m9MsOVhwkPDBSuYCHN6rakewOC6Nz/84Z0w== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026);SRVR:KL1PR06MB1703;BCL:0;PCL:0;RULEID:;SRVR:KL1PR06MB1703; X-Forefront-PRVS: 0939529DE2 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(40764003)(46406003)(47776003)(345774005)(66066001)(19580395003)(19580405001)(2906002)(81166006)(33646002)(110136002)(4326007)(50986999)(50466002)(76176999)(4001350100001)(36756003)(54356999)(42186005)(86362001)(77096005)(189998001)(93886004)(2950100001)(53416004)(92566002)(5004730100002)(3846002)(586003)(23726003)(6116002)(5008740100001)(16060500001);DIR:OUT;SFP:1102;SCL:1;SRVR:KL1PR06MB1703;H:morimoto-PC.renesas.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;KL1PR06MB1703;23:LeSmP/sYRQFFNo9rreZDMUImbbvewz3hSUbfqBjNX?= =?us-ascii?Q?WJBtL0j1QdhpHQZjnvpvU+RkARPJvYPFHVphZfJIdFzedVeXJ6tIDvF4qHlI?= =?us-ascii?Q?BcW+k/lh2BbWFvIfI2mZZBzpKSIE7VoEfEG9YiNuanuwRVjNzGHpy9vaWDHo?= =?us-ascii?Q?5rZBCeU6F7axSLNQo/Htd/K1FaGYkNEtHGi5IAEU3TvW44UPU3XOb5RAyDEJ?= =?us-ascii?Q?/tItQVyNZ4tfNWQ6bszIYim68KdpAkFHBjbRgWDPU023akKWVtxYiFIJM/3A?= =?us-ascii?Q?94Q4UNtddPn/L2D9q5sI3OA/jOhBD/quTMOwV0OFYg8/qzFKdKBr5AhuJKp3?= =?us-ascii?Q?GXu3t7dgK+N3TQXkumam+l88PhcOx+E8lhN3icJFfaBJXJta6xOVM0z0bKp4?= =?us-ascii?Q?NFglgZUhJH2YAiNXsIhvMi7E7H90bLmcASXQflXg7nCeDNWqcXKspzUIo4+E?= =?us-ascii?Q?xVXb0V5gdIT6hrOCnvA5aJLnR3rPM3ck8uLB+kRCN29xPqwCFJ+3U/yOSNgj?= =?us-ascii?Q?G++Jsnul63KDdk9Wfpwdd8lcEKcRJHvxzA1TuSEX/UcreHY8Ow2+4P08+cnX?= =?us-ascii?Q?HtRcfKOj03GK4z9/vRURU/DyB7Kt0HdN3KYK17eT167hOiBcHpX6OLgpcZqY?= =?us-ascii?Q?6Rfdz1RDv78Ek2aJ1bxjSXpfJys5q2rn+QOUvL51oy0+sXz1DoUWjcdw+mJV?= =?us-ascii?Q?4HgUOCB2gQ6E1qvdrHFYsy/Oyi6OGM9ezPp4DUbZBKLyjYBU2QCR595ZKPvH?= =?us-ascii?Q?U9ByLhs10NY0HLLlIvupU+qNFhZqW3XnswJaSpjrhmr4avbdp1+kolV5FQns?= =?us-ascii?Q?LGQA4U8COpoVuL52DQTtGEz46NDFWYqZr+8KS9ZeyTuHW/MbYw/2eGKxfzIm?= =?us-ascii?Q?j28otz5N7UmkdC2yFfCSLp+M+0O0mUzwpKT4NClIndKZmrhlVGiCwHMAoeST?= =?us-ascii?Q?2AqR1kOB9lnbGsBv7tEZhXXtGXXqoc/HxY58CtC7Q=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;KL1PR06MB1703;5:HfOB7yxMOauIjoTb7SDbURx38Av1qb+J0LaStMmvkDTLj9Bwpno2rmFqu+iXFluLYlgjFgvop0UjtTJiI/w7MGbaiMqLF3C5Urow6upHuPzy5oNb1l6sYKKkSkeItycAxItcZCZ1NaO0arGBOWzCtg==;24:TKlEJiftIqL3exkxjmV0r4J7etFpU9XvI4AloMqDMuGZI4RFBVZ1ccj2pho2Arja6mSR+t6EqZ09oB62dI/37V9XsDPLB9cfCldEpIekeZ0=;7:tqPNREU3J4FVynPnUjpl6BqDf91D3au1r52NJYyX6QqKoXTOYFGCwx893OeuIubFHh5yIqpIuqkg3PMH+27wKAq3VgVSZViZ9StEJIxb2P3essZqMYgyJPVrkEPVHF2iufPxMt5OWJPbp+pysIH88P1XiuwWpkSYpI//ZcWTc/ZOD9pz+N+MJOJBCB+dCstb;20:FWP1IYiVlZJEE9Mqb4vqpKfVZf9cTWAYUF+DxQuW1UQ0b16eKeEPzD14YVzYTA8c26dgAwf5Uqc6/BlGyRIXjRLs1hztxlBBkylHuVu4y7Fw1esqPAyihyDwrVSqu+vGiOTZkkNCNIct0dhD0qtIbolNMevk6TdsZ/RKNFbj8Rc= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2016 03:28:04.8652 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR06MB1703 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Laurent, Vinod, > > > From: Kuninori Morimoto > > > > > > Current rcar_dmac_desc_put() is using list_add_tail() in order to > > > push used descriptor to list of free descriptors, and next DMA transfer > > > try to reuse it from this list. But because it is using *_tail(), > > > this reuse effect can't be obtained without using all of them. > > > For a longer-term solution, we should allocate hardware descriptors > > > using GFP_KERNEL instead of GFP_NOWAIT, but it is difficult today. > > > This patch uses list_add() instead of list_add_tail() for short-term > > > solution. > > > > So how does reuse case help by not moving the descriptor to tail. > > > > Also you are not reusing descriptor, you are reusing a descriptor memory, > > these are two different things. > > > > Lastly how does this help? Something doesn't seem right > > For each descriptor, in addition to the memory used by the descriptors > structure itself, the driver allocates a list of chunks as well as a buffer > for hardware descriptors. Descriptors themselves are preallocated, and > allocation of the chunks and buffer is performed the first time the descriptor > is used. The memory isn't freed when the transfer is completed, as the chunks > and buffer will be needed again when the descriptor is reused internally, so > the driver keeps the memory around. > > If only a few descriptors are used concurrently, the current list_add_tail() > implementation will result in all preallocated descriptors being used before > going back to the first one, and will thus allocate chunks and a buffer for > all preallocated descriptors. Using list_add() will put the complete > descriptor at the head of the list of available descriptors, so the next > transfer will be more likely to reuse a descriptor that already has associated > memory instead of one that has never been used before. Laurent, thank you for your help Vinod, does above clear for you ?