Show a cover letter.

GET /api/covers/2196631/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2196631,
    "url": "http://patchwork.ozlabs.org/api/covers/2196631/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-pci/cover/20260215163847.3522572-1-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": "<20260215163847.3522572-1-den@valinux.co.jp>",
    "list_archive_url": null,
    "date": "2026-02-15T16:38:38",
    "name": "[v7,0/9] PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback",
    "submitter": {
        "id": 91573,
        "url": "http://patchwork.ozlabs.org/api/people/91573/?format=api",
        "name": "Koichiro Den",
        "email": "den@valinux.co.jp"
    },
    "mbox": "http://patchwork.ozlabs.org/project/linux-pci/cover/20260215163847.3522572-1-den@valinux.co.jp/mbox/",
    "series": [
        {
            "id": 492228,
            "url": "http://patchwork.ozlabs.org/api/series/492228/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=492228",
            "date": "2026-02-15T16:38:38",
            "name": "PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback",
            "version": 7,
            "mbox": "http://patchwork.ozlabs.org/series/492228/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/2196631/comments/",
    "headers": {
        "Return-Path": "\n <linux-pci+bounces-47311-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=wf78mclu;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-47311-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=\"wf78mclu\"",
            "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.229.101",
            "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\n [IPv6:2600:3c04:e001:36c::12fc:5321])\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 4fDWnr3yxSz1xpl\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 03:39:12 +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 371333008E0F\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 15 Feb 2026 16:39:09 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 459422045AD;\n\tSun, 15 Feb 2026 16:39:07 +0000 (UTC)",
            "from TY3P286CU002.outbound.protection.outlook.com\n (mail-japaneastazon11020101.outbound.protection.outlook.com [52.101.229.101])\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 86CA18632A;\n\tSun, 15 Feb 2026 16:39:04 +0000 (UTC)",
            "from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10)\n by OSCP286MB5196.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:34b::5) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Sun, 15 Feb\n 2026 16:39:01 +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.9611.013; Sun, 15 Feb 2026\n 16:39:01 +0000"
        ],
        "ARC-Seal": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771173547; cv=fail;\n b=F59DLtJbQQ3oHF3VOhC2dYYGfSEGBZk3sUO82UNabaYfZopnqIxsv3ELKddvD4wGX+zq5kTMCcTCq/CjyxcdgHyPqrtlxt0nMwQHEMxeQIfy9ToVyUgzw3sPU/Fox4qcVj9AXucv9ASnGqGyH5QmrK/lKsdvw972YryZ4LCNth8=",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Q5zLLnaWZcCpf2hZ5vDOUzZSFhLCOwr++hVzJZ9jbefDEgXQ4NhkmP+dVZaUVIq/gl0CjOKmJJ/Q3+M6L0ERDpKmLzhMSmGagJcbhQXe7koq+Pf8ZLvfrp+WyawNSdvLVus8Aam7lTAwHIrXl8FcbE6ZD41HP13rJ0yj+bJjpWDbH6pgYke6fmKkUue3VL18Sx9SG/W7DC8F1U5pNSUgVfusz/e4i3osiXF9N0ILKH36cr6qPiW/jJsLMIAPQQFeg5sKTzzxS9ooyxoly0YXIy/Nx0NsnMhKXga11xmgNRmFkQ3sLFPONOytoRA/wtefbsUS53eBFUFxp+KtWyMHSw=="
        ],
        "ARC-Message-Signature": [
            "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771173547; c=relaxed/simple;\n\tbh=KiIQ09hgG+7Jy3L+W/16DWxZh7Cfx2oH5SI4/VqNkXQ=;\n\th=From:To:Cc:Subject:Date:Message-ID:Content-Type:MIME-Version;\n b=XlMjHSuJngHYcgcpybne9pRUelIL8/wFzUiB+CUsWg0nEMv6/FKAdYp4CAAdiL5tkUZ76/MOqnWFRttpKFsuE/HoonqHIqA9DbNFo8DPfcVJm4h+WhUjAXLfnJZpcTAokB8LRuwBi1tFy2imsrijvYXCQbgUVDPsMvsa0wYix9c=",
            "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=UWHWhAJ9gifH95U0c+oOmlJeDjFQvWUJmid79cfGm3g=;\n b=h/hBsBY//dDKUB3quq2zm+D/I5Q+Hj/EYXGeEQO8w2kM1OiMjX9thW6g7It86E/oBDG5w49Sc+va2ifT9FfNAHJguI/1yJydjDD3nTz9cjPJXCAAhDF+dOiOZUrEsf2DG4NAZAwxjvEBZdzEf0cVriGq3eVUP1/2StoN/Wqu2kamvtvlfHXl5iFmJHdl6m24ZY6Yu9Wz2/KeXZf3fFOBU7iiPaSq4+u1Pr0tH2UoykxGrU/NoosdYchS2fhyYslFM3/FD47+diBo49kuCAhtGd4M/AaRz18poRkTmaXjLC7pVWV6mHHQVAbZENXUVVkE0n5OfI7z8MBGVPu9HTmpUA=="
        ],
        "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=wf78mclu; arc=fail smtp.client-ip=52.101.229.101",
            "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=UWHWhAJ9gifH95U0c+oOmlJeDjFQvWUJmid79cfGm3g=;\n b=wf78mcluCJL+egK1h10oz5XBMqwz6cw1XLaf/agRE+CGNQrPS4h4p5ETG8hYj/XmNW8PCzXz6q7pv5EIzjNSu58D3fAKQ7fKlNYB9fdMIeQjnHLpMaXXCpFmNfnT750T3vtBkcbZu+iHRXG1GEHfrHTelY0MWM3AMjIpfe3eKNM=",
        "From": "Koichiro Den <den@valinux.co.jp>",
        "To": "jingoohan1@gmail.com,\n\tmani@kernel.org,\n\tlpieralisi@kernel.org,\n\tkwilczynski@kernel.org,\n\trobh@kernel.org,\n\tbhelgaas@google.com,\n\theiko@sntech.de,\n\tkishon@kernel.org,\n\tjdmason@kudzu.us,\n\tdave.jiang@intel.com,\n\tallenbh@gmail.com,\n\tcassel@kernel.org,\n\tshawn.lin@rock-chips.com,\n\tFrank.Li@nxp.com",
        "Cc": "linux-pci@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tlinux-arm-kernel@lists.infradead.org,\n\tlinux-rockchip@lists.infradead.org,\n\tntb@lists.linux.dev",
        "Subject": "[PATCH v7 0/9] PCI: endpoint: pci-ep-msi: Add embedded doorbell\n fallback",
        "Date": "Mon, 16 Feb 2026 01:38:38 +0900",
        "Message-ID": "<20260215163847.3522572-1-den@valinux.co.jp>",
        "X-Mailer": "git-send-email 2.51.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "TY4P286CA0032.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:405:2b2::10) 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_|OSCP286MB5196:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "66eed5d2-bc80-42eb-69eb-08de6cb0b958",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|921020;",
        "X-Microsoft-Antispam-Message-Info": "\n miUHt8/gSX02uRnhrRZuvsY7WQGrR1IDbeq0mtJ6K1/w5KcYgst0KBHHTqQ6ODOElEQEeUQF2EqgHoO927hfr/5/ofDBqLltmyKMkYnL5Rh5lNHHJ/O6iFvM3xirR5ZEWHJ9DiWj+m4GQRAvxp4jege4jm/aezfH+rAJ6i6pudz9rPHqr7KyXD1zVnimFaWrmCyDlUFe3xEWrUsLHMOUDrr9GYTLF5pIjjbLgUNAhtxpjvuELeGAM3on9TlBHmCE9F8cbHBHKacmq+7IGQz/291mdFd4RBye3Jws3C9qu5GP9+wX6g0o+PXGBJIcYGM0aAX7eDrzzWowyNDaRz0FrnvDwG5tyjExJB+iPbl+A/NhqqISRe3UHxQbQYG/DGuU5Cmga2oD3DHGgJhCSH573rEHPPZ2RTDDv7WfZIJDyvNsAX18+XYkQVFH/JaE2IKRbntCr2kJcl+eKxxOowYPwShRnA0Kp/Fe4qhQ0bHFwXeIITWBgZX/Hp2k68ux6WU4QUw43hqRzMGys1x6i3o2181RiRDG4v0ohC2q65yPn1C0wCpk/ytrDxJ0rcR/pSO7STT+RSu6I+c58+XUUQMCmRe/wXvmi97QQ2RvxY3sNztxovYkYhjndltgWgzehFhIT3OebVyjFCCeZe/i01p16PRJ9eTE6rA+AHNaHQ2Bi9xJxFFETIX1LdvW2AawGMKQQQPqluOArPTELbX7D46PS9VHcZrDOa7YdDHpSvk3pBgPQkikRf5G428OaqpyEhwqziKGLvkyqBJxAj2D7QJ39yzUDULOuu30VLorOcyjE4livBojxiXZpaKJ5MTpoulq2PS7Det3jUetz7OdHa3rk2wvWFUQtUF8ZxK/67lSVzlXwAA3DhN2lVySsYawhBzQUGOhAuCbvJqs7cSoYAv65S9swIXYYbBCA6ZNMF15RqoQZGMiX/T5E3inmY7Y1tzWF5j97s6K2pT+8h7lhQUt/JGSK1UWKo/v6+w9BsT6KpVPzxSH6twonDDyWgvt3DUc0/ybWM1rysGe8RA4T5kRA/IzTZVkwpMBny+RTBDGDbWbrTNjZ4A6Yr6gWnaENJPvoxQY7QZ6lGuI6cetJuOdXsw61xQ4ueMGm6uvmibFUcL5/CcrVy5ojmVO2K/S1K8Ab+4B7Tfjvw7ut4GWGryfc5nXZSU8qxURKdYFcI9b2ciZRRV3OLm63RCCAKC5OqVizz8wqjhLnmWl+fOOfAbkgKGO/uC7RUb2auDNYaeLN4S0yx39vkEl852JkKf9yy1F+mGjCUs21kqGYMIhYAibnjyevZH7wW64bnKYlYZ0pwgxAsomafwEy5U+t7dLSnNeDqMTuUZygRaaxs7mUkmIr+6F1P5n0YhGxE2ZST97lCYh2KvEkOCd+0KM3u7jp5E0YFlvQBnCspXOl2YOxVzr2H8nP+BsVUaMIijIk/aYSiYQ5AyCrvXRGluTxRohus++Crnb8afejipwE28K80kogf9zOu10B+i065M92P18ReakE8HK1pVx+eiquXiBGFvHtR/KSoL/aGp5Dvi4HLOe63qte46TQk7rj94hinKs9kH6tXxwoysV/c7Jj/Cz2Ziw2T4no7FjHyPsKhZl5R5sd1q9peIKvYIYIrP3TkLLH+0=",
        "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)(1800799024)(10070799003)(7416014)(376014)(366016)(921020);DIR:OUT;SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n waItBHgtVrmBdpepouqGV01kq/shwxPuzRfzIlYWeAfp0EUIx+3VKF5M7ZB43ecGSoum9WTOI6r4T8/9xcaHlw2NwAoufu43yrY5aDsG6SgBlWBtm5wE1sJheP5m3zVDHBpNaSIqKGdsBG5lXzHXAioVEZeZOnXT1Yy9TfG4x3MUp7QoXJPrwbG6G9ultrLMvp154QVJgJIYPOnCzgheieu4FEfLf0ZDGxNk4GNvhfDdBsJqbA2IF2hezbgY5qK1oVz0zLWmg4CjSsOJYES23+3RsphyJDH2uSa8ZL01Dhmli/0p5fHOR/VuDoDyqN+y0b/PUO7hWy7GKpZ8WbtzxEMXaSVWSkurCjKbv9KyKk2PeLytwYhNW//fq1LWqxlGVclbpDJ6gmYBIxu/ZHWO/GAGEc3VYgY0nHhLyahc2HI4NMlfnmrnZ15T6D8H71Ig5KFZe+UJs43fYtUDeQHxlxs+ZvGNIdzWzJz0tVsccgHB8k69q0JTfOucFuG++PYi+VHN00jew/VBw+NRLv5XKiR7NB3doz3U0QPypfCDRMGU11k//34kNmgxqyGDzBw8reWIBMm1sGpAWklPA8cENxUVhyMDtDKTLHA/ObZXUA58WHUx7MIKfCLMZkAKu4h6g6KX/VW+SsDG1E+KwFdYaTDYxIgFodJd85kAWm8/8HsHflXZ6PjoVCVL5SBz2V/EmjNPGi69ZHHn7xahCRHurSilXRBCUNbsp/ruqVfWaA5ZHigXX8u7bXYduosW39m3ffJDW3LlVrIG27Witibbjwkg9nhBmhgj829+l4EIvXCQ/1GjUfAMkdYuSenLuoG4UcGWIQRtnCYWdEn0HwPXU9F8pk/mIxh5uctYW+4VaO/cvOatfH/cc0QltOghOrYVZL8HKzO+bS+MnmCmqsSKMooD4iPh9uadxNb2XCbjQX1HUJB0GQjDUbrHL3itiNwTTNMHKTcNnnMN/+4FBg28bxkzXyZBfHVOAgBjFdFI9xVSw3yGi/5xUek1RKzaaJsVxsw6YI8ZjkyJ0lp1OGMddjA3rwjdwZcpesbWLNJU1sPK6AOf+MTrH48TntNClAg7/HgappGJpd5iSBtJqr/oHOBLDCWI1jLSHsPDbiGNuDXFE/7oZKjE0VjRIqfibrtZFDspBigAKuonkXQWn3XEq8zIgBrlXi0OzMBKjMixPCPjDvCtwMj+EZn5fEVwyPrhVmXIzh68n3ZLjRZRRvyD0SoSX4Amo6nMrL1MxfFgs7fEPnJRG7bCj1YkwC6EYbaR3PnBUhrNWZ9qoKPy5bigpU3FZkXx/aSwdtDrwiEOkUmlgJ803aD6LG7pQTZ2xQ5JTxZanOEF6czAM5KTnupHYhmrP/PzOOkTfc/sNsGuo6SgZf1aYP6xuweytkL/+uYWkL15gMhUwUr6ak8n2TcaLWCN5c6DQzxMW89WkWKsBeN1fz/l6Vi363Y+yieUidoR8/ZtyQcWt64YUnVGz21XLaM5iUO2XKyBzQtr7ZhXgsD1EZ/rB2u+lpVVJKxmQ1rrgf9gRAm3i067PlDMdvnWmhdHKh+FegYN0jKAmZcVCxyoOAw0PeidON4H2AP72RWfVk8oQU1q2B37nhyIM5+WbJtwzu32yEoIgWalK358xcLlPcfRq6m8GSmy6ddhdqgy0E3+bWXWLy1INaXHrfgUAtsYikiBXtF8riKQOwRGFTd5piViQT0jsak2baTTBKUdfermqMBv1c6oSquU8CEkPiHjVdKjXkcVwAiF1AJmaReUu66TCSPDF78cFiotgJUM",
        "X-OriginatorOrg": "valinux.co.jp",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 66eed5d2-bc80-42eb-69eb-08de6cb0b958",
        "X-MS-Exchange-CrossTenant-AuthSource": "TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "15 Feb 2026 16:39:01.3484\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 jP2n7ULJ2d68cldMWiDtAl+QTEjJ90WjzQpARm4044TzcVaK57IIydm49Nm7vsFqgQWmB/joKgKWt01ZqNzalQ==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "OSCP286MB5196"
    },
    "content": "Hi,\n\nSome endpoint platforms cannot use a GIC ITS-backed MSI domain for\nEP-side doorbells. In those cases, endpoint function (EPF) drivers\ncannot provide a doorbell to the root complex (RC), and features such as\nvNTB may fall back to polling with significantly higher latency.\n\nThis series adds an alternate doorbell backend based on the DesignWare\nPCIe controller's integrated eDMA interrupt-emulation feature. The RC\nrings the doorbell by doing a single 32-bit MMIO write to an eDMA\ndoorbell location exposed in a BAR window. The EP side receives a Linux\nIRQ that EPF drivers can use as a doorbell interrupt, without relying on\nMSI message writes reaching the ITS.\n\nTo support this, the series:\n\n  - Adds an EPC auxiliary resource query API so EPF drivers can discover\n    controller-integrated resources (DMA MMIO, doorbell MMIO, and DMA LL\n    memory).\n  - Updates DesignWare EP controllers to report integrated eDMA\n    resources via the new API.\n  - Updates dw-edma to provide a dedicated virtual IRQ for interrupt\n    emulation and to perform the core-specific deassert sequence.\n  - Describes an RK3588 BAR4 reserved subregion so EPF drivers can reuse\n    a platform-owned fixed BAR mapping for the doorbell target.\n  - Updates pci-epf-test and pci-epf-vntb to reuse a pre-exposed\n    BAR/offset and to honor per-doorbell IRQ flags.\n\n\nDependencies\n------------\n\nThe following two split-out series are prerequisite for this series:\n\n  (1). [PATCH 0/4] PCI: endpoint: Doorbell-related fixes\n       https://lore.kernel.org/linux-pci/20260215150914.3392479-1-den@valinux.co.jp/\n  (2). [PATCH 0/2] dmaengine: dw-edma: Interrupt-emulation doorbell support\n       https://lore.kernel.org/dmaengine/20260215152216.3393561-1-den@valinux.co.jp/\n\n\nTested on\n---------\n\nI tested the embedded (DMA) doorbell fallback path (via pci-epf-test) on\nR-Car Spider boards:\n\n  $ ./pci_endpoint_test -t DOORBELL_TEST\n  TAP version 13\n  1..1\n  # Starting 1 tests from 1 test cases.\n  #  RUN           pcie_ep_doorbell.DOORBELL_TEST ...\n  #            OK  pcie_ep_doorbell.DOORBELL_TEST\n  ok 1 pcie_ep_doorbell.DOORBELL_TEST\n  # PASSED: 1 / 1 tests passed.\n  # Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0\n\nwith the following message observed on the EP side:\n\n  [  109.470756] pci_epf_test pci_epf_test.0: Can't find MSI domain for EPC\n  [  109.471302] pci_epf_test pci_epf_test.0: Using embedded (DMA) doorbell fallback\n\n(Note: for the test to pass on R-Car Spider, one of the following was required:\n - echo 1048576 > functions/pci_epf_test/func1/pci_epf_test.0/bar2_size\n - apply https://lore.kernel.org/linux-pci/20260210160315.2272930-1-den@valinux.co.jp/)\n\n\nPerformance test: vNTB ping latency\n-----------------------------------\n\nSetup:\n  - configfs (R-Car Spider in EP mode):\n\n      cd /sys/kernel/config/pci_ep/\n      mkdir functions/pci_epf_vntb/func1\n      echo 0x1912 >   functions/pci_epf_vntb/func1/vendorid\n      echo 0x0030 >   functions/pci_epf_vntb/func1/deviceid\n      echo 32 >       functions/pci_epf_vntb/func1/msi_interrupts\n      echo 4 >        functions/pci_epf_vntb/func1/pci_epf_vntb.0/db_count\n      echo 128 >      functions/pci_epf_vntb/func1/pci_epf_vntb.0/spad_count\n      echo 1 >        functions/pci_epf_vntb/func1/pci_epf_vntb.0/num_mws\n      echo 0x100000 > functions/pci_epf_vntb/func1/pci_epf_vntb.0/mw1\n      echo 0x1912 >   functions/pci_epf_vntb/func1/pci_epf_vntb.0/vntb_vid\n      echo 0x0030 >   functions/pci_epf_vntb/func1/pci_epf_vntb.0/vntb_pid\n      echo 0x10 >     functions/pci_epf_vntb/func1/pci_epf_vntb.0/vbus_number\n      echo 0 >        functions/pci_epf_vntb/func1/pci_epf_vntb.0/ctrl_bar\n      echo 4 >        functions/pci_epf_vntb/func1/pci_epf_vntb.0/db_bar [*]\n      echo 2 >        functions/pci_epf_vntb/func1/pci_epf_vntb.0/mw1_bar\n      ln -s controllers/e65d0000.pcie-ep functions/pci_epf_vntb/func1/primary/\n      echo 1 > controllers/e65d0000.pcie-ep/start\n\n      [*]: On R-Car Spider, a hack is currently needed to use BAR4 for\n\t   the doorbell. I'll consider posting a patch for that\n\t   separately.\n\n  - ensure ntb_transport/ntb_netdev are loaded on both sides\n\nResults:\n\n  - Without this series (pci.git main)\n\n    $ ping -c 10 10.0.0.11\n    PING 10.0.0.11 (10.0.0.11) 56(84) bytes of data.\n    64 bytes from 10.0.0.11: icmp_seq=1 ttl=64 time=6.04 ms\n    64 bytes from 10.0.0.11: icmp_seq=2 ttl=64 time=12.6 ms\n    64 bytes from 10.0.0.11: icmp_seq=3 ttl=64 time=7.40 ms\n    64 bytes from 10.0.0.11: icmp_seq=4 ttl=64 time=5.38 ms\n    64 bytes from 10.0.0.11: icmp_seq=5 ttl=64 time=11.4 ms\n    64 bytes from 10.0.0.11: icmp_seq=6 ttl=64 time=9.42 ms\n    64 bytes from 10.0.0.11: icmp_seq=7 ttl=64 time=3.36 ms\n    64 bytes from 10.0.0.11: icmp_seq=8 ttl=64 time=9.48 ms\n    64 bytes from 10.0.0.11: icmp_seq=9 ttl=64 time=4.24 ms\n    64 bytes from 10.0.0.11: icmp_seq=10 ttl=64 time=10.4 ms\n\n  - With this series (on top of pci.git main + Dependency (1) and (2))\n\n    $ ping -c 10 10.0.0.11\n    PING 10.0.0.11 (10.0.0.11) 56(84) bytes of data.\n    64 bytes from 10.0.0.11: icmp_seq=1 ttl=64 time=0.623 ms\n    64 bytes from 10.0.0.11: icmp_seq=2 ttl=64 time=0.603 ms\n    64 bytes from 10.0.0.11: icmp_seq=3 ttl=64 time=0.772 ms\n    64 bytes from 10.0.0.11: icmp_seq=4 ttl=64 time=0.769 ms\n    64 bytes from 10.0.0.11: icmp_seq=5 ttl=64 time=0.686 ms\n    64 bytes from 10.0.0.11: icmp_seq=6 ttl=64 time=0.785 ms\n    64 bytes from 10.0.0.11: icmp_seq=7 ttl=64 time=0.789 ms\n    64 bytes from 10.0.0.11: icmp_seq=8 ttl=64 time=0.694 ms\n    64 bytes from 10.0.0.11: icmp_seq=9 ttl=64 time=0.678 ms\n    64 bytes from 10.0.0.11: icmp_seq=10 ttl=64 time=0.773 ms\n\n\nChangelog\n---------\n\n* v6->v7 changes:\n  - Split out preparatory patches to keep the series below 10 patches.\n  - Add support for platforms where the eDMA register block is fixed\n    within a reserved BAR window (e.g. RK3588 BAR4) and must be reused\n    as-is.\n  - Introduce a dedicated virtual IRQ and irq_chip (using\n    handle_level_irq) for interrupt-emulation doorbells instead of\n    reusing per-channel IRQs. This avoids delivery via different IRQs on\n    platforms with chip->nr_irqs > 1.\n\n* v5->v6 changes:\n  - Fix a double-free in v5 Patch 8/8 caused by mixing __free(kfree) with\n    an explicit kfree(). This is a functional bug (detectable by KASAN),\n    hence the respin solely for this fix. Sorry for the noise. No other\n    changes.\n\n* v4->v5 changes:\n  - Change the series subject now that the series has evolved into a\n    consumer-driven set focused on the embedded doorbell fallback and its\n    in-tree users (epf-test and epf-vntb).\n  - Drop [PATCH v4 01/09] (dw-edma per-channel interrupt routing control)\n    from this series for now, so the series focuses on what's needed by the\n    current consumer (i.e. the doorbell fallback implementation).\n  - Replace the v4 embedded-doorbell \"test variant + host/kselftest\n    plumbing\" with a generic embedded-doorbell fallback in\n    pci_epf_alloc_doorbell(), including exposing required IRQ request flags\n    to EPF drivers.\n  - Two preparatory fix patches (Patch 6/8 and 7/8) to clean up error\n    handling and state management ahead of Patch 8/8.\n  - Rename *_get_remote_resource() to *_get_aux_resources() and adjust\n    relevant variable namings and kernel docs. Discussion may continue.\n  - Rework dw-edma per-channel metadata exposure to cache the needed info\n    in dw_edma_chip (IRQ number + emulation doorbell offset) and consume it\n    from the DesignWare EPC auxiliary resource provider without calling back\n    to dw-edma.\n\n* v3->v4 changes:\n  - Drop dma_slave_caps.hw_id and the dmaengine selfirq callback\n    registration API. Instead, add a dw-edma specific dw_edma_chan_info()\n    helper and extend the EPC remote resource metadata accordingly.\n  - Add explicit acking for eDMA interrupt emulation and adjust the\n    dw-edma IRQ path for embedded-doorbell usage.\n  - Replace the previous EPC API smoke test with an embedded doorbell\n    test variant (pci-epf-test + pci_endpoint_test/selftests).\n  - Rebase onto pci.git controller/dwc commit 43d324eeb08c.\n\n* v2->v3 changes:\n  - Replace DWC-specific helpers with a generic EPC remote resource query API.\n  - Add pci-epf-test smoke test and host/kselftest support for the new API.\n  - Drop the dw-edma-specific notify-only channel and polling approach\n    ([PATCH v2 4/7] and [PATCH v2 5/7]), and rework notification handling\n    around a generic dmaengine_(un)register_selfirq() API implemented\n    by dw-edma.\n\n* v1->v2 changes:\n  - Combine the two previously posted series into a single set (per Frank's\n    suggestion). Order dmaengine/dw-edma patches first so hw_id support\n    lands before the PCI LL-region helper, which assumes\n    dma_slave_caps.hw_id availability.\n\nv6: https://lore.kernel.org/all/20260209125316.2132589-1-den@valinux.co.jp/\nv5: https://lore.kernel.org/all/20260209062952.2049053-1-den@valinux.co.jp/\nv4: https://lore.kernel.org/all/20260206172646.1556847-1-den@valinux.co.jp/\nv3: https://lore.kernel.org/all/20260204145440.950609-1-den@valinux.co.jp/\nv2: https://lore.kernel.org/all/20260127033420.3460579-1-den@valinux.co.jp/\nv1: https://lore.kernel.org/dmaengine/20260126073652.3293564-1-den@valinux.co.jp/\n    +\n    https://lore.kernel.org/linux-pci/20260126071550.3233631-1-den@valinux.co.jp/\n\n\nThanks for reviewing.\n\nMany thanks to Frank and Niklas for the continued review and\nconstructive feedback throughout the development of this series.\n\n\nKoichiro Den (9):\n  PCI: endpoint: Describe reserved subregions within BARs\n  PCI: dw-rockchip: Describe RK3588 BAR4 DMA ctrl window\n  PCI: endpoint: Add auxiliary resource query API\n  PCI: dwc: Record integrated eDMA register window\n  PCI: dwc: ep: Expose integrated eDMA resources via EPC aux-resource\n    API\n  PCI: endpoint: pci-ep-msi: Refactor doorbell allocation for new\n    backends\n  PCI: endpoint: pci-epf-vntb: Reuse pre-exposed doorbells and IRQ flags\n  PCI: endpoint: pci-epf-test: Reuse pre-exposed doorbell targets\n  PCI: endpoint: pci-ep-msi: Add embedded eDMA doorbell fallback\n\n .../pci/controller/dwc/pcie-designware-ep.c   | 149 ++++++++++++++++++\n drivers/pci/controller/dwc/pcie-designware.c  |   4 +\n drivers/pci/controller/dwc/pcie-designware.h  |   2 +\n drivers/pci/controller/dwc/pcie-dw-rockchip.c |  15 +-\n drivers/pci/endpoint/functions/pci-epf-test.c |  84 ++++++----\n drivers/pci/endpoint/functions/pci-epf-vntb.c |  57 ++++++-\n drivers/pci/endpoint/pci-ep-msi.c             | 143 +++++++++++++++--\n drivers/pci/endpoint/pci-epc-core.c           |  41 +++++\n include/linux/pci-epc.h                       |  79 ++++++++++\n include/linux/pci-epf.h                       |  23 ++-\n 10 files changed, 548 insertions(+), 49 deletions(-)"
}