Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2223146/?format=api
{ "id": 2223146, "url": "http://patchwork.ozlabs.org/api/patches/2223146/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260414141514.1341429-4-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": "<20260414141514.1341429-4-den@valinux.co.jp>", "list_archive_url": null, "date": "2026-04-14T14:15:10", "name": "[v14,3/7] PCI: dwc: ep: Expose integrated eDMA resources via EPC aux-resource API", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "3fe2ad9acb2c236add5abb91ddef1b0ac5a98f5f", "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/20260414141514.1341429-4-den@valinux.co.jp/mbox/", "series": [ { "id": 499855, "url": "http://patchwork.ozlabs.org/api/series/499855/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=499855", "date": "2026-04-14T14:15:08", "name": "PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback", "version": 14, "mbox": "http://patchwork.ozlabs.org/series/499855/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2223146/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2223146/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-pci+bounces-52496-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=kKJFJugS;\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-52496-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=\"kKJFJugS\"", "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.228.133", "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)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fw6480x7lz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 00:24:56 +1000 (AEST)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id D5C9830ACD09\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 14 Apr 2026 14:16:46 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 9A3253469F4;\n\tTue, 14 Apr 2026 14:16:34 +0000 (UTC)", "from OS0P286CU011.outbound.protection.outlook.com\n (mail-japanwestazon11020133.outbound.protection.outlook.com [52.101.228.133])\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 ED0133E715F;\n\tTue, 14 Apr 2026 14:16:32 +0000 (UTC)", "from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10)\n by TY3P286MB2529.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:222::14) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Tue, 14 Apr\n 2026 14:16:25 +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.9769.046; Tue, 14 Apr 2026\n 14:16:25 +0000" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776176194; cv=fail;\n b=DDcBfBih4ubdrzJs66iV4BRpLSUVhOciL/Vhh3sjcDGOBDl284U0gds6BRcuBlVhoSCP1pEld5ennwOp1/ZyESC32gqO+9SfVY/6nU6TSCnfXBpcp07ts+omlirEGh3UBPLAnP76DTW87CpCZORks7XF9wK54goJZfuj7gqGPAg=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=XCH7jF/duxSr+qfLCkJnUUD+q/dgBr7MBu+Od7eyxcE1HbfYwy0A0fzJ6uXsxKboLoBnm/+Pzz/xwA5yXtTh9t1VgN1gs4B2NB9GKMzLR82D81MX6TfLpzkRSJZVZM0HzZB5FWxLCOKiWEs+uQl/H2C48KyL/dYapcl87ufjUu1X7ujGfRwBNIsxA7uESAWRNxgXv38/ctOB5VP0datgZNo9bbkN4o3lxXabdHMOneX/e/zToMdB/gTo1Qm1u1ZlUn+TAEm1FJ9urxY8NvmevjOpZUliJTg99DqKs+wWv+QwQRyb+auF+QyE1ZJNm+qxmWItLEQp/+2UFe4BwOhUPA==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776176194; c=relaxed/simple;\n\tbh=N1MSGvwVyzz6fkc2a93y1b0XFQgdrBI10ugKsrIXGW0=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=NT0IunAU16j8jX0a4eZqx8WwhAjzFHcmJ9bR7wTWtasoWPhbBgFSgwNiVF7+5NfbWFgcq7Tnn0IIL2M686PItD83Up46c+SmT9PG2sXodTjXmhs4WlMXz/FeChoqEPCP+/AR6ckbom3tHtNLW74VepZGnZrY+EQ30kQXwZW0wcs=", "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=KrnaEL7HBeJ/AijiHnahAUBcGY2wojYfS4R0k7UbMj0=;\n b=QyWdPbkW5XOEVea57eqXJ3gI9o3r81e980WuztKEHgX7YHFukFw7XfbrwnMG3PJz8XS22IZnkXKGp055bBceEg8ezQsm/XUj4ims0kjmNR7aYKqAQaAbUKLs+BmBvX+3EfX0wal0mfyWBsvrXZ0O640+kf1BcM4swriZf0Abq75P2yyADShXZN5d4zgfYb1w9o6O9YQOw/l78IXhejkVECEodfsfly+mDYTc42zVNIxhWew0bTG9TPJoL4KYiBSj/h1UboO5cPIZlQ/15M1oOjeNgJkt8xJpBIvCrXCdW5rS9raASex+4FiYmPhMZUl7Gyqc5YqD1sSKU85UR6pSIA==" ], "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=kKJFJugS; arc=fail smtp.client-ip=52.101.228.133", "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=KrnaEL7HBeJ/AijiHnahAUBcGY2wojYfS4R0k7UbMj0=;\n b=kKJFJugS+4/701yob5cc40G3n+78otKKnPQ3ul6xRXFlLK1QblfdIvVsQwFpwaTSnIs0Kg+dbhxMLp+vnulN+vT+pn7IX9gRKes6V15HMz5jrB7SYtxt4XpZqWptkhO8ncwdJUEi0NrDm+vv9a6bZ0Lg40/BQGDN38XsvlQuXnU=", "From": "Koichiro Den <den@valinux.co.jp>", "To": "Jingoo Han <jingoohan1@gmail.com>,\n Manivannan Sadhasivam <mani@kernel.org>,\n Lorenzo Pieralisi <lpieralisi@kernel.org>, =?utf-8?q?Krzysztof_Wilczy=C5=84?=\n\t=?utf-8?q?ski?= <kwilczynski@kernel.org>, Rob Herring <robh@kernel.org>,\n Bjorn Helgaas <bhelgaas@google.com>,\n Kishon Vijay Abraham I <kishon@kernel.org>, Jon Mason <jdmason@kudzu.us>,\n Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>,\n Niklas Cassel <cassel@kernel.org>, Frank Li <Frank.Li@nxp.com>,\n Bhanu Seshu Kumar Valluri <bhanuseshukumar@gmail.com>,\n Marco Crivellari <marco.crivellari@suse.com>,\n Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>,\n Manikanta Maddireddy <mmaddireddy@nvidia.com>", "Cc": "linux-pci@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tntb@lists.linux.dev", "Subject": "[PATCH v14 3/7] PCI: dwc: ep: Expose integrated eDMA resources via\n EPC aux-resource API", "Date": "Tue, 14 Apr 2026 23:15:10 +0900", "Message-ID": "<20260414141514.1341429-4-den@valinux.co.jp>", "X-Mailer": "git-send-email 2.51.0", "In-Reply-To": "<20260414141514.1341429-1-den@valinux.co.jp>", "References": "<20260414141514.1341429-1-den@valinux.co.jp>", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "TYCP301CA0068.JPNP301.PROD.OUTLOOK.COM\n (2603:1096:405:7d::19) 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_|TY3P286MB2529:EE_", "X-MS-Office365-Filtering-Correlation-Id": "3c812b0a-1223-4065-915e-08de9a306956", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|10070799003|7416014|376014|366016|1800799024|921020|56012099003|22082099003|18002099003;", "X-Microsoft-Antispam-Message-Info": "\n\trFV7rbWHoh9lZ+WzBD+nmcNdsuh95DwYwql6hOi7YhcGI+8sEcduUggoh9Hv5gqCuu8UQCe4Qzvnwp3a7yYKnsT7vgSD/Tk7pB8uKuYTssiTuqv2FEG9SHKZZ9uTzo3OQAxLxGTP8nqB2d5BXX1kvoRnvKpXTGEgkV+k4K+8mYbzYv/OyY+A71iAjYx7YePHxG4aGVH7/liEtH3nvw6T/EjWlinWNvY6QVTDHKVeLzBmCWzhoX8Xsjdna6Xbu3myNjIw2+bSZJnXB3k2KAtVPacwsfZKqKaumclt/bCkkWqvrjCWTZNa2/OTY5uJ2oxZRbJzZ+3iSZu6IVC5B8Ptrp+BWFqP7rS+vgi+MxmkAzbwGDWYlap+2GqvqgLfJ6XISqEEw50BbUCS4eI0hznGODf3px+K94JESzq3UqEQdEVvjiROHgqb2IoUmgLQ7Cg9y2n/d5V1uPdt3hSNr/AzA+03cfkI8oQBjK3iNne0nJ8rJoixLHdoStktDC05Lkeloxy9oVJeYthPBeOLqzHT8s9FlP5KkPCCLtXFd9OLpxCXAw68kRZcBtI4DkGmUQ9kuAKEIl8Qqz8RPOw0zu6vkHcl/+9X9+CYO/PBY6YSGvfzViuyVnAahJPw517QOJA7jHCY8sZZS0lIGXPUa5w5QYLm5BQyuNTZ+/pycx971NsobobD68DtMMsLFegI1BtkExFkXVxt2EBcnREgxFpxWuSntBysp9FlW/9Yk9iWPJLsnOLzPolcHu55tNoN+teXC/2g6o7WWMsGnOHoYCUOXw==", "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)(10070799003)(7416014)(376014)(366016)(1800799024)(921020)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n hrQ+ozNlLj2r2Kphr1hioJYC6Jv089ylUuUhIS7OvzX3Z5yvjCChviyIQU/QVxAx3uIaeIy6c9PzgmIt2l9fjyaBCyUC4u8qRCxFbWdF8IiT/6v4xOjTX/wrbotGioPzjbC9pFSkdXs3O+uu36/XZyT44KYsqI6agfOwBp5H+DSFFGqQlaRXIbLJTHVW3vIqwrd2DJG04ZyCI0PcR+UEsgPOm6uUV2Pk0Yx+N3fWIOXUnBvIt+mrE1M1LWTjAc87CpPrEy9NxEai9f3Ink975ZGYFChyxIodIvb1C3ewzpa2FzNK1FQtQ1MyK3WLnsUSx7ST0dGx2V57fYwrB/GgsEUSVzuApJ6oupUC/feaqWkwpi2G6GkehsW28ZiKco4olAoa4D4KKqtd1XcEYrQRYHSbTC1bErKQ1iQW8fz8kBl7q/T1yuM/woZEUABt0mgYJmEQ9TMPbe/PT4SlPHCtJPUB8bsFx8WatQSSuFl/oB45Fmz2ZiTgyx/xjkffN+WgTeo4TXik+33cfeUdGxf8PaK8nb56wNwEnxmjUCzEJtLqdsqXgHVQSEzd2Y0y8vNxDdIOSJjn2SeC+S6M0I7B99Tr9J48jJHgzJvwVxmh3FUG4FYJRt4WPv7m7FNZYC3/wX68ehC+/48BeWcJsqU/XaSJStUZbUZ0FT5g1aqKjDWzdxRFraFdBzDmbJN1cVUhHShZN/o+cZEhlLVWr8mC2fkGm84KYMEWGoCk4xy2OEcPuLfWkhEWosL2XEgIcdfIDyEuOJoHnG/O662RymnIDVoTzjHlDjVEQo4HNPIN4J55E3b6uohZyAZiUiwXSFlshJ+qeSuKfcA4rP1lOZENRoW/B6UGIL3ousTMTXJ8NhcZaEw1sn0ejjkj3k+YD0MRAy2FW6zZ+teRN3taSY/7CDBp5nEtcXEZulvptNcIk5w3mTbh3X1v0gW/fCM64B5wMsM+lbkVjkGZ7LX5gCaJ5R492wYB3q8igdKUVntY858gRQT0JiPL+IbYqkeNYrSYB6YwVZgWSDpb0DgxTODbVCVAiWV+w5vKVI/bImvczK6dL05f095g9KgrDxzgdoa9Z0hf+t9pYolwYM+GYFwiO6MyxhPNLHip90pBOQdG0RB9JnhOg41XFEgYmz/7WoBoT3HxgjN3GER+dYPkTKn3eMyYOEs5sgM5C+bfDuMrhA14qdj2OTOMtnMWjRkaxqRPOhbe/VtHWFHNoT/FRyEI9m+CBrWj1B1+oUSLDBnKgeeMJIEZp6Jtz36HHNMchOhSS5k3UfE11DvHA/drqCq0mTFbXRa8Kwrp31otTGXWRmmXucKlE1Ym8e1VZiMrbqoBcpKguUM0sfis6Xp1l8tGJ4DTdY/8AtFqFwWRLXImVeCJmyi5FkMN3GCZKUW6k71Bwi5/uK4J3yzwc6QHtf8P2r/mwGEaThWnvw1n/pMLnDkM5vhvhW7crKdsEED394kVZKK9m5nGifUFLRsIOuu2wgZCQl8f3TOuiq0Tm/YzPOfEMqDicdgnOsVG4RFH6h9lfHKWR0TH9o3PAOIsLM4bgNQ5oYWrZWRgMf8FjkT0A8Woi/wU0cUN1Jlz65adGt+JjWceY47qtpFnzitPMpRQR28ok7bFmCwzi6lxxKAhKxvmi8yq8NHdMEEbYTrLkDQCE5FKRU0v4p1uAHeRDszF2F6Gk/Dys1w3SRTB3UOHSBHeiMytddsyK1WyOBwDKZ7cDF/fuDt19/rDGVbgrSWCwsg7066jNfhygNDvuttwFgnKPIEYL+yxKi2xkbLF0Gt+", "X-OriginatorOrg": "valinux.co.jp", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 3c812b0a-1223-4065-915e-08de9a306956", "X-MS-Exchange-CrossTenant-AuthSource": "TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "14 Apr 2026 14:16:25.0212\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 Exb9EvRvQ2mVCGOV78QrcFdCjZQJOCgOeo8jPk/gCeYJvc13erYQS8HoESSS8OSoTr+KiVQt7XxbyRIb1xid6w==", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "TY3P286MB2529" }, "content": "Implement the EPC aux-resource API for DesignWare endpoint controllers\nwith integrated eDMA.\n\nCurrently, only report an interrupt-emulation doorbell register\n(PCI_EPC_AUX_DOORBELL_MMIO), including its Linux IRQ and the write data\nneeded to trigger the interrupt.\n\nIf the DMA controller MMIO window is already exposed via a\nplatform-owned fixed BAR subregion, also provide the BAR number and\noffset so EPF drivers can reuse it without reprogramming the BAR.\n\nReviewed-by: Frank Li <Frank.Li@nxp.com>\nSigned-off-by: Koichiro Den <den@valinux.co.jp>\n---\n .../pci/controller/dwc/pcie-designware-ep.c | 119 ++++++++++++++++++\n 1 file changed, 119 insertions(+)", "diff": "diff --git a/drivers/pci/controller/dwc/pcie-designware-ep.c b/drivers/pci/controller/dwc/pcie-designware-ep.c\nindex 386bfb7b2bf6..c3c354265307 100644\n--- a/drivers/pci/controller/dwc/pcie-designware-ep.c\n+++ b/drivers/pci/controller/dwc/pcie-designware-ep.c\n@@ -9,6 +9,7 @@\n #include <linux/align.h>\n #include <linux/bitfield.h>\n #include <linux/of.h>\n+#include <linux/overflow.h>\n #include <linux/platform_device.h>\n \n #include \"pcie-designware.h\"\n@@ -817,6 +818,122 @@ dw_pcie_ep_get_features(struct pci_epc *epc, u8 func_no, u8 vfunc_no)\n \treturn ep->ops->get_features(ep);\n }\n \n+static const struct pci_epc_bar_rsvd_region *\n+dw_pcie_ep_find_bar_rsvd_region(struct dw_pcie_ep *ep,\n+\t\t\t\tenum pci_epc_bar_rsvd_region_type type,\n+\t\t\t\tenum pci_barno *bar,\n+\t\t\t\tresource_size_t *bar_offset)\n+{\n+\tconst struct pci_epc_features *features;\n+\tconst struct pci_epc_bar_desc *bar_desc;\n+\tconst struct pci_epc_bar_rsvd_region *r;\n+\tint i, j;\n+\n+\tif (!ep->ops->get_features)\n+\t\treturn NULL;\n+\n+\tfeatures = ep->ops->get_features(ep);\n+\tif (!features)\n+\t\treturn NULL;\n+\n+\tfor (i = BAR_0; i <= BAR_5; i++) {\n+\t\tbar_desc = &features->bar[i];\n+\n+\t\tif (!bar_desc->nr_rsvd_regions || !bar_desc->rsvd_regions)\n+\t\t\tcontinue;\n+\n+\t\tfor (j = 0; j < bar_desc->nr_rsvd_regions; j++) {\n+\t\t\tr = &bar_desc->rsvd_regions[j];\n+\n+\t\t\tif (r->type != type)\n+\t\t\t\tcontinue;\n+\n+\t\t\tif (bar)\n+\t\t\t\t*bar = i;\n+\t\t\tif (bar_offset)\n+\t\t\t\t*bar_offset = r->offset;\n+\t\t\treturn r;\n+\t\t}\n+\t}\n+\n+\treturn NULL;\n+}\n+\n+static int\n+dw_pcie_ep_get_aux_resources_count(struct pci_epc *epc, u8 func_no,\n+\t\t\t\t u8 vfunc_no)\n+{\n+\tstruct dw_pcie_ep *ep = epc_get_drvdata(epc);\n+\tstruct dw_pcie *pci = to_dw_pcie_from_ep(ep);\n+\tstruct dw_edma_chip *edma = &pci->edma;\n+\n+\tif (!pci->edma_reg_size)\n+\t\treturn 0;\n+\n+\tif (edma->db_offset == ~0)\n+\t\treturn 0;\n+\n+\treturn 1;\n+}\n+\n+static int\n+dw_pcie_ep_get_aux_resources(struct pci_epc *epc, u8 func_no, u8 vfunc_no,\n+\t\t\t struct pci_epc_aux_resource *resources,\n+\t\t\t int num_resources)\n+{\n+\tstruct dw_pcie_ep *ep = epc_get_drvdata(epc);\n+\tstruct dw_pcie *pci = to_dw_pcie_from_ep(ep);\n+\tconst struct pci_epc_bar_rsvd_region *rsvd;\n+\tstruct dw_edma_chip *edma = &pci->edma;\n+\tenum pci_barno dma_ctrl_bar = NO_BAR;\n+\tresource_size_t db_offset = edma->db_offset;\n+\tresource_size_t dma_ctrl_bar_offset = 0;\n+\tresource_size_t dma_reg_size;\n+\tint count;\n+\n+\tcount = dw_pcie_ep_get_aux_resources_count(epc, func_no, vfunc_no);\n+\tif (count < 0)\n+\t\treturn count;\n+\n+\tif (num_resources < count)\n+\t\treturn -ENOSPC;\n+\n+\tif (!count)\n+\t\treturn 0;\n+\n+\tdma_reg_size = pci->edma_reg_size;\n+\n+\trsvd = dw_pcie_ep_find_bar_rsvd_region(ep,\n+\t\t\t\t\t PCI_EPC_BAR_RSVD_DMA_CTRL_MMIO,\n+\t\t\t\t\t &dma_ctrl_bar,\n+\t\t\t\t\t &dma_ctrl_bar_offset);\n+\tif (rsvd && rsvd->size < dma_reg_size)\n+\t\tdma_reg_size = rsvd->size;\n+\n+\t/*\n+\t * For interrupt-emulation doorbells, report a standalone resource\n+\t * instead of bundling it into the DMA controller MMIO resource.\n+\t */\n+\tif (range_end_overflows_t(resource_size_t, db_offset,\n+\t\t\t\t sizeof(u32), dma_reg_size))\n+\t\treturn -EINVAL;\n+\n+\tresources[0] = (struct pci_epc_aux_resource) {\n+\t\t.type = PCI_EPC_AUX_DOORBELL_MMIO,\n+\t\t.phys_addr = pci->edma_reg_phys + db_offset,\n+\t\t.size = sizeof(u32),\n+\t\t.bar = dma_ctrl_bar,\n+\t\t.bar_offset = dma_ctrl_bar != NO_BAR ?\n+\t\t\t\tdma_ctrl_bar_offset + db_offset : 0,\n+\t\t.u.db_mmio = {\n+\t\t\t.irq = edma->db_irq,\n+\t\t\t.data = 0, /* write 0 to assert */\n+\t\t},\n+\t};\n+\n+\treturn 0;\n+}\n+\n static const struct pci_epc_ops epc_ops = {\n \t.write_header\t\t= dw_pcie_ep_write_header,\n \t.set_bar\t\t= dw_pcie_ep_set_bar,\n@@ -832,6 +949,8 @@ static const struct pci_epc_ops epc_ops = {\n \t.start\t\t\t= dw_pcie_ep_start,\n \t.stop\t\t\t= dw_pcie_ep_stop,\n \t.get_features\t\t= dw_pcie_ep_get_features,\n+\t.get_aux_resources_count\t= dw_pcie_ep_get_aux_resources_count,\n+\t.get_aux_resources\t= dw_pcie_ep_get_aux_resources,\n };\n \n /**\n", "prefixes": [ "v14", "3/7" ] }