Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.0/patches/2175196/?format=api
{ "id": 2175196, "url": "http://patchwork.ozlabs.org/api/1.0/patches/2175196/?format=api", "project": { "id": 28, "url": "http://patchwork.ozlabs.org/api/1.0/projects/28/?format=api", "name": "Linux PCI development", "link_name": "linux-pci", "list_id": "linux-pci.vger.kernel.org", "list_email": "linux-pci@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null }, "msgid": "<20251217151609.3162665-20-den@valinux.co.jp>", "date": "2025-12-17T15:15:53", "name": "[RFC,v3,19/35] dmaengine: dw-edma: Poll completion when local IRQ handling is disabled", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "e6fdcb255ed89ea139ab60c80946c56dd4fc7f5d", "submitter": { "id": 91573, "url": "http://patchwork.ozlabs.org/api/1.0/people/91573/?format=api", "name": "Koichiro Den", "email": "den@valinux.co.jp" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20251217151609.3162665-20-den@valinux.co.jp/mbox/", "series": [ { "id": 485709, "url": "http://patchwork.ozlabs.org/api/1.0/series/485709/?format=api", "date": "2025-12-17T15:15:53", "name": "NTB transport backed by endpoint DW eDMA", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/485709/mbox/" } ], "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2175196/checks/", "tags": {}, "headers": { "Return-Path": "\n <linux-pci+bounces-43184-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-pci@vger.kernel.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.a=rsa-sha256 header.s=selector1 header.b=jQ4YC731;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=104.64.211.4; helo=sin.lore.kernel.org;\n envelope-from=linux-pci+bounces-43184-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.b=\"jQ4YC731\"", "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.107.74.52", "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=valinux.co.jp", "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=valinux.co.jp", "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=valinux.co.jp;" ], "Received": [ "from sin.lore.kernel.org (sin.lore.kernel.org [104.64.211.4])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4dWcx22PWYz1xty\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 18 Dec 2025 02:22:30 +1100 (AEDT)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id 3EBD2300FA64\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 17 Dec 2025 15:20:23 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id EF40F34E743;\n\tWed, 17 Dec 2025 15:16:41 +0000 (UTC)", "from OS0P286CU010.outbound.protection.outlook.com\n (mail-japanwestazon11011052.outbound.protection.outlook.com [40.107.74.52])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id E675B34D4F1;\n\tWed, 17 Dec 2025 15:16:39 +0000 (UTC)", "from TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:24c::11)\n by TYCP286MB2863.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:306::14) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.6; Wed, 17 Dec\n 2025 15:16:30 +0000", "from TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM\n ([fe80::fb7e:f4ed:a580:9d03]) by TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM\n ([fe80::fb7e:f4ed:a580:9d03%5]) with mapi id 15.20.9434.001; Wed, 17 Dec 2025\n 15:16:30 +0000" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1765984601; cv=fail;\n b=ibc6HzLaYLsWhNK6Uq0DzkL2IC2zS5A1BVhhL+c+y8K1EkJSnH3q5U4rm7Xo5ivVIIYDClZ1mzckuBMVXxI5rY/x/Vu/yqA39etFE/PzbsJdZZhyoMYA46wa5WQtZweHXFDoPjbH+u3NyRQEqCOD7PSRil5jpvE0f/ik3DCw724=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Dt6W/q1T90F9ncxsskAp1q74JgmwRTKmdO8GYVRfVKlEbHYgJOKLF356aiv1DHgcIuW6lhOYnYiv21u9/D4qROiBgNW51/GCOSW9sxSWkRJEPMtsgVJvB9cyW0ggqKm7eaGStaloJ9Pw/wt+qnvyIinl0quSUht4XPzPIbtnu9vHlp47zclI765lC9pw4f0Xo6JRhc/z1KFErWSi0A8vT7TrAYFLt6RZq4NGi5CPRXOcfSVuCN5cU0PPIO5zrVbVVUfpYbtL47xg6J2wFnXgxDeNa546V5TolIiAsPyopJ91ygCeceqPxUfhUYzDFW0oGovq3oM9jsyKj+FDifgPAw==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1765984601; c=relaxed/simple;\n\tbh=5zqyBJOpEKSXnGAGV2M8EAE84LUa4/L6yLnivtqfkCc=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=kU+ohEH1o5TL4ASQY9L1vO5rqFTCEzLllvAHxiUdytVVRdGbQyYFPRQ/hY6wR/OfQCLxeVc/Vd+JCbYO3921CxX7S6xQc31KgTHXhOPJ3i0U8uPfu7CML3nycISBTPbNGuQK7X2tDjgNPnCdsTCHDxOk2NcuAfkSLiDzgE/hCqo=", "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=bLzUNjy/oXeER3ILFYYjuUL7EuoIyktAk5SU4q8+TmI=;\n b=abI2IsBsN9/1z03XOFUHBImZn7L1tiVigT42/4/JfQITlwgrvG9fpai6z4Z8sTCMvEdTsu4rk3i5m18SRr13aycYT2tzUz8OvoGPj9n+YuLUO4idg8Fvtox86Mosod/UGck/2D34FKBhedwQdk5RD6jhRWa7mWJP+z8bM/Q3ufEFRTwudaup+BnNG0f6yORHYonwU6rwYqgcxMM0+eEeaJr0Uw+MR04Zhq26Jjj6zLftCDn4ek84RvZBNFAGL2ctcPKyOWTkjOK0yXBjeNS4gGdHDM/xiVgQ4DLsyQycuuHvuzd45TzZv058oMn2OB/M2g/RSMEyAoZIZ/o+2AWc7g==" ], "ARC-Authentication-Results": [ "i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=valinux.co.jp;\n spf=pass smtp.mailfrom=valinux.co.jp;\n dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.b=jQ4YC731; arc=fail smtp.client-ip=40.107.74.52", "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=valinux.co.jp; dmarc=pass action=none\n header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=bLzUNjy/oXeER3ILFYYjuUL7EuoIyktAk5SU4q8+TmI=;\n b=jQ4YC731qZbJapXsGOPoGGUr0xm+PJYz7l2ufcFXQIDnyMjj/2Zu+t10+yoUoeu6WdyXRkrTUv2i0dZEqzysBsl5XZVaZ7TH/WRIbTERHtZbjUhJkTO7oj0sztsWcGDQVO9IAQBzCzuvjd4JFrwGDCBqRbwnIbPJH40BqXsItKY=", "From": "Koichiro Den <den@valinux.co.jp>", "To": "Frank.Li@nxp.com,\n\tdave.jiang@intel.com,\n\tntb@lists.linux.dev,\n\tlinux-pci@vger.kernel.org,\n\tdmaengine@vger.kernel.org,\n\tlinux-renesas-soc@vger.kernel.org,\n\tnetdev@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org", "Cc": "mani@kernel.org,\n\tkwilczynski@kernel.org,\n\tkishon@kernel.org,\n\tbhelgaas@google.com,\n\tcorbet@lwn.net,\n\tgeert+renesas@glider.be,\n\tmagnus.damm@gmail.com,\n\trobh@kernel.org,\n\tkrzk+dt@kernel.org,\n\tconor+dt@kernel.org,\n\tvkoul@kernel.org,\n\tjoro@8bytes.org,\n\twill@kernel.org,\n\trobin.murphy@arm.com,\n\tjdmason@kudzu.us,\n\tallenbh@gmail.com,\n\tandrew+netdev@lunn.ch,\n\tdavem@davemloft.net,\n\tedumazet@google.com,\n\tkuba@kernel.org,\n\tpabeni@redhat.com,\n\tBasavaraj.Natikar@amd.com,\n\tShyam-sundar.S-k@amd.com,\n\tkurt.schwemmer@microsemi.com,\n\tlogang@deltatee.com,\n\tjingoohan1@gmail.com,\n\tlpieralisi@kernel.org,\n\tutkarsh02t@gmail.com,\n\tjbrunet@baylibre.com,\n\tdlemoal@kernel.org,\n\tarnd@arndb.de,\n\telfring@users.sourceforge.net,\n\tden@valinux.co.jp", "Subject": "[RFC PATCH v3 19/35] dmaengine: dw-edma: Poll completion when local\n IRQ handling is disabled", "Date": "Thu, 18 Dec 2025 00:15:53 +0900", "Message-ID": "<20251217151609.3162665-20-den@valinux.co.jp>", "X-Mailer": "git-send-email 2.51.0", "In-Reply-To": "<20251217151609.3162665-1-den@valinux.co.jp>", "References": "<20251217151609.3162665-1-den@valinux.co.jp>", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "TYCP286CA0036.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:400:29d::20) To TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:400:24c::11)", "Precedence": "bulk", "X-Mailing-List": "linux-pci@vger.kernel.org", "List-Id": "<linux-pci.vger.kernel.org>", "List-Subscribe": "<mailto:linux-pci+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-pci+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "TYWP286MB2697:EE_|TYCP286MB2863:EE_", "X-MS-Office365-Filtering-Correlation-Id": "6d74163c-de22-4c25-c9ac-08de3d7f419b", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|7416014|376014|10070799003|1800799024|366016;", "X-Microsoft-Antispam-Message-Info": "\n 1yQnKvRZzomHKbZLBV87yPo6/Aq/w5KzaDJU11N5iYn9RqgsGAXlwcnChCxKatXSuPuh8L2Df7rSYxOn62EHLZwE+dt0Pf3GBSptFOwUbmItLlpIvztn8uSgrOhgVpgoGaI4P0KW0yXWPedlnVeLPwgdNF4EwWSlSWhSumhu9yUaMYK5LQ1cntq1VkvbHYOvQxxaol+QSz2n7SH1hagtrb8c56IXhlKIpU0MtGpib+djHuBS+VaAMu+tfyutqWz2oamSyAuugUJraOdGqPSzYkedbC8SYHqgK0buBLlzxAaMIsQpZ0tcUixlwju3cF6imaHr1FXJWftwWopj4SK7PZyt3Ss2jBnOGxoH1/1uajkUtcWsrNYIfFZ9XXiZV28HBVzOeWc3ef7Ahw02hJrNeKyOaNVU09DZOvyOhHepFeS9+HZEd1oMwQOS4Exbz5W1okYYzhWbS7LRCXc9I9UmyGFY1Nuq/MsK+/6R0CJyWyC8nkZ6VVtr/3hq/BuZtupWiw9DzML08k3i9BZMGWVVCVAt/qCCtRVW2aNz75yaISXueJmARq5w6cMGcpEGajgZw0bgKndamG5NM35k8x791UKiZRZVuyTXEPPBiv9HODIl4gtrHJfq5WD1K9GSlvg/0gMdan+DwXIFk6L37oLwQ1YhoJo7NCKYsn2XCbvBZUkiL87Ar0bvALBe1Y/BBr+aEsvluWAHQf6xdbuyAelfGU3JXYTdvaJ7VcascvfBWGfa1NndOUNlpqklI2LKM1BCyv7wuBsBmS12yiLfwB9mbjUmMYu/VATufmLt2nK57UBDmTiCD6dZf/tzh75uQJ6VeQV665FuGH23gU9iwyV1lpJ1iHxU5uosEhR1RPh9kjS8PDtU4Y8K3SnJ0e9/tWxzY1cc08mbwUdDFjJInpUa0k/tAnTf+R4Y6OorvjgVcFpn25p33dW7Gp0rEC/gsqsUEPLRX7SG/o/RobGnipLVajRzClbKUPEcm37rQhv7MBMH7fmqaGBWIEoMAT0sKk4UzOVGTjhPa5c0GqrMEWsozi9PnNUFBb2Gj1WirmlLH+Y0k2RNnLXIUC5/cgsPmDlqJ0CjdeX2FR5Or3IsyF7QCB/BM4TMXtvg0OHb8Ta4eaSP3q1ua+toGK14GMkHnz1LiZf3yj4dMaq+qgrwnhXqtWUOKWIYL1i5uTztcwMXJFDxn/rwI3j7fcJ7dRg5mtc75wQwra99XFWzkdTYURENHSR+0LKv9iJpt2VfRa9GsDpfKWTK96Un8czgBn+n/iTH8mOt0zBctKvxdcIWD+qCRbs4zqiFhYdOPhCtAagpdlFF048LAy+HKGM/6rwqaHO2L8QtUMTNRNsX5gKTkRLLcXTyfUKSnGeH6jdDJmzRDBWl0Lzaenp9KlQP4j2KpgqIu6XC+EpBkIHNi9boiOBEjxEAmDJETl0vs9oUpQKbtcxtr4ThW+Gn9R1Hqo8q27VE", "X-Forefront-Antispam-Report": "\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(10070799003)(1800799024)(366016);DIR:OUT;SFP:1101;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n U9NFYJCjWNQE2pTI/arGeY8s5DR+oIdo/7JjowRy9s0MTZ1SeCfJDMS88w//fiJoUw2AG0yPJlYipu48J7gYu4fL1hjV05ZafDMOVMsBF1qisSBG37pP4OcPtFP3Vp3kcc/NcbDb09wcHjopi2NX8w5DsIzzofJCOqbjp2lUUPdCmgGbW/KAbBJu0dcDHWe5xNOteozjGHQi0FU2+9JczcKoNSkHo+Kd1vPIGJSgFsoViPn7erL7bfO74QZDueN292Za4UBD0IOuZBWck1+c1vJsZHTtJY+5IuqDAxLa7HADpSEvUhaRI6QS599qbMahqGIkvKqfMqONmeiam1ofArmwYis95FWPKt0B/U3sWAz61Jr8emtmTRHppmWx4elFBNNtojpUI1C6mACPGxIj1dKxSCpTBeTAH0v4vW2R3YyQz93ZYVU/3bAx9F2oGIhWTPcKrqrp25CeviOuMKxjM9JbTL24tBtoIArPanIjy5S/CHZ+L24spH0c/y65lAG5zKBAcOkge2HUo+S7sFwAH/zQDW2nl1crjvfygyGVaCX0P4YNJiUw6/+xKDR4pdMcIHTjGQlg2SI4IIWzfM4/7/OshJ2Hrpp/7CGeZfn/QxDedrfaoYnbZ0vPPj5oRDXC4gFjUiTUzniJObnTenWIkMUsaDbpVVYFSN8BjF7DhX9kKiwHqr+Cpr3e5EUyB0u5PdRyOS1HQrTDot5FbstHg6Hj0Y5twzh+Vv5xMs/6y2n895gMFBmVk8oJlJw6HsoIiq1xh3mnnNG90EZGoM0V1f2S0R+wW5ncuIjFVA/Sqt0HGgzy6NHt7stze3GcPss5myomuTYw0UXkYl86baLnOjPIUpTWnMhyBJniBk2r/MDlIBGG/aTW/YKurmd83sQiLkDDSB/KRRzwhlOkYP1NWPMk6cmJDNCAgMsQ7Nwk3NQbpnPe2iFEwalE4pAHSEkRXqQY1MppYjjM0ha29QCOv13iazoANw8DfIsd8VTVfwSkMXskDpwQ/NEFYzHNkbfjuRwqaSyEPzsUdailAbSBlVLQqMKKT0t7GhGPcJ2OHfMaii9fbda8HG30f4JOZ9Gu/3/IrktEuDhotUI5G5Nf07owEFG4bkX2YFh3Fd2ZdPyc5rqIpPdYZqtKw+Gtt1trelhJICuNuqTXY7pb0D2EVJgGs9xZFcWzQ3/rLIkcuNNyPNcneOQJKmFrKXejx4xChcx6A3gIzLv9HuM5AK5HlEKcKQbL7//hebDwaxmPOXhZwvECBC5LAGASt4LNqpvtKkXYCtqPQyqbzstW1Y019vvHxZxVRx9LwS00DX7bjuRtNeFiXgVJV6luJ4ZvMCH60hjOZds3fLCK8yoKWnS9wdDssntzy2SCyjxDlzzDRz/vEiJxBbPbVEej1z54j1N7l/0Dd37k2KWiV03g/pfoNrsRKTh3BugXKLQ/emLNYjejhphbwdBBn6MI+hZKwCYCkUOPuzllMJH/tkeiyXsJXHqEDiqbCGj/xWjSUOUpCvIqFrnmJ0a8P5I5fbK8cu9iCUQ5gNeuSsZQ3hHB/HhFI3iYrm9VABr82X580gHcC9j2Ofl+QXrX0gzP/biMl4yBat4napxSRpqz+zW3z5CQ0GsN+wsziVjLC3679VYrUsw=", "X-OriginatorOrg": "valinux.co.jp", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 6d74163c-de22-4c25-c9ac-08de3d7f419b", "X-MS-Exchange-CrossTenant-AuthSource": "TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Dec 2025 15:16:30.4752\n (UTC)", "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted", "X-MS-Exchange-CrossTenant-Id": "7a57bee8-f73d-4c5f-a4f7-d72c91c8c111", "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED", "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n +x7B5+xRqtBusGu5r7rTgBc6gaxBmwECwu9v2b+5DsS8NZnV//+pdv0LVZz0e5uzG9kPAnuLo8JqGW8LVmITkA==", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "TYCP286MB2863" }, "content": "When a channel is configured to suppress host side interruption (RIE=0),\nthe host side driver cannot rely on IRQ-driven progress. Add an optional\npolling path for such channels. Polling is only enabled for channels where\ndw_edma_chan_ignore_irq() is true.\n\nSigned-off-by: Koichiro Den <den@valinux.co.jp>\n---\n drivers/dma/dw-edma/dw-edma-core.c | 97 ++++++++++++++++++++++++------\n drivers/dma/dw-edma/dw-edma-core.h | 4 ++\n 2 files changed, 84 insertions(+), 17 deletions(-)", "diff": "diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-edma-core.c\nindex 0bceca2d56c5..09b10ad1f38a 100644\n--- a/drivers/dma/dw-edma/dw-edma-core.c\n+++ b/drivers/dma/dw-edma/dw-edma-core.c\n@@ -303,23 +303,6 @@ static int dw_edma_device_terminate_all(struct dma_chan *dchan)\n \treturn err;\n }\n \n-static void dw_edma_device_issue_pending(struct dma_chan *dchan)\n-{\n-\tstruct dw_edma_chan *chan = dchan2dw_edma_chan(dchan);\n-\tunsigned long flags;\n-\n-\tif (!chan->configured)\n-\t\treturn;\n-\n-\tspin_lock_irqsave(&chan->vc.lock, flags);\n-\tif (vchan_issue_pending(&chan->vc) && chan->request == EDMA_REQ_NONE &&\n-\t chan->status == EDMA_ST_IDLE) {\n-\t\tchan->status = EDMA_ST_BUSY;\n-\t\tdw_edma_start_transfer(chan);\n-\t}\n-\tspin_unlock_irqrestore(&chan->vc.lock, flags);\n-}\n-\n static enum dma_status\n dw_edma_device_tx_status(struct dma_chan *dchan, dma_cookie_t cookie,\n \t\t\t struct dma_tx_state *txstate)\n@@ -707,6 +690,68 @@ static irqreturn_t dw_edma_interrupt_common(int irq, void *data)\n \treturn ret;\n }\n \n+static void dw_edma_done_arm(struct dw_edma_chan *chan)\n+{\n+\tif (!dw_edma_chan_ignore_irq(&chan->vc.chan))\n+\t\t/* no need to arm since it's not to be ignored */\n+\t\treturn;\n+\n+\tqueue_delayed_work(system_wq, &chan->poll_work, 1);\n+}\n+\n+static void dw_edma_chan_poll_done(struct dma_chan *dchan)\n+{\n+\tstruct dw_edma_chan *chan = dchan2dw_edma_chan(dchan);\n+\tenum dma_status st;\n+\n+\tif (!dw_edma_chan_ignore_irq(dchan))\n+\t\t/* no need to poll since it's not to be ignored */\n+\t\treturn;\n+\n+\tguard(spinlock_irqsave)(&chan->poll_lock);\n+\n+\tif (chan->status != EDMA_ST_BUSY)\n+\t\treturn;\n+\n+\tst = dw_edma_core_ch_status(chan);\n+\n+\tswitch (st) {\n+\tcase DMA_COMPLETE:\n+\t\tdw_edma_done_interrupt(chan);\n+\t\tif (chan->status == EDMA_ST_BUSY)\n+\t\t\tdw_edma_done_arm(chan);\n+\t\tbreak;\n+\tcase DMA_IN_PROGRESS:\n+\t\tdw_edma_done_arm(chan);\n+\t\tbreak;\n+\tcase DMA_ERROR:\n+\t\tdw_edma_abort_interrupt(chan);\n+\t\tbreak;\n+\tdefault:\n+\t\tbreak;\n+\t}\n+}\n+\n+static void dw_edma_device_issue_pending(struct dma_chan *dchan)\n+{\n+\tstruct dw_edma_chan *chan = dchan2dw_edma_chan(dchan);\n+\tunsigned long flags;\n+\n+\tif (!chan->configured)\n+\t\treturn;\n+\n+\tdw_edma_chan_poll_done(dchan);\n+\n+\tspin_lock_irqsave(&chan->vc.lock, flags);\n+\tif (vchan_issue_pending(&chan->vc) && chan->request == EDMA_REQ_NONE &&\n+\t chan->status == EDMA_ST_IDLE) {\n+\t\tchan->status = EDMA_ST_BUSY;\n+\t\tdw_edma_start_transfer(chan);\n+\t} else\n+\t\tdw_edma_done_arm(chan);\n+\tspin_unlock_irqrestore(&chan->vc.lock, flags);\n+}\n+\n static int dw_edma_alloc_chan_resources(struct dma_chan *dchan)\n {\n \tstruct dw_edma_chan *chan = dchan2dw_edma_chan(dchan);\n@@ -1060,6 +1105,19 @@ int dw_edma_remove(struct dw_edma_chip *chip)\n }\n EXPORT_SYMBOL_GPL(dw_edma_remove);\n \n+static void dw_edma_poll_work(struct work_struct *work)\n+{\n+\tstruct delayed_work *dwork = to_delayed_work(work);\n+\tstruct dw_edma_chan *chan =\n+\t\tcontainer_of(dwork, struct dw_edma_chan, poll_work);\n+\tstruct dma_chan *dchan = &chan->vc.chan;\n+\n+\tif (!chan->configured)\n+\t\treturn;\n+\n+\tdw_edma_chan_poll_done(dchan);\n+}\n+\n int dw_edma_chan_irq_config(struct dma_chan *dchan,\n \t\t\t enum dw_edma_ch_irq_mode mode)\n {\n@@ -1083,6 +1141,11 @@ int dw_edma_chan_irq_config(struct dma_chan *dchan,\n \t\t str_write_read(chan->dir == EDMA_DIR_WRITE),\n \t\t chan->id, mode);\n \n+\tif (dw_edma_chan_ignore_irq(&chan->vc.chan)) {\n+\t\tspin_lock_init(&chan->poll_lock);\n+\t\tINIT_DELAYED_WORK(&chan->poll_work, dw_edma_poll_work);\n+\t}\n+\n \treturn 0;\n }\n EXPORT_SYMBOL_GPL(dw_edma_chan_irq_config);\ndiff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-edma-core.h\nindex 8458d676551a..11fe4532f0bf 100644\n--- a/drivers/dma/dw-edma/dw-edma-core.h\n+++ b/drivers/dma/dw-edma/dw-edma-core.h\n@@ -11,6 +11,7 @@\n \n #include <linux/msi.h>\n #include <linux/dma/edma.h>\n+#include <linux/workqueue.h>\n \n #include \"../virt-dma.h\"\n \n@@ -83,6 +84,9 @@ struct dw_edma_chan {\n \n \tenum dw_edma_ch_irq_mode\tirq_mode;\n \n+\tstruct delayed_work\t\tpoll_work;\n+\tspinlock_t\t\t\tpoll_lock;\n+\n \tenum dw_edma_request\t\trequest;\n \tenum dw_edma_status\t\tstatus;\n \tu8\t\t\t\tconfigured;\n", "prefixes": [ "RFC", "v3", "19/35" ] }