Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2194472/?format=api
{ "id": 2194472, "url": "http://patchwork.ozlabs.org/api/patches/2194472/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260209062952.2049053-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": "<20260209062952.2049053-4-den@valinux.co.jp>", "list_archive_url": null, "date": "2026-02-09T06:29:46", "name": "[v5,3/8] PCI: endpoint: Add auxiliary resource query API", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "0d754d3326ef22ac3252333580e440041ab8ea3b", "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-4-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/2194472/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2194472/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-pci+bounces-46976-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=Mn28/C/M;\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-46976-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=\"Mn28/C/M\"", "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 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 4f8ZZ131n0z1xtV\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 09 Feb 2026 17:30:17 +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 AC20A30062EA\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 9 Feb 2026 06:30:06 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 1C06831A05E;\n\tMon, 9 Feb 2026 06:30:04 +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 C91E131814A;\n\tMon, 9 Feb 2026 06:30:03 +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: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.9587.017; Mon, 9 Feb 2026\n 06:30:01 +0000" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1770618604; cv=fail;\n b=XlrWc2tKioCiNmTr8fRnMvfzE5H/wF8i12IodTn/sAuXvNkugOWKA/yeLpl/wlc/0V9VQz/8nK77Lx9GSAwDcJBGwp319fIEfWfNEgRrqxcfURJlFap1q423XfYkuMigUwso/u5WCvywZ3upSJDX2h3Wh+a0ZimGlsZBMN/uLxU=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=e0XpceXpFwGyim0mEAIOpQicyQ7Z14MHiJZ5d9UVK5oP0nVLRa29gnHZZWl2K+lptTL/NZ30O5iGlREHYVdM72WbVw1M8/wvqwVLl8/JWIGTp/itFrWBbCo2C2hHaIjcHA22KmytdHHhZPnxNlYvoUN//5DEUchhPdLB6HYG0/ZQ59PPpcgW7SmivYbJWv1ls20uYJFryf3s6X37RdXOXL9uoGA7F6l9+muqN9lDIU6DCA2dODaymuf1e0/0jCUbXczG4v69jCpOYaRIol9aaQUBxdOEds366r+pL33SPgVKxLjqYT6ac8VE5t5hoUqn0BwESQjl6gR3henM3L8DMQ==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1770618604; c=relaxed/simple;\n\tbh=RuEu5ELvxMj5sc6sxKixNVeRDRkAahwzkDV43tCtMpg=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=jGjccOKBbqHCQcnBfDSnHFajmrHf/7Ul1D5LHaUfRmYnUhKtubTcC0E3hIwQP9ctfR6rnlq+Sh79YzeRcsxm0ahKgZLfrgXoiAkRPbo6J1qU0Sk3oejxePVsKzizhnmo9hm8O+rpE5b1y1091jq+5MQ+pRe35jMk0yNB/FM89gc=", "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=yMsq/VHFkA0P4T3E98nvet/M9krabS6F1m1j/RtHSWY=;\n b=V6Bc0hmsirlIYdYogReyoX/xjttKoKX/4US6Tt4epo0BBLZnldVkgpZ0425jKAwVGR7Cd535Am/rqbp/cZkxcVeHVBpkbtQjNIFZNYxiFFONwQfAtIqNh0JyOv1nSxwO8JZgU5BpqVr9BFY5SCmy6FUle+UDI4gfQw+ZYv3U3OlX0gqFNAjxgJQ8eR0K0The0DwLerqUqyU9dTTjIT4Y8cYA+wL1T/BTDjcsdBSEKXtToATkVj9ZVkFD1U0Usaym9CbTTaYb9RhHUMS5AD+84WMhma8DpV21cagQTzbh81RjnslcJiS0X1801MFrD0LvLRRmj5CQ+Xq5goqXj8NWgQ==" ], "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=Mn28/C/M; 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=yMsq/VHFkA0P4T3E98nvet/M9krabS6F1m1j/RtHSWY=;\n b=Mn28/C/MP5BOxMY6S5BpqWoPmRSoYjGt4ndzogJX1duOGsPzIGolFlrxVm3LqStoFvL5wGXhpJZxDwAk2cLebLR2fH0xCadBmxZixplZJuqTfWjBfdHUqgD67f+F6u0NCTLhJm8lESWUWAVDX/fwQDkJ3FMEianaofXemWNToUE=", "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 3/8] PCI: endpoint: Add auxiliary resource query API", "Date": "Mon, 9 Feb 2026 15:29:46 +0900", "Message-ID": "<20260209062952.2049053-4-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": "TY4PR01CA0027.jpnprd01.prod.outlook.com\n (2603:1096:405:2bf::11) 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": "c8a4d6d0-f5b5-4d4f-d09c-08de67a4a785", "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 MOfXkUbmj4ct9muAEJU0aLwrwdbkK+ZpBh3XpqRq5E/SPw6adyK08s4NA0+qTB9gOqiefZPGk9vtd+yMhNCPNgV350Qhe43tFmNzo9p8SW7PPgnJgtjibPhyKG4kMzRfX3A4i0K3tNRYq8KXKw8L7pV02fwypmX3Q8TAhnyyiLatSzKq8rup/rRGjmotboOUX+sTXd2+1O/GFPXEpSQfiKFG0bl1697FR71/gmFbGI9v9TocpEVc/aHH4gd2bSrKSVZPddq3OuKEeWHVs0Y2xHBUIB1ViqIjUh6V76YxWPNsZCPlgKZigtCGCpzr9SgbkttKSF1lvaST5Ur3mZ0RBh361ujNeOnutpMgHqx1mncSzbXcYxrw/fKynvLq350TfHaelzFZOC2eQdevbtDRteZcRAIbNhancjsnEfCB9tBo9bewtxAsR3zE4cJZZvEVVEma7bTxDMKcdB/WNpfZtxlOimN6Myhcug6S7nKWlzuJYcuOk9TDP5IiURRnhWoLx27BYHjsfoYzDl/Huccp3KRtHeh6wlfGQ3a27wVFNttvDKOtglKVdzPY3vqhi7EmqxQ6avsz2K7UEgD1hSdofN0eRdTnGqGWxDOwSnPffXdFoVpof5IQUZKaMEatyNv+LuyUh8tskdbPx+PQVBUxXsBYFeB5RNNACVDTYLwn9QpXgvaew0lCOA865Po+HrrRbwxTQEuUYq++S+H0hnIzbpiIeKlcVgHWJ/uQjp/dYdDbZbUV76vmlvkKLxPen14fBGiKcG+TlVWvqtL2okpljbatU1TcUeaD+vWQL4eJueFBzIge6RA0hq4S5ku9/8LUoe3UVEkQr25GPra2+UKeKCKyme5sxS6x1EFHNCwUxE3Ua3HAdZq4beHAwC08c1pxnd1l/WDc1xtRUxy12Cm352qgImwNgTnOej9Z9qRgpQgo3hxEikt2FUIpU2K9e8jBbji4TaVNuhyIxhriep2pstaEapTWDqFn/KbeZzs1WhLJDczMpEbEfj2YlheEu9uUkgyKbppVjJEKHkTaiV6DzoCoYyym+d9OnyJLPz3lC7agwNSz/+RRJDZvlOfwI8QXdNFofCeO//8KIkljF2ocJ9aHjbOvitZqVzHD5NO0eioNpVV8zsw+xRm3K42lfozokmd+k/ec311u51l4XrhfAPDZZ3N3s1hTERW7doKmfmEu+iuNNeYgQnjIp+lx+Me41JIeuljl6Q+JOq9YSQOm/r7ovBem06hXjxSpB9BLcyFMu2wAvqNhRoS/G+5mCybB97ghIGKNMAChlifWOca5Yu60AbQQIP43O3as8apYSJgJWF2G+jtyOiqweHgaPtsawNeqPYWk1YLzNrP5KlxJ6k4w3+80Ogty0Q6BtXN8OUuRzAimbU/kaU7FPot/Y2DyqHQM9tvYZpPv2h51RMMsLtWohb23LuoWnSo96Alc3wFwxiWxktIIwVVR140rCqUSFvunDJkBshW2V6skjR79W8QPF+3bV9FxHe0U0XBee7CwOf5VDPeD99oA8OMfmNqg4n0hZl6QRJ+kajLOz+c9M2vgAYjPX63TLOQjGQN1hbKQ18Q28A92Vq69toCqBPJF7Ik/eEXahP0GsidgzK4+Ng==", "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 fPuE3yj3ZBFra6ZqpqiwwWDBf3MUWbmtYSfvsgTfbjpYFwaDlJafVuFxNI254eCsYVvGPQFBOoSq7Ed6Y4MWkDhGMTVTynR8vfI/0l1Calik/EcWWqrKDvOdeE1XC56vC+lHyB6wI83GAxxWI5KA7qbBIIhqGEz/Fb4mq0BE6x/MWGtlze1m0DSc9FYEIzOPhVJWqVFwtHbbHcEamIIPnBMh2u1JdGs2vg35QLDRK4NVwYzhjq07yytDbSAXT1R2HSZtg/AcTDhzZDXOvhdhFfpTZL7dyDWslhPz2Cd0FntXZUFwfLnxpKsJZQmD9UAdxx/xseSOY8zG3DPtIsB430HmZIqeuoauqNoClnnjjW8EHHnC4992iZydOvdX8BnaslkpZ/fbuw9p3zM92fX8KAqRdjdObV7DRe65Kk/KkSps+cMOZQJch2UDge6hcexYnHdHgBQdPPyY2JFxQv/qfS1Z3M1KJECHWk1RnJqRbntyyyCnTlhw4qcdoh/cFG7aLPYxPczHEKahObvlXoQljLWeLFT6y0H93jtNdrlSB2HK8MHy+c6APFo1LhGQ93k8iBfn4W0UwGb85GnxnAPj9FAfCqmNHcgEO9SMcqIsNrRD22twJUr8+aRTQ+yLo4na/a1vTt7MEInTgmptnPJgsiyvOuYJX49Uiq3gUOBQFfEYs8byYah8oGL9ioTNRqlguba81VLt0izt8CEl2UN/sUxm5YHWIJAu0VAdO/rntVDu2aGEtz7qAGzDC66M4gUn8RA3zVdnHjfOl4VwJz2EEAWe4QtmYoxSr4RPrsuKoGvyWyBEGKyYGMZJjI3d3ZUhc7yES9YXj3kRgMQ7krB/UVQyxDP1e3b33JFvofQMEoiI/IxZjT6A+cM1/5gAyzEA3/Wvd5KOPKPmAEm4pxTyt7vheFkJOOcGOkU0r6e39tg0yj8U0yyg+g62BDrDxwccd8sJg5ibfgddGlkP7P5XANzCkDLoAr0Mu1ISjHVM5Ya/jEgHP8gt/iNlHYalImcNYCWbWkiMsilCGJlNWgAnjwoBuZ+mCGjgN7y7bU6+Z78CgNxhpPDv0g+jueeTmqK231uXG2Wi3thEsiM5kz8+VgX9WpaNBBZXGyhFvG3dIaE24UgjTpfsHxk+kTwudzvBhR4vXq4AfWk7Ze3yRm5aIwe1x+Lu4L+dIWaV8JK5gAfldKyOmoYMKzwqSzAgAkI07NXN7kZsQXLmYoZKx6GklyGdFYfoJedcsZPShma2KC+feQgys4VgzJpH4QNz5kv3a/Qp0bw+cAwSdy9F7OUzrEFoAEB6W3uaAEmEDs9fqvol4MlFpZaz/IRSJevwsjmyFxMyS63N9mIMcpzk927KO+QkYP/pyLjmQUGA4xE+w1qtjVFtqE0Jngjwki6KA/zkAw4/nIoCjvqAw6IynnntU+uWHAGER1xUhRcIppGdvsmHJRGT2f5gcVKB/orp3PEFMZJHk+xfDNpjL91TdugVIkZpy19zK/7eH/q/qRxUt2yqLKdLd/0pk7yWVLxJYHwLku5pqWMWf+rQCH2F/HPt9/k0WkmQy2769V8kFMP8bRRZWz2I5bJsvxxbTNs8eZTq8WpXQtFc7b3QV1rtyypEvEVrjnmweXPS3qCXgBmHN2tB/t7fROmCFnzm0kKGLasnT1vJCtY9kKqEBoOD5Uyihr+zW0KSoIlCkopBPtXpnjXus2m4VsaPGcvBxjAiJsO0pqNSXykD9RpuCINKaAij8TiLuB01u9o2R6R7z/GNldRSQjxpnzMn6cABZGhcIHdA", "X-OriginatorOrg": "valinux.co.jp", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n c8a4d6d0-f5b5-4d4f-d09c-08de67a4a785", "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:01.6548\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 cHjxY5UMPOZJiPJVITeIfL2GL1L0+U9c/S0qhQ+88hZmuu65fz11aQBUb3AfqKZyn0uJRAChEn0KrOVxk78W2A==", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "TYYP286MB4425" }, "content": "Endpoint controller drivers may integrate auxiliary blocks (e.g. DMA\nengines) whose register windows and descriptor memories metadata need to\nbe exposed to a remote peer. Endpoint function drivers need a generic\nway to discover such resources without hard-coding controller-specific\nhelpers.\n\nAdd pci_epc_get_aux_resources() and the corresponding pci_epc_ops\nget_aux_resources() callback. The API returns a list of resources\ndescribed by type, physical address and size, plus type-specific\nmetadata.\n\nPassing resources == NULL (or num_resources == 0) returns the required\nnumber of entries.\n\nSigned-off-by: Koichiro Den <den@valinux.co.jp>\n---\n drivers/pci/endpoint/pci-epc-core.c | 41 +++++++++++++++++++++++++\n include/linux/pci-epc.h | 46 +++++++++++++++++++++++++++++\n 2 files changed, 87 insertions(+)", "diff": "diff --git a/drivers/pci/endpoint/pci-epc-core.c b/drivers/pci/endpoint/pci-epc-core.c\nindex 068155819c57..01de4bd5047a 100644\n--- a/drivers/pci/endpoint/pci-epc-core.c\n+++ b/drivers/pci/endpoint/pci-epc-core.c\n@@ -155,6 +155,47 @@ const struct pci_epc_features *pci_epc_get_features(struct pci_epc *epc,\n }\n EXPORT_SYMBOL_GPL(pci_epc_get_features);\n \n+/**\n+ * pci_epc_get_aux_resources() - query EPC-provided auxiliary resources\n+ * @epc: EPC device\n+ * @func_no: function number\n+ * @vfunc_no: virtual function number\n+ * @resources: output array (may be NULL to query required count)\n+ * @num_resources: size of @resources array in entries (0 when querying count)\n+ *\n+ * Some EPC backends integrate auxiliary blocks (e.g. DMA engines) whose control\n+ * registers and/or descriptor memories can be exposed to the host by mapping\n+ * them into BAR space. This helper queries the backend for such resources.\n+ *\n+ * Return:\n+ * * >= 0: number of resources returned (or required, if @resources is NULL)\n+ * * -EOPNOTSUPP: backend does not support auxiliary resource queries\n+ * * other -errno on failure\n+ */\n+int pci_epc_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+\tint ret;\n+\n+\tif (!epc || !epc->ops)\n+\t\treturn -EINVAL;\n+\n+\tif (func_no >= epc->max_functions)\n+\t\treturn -EINVAL;\n+\n+\tif (!epc->ops->get_aux_resources)\n+\t\treturn -EOPNOTSUPP;\n+\n+\tmutex_lock(&epc->lock);\n+\tret = epc->ops->get_aux_resources(epc, func_no, vfunc_no, resources,\n+\t\t\t\t\t num_resources);\n+\tmutex_unlock(&epc->lock);\n+\n+\treturn ret;\n+}\n+EXPORT_SYMBOL_GPL(pci_epc_get_aux_resources);\n+\n /**\n * pci_epc_stop() - stop the PCI link\n * @epc: the link of the EPC device that has to be stopped\ndiff --git a/include/linux/pci-epc.h b/include/linux/pci-epc.h\nindex c021c7af175f..5d3e1986b49f 100644\n--- a/include/linux/pci-epc.h\n+++ b/include/linux/pci-epc.h\n@@ -61,6 +61,45 @@ struct pci_epc_map {\n \tvoid __iomem\t*virt_addr;\n };\n \n+/**\n+ * enum pci_epc_aux_resource_type - auxiliary resource type identifiers\n+ * @PCI_EPC_AUX_DMA_CTRL_MMIO: Integrated DMA controller register window (MMIO)\n+ * @PCI_EPC_AUX_DMA_CHAN_DESC: Per-channel DMA descriptor\n+ *\n+ * EPC backends may expose auxiliary blocks (e.g. DMA engines) by mapping their\n+ * register windows and descriptor memories into BAR space. This enum\n+ * identifies the type of each exposable resource.\n+ */\n+enum pci_epc_aux_resource_type {\n+\tPCI_EPC_AUX_DMA_CTRL_MMIO,\n+\tPCI_EPC_AUX_DMA_CHAN_DESC,\n+};\n+\n+/**\n+ * struct pci_epc_aux_resource - a physical auxiliary resource that may be\n+ * exposed for peer use\n+ * @type: resource type, see enum pci_epc_aux_resource_type\n+ * @phys_addr: physical base address of the resource\n+ * @size: size of the resource in bytes\n+ * @u: type-specific metadata\n+ *\n+ * For @PCI_EPC_AUX_DMA_CHAN_DESC, @u.dma_chan_desc provides per-channel\n+ * information.\n+ */\n+struct pci_epc_aux_resource {\n+\tenum pci_epc_aux_resource_type type;\n+\tphys_addr_t phys_addr;\n+\tresource_size_t size;\n+\n+\tunion {\n+\t\t/* PCI_EPC_AUX_DMA_CHAN_DESC */\n+\t\tstruct {\n+\t\t\tint irq;\n+\t\t\tresource_size_t db_offset;\n+\t\t} dma_chan_desc;\n+\t} u;\n+};\n+\n /**\n * struct pci_epc_ops - set of function pointers for performing EPC operations\n * @write_header: ops to populate configuration space header\n@@ -84,6 +123,7 @@ struct pci_epc_map {\n * @start: ops to start the PCI link\n * @stop: ops to stop the PCI link\n * @get_features: ops to get the features supported by the EPC\n+ * @get_aux_resources: ops to retrieve controller-owned auxiliary resources\n * @owner: the module owner containing the ops\n */\n struct pci_epc_ops {\n@@ -115,6 +155,9 @@ struct pci_epc_ops {\n \tvoid\t(*stop)(struct pci_epc *epc);\n \tconst struct pci_epc_features* (*get_features)(struct pci_epc *epc,\n \t\t\t\t\t\t u8 func_no, u8 vfunc_no);\n+\tint\t(*get_aux_resources)(struct pci_epc *epc, u8 func_no, u8 vfunc_no,\n+\t\t\t\t struct pci_epc_aux_resource *resources,\n+\t\t\t\t int num_resources);\n \tstruct module *owner;\n };\n \n@@ -309,6 +352,9 @@ int pci_epc_start(struct pci_epc *epc);\n void pci_epc_stop(struct pci_epc *epc);\n const struct pci_epc_features *pci_epc_get_features(struct pci_epc *epc,\n \t\t\t\t\t\t u8 func_no, u8 vfunc_no);\n+int pci_epc_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 enum pci_barno\n pci_epc_get_first_free_bar(const struct pci_epc_features *epc_features);\n enum pci_barno pci_epc_get_next_free_bar(const struct pci_epc_features\n", "prefixes": [ "v5", "3/8" ] }