get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2194470/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2194470,
    "url": "http://patchwork.ozlabs.org/api/patches/2194470/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260209062952.2049053-2-den@valinux.co.jp/",
    "project": {
        "id": 28,
        "url": "http://patchwork.ozlabs.org/api/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,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260209062952.2049053-2-den@valinux.co.jp>",
    "list_archive_url": null,
    "date": "2026-02-09T06:29:44",
    "name": "[v5,1/8] dmaengine: dw-edma: Deassert emulated interrupts in the IRQ handler",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "3cb8c415749e2632be87f9308d83296f7e14a0b3",
    "submitter": {
        "id": 91573,
        "url": "http://patchwork.ozlabs.org/api/people/91573/?format=api",
        "name": "Koichiro Den",
        "email": "den@valinux.co.jp"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260209062952.2049053-2-den@valinux.co.jp/mbox/",
    "series": [
        {
            "id": 491464,
            "url": "http://patchwork.ozlabs.org/api/series/491464/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=491464",
            "date": "2026-02-09T06:29:44",
            "name": "PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback",
            "version": 5,
            "mbox": "http://patchwork.ozlabs.org/series/491464/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2194470/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2194470/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linux-pci+bounces-46973-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=a5eB+E60;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-46973-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=\"a5eB+E60\"",
            "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.107.74.104",
            "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 sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\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 4f8ZYq5js5z1xtr\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 09 Feb 2026 17:30:07 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 23C023007C88\n\tfor <incoming@patchwork.ozlabs.org>; Mon,  9 Feb 2026 06:30:04 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 450072FD1BC;\n\tMon,  9 Feb 2026 06:30:03 +0000 (UTC)",
            "from OS0P286CU010.outbound.protection.outlook.com\n (mail-japanwestazon11021104.outbound.protection.outlook.com [40.107.74.104])\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 B69082ED154;\n\tMon,  9 Feb 2026 06:30:02 +0000 (UTC)",
            "from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10)\n by TYYP286MB4425.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:10b::6) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.17; Mon, 9 Feb\n 2026 06:30:00 +0000",
            "from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM\n ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM\n ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9587.017; Mon, 9 Feb 2026\n 06:30:00 +0000"
        ],
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1770618603; cv=fail;\n b=XA3CNuSBsBt8V93vVHZpBY/DcolfF9X6tNNlU+f/s4Ey+XKbndttONL5ljT/bGnQq+Mikp5gt95eAgWaFrIkauokgS3LPv168HgoL69M2eC0xWufh1ruIJzVE6hU7jxpVRuJpUDTd+eVgpCYphy071SGcHIPyxS5oCoaLODSdSw=",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=e531d505+Z4hkQ4EgCtI3V12VnQrMlVbu76bm4TeUB7uUjqn48nTEAqwrupqmo68VhYjYR/Fs4Ah43VaxR+f9A8DrcP9tPeZULN+Nf0HphpEsYR8CNm/2Q/j6eY9KdMg99RKck4QyMO6ObHVgZNApRXl8rB/Pi6J+W1Juw54updCnZKweQPt5cpwiYG4CqDBfYdeSnoiCQrTQospUx2MLZ5obOprNd9BSmZ36Xux03R2EsM4voM0CgduRc6gHdlg3uSRa2J9wzRcDj4ttGUakp0UlMBpKsVqCTicn6crRGhsyMkuq03wuYywdcQCaPPCpCB8jKoS0MX1Sc+qwVeOfw=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1770618603; c=relaxed/simple;\n\tbh=LMPeG76zaN7/1vJRvj/3N35XHgYnWdSP9xVsfUjo45o=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=hPsPMeixwStXQugsjT9gM+jCMCQx1OJGi/fXcHp8LIEq896axiAdGTGLDqANRHJAqrxqfxpMDxqaHB/DS+C0xo+giKGLqURakVycSkL3t5zKdiMms9m0Yl+nWGvSafzZXPvfW2w74inr9xAOsdosGq5bCYbg7Cy+HjlCyJvKGwQ=",
            "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=IGIqxRGFaq1HG5iwebCn64y/g2AUOrVzlmhB8S1cZGg=;\n b=FUrC8ViR102b/YLthBKZ5FYwn3YXtW8J0ku9cLBdCl8I4FgDxd+HJqrP0BsBgu81qei0gW+fwuqofcktknIUmiTR6/EF10W1Lq8pQZa8zkdEIAN700xjvi80WWFVjWdbxruHlgqNOIrhKIzAPoxlaMiN0xGHXbd8Zs0s2CSXIwMcIlDw8yxnXIyyBdBR25N4ehDa93HX0iwHVgOP7Xncxg4Cgj0UaEEoH8FJ0jRqVnmMyozwPJJLdFjSyDNt4kfSJAzi8RLlrdh15hRzCATTlAyPysdmP3LUtus412+m4jImahlQrBIWE6p+15F5K385gJAaE3A6sXGkyPk16WVJxg=="
        ],
        "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=a5eB+E60; arc=fail smtp.client-ip=40.107.74.104",
            "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=IGIqxRGFaq1HG5iwebCn64y/g2AUOrVzlmhB8S1cZGg=;\n b=a5eB+E60CNdBoWOGRKGff8bFS1MVCTPdQjoI6ooxCtfqehF8yAQ/kCNqbYHhIf20rA42AhqduEPowmMnR6lYBzTU2712JXQYua9GyOEfHp1qSXujfN+JuWaB8ktSb2Vf2hKGb73baYG63ugHr0ZxmiTJnRsRxSs8W6fsXWf38CY=",
        "From": "Koichiro Den <den@valinux.co.jp>",
        "To": "vkoul@kernel.org,\n\tmani@kernel.org,\n\tFrank.Li@nxp.com,\n\tcassel@kernel.org,\n\tjingoohan1@gmail.com,\n\tlpieralisi@kernel.org,\n\tkwilczynski@kernel.org,\n\trobh@kernel.org,\n\tbhelgaas@google.com,\n\tkishon@kernel.org,\n\tjdmason@kudzu.us,\n\tallenbh@gmail.com",
        "Cc": "dmaengine@vger.kernel.org,\n\tlinux-pci@vger.kernel.org,\n\tntb@lists.linux.dev,\n\tlinux-kselftest@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org",
        "Subject": "[PATCH v5 1/8] dmaengine: dw-edma: Deassert emulated interrupts in\n the IRQ handler",
        "Date": "Mon,  9 Feb 2026 15:29:44 +0900",
        "Message-ID": "<20260209062952.2049053-2-den@valinux.co.jp>",
        "X-Mailer": "git-send-email 2.51.0",
        "In-Reply-To": "<20260209062952.2049053-1-den@valinux.co.jp>",
        "References": "<20260209062952.2049053-1-den@valinux.co.jp>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "TYCP286CA0319.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:400:3b7::18) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:405:38f::10)",
        "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": "TY7P286MB7722:EE_|TYYP286MB4425:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "a1deff82-ee0a-4bca-ddde-08de67a4a69d",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|7416014|376014|366016|1800799024|10070799003|921020;",
        "X-Microsoft-Antispam-Message-Info": "\n HEDNr9CxsBwkKCvfF4P7NEnwQ5P9cLjKBY2KDJi78YX1EKcvUduGCkyWAnIuRaKsk0mXGSExyT9zbbOGRueTFu5EN2GiJucP3c7EezxHNFrcKQ5CZ8Mnf2NhsxESeV8XG7TEdODdDU073I1X2VtXfgBS83F/vB2eZgjz1UQgpKTZwaWFHiwuh2EPi214oPjzqMxuXgidMWHSaStXwi5T18Z4HDeDSMg3xblWBHv7bNxkWytmF711ncBUUag59k+U59+tYP3EaKBVUIri6s6LOYvq/7MXFXQgNnnOvg6QP41bDlNQo43kk7+PPQlj41YYWEYBb0K3QEeih9j50pyUHsxV5h3njfMV7+KC6QqelCTzvnQ93FBBEPc36ettD6EajZ2fF11TvfXWp5T1DhD55JrvqoB0+AAHcEQCkf+mn5j7R+nHTXky/ymtk0s/1i7J4OomiluhIRx9wBYwnZ37L/rbdAnW58S89tyLdn9i9bzfZjVeAw6C1mcLaETvep6NcsdyAYaNM+6+420laIg4+CkqPBtab5hq4ahX1zFY6+/QgTHTd5x2pLbQ2ZYPJTFg19V4I15A2f3lMxqJmZnRTmzjb/fBbkW1tcC1FKL9f1iea1+WkeoqpW+hantRz/3keEc+54fapyUCl201UgVmw7IMJ8DY0Iwcnti4iL3tl1P5ylNiw1bqFLBV/AG7UBm8JSzXTQxwlcADUT56Fs7ESQjZgRkKHHd/gDK1GY5VTBFP47RsWlt3m9G5aj50O9pwmaSvGPgSZhMfyksgthtjABxCB3+KCF0ISkCGcpAw1LrgQd6Ztg4XibyLk2mZnCV2jM+LeO6/o6gMjLRwkbkvOz5qWks4N0Vo0QuibzigYILQhsfOKo3D0xWv0rJWsHQHZFB7K/H5qs1gwmXfh/RPS/IlVy922ltMjumblrEU9HCKu7i8rOpFDEpE7SZgtercpaJwV0imef6Kuf6qpvvfUs8T2UtcJq5YtEkVlFjSeNPXeoPj0TqQvZybQ9D8kNyCWBUa0731cuuNpu1G/F0mM3vZtstZnpssswVCLfJVF95xczPAGNEwv0pEGNHHo/1y/Tw09iK9grk/bKogHwSlpSjRq09sG2JZcg3mYE36trhKvZ05SEVrjTZmWc6ewTHthj3KuyV99syDxQsdSEYqXQnCSMikWWoESG04pe5aWvGA0Wgze6TkXGU8/ejjtYb77+mAGyuGQ15zyV4osEyAV/3/tTSe5Fla3KCNAS4XCEZKFUOXiSJ+2gKcI73mAFJdj5RfcLB+TfM+KD9yPfCM+E6KTcZyjLuuy2psF03XLy6BABfkPSnfRl+eejAZDTmm+qnBLcTKiDmnwLkpfEK5IO8ISr5XwJUflaRKr75U/KJYq6uISlqVNKnTfNUkGZBFrEef+ROlWgHQcuE/mXsy6vUdGmsjKQ+DX+T9Po6X6tdleGMs2Nw46fBIIW3CoXPSZKtBhmpygg46Zm811FAMAFK0tn9KTtOzdUoEPV0o80oCNMPELSO/MqKyDRaQvcjNZHxjEesq4s5dh/YjRBnDZrir6rFY06SBiqA+pOYWxqqTGMDdozscY/4DiLOkZc5Ip7WwE34rpT6TSmAxSAYA1w==",
        "X-Forefront-Antispam-Report": "\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(10070799003)(921020);DIR:OUT;SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n c4BbFzGPcC7q6EH3OA7OF2yKwsGGeV/PIUleC8Sg4tzSmmSsOG7SwmZU31Ch5W2ri02RIolUj34vSFsxgIgld1wXEJtFEjnrcGeoUQl6Bd/1iYtfms/3auTaPHDkTnwywLFe965eUOLiJedMq9b05S2VTBsffihM5OaMkxyOjEH9Yr+8atuXLlRm+QWkKWsVlJyzRjXXsEgMrdB56Rihf8SwKQR5Rpn7URdnSZklScOcXaOzbEaG3o2eSYF5GPVYku/1DDgHmgiglDAN2V1BBbZsm/Rxbx1Q2AoL+ndhtgab6lMiMEqrPumtGoU5THFCgMQHweER2sw4o8Md4LY4AoMElNz5O8pRJ/wStxvBHdwTeOH7QCOXPtAESkmEdNQxHEvtXt2KQIBJj8XWqZFljd+TLBtLmywiDHyEL6D9UMjoEZBSop37lpMvRR15WiyL2fip3sm+ag/jWKcFgHP1kEoTCuVXfJVP9rqSlJLvzngtSHyIRoCse5KiAcdjWRtT6cvQlJWQ1j4OZGFgIA48SCNEL5UiSlP5iuuh58x36mN1KaSxzBau2MRGBgLX7DZKkMzw/uefcIvmsMMfvPUqZrilbNc0FnfdtSXrFpRbcgncTWSit5beAgUEBPQ7/v4/WFz2ZLIGL26LwH5zXzR7Bv+iCXe89MNbzoYOdwr1lnUA1ZpdnGiY46d146TaPPiGgiRi1WXyedzz0bexlEtIcP9Wr22poGkXlWF4l75/FseZUXOevH15g6WhdbgGyoMgTREhilmUe3vuNaAoPToudF3t6cJhrQGFTxyCH+3oZ8lr4xKBIvyVWspSxO1YtIblSF2qNtopl7nYprKY1nrlHoLS6wZatMXEQGhNYijiZNiGDO1lOUmUMtHIfn/G1/WdZxkBaPRJDxkskYlzGrtxvoc5QgdYElZhqe44ziYcgbJBAufRdGI2E9PkFoWmLIZs+mzN6SVCKDano9Pc/2tsKw4eN40kYefrXxM9vM8KbQ7oqJ74nNkfpkx+cJQIqtmLlVUEL3I0bTw8WHpVq1OhXhOia8WLLePNzzR/I9mIXNEpZMdqHSTf9/BR2X9crqMrTVtm5IaI8C8f5xSmuuBU+Fy3Ky9YnkPGVYai6wF4miGdVXjmE3JNd5IRT71a6TkRF60tCHkDSmLI/ICkmvpsckCV/J1Qy1MSjCAVmvSjm8GgyCUKHWq2UsqRduQRuGTSg18AVtwgSsQhGYQfN0O7dVHWOuNy1VnfSQI0UQwaG9gXvTaGQBHeWFAaa5B9en/U+eW4MQAcxeBAiXltXQ0WLvCoB1YJin50ZJCcQFGHnZCssmp64I15JujuWvXT+LrpOujuOfqFADK9RDEGLI73BJmxU4yYQ66pS01TgJ2NZlBG4K7LleZ1VUerkvt2XmeL5a9Ge3j6AFUB2jHJIZTfrkVpR/vkhHdAu3Ul2VpKTLQT76004Vd21E5xUSTaQuSpMwzH7J2gvZh6nU9FMMumLQoATIipoUvdHjTd6qdeiqQ5ZCL6xBc9FwjErojCvi+LJHv5oQ9dp1bmFKQOMvwgobO4U8mGC/z076rQS1MfXs/4KZ7WBADM4tu5hrKHiIE8IV7OSOXnW1/lv3QXmrpVyEHfL3QPB4QAa/rCGSeTJvfLg/DwcR8Exxohh4XFrHxc2khEGwGkf9agUhs4ryH+ZbXfCcQ5GT5q3IjlkIfVPsKn2DS2zWluA5DYzSi0klCbMNXPmLw2rY683smQ1pXu5onUwNr/D8CXAaKfvXZ+jyn9NCpodGkyLp5kQ6Vrf/Ti",
        "X-OriginatorOrg": "valinux.co.jp",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n a1deff82-ee0a-4bca-ddde-08de67a4a69d",
        "X-MS-Exchange-CrossTenant-AuthSource": "TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "09 Feb 2026 06:30:00.1392\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 GKf/7qZdnoLdmCpSMCfuUhLNFf06SgbuF/78visigIydnuVpPuWwJ9ygjIG7ZWs8Znm8fFIyKAdNl4HRqPoVAg==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "TYYP286MB4425"
    },
    "content": "Some DesignWare eDMA instances support \"interrupt emulation\", where a\nsoftware write can assert the IRQ line without setting the normal\nDONE/ABORT status bits.\n\nWith a shared IRQ handler the driver cannot reliably distinguish an\nemulated interrupt from a real one by only looking at DONE/ABORT status\nbits. Leaving the emulated IRQ asserted may leave a level-triggered IRQ\nline permanently asserted.\n\nAdd a core callback, .ack_emulated_irq(), to perform the core-specific\ndeassert sequence and call it from the read/write/common IRQ handlers.\nNote that previously a direct software write could assert the emulated\nIRQ without DMA activity, leading to the interrupt never getting\ndeasserted. This patch resolves it.\n\nFor v0, a zero write to INT_CLEAR deasserts the emulated IRQ and is a\nno-op for real interrupts. HDMA is not tested or verified and is\ntherefore unsupported for now.\n\nSigned-off-by: Koichiro Den <den@valinux.co.jp>\n---\n drivers/dma/dw-edma/dw-edma-core.c    | 48 ++++++++++++++++++++++++---\n drivers/dma/dw-edma/dw-edma-core.h    | 10 ++++++\n drivers/dma/dw-edma/dw-edma-v0-core.c | 11 ++++++\n 3 files changed, 64 insertions(+), 5 deletions(-)",
    "diff": "diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-edma-core.c\nindex 8e5f7defa6b6..fe131abf1ca3 100644\n--- a/drivers/dma/dw-edma/dw-edma-core.c\n+++ b/drivers/dma/dw-edma/dw-edma-core.c\n@@ -663,7 +663,24 @@ static void dw_edma_abort_interrupt(struct dw_edma_chan *chan)\n \tchan->status = EDMA_ST_IDLE;\n }\n \n-static inline irqreturn_t dw_edma_interrupt_write(int irq, void *data)\n+static inline irqreturn_t dw_edma_interrupt_emulated(void *data)\n+{\n+\tstruct dw_edma_irq *dw_irq = data;\n+\tstruct dw_edma *dw = dw_irq->dw;\n+\n+\t/*\n+\t * Interrupt emulation may assert the IRQ line without updating the\n+\t * normal DONE/ABORT status bits. With a shared IRQ handler we\n+\t * cannot reliably detect such events by status registers alone, so\n+\t * always perform the core-specific deassert sequence.\n+\t */\n+\tif (dw_edma_core_ack_emulated_irq(dw))\n+\t\treturn IRQ_NONE;\n+\n+\treturn IRQ_HANDLED;\n+}\n+\n+static inline irqreturn_t dw_edma_interrupt_write_inner(int irq, void *data)\n {\n \tstruct dw_edma_irq *dw_irq = data;\n \n@@ -672,7 +689,7 @@ static inline irqreturn_t dw_edma_interrupt_write(int irq, void *data)\n \t\t\t\t       dw_edma_abort_interrupt);\n }\n \n-static inline irqreturn_t dw_edma_interrupt_read(int irq, void *data)\n+static inline irqreturn_t dw_edma_interrupt_read_inner(int irq, void *data)\n {\n \tstruct dw_edma_irq *dw_irq = data;\n \n@@ -681,12 +698,33 @@ static inline irqreturn_t dw_edma_interrupt_read(int irq, void *data)\n \t\t\t\t       dw_edma_abort_interrupt);\n }\n \n-static irqreturn_t dw_edma_interrupt_common(int irq, void *data)\n+static inline irqreturn_t dw_edma_interrupt_write(int irq, void *data)\n+{\n+\tirqreturn_t ret = IRQ_NONE;\n+\n+\tret |= dw_edma_interrupt_write_inner(irq, data);\n+\tret |= dw_edma_interrupt_emulated(data);\n+\n+\treturn ret;\n+}\n+\n+static inline irqreturn_t dw_edma_interrupt_read(int irq, void *data)\n+{\n+\tirqreturn_t ret = IRQ_NONE;\n+\n+\tret |= dw_edma_interrupt_read_inner(irq, data);\n+\tret |= dw_edma_interrupt_emulated(data);\n+\n+\treturn ret;\n+}\n+\n+static inline irqreturn_t dw_edma_interrupt_common(int irq, void *data)\n {\n \tirqreturn_t ret = IRQ_NONE;\n \n-\tret |= dw_edma_interrupt_write(irq, data);\n-\tret |= dw_edma_interrupt_read(irq, data);\n+\tret |= dw_edma_interrupt_write_inner(irq, data);\n+\tret |= dw_edma_interrupt_read_inner(irq, data);\n+\tret |= dw_edma_interrupt_emulated(data);\n \n \treturn ret;\n }\ndiff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-edma-core.h\nindex 71894b9e0b15..50b87b63b581 100644\n--- a/drivers/dma/dw-edma/dw-edma-core.h\n+++ b/drivers/dma/dw-edma/dw-edma-core.h\n@@ -126,6 +126,7 @@ struct dw_edma_core_ops {\n \tvoid (*start)(struct dw_edma_chunk *chunk, bool first);\n \tvoid (*ch_config)(struct dw_edma_chan *chan);\n \tvoid (*debugfs_on)(struct dw_edma *dw);\n+\tvoid (*ack_emulated_irq)(struct dw_edma *dw);\n };\n \n struct dw_edma_sg {\n@@ -206,4 +207,13 @@ void dw_edma_core_debugfs_on(struct dw_edma *dw)\n \tdw->core->debugfs_on(dw);\n }\n \n+static inline int dw_edma_core_ack_emulated_irq(struct dw_edma *dw)\n+{\n+\tif (!dw->core->ack_emulated_irq)\n+\t\treturn -EOPNOTSUPP;\n+\n+\tdw->core->ack_emulated_irq(dw);\n+\treturn 0;\n+}\n+\n #endif /* _DW_EDMA_CORE_H */\ndiff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw-edma-v0-core.c\nindex b75fdaffad9a..82b9c063c10f 100644\n--- a/drivers/dma/dw-edma/dw-edma-v0-core.c\n+++ b/drivers/dma/dw-edma/dw-edma-v0-core.c\n@@ -509,6 +509,16 @@ static void dw_edma_v0_core_debugfs_on(struct dw_edma *dw)\n \tdw_edma_v0_debugfs_on(dw);\n }\n \n+static void dw_edma_v0_core_ack_emulated_irq(struct dw_edma *dw)\n+{\n+\t/*\n+\t * Interrupt emulation may assert the IRQ without setting\n+\t * DONE/ABORT status bits. A zero write to INT_CLEAR deasserts the\n+\t * emulated IRQ, while being a no-op for real interrupts.\n+\t */\n+\tSET_BOTH_32(dw, int_clear, 0);\n+}\n+\n static const struct dw_edma_core_ops dw_edma_v0_core = {\n \t.off = dw_edma_v0_core_off,\n \t.ch_count = dw_edma_v0_core_ch_count,\n@@ -517,6 +527,7 @@ static const struct dw_edma_core_ops dw_edma_v0_core = {\n \t.start = dw_edma_v0_core_start,\n \t.ch_config = dw_edma_v0_core_ch_config,\n \t.debugfs_on = dw_edma_v0_core_debugfs_on,\n+\t.ack_emulated_irq = dw_edma_v0_core_ack_emulated_irq,\n };\n \n void dw_edma_v0_core_register(struct dw_edma *dw)\n",
    "prefixes": [
        "v5",
        "1/8"
    ]
}