{"id":2175223,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2175223/?format=json","project":{"id":28,"url":"http://patchwork.ozlabs.org/api/1.0/projects/28/?format=json","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-23-den@valinux.co.jp>","date":"2025-12-17T15:15:56","name":"[RFC,v3,22/35] dmaengine: dw-edma: Serialize RMW on shared interrupt registers","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"0ced193ab9553e1de73cbc85597bccd325d7cd3a","submitter":{"id":91573,"url":"http://patchwork.ozlabs.org/api/1.0/people/91573/?format=json","name":"Koichiro Den","email":"den@valinux.co.jp"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-pci/patch/20251217151609.3162665-23-den@valinux.co.jp/mbox/","series":[{"id":485709,"url":"http://patchwork.ozlabs.org/api/1.0/series/485709/?format=json","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/2175223/checks/","tags":{},"headers":{"Return-Path":"\n <linux-pci+bounces-43189-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=N+zdelqE;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.105.105.114; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-43189-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=\"N+zdelqE\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.229.13","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 tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114])\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 4dWdVj6ZLjz1y0P\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 18 Dec 2025 02:48:13 +1100 (AEDT)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 956733208B7C\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 17 Dec 2025 15:23:43 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id B9E8535CBAC;\n\tWed, 17 Dec 2025 15:17:44 +0000 (UTC)","from TY3P286CU002.outbound.protection.outlook.com\n (mail-japaneastazon11010013.outbound.protection.outlook.com [52.101.229.13])\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 B86CC334C3C;\n\tWed, 17 Dec 2025 15:17:42 +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:33 +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:33 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1765984664; cv=fail;\n b=nBSyTUpDT5mqfLrrnoTSbTpvN1lKbGBluluhNcA5wwx8TNrbMRRSN06ajhxz5f+wiOet3qiKyl1Pg94SjwLtednkge2RyEgP/HKoI6SVFFXNmYPTNVZUqW5+0BxicTQOcflTSAWDO+XNw7fGgbHVK1rlmg6/2aEOeBuAAb07B+Q=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=gFA8Qoq4MoVhq6TMAptODA575I6ZuDweE8fgMheaJI7Fg0RJA8y9GJNBozErPy9t+9PcXG6QnpoS6eAn096P4XnJqQJh3DZjzHhpHV2PBvibSrSHOVCx/VPGZZKXbUSEG0viJVAuFYelaWfsWui+EOirLZclboOA4DenNGMN0Nrv8aiteEVku+y9R3ye/fu9VWPOb4V47xinmj4RjVd0oGKrYBCLiK4B12WRuT2MtFv4RNiXGGSntbf6MNgidKyXWBYfoQYQqn4bgwcxcRrHG+leJZcMCryw2sKe3LQT/hsnf/mervWs8mqCR+EAuLNpnnpkj8rhrOJeIkNRm3Eexw=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1765984664; c=relaxed/simple;\n\tbh=DAEix9MDDCfrjOvRnRB1FL/9rVvY1942DyeRzPRmYBQ=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=I8OGy33uhOzlnrLalzK3hY6ogGIUruCFIxxCtdnOiDRBxwRcmKubuv3R6Wjak6SJ11tysdIkbKwtU1G9SmZ33myMQ4+O1dsUEuYBoDmNnTwuReboksw2ciJ4Z18j9omBTaGQsi/vFbn8KQFYgWaGMMv/uztPb3G0zahnQZ8eQAE=","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=tUoju2dkZjW3upEzmalpCmz+unTj6bHhTmBwkFo8YzA=;\n b=uyc3lReUBh7jCcxj9ATJ49/W6/LlStbHiiY6UUxnn9uj61Mc7YZH5zVqvi0dwhwXjoe2M+OalTNk+7bIV0jV0ZBpR4aK+lRd2VJaik5iMAksqS8dcrbhFtMcltRrTg2K7QBgNq2Q/m6wRuUbfholja3mishmxn5uiDRp4FNOdBG/4ROzicWQrB4cEnDoz4gBDTyjTwdSc2xFKUOj1JawWQ07xC1ZGMK/70/HTD93QBIwTUFea/XG0yq0N2H0FhZ/hlBELbnIwg0zFhQOEKfj9UB404nWMBe5rI8cfDTj0hkZXgytQTUjPYWzQlq3EW8dk4bKCb2Eu4ifv9SdSw4VHg=="],"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=N+zdelqE; arc=fail smtp.client-ip=52.101.229.13","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=tUoju2dkZjW3upEzmalpCmz+unTj6bHhTmBwkFo8YzA=;\n b=N+zdelqE+JKLFLiuHZf1w/h5tLSMIor8v4hT6oEq84elJvR9Wlpt2Koldqbj2V9oQFhck+oGP1GWLPYlLuab2bTzG9ML5CeRN/fG0s7ed63PsVRikzTjJl3cK1eOXzrIvF5CtpQ7GCF37ooN6q4AH5MoAXH1Qo8WX5BNatnIVTg=","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 22/35] dmaengine: dw-edma: Serialize RMW on shared\n interrupt registers","Date":"Thu, 18 Dec 2025 00:15:56 +0900","Message-ID":"<20251217151609.3162665-23-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":"TYCP286CA0037.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:400:29d::12) 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":"34da8626-ba19-4028-b25d-08de3d7f4345","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 e5d9zYJNxSwOV4HTW+sbHhYyyFUtFbcK6c+7O0VbPOVkfyoa4/Npcm+hru9uyznfxqm5iPzPQQ2/O7B6JEKCnIH3rmwC8evZq16bzjc4BB/4CgvSZyGaUGrMJhZmrDDwo6be6PW43VCWEqqWSB8wRFx4LWYaD6B1KPLyaqhTxsy4lNm/3bh9nRuGsu/0LRto9zhUYkZSnKP9BrfFC+XAHA7esYqF9xAekAK/sZafBUpcW5bXT6SlBdCuNtg+pKPtxhrY+kJkDMrwGKGbVnbWzlVziyd6Oy0VlcowUTQNTMG5K7/mmbOKvt1VV9iKWUcp0X1YpXllXT/tv9wqlPipgAAJv27dgbZ7BFhASZXBMm4XTlhIKRNXtX7gb3xJxqPEu6m33t718yJ/CiyENySkY5Wh4ji1V5MxY5eiLRTwZnkevNX6w2nKO0L5S4CFFp8lvCa/YugVpLeo03a0Svyeq8rwed0+zGMvTyRhdA7XJiEM6eC86oJa6lE3TQJI/h8Ussd6NoDmFuLeWCWnWJB2TMwmX8RVOWQaGm6qXHpmy0s3OkPTPYQm8KcrCRsFeDUBL8AaWQPoVKG+t288ppJuyWgsULeQ4o4DaJfpdDA1SnxKgqaFGDuQ8ae+XNgeE8IGZxqZzqx8Zc48DQU9Yn1ZpoFaPnj8i5FuTNfHp0CAWveBpSlOn3j8FnUKVfexYG+axxUMoaqQbXEkiegzpGsXK110ZqgCS+gKlMqnxuTx2hYpoQ7X4qddL1FUidKm4cHbZGvG2b/sVDe589KN2phDFhKtRPCdld/e2MrdirkHKQPcbK1upaIzjfA7xQkte52+MMP0KwhRR0TkwwTAhznfChIFlUXu+fDto27SN7wzcOb1cBPg2tphDA+Xc4/2HCmge/mCvpAwvaD+3UQyquRb/ffvAHnBhQl10eFLJeKsISMMqi0lzWpRT2rkQ3Pzq0ZlGlpmvoRgd8uyLczgpM078JM4Lz+SINHyhqzzLwlCtSv6bLcvmNU84HtDVlitF7uR6nxIzqBmO5+dpTmJQs5ruDGRz1IGk0SURiqZ8GTCu/oslD3CNn0feQB9Bsublw/7mIgFFv10SDnm3aq7RezFy5ZymJvQRGbes8pJt+RMuhAAbaGUKmU3ryjcbrmQZC57IVzj5GP/Q1Yz0A+bydpaD0fBoc2Pmupj8BFdzS4Jr6pdZqAfqoioFFmqxubH6qMz+AuOY1etFFn9CHVAqjChtdz5RmaJc3pr+iPKtPum1MLFZrLBN7w4u7fdgVFpzulWNI7JZx8XamTQB2OZBQEJkVSffg5/I3+RSZCnMwnrKQvQHr2Ev9NBZoV6fWUrwzis/cDVAqrflGLFxMC0VXyeQ8EXHNjvVecOy5kxRVSQaCATrnc7ZzpTY+1H/vvPhzKYqt5PTl0JT3QfapPS6Fj8GgY94LBw5SSc7vjpjKgAfccX8YxOePwA1TMpDyz/jaJe","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 Afkc8KjcGqfGzqWjMgS84LMztR7w4NpxBek0a8TcNUyKTfwLhDD7SXh6mwVJAl5YdKB5qHknsBinhvAgE0D+U9r36g5hLj0ggHSLI09V09D1cx1MtuFUutcr44CkGTHOI5UhtotHhOfxlakLR1VLNSoyGSnotPa3IRU5uC/aBTturJxPyNYmvvAJPCU4K/CBXlhFxtsMiGQHQZAgzB2JlDOaPkrU4WTLksdLJ+M6K9b0OxZqsYsxjpPtCPi9dH1by6G+az4ZYqkgNG8h9EjraRT1gXKpJ8q4ROk6tynmU/DVMptPDlM4xXJw7zpAODyGNwKooD6Y6N9B+iunjQWS2ietBDTbJ8jWIeTFYDA4sTKYEvV68VA40HqMCISB3P+2Vr0nLYyvQm23EKXMrdeJ1yR1o6VDGhWzchrOMCbcA/WU3Q/6NNaNNtKi3V3ZEAqeDPZzB2zSRTfl2D3TtMMuDhs9aFYoB/m5BI46HCJcrmhE+I7tnnaf1O5eJiea5cBoWS/d6MCIDbDIzPsZsok3/XQoIIz4yMSbkwjK8E56UXL0ZoroOKxkT1RNGwzK87BIR46SasMHuImKWYz2gZpylOFGg8kexvwRbmtDLv6KVuA6oqf0tP9wUl1EkRGdYmcvrGzIXBYLqYYSjMxiJhOlVxQtyBvD4VZQu5NkY+ActBK/ZLK47h3ROv1sJtMXjHSg9EsLYA2Mim2AlivKJZvncHNGlcGfjBsTG/iqK0RoCbiOn97q0VWYtBmD57rRKV27BPXfw0Egfq+Ugxc7TGBCkNBTWSY5MNtd7iwOvtY1sjhNfXyE1SrczuWSmgREMs0va4HHLbuBQxvvmWGlLzYnmhv/Df3OzYRGDxoh1ixD3bPSS3QJU/MBLXR37EJ1eoEhzJJcz6MP49oBXGlpBk5RmzFBIr3h+4pEZwQjDC4kGsECDzp7VyrXnBTyH74Y/amOhy5N9wBhlfFK/QZJKIS/a0zf2xThG1kl/VvQ0bXItMvOP/hF6Q33iKN7HWjwgKK6gUFW3LJbOTEoTf9oNnr06uZiS77FskzAxaO5gPWmvwxlpHBi4FMNIRqQwIItubRCu6x7FEkUW2RDq3ewmyUkg5nW9UQvkg8epkv0LaaWNujqmDCYuHdmUYikUFScqvlxIR/29hirtqvyNr6IvBhgzwYCtL9MUEilievCHJteU4Yfj2rMhN1yXkak2tj6Bg5jiwjbSucgFjz36kP2NrSEsZovT2SnII6z5OW+22JtkwpyOqXwMshAtuS9XJI1SNdUptVUWF7AuK7TR+IMQAAO3k4hS1Hs59deoltq14mviGvEB/n4pMzGLczCd5QEqUdZqMBhCwB7ISVqH3h7gX3o4BBCv8+Uz6FP6brg1hCi/hX/E1qitVnbrPptPV5iN40fVEBjuyvnlgBk1jVzFpAtPJt0MAyvqv5nsnV4NidADwi1wqsmjGVjRYSn2Su91uVkynMfPag34xPgm+RYNj2iAGbkEqE0/HTha4YNmfyEL4Fw+4VEsZPS9BKzgfrFuSvgO9V+LU99++EUJMVneBdXAKXv3Nd35DK9VyHeneqNq4wserG5uGWchoFK1gscNejhlwUB60vV5KN061Jf/e+QLEp5xp0Po/XyC2fkFLqqmSY=","X-OriginatorOrg":"valinux.co.jp","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 34da8626-ba19-4028-b25d-08de3d7f4345","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:33.2599\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 laA8zGsySCfMmyY/45k+plZwxPHyywrdl9V7G1SkQI/d5XdeVUnzHMcP7EfmT0qGVlbNZov4XbUmwWdM3zUGBg==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"TYCP286MB2863"},"content":"The per-direction int_mask and linked_list_err_en registers are shared\nbetween all channels. Updating them requires a read-modify-write\nsequence, which can lose concurrent updates when multiple channels are\nstarted in parallel. This may leave interrupts masked and stall\ntransfers under high load.\n\nProtect the RMW sequences with dw->lock.\n\nSigned-off-by: Koichiro Den <den@valinux.co.jp>\n---\n drivers/dma/dw-edma/dw-edma-core.h    |  3 ++-\n drivers/dma/dw-edma/dw-edma-v0-core.c | 13 ++++++++++---\n 2 files changed, 12 insertions(+), 4 deletions(-)","diff":"diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-edma-core.h\nindex f652d2e38843..d393976a8bfc 100644\n--- a/drivers/dma/dw-edma/dw-edma-core.h\n+++ b/drivers/dma/dw-edma/dw-edma-core.h\n@@ -118,7 +118,8 @@ struct dw_edma {\n \n \tstruct dw_edma_chan\t\t*chan;\n \n-\traw_spinlock_t\t\t\tlock;\t\t/* Only for legacy */\n+\t/* For legacy + shared regs RMW among channels */\n+\traw_spinlock_t\t\t\tlock;\n \n \tstruct dw_edma_chip             *chip;\n \ndiff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw-edma-v0-core.c\nindex 42a254eb9379..770b011ba3e4 100644\n--- a/drivers/dma/dw-edma/dw-edma-v0-core.c\n+++ b/drivers/dma/dw-edma/dw-edma-v0-core.c\n@@ -369,7 +369,8 @@ static void dw_edma_v0_core_start(struct dw_edma_chunk *chunk, bool first)\n {\n \tstruct dw_edma_chan *chan = chunk->chan;\n \tstruct dw_edma *dw = chan->dw;\n-\tu32 tmp;\n+\tunsigned long flags;\n+\tu32 tmp, orig;\n \n \tdw_edma_v0_core_write_chunk(chunk);\n \n@@ -413,7 +414,9 @@ static void dw_edma_v0_core_start(struct dw_edma_chunk *chunk, bool first)\n \t\t\t}\n \t\t}\n \t\t/* Interrupt mask/unmask - done, abort */\n+\t\traw_spin_lock_irqsave(&dw->lock, flags);\n \t\ttmp = GET_RW_32(dw, chan->dir, int_mask);\n+\t\torig = tmp;\n \t\tif (chan->irq_mode == DW_EDMA_CH_IRQ_REMOTE) {\n \t\t\ttmp |= FIELD_PREP(EDMA_V0_DONE_INT_MASK, BIT(chan->id));\n \t\t\ttmp |= FIELD_PREP(EDMA_V0_ABORT_INT_MASK, BIT(chan->id));\n@@ -421,11 +424,15 @@ static void dw_edma_v0_core_start(struct dw_edma_chunk *chunk, bool first)\n \t\t\ttmp &= ~FIELD_PREP(EDMA_V0_DONE_INT_MASK, BIT(chan->id));\n \t\t\ttmp &= ~FIELD_PREP(EDMA_V0_ABORT_INT_MASK, BIT(chan->id));\n \t\t}\n-\t\tSET_RW_32(dw, chan->dir, int_mask, tmp);\n+\t\tif (tmp != orig)\n+\t\t\tSET_RW_32(dw, chan->dir, int_mask, tmp);\n \t\t/* Linked list error */\n \t\ttmp = GET_RW_32(dw, chan->dir, linked_list_err_en);\n+\t\torig = tmp;\n \t\ttmp |= FIELD_PREP(EDMA_V0_LINKED_LIST_ERR_MASK, BIT(chan->id));\n-\t\tSET_RW_32(dw, chan->dir, linked_list_err_en, tmp);\n+\t\tif (tmp != orig)\n+\t\t\tSET_RW_32(dw, chan->dir, linked_list_err_en, tmp);\n+\t\traw_spin_unlock_irqrestore(&dw->lock, flags);\n \t\t/* Channel control */\n \t\tSET_CH_32(dw, chan->dir, chan->id, ch_control1,\n \t\t\t  (DW_EDMA_V0_CCS | DW_EDMA_V0_LLE));\n","prefixes":["RFC","v3","22/35"]}