From nobody Fri Apr 3 03:23:07 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020081.outbound.protection.outlook.com [52.101.229.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B7D612DBF78; Tue, 17 Feb 2026 08:06:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315574; cv=fail; b=EPqxVUnrX2PF9FbnHc9DlGZ6vk8toMg1qnc5UPoFGOUy8Uum6nqh070uiTVNeDmU7h79FworonHS93gvGhhsRZJcwD2GA1A2smEevW3vwF7w6IZEmjpc02xS2wr01Tp4QKAdeH6BCZCV1t8ur6r44q6ELew1gqC0VgaRkVDhvHY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315574; c=relaxed/simple; bh=9Q9qko1WkESgBX7kwzR9bPXHZaZqmeuXgr3J5joEKik=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=uJc87JrQOXaXkGfQv/sEzu8XyfZ/BydV+ekFSM+Mbd6LiyDwiIWTXhH7NgqdtVUgEDmKJF0nOwL9mESrOxfeCfBhpqZiIaWqbBO10840pwOSUA00fDTbSLj/WVLGcRgY6t5aC0eKqF0AcVIULv8boHhoCNn5XoEIFZ3o74LSNSs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=kHu2iBci; arc=fail smtp.client-ip=52.101.229.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="kHu2iBci" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xgoamDk/UCM7MQ3OLA6IXbMtexZCxyoo1nYqkQlJojmZjIgPSrbbESVIg78RKSlHv6x5cebr9yIkikkRZD83f9PBU5vIYkZwwq3+c2WxPfygf14+zzkxrvZkkj3jvHu1ijQLokmRvI4X2x/PGmQKlNxjAZu1ONb+ZK9uVV/odZJOTrDaQT6X4GQFl6kDthd2WM0FpnF4Hy8/2MI7BOS3BfubEo3h2/xlMFtVHonanWGjYq7apssuuT1AHKozUxdr1vQXys08KAj5BIlsjXlyTnfcH8ZU4gGBi/ZHPOQtMDgcvC/Y+xYez5ZiWhnzchhJbdZ6uyuIwQp2nI8hLVq4Wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=XFcVKHil3Cz9aiQkWsEZEXTsG4xoIsNXs+oJdexGnc0=; b=OoNb2wUUfc6aOP02AycfNBBh8u/ek7WkyRA3wZWXbADdkKe5rf/oxA6Use+oOzFp4LsknXFaxh4qUnC8Y5dOXAoCgVM3PcRSQqg1yKmtG93TmAWVp7aBlSOJ7L5JFbyuwX1zgMXfirQ8LkwsliXOdU+6N9uQ55U+3gTjkAMEnFqVYhM0Ofu4gakHnSwDAapjPZVeJ4hJYdRG10w2hptoej2SNbIdCysLbvHxDfek5a+LamMApDGcZs1x0lHJ0ItJKZeuGj3G0TWJDuPYszJUr+pMxb2T62v8/6vdqroKVXdwASv2Q8gABaFFKVdEMnc9C+lNxK1roLRlJmGlRiX9qw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XFcVKHil3Cz9aiQkWsEZEXTsG4xoIsNXs+oJdexGnc0=; b=kHu2iBciAKF9h7xE1rWQIdH4EFDV3qCFjy8LSLOSTN9zYH6KANzHlctPJox75WYYW6WMFsN5xwjeUeNQo0akCGP1nOhE50AuZWiFnZXuxoJHmuHbhFPsfAI7XvAaLkEnYAxoaC/UphIy78D5cjnTl3cslleeZijT+/fPJJEMTZA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB7132.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:42f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Tue, 17 Feb 2026 08:06:08 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9611.013; Tue, 17 Feb 2026 08:06:08 +0000 From: Koichiro Den To: jingoohan1@gmail.com, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com, heiko@sntech.de, kishon@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, cassel@kernel.org, shawn.lin@rock-chips.com, Frank.Li@nxp.com Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, ntb@lists.linux.dev Subject: [PATCH v8 1/9] PCI: endpoint: Describe reserved subregions within BARs Date: Tue, 17 Feb 2026 17:05:53 +0900 Message-ID: <20260217080601.3808847-2-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260217080601.3808847-1-den@valinux.co.jp> References: <20260217080601.3808847-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYWPR01CA0022.jpnprd01.prod.outlook.com (2603:1096:400:aa::9) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|OS7P286MB7132:EE_ X-MS-Office365-Filtering-Correlation-Id: 74e12b00-c874-4e17-2b09-08de6dfb6811 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|7416014|10070799003|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+zZgIdZ41Dei4UnZm1PxK2jl0XjbW/OLDkyqAed7xc2SLzu24Mbc5hFklTcS?= =?us-ascii?Q?f6uRb0AMJQQHLh2gPjAcxNDFgUGYFEaIoHfCTYrT8ax3Y0jakaDIIcW+L7B+?= =?us-ascii?Q?F4NzbBavd8i6fJUFuhe5m0XV/msCMP8O/lKa14Xy8Kh8rgwPbl29q4qFXFOB?= =?us-ascii?Q?0T/ECDgu9PrxpR4soDRYv+zWSpRH414CTpq6hK8Xa0s99XPJlzYg7lV93v5J?= =?us-ascii?Q?rbutxuM3EoxOkyjKhxfSb8VqnGJgoYik6K8Do1sZddEejiJ/sJC42dc6FU+R?= =?us-ascii?Q?8gb2YLotJXwdVIHX6pt1r1kN7uu1gV9QYLyMN/Z+/TDWn3+ClVwxlL2pxY3D?= =?us-ascii?Q?f9wHHUiINePn8n8NTzECDiqywHKOl11b0OTHVwwIL8b7tolQhXx9DHKqwoQF?= =?us-ascii?Q?ODwGoUpYuN9bpyZUZYBL4PUvkon9ocbxNerdX96Nc6TN58fKdwZJ48O/7sD4?= =?us-ascii?Q?F6VYVFW4EacfKaQy8SFC9jzE85aC3RvOOpHCQLzqWfKS6yazm8++gUquAS63?= =?us-ascii?Q?cmviRC6NWbCfvZG7o0dqGN7nOifcVdinHsfjckJQT+kDfuEbVW7a+w47W2uv?= =?us-ascii?Q?P7WxulT8I59m0fK7TMU81jgJA9SlQDFTJqVcHHciiONrNDAgYO/GfUZYd7R6?= =?us-ascii?Q?arwBaCTXKgVhoq+SseEEhy/pfkd7/8golxlQ1qAQt82w1hmc+S8vuQDJxXCR?= =?us-ascii?Q?nlXlDiH1QEgrsz06VmjZG7Em1Tq5QmCb80b1QxXJkisKm/90E8R7cabhvCMj?= =?us-ascii?Q?N2bs25lG7eONLfcuiDXrCko5LqRk630V0EJ6oPrZpyOHBSdSrZb4VV0IivkU?= =?us-ascii?Q?6jv5edlHBiN2xlugbRAT9QMuuQC8MLB/rbx1arUHF6V00YypjNigy6jXmVkr?= =?us-ascii?Q?f9Um5mV2SJRi7zKMUQb1yXH3bJwrtnuEcxv1nGqvKrJvgg1lRm5E0KRH07Up?= =?us-ascii?Q?Cyj5HsNQOdNjPB0P8/E5FoYk7mD+GXy0ZQriK9Ah2tFKYbxIAHkuLn+WfaCa?= =?us-ascii?Q?Pjpzn/ebRHe5z/nbHg828+vzG6AgQLN0tIFOEuh0F/YwkF6IzfoiRx85sUGF?= =?us-ascii?Q?0S+sb+9XbOVvBk1XcP9qNvJM0jP75iRGbl6ajRxCNl6YAcmviS8n4fkPQ2FW?= =?us-ascii?Q?wcW7Z1Fo8wCp3BUksNcOURKUiAIBeBLf8e4IFWujEucjJAP+2ocW6RsF9/8s?= =?us-ascii?Q?jow4i7QthFUnDFv/QewKMhLmwIownQKqUKCo5XFNN+/p373CFt3L8cT0DeLf?= =?us-ascii?Q?KZp9K0tpx9PL2U0acmtODL8tPARkmQ0Lw3SoED7CaNNsZ4rvbm8JrK8EaeLH?= =?us-ascii?Q?rJs3pFJkaKrPV0HyesS8+3b/trB63Mx+/myfaaupHXyllDYbLHQLeairrobe?= =?us-ascii?Q?fadHLpupwPa7kJl1yyy4qkJ4OliAnjNkXZOQpblRz6eSPEjNbFU0mJG+pZlT?= =?us-ascii?Q?KUfLU7P5ezTKpDNc1gvLUTT2ezJCdw+5KTdd4JNR0+EOnbVbz5ySJ51nqYXW?= =?us-ascii?Q?oU9ANa1THMxBnprD19y8DyfmvpgnZ9LcBcgQCCfopcO8iz3w0AyDeBCwxVqT?= =?us-ascii?Q?P2/K8LaygHw45IN7Jki4w6tZbjbg1h+Jkex//5mP4Cm+/Y3+DJ6qimzQrKzt?= =?us-ascii?Q?QQ=3D=3D?= X-Forefront-Antispam-Report: CIP: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)(366016)(376014)(1800799024)(7416014)(10070799003)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hs87sIMVKPJLQX3ufSLXHo40yDEaq3y2jbjVzKmWL15JDOBaysaQl20wm/Uw?= =?us-ascii?Q?5Sqg5EfHzPzgjXQc4XEQkbzm/btMN2cpCnLVa61WGGqDab/T47Ql+TO/RsUJ?= =?us-ascii?Q?iivTEvDtW80FxHEYYG8xIaSjnRl62F3PUtx7hvB9x2Hu6UekTyRm0SuJ9H6k?= =?us-ascii?Q?EXVxNFPfvEmURYYtEM/V9K1H0FbpTSu84g7xoJWwN9KKNzKuIL2bU5Gt3URL?= =?us-ascii?Q?uPoQjK84m2Jln/A0hw/yArUw59/v0UbmtuR/PK36GJCshJK7CIF1juPgsPpo?= =?us-ascii?Q?6G41f1pnSwe0nlIch7Tqqag8ZjwuVIlVEsLJjw+rmHW7SiNZ8SI0wpUqmjro?= =?us-ascii?Q?O7CiEdGeFVfWJ+wvwZ9lOlUUUN3Im73LrYbDJ4/DXuDGsPrNWprmWeWA43+/?= =?us-ascii?Q?5eFBU2wmJugNk88EfqCV9alGgAJ7wXcy9dmsispsiW889yQcKV6ntL7AcBwR?= =?us-ascii?Q?5ctzW/AR7B0Tx8751k08bzQ/M7Ved14Ykj/k+JlLhUWLWGFt0Jb5a75XBAwG?= =?us-ascii?Q?VIUpGhGqhPrd/nczktSY5Pae5JhYbvQ4NxSAG1N/8yxGxY+hGt9ht+F/FvfZ?= =?us-ascii?Q?hVeOXTNKYwvaHCYiOsF1G65/7Dw90meGmrkd42mP/CGYW99crMMVi4CKHS1w?= =?us-ascii?Q?uvjliO6MAh5UESqEKs+RxPQw7Y/loq8axYTkWn+LU3rNuwMXHvmoDyOc52S4?= =?us-ascii?Q?3Juohfl196n6W8QkC28GIKsGSN70sNhs22INeqmcAf5cNigTYS8GHxwBcj+L?= =?us-ascii?Q?AxvrFVBw0HGy6Rvkb6RZZUYKq1m4JflSX+y9CCI8zz27y7j+L78ROnPZNe2U?= =?us-ascii?Q?9LdpMqIvkK9zSBidtEKF92eIb2yL8z4ujNlyK84s9coO1D6uQiKUSag68mbQ?= =?us-ascii?Q?DJnrhS80+8tHt3JM9+dL4p5FaUpzNbhaluNm8/WwgKUihWLGrUr6mN8PZAw9?= =?us-ascii?Q?2wNV3T1DZz5/AZj+MuS0b6Rd/o5MvRSGWwo/phXEjfhsHiNWQSsmLrXenx6x?= =?us-ascii?Q?vaOnoItI99iVym7QIOK8s/pu9YMA3goM1S2iAfenOTfg6WM8QeLh5FpElFPH?= =?us-ascii?Q?H1KFRg+Ox5/ljiHCdu4v6JQBStBUtDtiEMMf27wynIkLGldDyZUYUpiOoRWf?= =?us-ascii?Q?8fWaVfm4yRIXVMxoNEI2n3cNXVS1cd0wh8nxJ8iBHqt7thjQFr5ACdpZ59Yq?= =?us-ascii?Q?sDcr2F90rrSbxLnqcoqAFs0oWsVoYydsdX8DJNJfMX6zz2+lZkGREUoF7h6i?= =?us-ascii?Q?nk+ONwZlw2BKGT6vnnDzCARp2zmpW8yq85I9A/OWJj1M3jJmlRCaqdU4DTRq?= =?us-ascii?Q?t8c2hhVFtTyl9MkBeXCVUbomvMrbrlUhG9n8imJLT6Pqci4jo5Ngpbcfh+MB?= =?us-ascii?Q?rC7Ku5DBsF7mkbwUQbVnRQtxasJYzNudDlxUtruP9UFHl/Er0aAXeHMgDvm7?= =?us-ascii?Q?oujErQzgOjM6cxou0nn2KcMb1b5NEiRU9Dzlll68oH0YaZJTkHIrmoW42maV?= =?us-ascii?Q?Nl4as3s4LuX3FDGoV8cdRZHe04xo4qv1+60VFcYs4i2Alq4maRP+yxpKgBuC?= =?us-ascii?Q?rT11sKydS6SOtOb98h796Px2dVEhDiAWh1RQfa0rLntVX7V+ykj2V4f6jBoj?= =?us-ascii?Q?eNye1i1RJwSDih4AZWY0ANhs65Kv4vpsR35IRShxQNG2hDln8TErNsFdflXY?= =?us-ascii?Q?P0k9IgJ+aT6Ld01bz9Un15DKqHDY7NhPt09oPNjLDrF0l4Q4toWRFEwhUubm?= =?us-ascii?Q?RLUvnB718MP8K6I2vVzPpOeyIE4A081Pu41D2V43d0+hpY2J07Gy?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 74e12b00-c874-4e17-2b09-08de6dfb6811 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Feb 2026 08:06:08.3925 (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: dU63ebQSHM8CUigvo8U/MTvJSdL0Q42o6uGYWR8cFPG7UTWacsmGxJ+pcQ+4X8tOlU5SLxnH9+wLLt0fgdJ3Mw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7132 Content-Type: text/plain; charset="utf-8" Some endpoint controllers expose platform-owned, fixed register windows within a BAR that EPF drivers must not reprogram (e.g. a BAR marked BAR_RESERVED). Even in that case, EPF drivers may need to reference a well-defined subset of that BAR, e.g. to reuse an integrated DMA controller MMIO window as a doorbell target. Introduce struct pci_epc_bar_rsvd_region and extend struct pci_epc_bar_desc so EPC drivers can advertise such fixed subregions in a controller-agnostic way. No functional change for existing users. Signed-off-by: Koichiro Den --- include/linux/pci-epc.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/include/linux/pci-epc.h b/include/linux/pci-epc.h index c021c7af175f..7a87f5962dd0 100644 --- a/include/linux/pci-epc.h +++ b/include/linux/pci-epc.h @@ -200,6 +200,30 @@ enum pci_epc_bar_type { BAR_RESERVED, }; =20 +/** + * enum pci_epc_bar_rsvd_region_type - type of a fixed subregion behind a = BAR + * @PCI_EPC_BAR_RSVD_DMA_CTRL_MMIO: Integrated DMA controller MMIO window + * + * BARs marked BAR_RESERVED are owned by the SoC/EPC hardware and must not= be + * reprogrammed by EPF drivers. Some of them still expose fixed subregions= that + * EPFs may want to reference (e.g. embedded doorbell fallback). + */ +enum pci_epc_bar_rsvd_region_type { + PCI_EPC_BAR_RSVD_DMA_CTRL_MMIO =3D 0, +}; + +/** + * struct pci_epc_bar_rsvd_region - fixed subregion behind a BAR + * @type: reserved region type + * @offset: offset within the BAR aperture + * @size: size of the reserved region + */ +struct pci_epc_bar_rsvd_region { + enum pci_epc_bar_rsvd_region_type type; + resource_size_t offset; + resource_size_t size; +}; + /** * struct pci_epc_bar_desc - hardware description for a BAR * @type: the type of the BAR @@ -213,11 +237,15 @@ enum pci_epc_bar_type { * (If BARx is a 64-bit BAR that an EPF driver is not allowed to * touch, then both BARx and BARx+1 must be set to type * BAR_RESERVED.) + * @nr_rsvd_regions: number of fixed subregions described for BAR_RESERVED + * @rsvd_regions: fixed subregions behind BAR_RESERVED */ struct pci_epc_bar_desc { enum pci_epc_bar_type type; u64 fixed_size; bool only_64bit; + u8 nr_rsvd_regions; + const struct pci_epc_bar_rsvd_region *rsvd_regions; }; =20 /** --=20 2.51.0 From nobody Fri Apr 3 03:23:07 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020081.outbound.protection.outlook.com [52.101.229.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 142C42D47EF; Tue, 17 Feb 2026 08:06:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315576; cv=fail; b=sa24I4SOa6vDjndR4syh44LuxCr/xxNnE1GX25WUAUf/PsyLumPvjFt1FQlt82msouOsRD+WErkbM2sqYhV9HTtBCajHVCGiW3sJLOj0K4UrZnzlOeem7Kp2gwc5Hmapftb2ciis5mgNgVjqp4hanifeQr/SEpur6M1mUfjgxF4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315576; c=relaxed/simple; bh=mUTtB8aFb5kR+xTUrZ52lLRiPJEjgs72ScZvmKIVD5o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=o++SNkfG3ZqQQYJuoUUMGDEl8i7J+56O4eMHObSdf2j3/evJ8RNXsRXycPQ2Eb9Ei+ek98ba2YORx5teo6wD2n+I0YMg4+9+Hw7FyBOZ5TYVc5dBTx6xc/C5nrFSV6lH7TS+ZkuStPmLcLxvhBnL9kmirmsHPzfj1XZdSQV8/zI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=GXxLCKUx; arc=fail smtp.client-ip=52.101.229.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="GXxLCKUx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=R9DLPGzzoV5necupURYysGWBEefKFUmdND0T9z86RD4Kec6NN/dV/I9lpQhVcW1o681TB/WNU3dcKQKEtCRn/+zs801fi8UKDH5aH2PVzwlzQsjNG/KdLihessX17z9J2G3CzrHAquFmCE6pdR1aGoSfUGyN6ruiVD25J6FDWRVticSv2W17Lc8Xt+Aobf6wHg0aF+Dm8acpefg1yLUKm3ol4wa808dBBpRRckPnKKbrdD38+SxXaH1kJI0+e+8P7Vfz7bopclTQ9HTylLevl0EtfuhD3XH6qBb4SHeLHhbhSC+HmabKbj4OC3ZOO+SMMAZUrnPwES8OAeUbc/M6Mg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=spInnTauDhyUjwxofCAO5D7/6vcd1NV/KlDf0/6wvIw=; b=TqY1IYZ6Cb7DfLh8On1N9KmBllBtcPgGfspxKewO+EFMmxRjrxB2gnyOMfReDG1VS+P+xxlZecmvVltN4O5gA4KTZfjgEV3AyEQi506IlrA+6b4j8X72nClBB7/ECHGG5THaeya4sj74wfA0ij4/8wyHPniVx7nV4ct4DEwXIYbCL5EZQkyf8TCVJ23mk+B8tdhuAG3yaniXmrvpU/As+Z47UxZ5loXf0Safx1fNaJ4a5E+/qaJYJaLNnQsK82YxkDxGsdCpnWw1s0Rvpf7drD7e+Il6c4l76r5KC6x1+I5fqZg4ouiGYUrO6fW4DN+dcreLSOyARLf9KomKi09/Fw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=spInnTauDhyUjwxofCAO5D7/6vcd1NV/KlDf0/6wvIw=; b=GXxLCKUxE+BxKI/oue2Gbyj5IBq0/KXuie8cf6rroWbhF0guSN4zyka3YXK72GK6jOo37GEehg8eUNC9eMOu37lnRMZ7yxumlAvVaMpkazKIDEY5xOUgYN9jJ0QKBkB1uBgHYbozvHlxTfpd2Dd4Hp76izLhl4nkc3s+WQZDWUc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB7132.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:42f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Tue, 17 Feb 2026 08:06:09 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9611.013; Tue, 17 Feb 2026 08:06:09 +0000 From: Koichiro Den To: jingoohan1@gmail.com, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com, heiko@sntech.de, kishon@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, cassel@kernel.org, shawn.lin@rock-chips.com, Frank.Li@nxp.com Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, ntb@lists.linux.dev Subject: [PATCH v8 2/9] PCI: dw-rockchip: Describe RK3588 BAR4 DMA ctrl window Date: Tue, 17 Feb 2026 17:05:54 +0900 Message-ID: <20260217080601.3808847-3-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260217080601.3808847-1-den@valinux.co.jp> References: <20260217080601.3808847-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYWPR01CA0028.jpnprd01.prod.outlook.com (2603:1096:400:aa::15) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|OS7P286MB7132:EE_ X-MS-Office365-Filtering-Correlation-Id: 2f852bc6-c1d4-4fbb-267b-08de6dfb68a7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|7416014|10070799003|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?uqzwQQGbprpoqxW7bsWnyeeEDndf3mtvy/XUVD92pGS0YU/HFQhXxiSHSl97?= =?us-ascii?Q?JuWB6lNAa3EK+A5kDz5+isApQHM5Vsj2YfdemOxDDGcAJ70rcOcafrguczmu?= =?us-ascii?Q?fVqi8yJSZfqp3o0pRIEBU1YH6VeP58qUCKT9/SMqCo6iFSXz4VYylDxyUs3k?= =?us-ascii?Q?zKOxIXbslxkIbzDIUeb5HgF50kcD9WwNOUJFLDy33tVkeV44Pc3a9/9gA64T?= =?us-ascii?Q?I1GFg0QyRtWaAUEXzTLdeo8z9SofDPmNHS2YYRnJ/lKhtXSjuuAAHQiM1Oeo?= =?us-ascii?Q?Lk9OScQTmZdetpDkmZzce5XvSYhPINrjYs4RK5mWiEENixERk3Mcjug6KN7a?= =?us-ascii?Q?zoJoa2ciB+1+N3y19olOSqpTnWis//RkjtpAMV4mINsvawo3bhAb+yatApR6?= =?us-ascii?Q?/3zpsEjexgEHUmG3JXHK/lxKYImfnYEdtRzSAEpZnTR35ePSbNLSPzooqI/7?= =?us-ascii?Q?e+3KHshIZRu0M1RQ/Skp9lsdJder1eEBC5SMT+vZGJ2+mMD2n1Ovm8XHpaEy?= =?us-ascii?Q?EXKdect7YTIDqnL31aIlAxRzDn3cw0fgfC6k0SGSAbOTRSBmVzxmRJyJsvh+?= =?us-ascii?Q?wR3DfAs7GoT6ecAp1ZWagHbuUGi+qp5FQmrerdE2ewidQE+6h8Cfk3JbJ31c?= =?us-ascii?Q?QsOmVkf8TvIjP/xGzQIOmUr6oyB25c9qkeni7/i2JW2pMklXvKOcYoj9OvCm?= =?us-ascii?Q?2adHREBNu47jKwZ9zrELqdwBmKGdkHEKM3bT0pt7XYY/PudezbBAY4o3G5T5?= =?us-ascii?Q?RFxsBGSiuTT5uvQACjBCvv5UShbtFsh/NfK9F2BcvfafkfdjaleNyjwarvYt?= =?us-ascii?Q?ltrM+AMBLaxIIFwwMFs3f7osbUeL28Q8stJ6mEkdCitC3jFmZ1+0V+uU1QoY?= =?us-ascii?Q?lRcvSoLrARUkfiCGj4vaK+OyEZ3664YEmoKyXSpRR+WDoVSydLJOJ6wtPFuN?= =?us-ascii?Q?yZ9OyQl4htjBTejj1eW9PBeJsn7YSSV6WuTsCKriYmi6Dc6ebeufQZBcJ9pm?= =?us-ascii?Q?dH4quZf5w2os3iVQecaQVgqUJn91HjiaB7on0wNMppnAnEG3ZauO9tEDybA7?= =?us-ascii?Q?CvfRk9XLUOYLvmNzaRjb21ua2WY1AYr3zddWaBFF2fUYCTZbU7Ugg8OmIHqq?= =?us-ascii?Q?L1Zuth664kFsYUXmn0EOlzu6XK2ngM2j+8/7DNFPYdG8qpsSiKqiQ10AHRY1?= =?us-ascii?Q?hTxH7hOHVUCeyRxeol1i6FJAuuSw7eRF7yeEmSe4AZPoe4kZIOPEIZwIrzUS?= =?us-ascii?Q?bczu0nBE6L7QvsOAVFK2awxdavz/gXPNMA09gkYYI3SRpjf7WiCcOAIMVCni?= =?us-ascii?Q?KDQSK4ABZF4SoEmK2UpoahBQDM97LcYw00kTA0PjFNotv1/38QoMOjus0OH3?= =?us-ascii?Q?uEu7Im39xGBlZ0Y7B8bwTawqZfDBmVMTpJS2qKWqv5j3LPkp/yYPE9sG1OcK?= =?us-ascii?Q?p4b27nnxZCtpQvd/PvD8TMYkBM0ZMc+DG2Y4+RwaZfohqoTKO2hpcjqi5vDL?= =?us-ascii?Q?Y3GMAZ1o0sGzhcH0HekJNbY0xFH1KgeYBDv/jvlLvgT5s2HjsIAToIMOaMFZ?= =?us-ascii?Q?BqtSQCmc4u7HJs6xaJlFEmJKSz5qxdsHEcWAZBQZxqauBBbC9dK9zHyaQPIP?= =?us-ascii?Q?fQ=3D=3D?= X-Forefront-Antispam-Report: CIP: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)(366016)(376014)(1800799024)(7416014)(10070799003)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?XdJJkRcjLqj4+hsMdHGbXxAb+XhmJMDLA7lRE4qiM+IQbEiGKqYWhZ92tTn2?= =?us-ascii?Q?60lTMFcbcrpRWmSxuTR/MDyw5MrQ67aqi5NhGxzRvdzYZNiZh3/JC8FqzLWf?= =?us-ascii?Q?cPUwEgSm4JjkWN6DUGhfoMov6JlMuHclCtRvhceI5/Dupqbnob7mg7Roboyo?= =?us-ascii?Q?yi7g1JIf/IGvEDzlBX8i6Uuxx9ih4KXOpXelT7sylQAjahrhZ+fl7X7LoUmd?= =?us-ascii?Q?aRM3OHS9XRPHumoVHAXpuJJuMrHwpzrNTwuPzT1fbAyEgb9uLKmDpfhHJhhT?= =?us-ascii?Q?loZ5vdKXyxsQzEVwsZWcZZsnHz867uX3G+q3EOUMENF9/lMZYai//KLypmfo?= =?us-ascii?Q?lq6Y2oov1SgzumAEt95X60iFKB8vUkSwD/OtZQALKWSaILgWFdbYExKoCKvH?= =?us-ascii?Q?cfema5PLNsLjt187JLYuoWBgQ0Cl3ZKnUA6FjdP+QcowuA/m46V8qnEu6Xvx?= =?us-ascii?Q?3hBihGm+CgxBk5YAgzf2Xxlff6B4bs/9XLgxaSpT2Z4Ibcbj5Q4BYq1Vkfd+?= =?us-ascii?Q?+8AV9SCFFtGwcDoqddnqotXryciJUCANdlpQveqkBYuQh29hTZdH/Ukx91ZQ?= =?us-ascii?Q?C9YCsfd9715eoHhabh8xqpgFjUbaSkyOQwz7C07dHs7lPP4x1RJn11QFEW7K?= =?us-ascii?Q?oG2KkVHbPLwyie3XjpnoYFXb2EvRoMT8suhzK/d8cj4Msfa6uI/cFPHfz/JG?= =?us-ascii?Q?RQDuhCuP4lefXYJR6AYNVInvEFZ/58cI2EPgxjtUipRteNjq6zM4KJzlpAHe?= =?us-ascii?Q?fvgDsX+9VQpqx30NxwQSwepQ+HoPft17E9AWSR3oIwWM6zFUSUk1O/L62DhP?= =?us-ascii?Q?60SfYIMGt1SDYWlU02dG3ug7ZhbAx+3ZPsBb1XRjDOVEUex0R58n/3wI4vll?= =?us-ascii?Q?2KJg45udk+xMnCiXVeOK0JhnH3cv+ZQGC1SGKyDy/hVPkKbz4gifEWyGKTNa?= =?us-ascii?Q?gjhlSeBvxj1IOHjVarbPYhH/WDzRJvmkle7Y53qw4jI1fLesPcVvKKfzB8pe?= =?us-ascii?Q?WDiIRfnm/DHWcz7BoQCAv28PJdNJj96xqW/8++tQ0POIHzH2qdWrs1lAeRxN?= =?us-ascii?Q?0AIucpAJZCllPSaytdAVYFisBZhXlWFiFdHbCuGeBlLadZXppWJwuPw9vz5N?= =?us-ascii?Q?071hNs4g86rUgg7+brEzq82wGAK65Dt3s3EPdi5PqZr2OT0+5rf3KB2A+Rk6?= =?us-ascii?Q?QppBBA9nCsHCw4SysAQqGTSZ5MA9al4bAauVX/43WnwtnDZkanJj4FwneDwZ?= =?us-ascii?Q?kjj534e3b15XlTeSvg08YT5Am+JzJBG0ZB+Pt2K27BaFGhRLgDMviZXjkcrr?= =?us-ascii?Q?orVaM4u6Ppybdh03W2Td8hAn6xEU2CkMQFxrXlx37unclEluI9aNXRqUE8TM?= =?us-ascii?Q?nvWhoUEuIiKc2iO5qi+c8X60Vr/uWm1BPqnuBSlbHAqb97p8Rhoe+T1nBSdg?= =?us-ascii?Q?1b1aXGLRPkSdIvAeR4RQ0YKtr9oI93w1xs4xJJi353JZF4AyTm4mCC1iJs3a?= =?us-ascii?Q?4QNexBPP2bSFBrtfFk4sIlcFaqFl09VlEFLzKKjdum0Fcqoe6lwJSyTSa0zJ?= =?us-ascii?Q?8JDKZcnIzgOHM5czvfdkLKQWr2SEur+lVifT0RcwNpszLNkpc6+rqp53FZRC?= =?us-ascii?Q?LLJvOs1zbEeu9Fj7ajuS3Xlpnv6Mr770r3LzspimkoPhUJxm5l+/zHuIMslT?= =?us-ascii?Q?TaCAmiRc0ZF3eFsETsApmnwjlFuHe2jczw81Ip3nVpm6uhaeWXRlo2iWtt9X?= =?us-ascii?Q?15+fw3Ezp0jVGNhOA6hZNnRVPApusAn+u8ZMPpGM7aPgVHci53jF?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 2f852bc6-c1d4-4fbb-267b-08de6dfb68a7 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Feb 2026 08:06:09.4038 (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: DfBOo6YAXULZwvr9H8ybiatH572pqctDwJCFthVVLkpGP4FMLQM+BHAB7Wg9y8AJbrTI3dph1UTthNJEAIol4A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7132 Content-Type: text/plain; charset="utf-8" On RK3588 PCIe3_4L in EP mode, the integrated DMA controller registers are permanently mapped to BAR4 and must not be repurposed by EPF drivers. When the remote peer needs to access these registers, it must use the fixed BAR4 window instead of creating another inbound mapping in a different BAR. Mixing the fixed window with an additional mapping can lead to incorrect behavior. Advertise the DMA controller MMIO window as a reserved BAR subregion so EPF drivers can reuse it safely. Signed-off-by: Koichiro Den --- drivers/pci/controller/dwc/pcie-dw-rockchip.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pcie-dw-rockchip.c b/drivers/pci/co= ntroller/dwc/pcie-dw-rockchip.c index 5b17da63151d..ecc28093c589 100644 --- a/drivers/pci/controller/dwc/pcie-dw-rockchip.c +++ b/drivers/pci/controller/dwc/pcie-dw-rockchip.c @@ -403,6 +403,15 @@ static const struct pci_epc_features rockchip_pcie_epc= _features_rk3568 =3D { .bar[BAR_5] =3D { .type =3D BAR_RESIZABLE, }, }; =20 +static const struct pci_epc_bar_rsvd_region rk3588_bar4_rsvd[] =3D { + { + /* DMA_CAP (BAR4: DMA Port Logic Structure) */ + .type =3D PCI_EPC_BAR_RSVD_DMA_CTRL_MMIO, + .offset =3D 0x0, + .size =3D 0x2000, + }, +}; + /* * BAR4 on rk3588 exposes the ATU Port Logic Structure to the host regardl= ess of * iATU settings for BAR4. This means that BAR4 cannot be used by an EPF d= river, @@ -420,7 +429,11 @@ static const struct pci_epc_features rockchip_pcie_epc= _features_rk3588 =3D { .bar[BAR_1] =3D { .type =3D BAR_RESIZABLE, }, .bar[BAR_2] =3D { .type =3D BAR_RESIZABLE, }, .bar[BAR_3] =3D { .type =3D BAR_RESIZABLE, }, - .bar[BAR_4] =3D { .type =3D BAR_RESERVED, }, + .bar[BAR_4] =3D { + .type =3D BAR_RESERVED, + .nr_rsvd_regions =3D ARRAY_SIZE(rk3588_bar4_rsvd), + .rsvd_regions =3D rk3588_bar4_rsvd, + }, .bar[BAR_5] =3D { .type =3D BAR_RESIZABLE, }, }; =20 --=20 2.51.0 From nobody Fri Apr 3 03:23:07 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021114.outbound.protection.outlook.com [40.107.74.114]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8CC832E1F0E; Tue, 17 Feb 2026 08:06:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.114 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315579; cv=fail; b=dvZtnCzDZBUDjhzx8hWB0aU8orVPGm1OAqHxjlWGjy2XYfbaJIip6ZzrYTq36SL80wkLwTbH2U5N+aQjI8Cec7pHtl+PcW/VAQC6Lz0H1COauvU+2fN2G7LtND0SweTtZ1gTRbDCvqan8OPZyLz49GuWHXZESIJEsqQzRhxaBpg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315579; c=relaxed/simple; bh=PxTbLjMewAMWGY784JXwab4skk0wddfnEqT1sdzUfo8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=pS2P69C51FIzWNIkldhznGG51evS4/2bZSI/JI6x+GEN/bVItaJn1wRQvLr5zLFGEYXg4xYdIXsuCyvov2grJMNr/U6NQiOr+bojvOi+nSecvFFcVPPIyVUxEmNruxGnca4h7Cpst9MtdxYCT0uoMZmyFtDXoHACQmbkz+L2op4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=R31/9uAw; arc=fail smtp.client-ip=40.107.74.114 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="R31/9uAw" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MM9ynv+qsfO2K7rlYtUwb2yi058wRgsG8L9oonJEyHj7P4GA0doQfQ62s90triijhuklB2Uclv7ppYGKCEwLnHSZBwfDcsih/W6R0n8JCFoWNZAeIlxvC8hcEcPddX4r656Mgs/G15/E4thEWRA/cCxj4pZlKD+uhLtYgXiHNbuM+EY8r63lIoI3lGdEGjZQc76ix2X9VRJfO+x1R/cslcvfMnuN/Uh2jX/Eqh2SP7jAsbh+LWEogetvjcQ2nRhRw0WFLZjUdD8MtGYfs0/+1tCF69RDLWNTuw0Xaj+4b3MBdxWXdtGWUdK65siZm0tnEva4deabiEaP4ubOz1qQpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=UnpEJbNlT3wgIICCe6Hn7gKgsJuija/JZQQy7qzTEaA=; b=hpqpXLcQpfMb4EVKuEqFn25ois5C5UmBNNX8t+HxbWIpP0+/XynHaCTQ1U4GnHVPp/83Go7BjoYF6AxtN2CRYWfe8Qhcto2iBSEH8tgfJueJiG6+06Y/g+x50nQ4rT8mtIAyIXQQbbI/zuY6A46zVD+snT4Di+H4PJHB2yIM1QZG8RQITFNqtHWsw2DvlP0NnnJ5iIoV/CdJlOHGblD585+177mxPqjdhsAvh55xmS/EOOzbu11c19gKDqT0jTcQy89rd6LmMS2OGBv7FLH4+iLZ1rs4mu7IM3BZlUqoPGAbZtwNfCzKpUDf2grfGXYw2Iqivd0Cuu1zj8Hu7LgmpA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UnpEJbNlT3wgIICCe6Hn7gKgsJuija/JZQQy7qzTEaA=; b=R31/9uAw2Vt4yEL7K/Ftoffs2VTmOBfWkjRqHyZW/PZdmZ/cWzvNsnu3rmzMXc6rwJsA27dbcYo1vFd+70mGVPdUwYOI+bcdOj8dl0FF+OXoYpTwb1W162WoYRr0ljZB0q/EqKckyb4LYqWNw9HOlbd0cEBSJTrLZjShfLmU3Z4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB7132.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:42f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Tue, 17 Feb 2026 08:06:10 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9611.013; Tue, 17 Feb 2026 08:06:10 +0000 From: Koichiro Den To: jingoohan1@gmail.com, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com, heiko@sntech.de, kishon@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, cassel@kernel.org, shawn.lin@rock-chips.com, Frank.Li@nxp.com Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, ntb@lists.linux.dev Subject: [PATCH v8 3/9] PCI: endpoint: Add auxiliary resource query API Date: Tue, 17 Feb 2026 17:05:55 +0900 Message-ID: <20260217080601.3808847-4-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260217080601.3808847-1-den@valinux.co.jp> References: <20260217080601.3808847-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0005.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:26f::9) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|OS7P286MB7132:EE_ X-MS-Office365-Filtering-Correlation-Id: c2a5481d-ee94-4002-42a6-08de6dfb691f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|7416014|10070799003|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?rsGkcYQBMdZ1akNzeEV/uJ1Nj5FAxnC17AbLCuwwKC3vlQhxM/3Lq1GY5G4u?= =?us-ascii?Q?pGa0bEIl2+/5xJHZx69cN29vkG8Q0t7hDQav8ZcEaL76F0vgEj23P+6FjGJj?= =?us-ascii?Q?LJLm21DkHjSWpXvtHQ6j27htyJ8KYa5SyE9oHmzPL8SDERYkjRNfyR7J6w1I?= =?us-ascii?Q?ypGURMERe0xXKt7ufvTPQzchFJHiNk0B0KGpzQmNEX7N4ZcLropRgh24BgMl?= =?us-ascii?Q?Ep9eT9KSV5UGT9VTt0izIG5uDVmpyHXiCNg7KbYWNb61ipu5s23GDbA2wZvY?= =?us-ascii?Q?WfvP/foIqO7updF8VtB+odylY7yg4tCPDH85KDTH90HLQij0TUu3DmpZbrpQ?= =?us-ascii?Q?+S4azm0iSUv5Is3GgjdK1kU4dXZYc8GDNOwiwzP3H9ljGdXX/cZQH94lDkF/?= =?us-ascii?Q?zF8mu+Ga818Kna3D42dsuU8vGUen5lGd+4wtc9gqYbL+YJfAWWBfBG8coTXH?= =?us-ascii?Q?SKcbLO2ajZtjkVUymHyCr8lq1YDxqdmVytMCLp+LEZyLg5Vb+NOhDbRkdn4c?= =?us-ascii?Q?dhwttbTUxymioHiM1/bEPSzuVySFvdcY8L+0WKjKkHUq2VJA+tbVfD2RABkY?= =?us-ascii?Q?BR1HKzjQNeG1hMSeMCWWYDU8HLriNbsjv3uSjbZSaHHGT5pSE7Sv4uvokyL+?= =?us-ascii?Q?BYY4W4VPOV5Zj1TXn8j2XUd2mkYqihPJPsQ5d7CI87YzZWNmhBDR/Fhwkd0J?= =?us-ascii?Q?7Y/js6YR096KAS7Ex96hVgCsQ43jIVQYKltvGvWtfBRXJqq1zOJfW3jsJx3R?= =?us-ascii?Q?6lrb4ryWL1k+0muPR4f/yON9nWaHIIWkhsgXkom8vK7kxOPdxjZpYO0A3s9C?= =?us-ascii?Q?6GLtnYSAOwCz6l6YagrTopN619D/W4OwJnZo0QaKnG11o2orJBdKqDUHi73k?= =?us-ascii?Q?Ewne+o5zI+7C54sIo1K9UDx43i5p3j33R3AOWByPXIiLFqOD12uzC+S8VF+M?= =?us-ascii?Q?OlRh1Y0kt1jrzvdhjkHv+npWrQxuuba58aXwymnL6IxjdAjjqU5ADmpCY4S0?= =?us-ascii?Q?I9HA8vcj9w2BqqvyTiDdeUFWodhmMJNvHTkcUxf9nhMRwau0WIyaU8JwvqOl?= =?us-ascii?Q?87wvIQhHZxazwZui137G3IJTyA/gWNX4wpntm1J2pnvb7mMetDpbv2IQ25hV?= =?us-ascii?Q?bgMn2ouYl8HIX25OBsi5JeO2RzaRB+EytasHHmp0xqHC7mXbj9QSE7TdHoT9?= =?us-ascii?Q?5RP+cO4VQhJDp30EV6e6En7pwPLq8tOuAFbi7ZHJU3qTxnlACR4LOtcKb3/W?= =?us-ascii?Q?HEWeZGPRZ/Tqhm0o45fr1SpDjGgpVhH1IZwKv4YzI7ZVdqGEXKTf1bktnkY2?= =?us-ascii?Q?UQrGspwrzCYQFrPwiitBJimLUBnN2OmWU42KPm7I4GNZ22S+nGyFTkkK65fA?= =?us-ascii?Q?1AMQLw5KdFzTGFkBvN/4ePuRXmH0Xi0YgzImtDBp+yPjLiu8FtG9llt01Soe?= =?us-ascii?Q?cRbRE0F4wUgYUS92AtzQ7vf7T/QxXuziOUEFRNHLlVPWvFLzcnP/QkKqNL8j?= =?us-ascii?Q?G5FLEQ43l8WiAr298HzRKhKRsLoL1HDiQN2vTbEPIa20MSrnc+OQEqp9LPI2?= =?us-ascii?Q?DeZsVGH1dcyYnsAqt2vKm1P3+rU7WfqYUc/d9mZN7Yro2EevkDpwDexXayF3?= =?us-ascii?Q?sg=3D=3D?= X-Forefront-Antispam-Report: CIP: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)(366016)(376014)(1800799024)(7416014)(10070799003)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?DYs3ECes0HhtdyAEVe3D3ZKfw0bqezEotV7oXiPvRlxPbB09VKlKy6RXTR2H?= =?us-ascii?Q?6VHYu9CzptMCNSeF3tg+rIUwsuuGiw6bNAl+yXDIccxn+4zx3XL2DV3JnNwH?= =?us-ascii?Q?Z8E9EN/P29+l8I0Y3f74uVfLKgIbLQlNwoZMI/ln24JZeZiHirdz5fe7pq+h?= =?us-ascii?Q?cFE/Xi05353rzqgN78VwjTq3Z2bZW6Ge7Cl30eKHyTt1FuMg4GQienS0sxa4?= =?us-ascii?Q?ybYrw/iu796vrL+8EngMp1FFMJKf9ahmVO+lOkY6NJo3cOH2vXGfajhucxXt?= =?us-ascii?Q?XwveNVjH8vEPIqMnl5Hk8IGD1E3Amoa9QHd7hEvHCDUD7Zg4+uVwXVlKyh9k?= =?us-ascii?Q?BW3MnOIo01wudb8QzjaLpGqdsRD8i4sZaIn+Hff4Kyo0v0K5f3ym0LQFebMM?= =?us-ascii?Q?H+qtFKHOkOCoSSRQvKw+FWmntmowocBfTCIAIgCfbGDTAkDKuE2w5AwB5iKX?= =?us-ascii?Q?2hIDpwPvxp1cTLaZwG17zYKyC0OcpStwgkwzG0/6BpBEXNFChnW9jVU6bF3i?= =?us-ascii?Q?UsxYLc1sDw1CO8CeaRDneuK/nKuczSF96NPnT1yeC7y/UZbCZx/zQnX3+kF7?= =?us-ascii?Q?SjaE1Wg0f6tFcKqPJuU4ysoc0hsupzEqxGklZLUtaEcJtera0Zm17iUvxd6V?= =?us-ascii?Q?aqng8LlVhNHNLu9PJ83O4HIGV56cVDnzyTJP9hfHftHAP+/ZQR9Xlyp+Od+0?= =?us-ascii?Q?AK0vOIx5heUr6Nt7pdxSL4FwVAsH8xi39CwU/+Equ3CayF+CuhzL7BpCh6sL?= =?us-ascii?Q?MYK/sYBcjSuf65gJL7s1XoQRYl7FGFmbsyd2BYMM/Uzcy7R8kTHhUXb/yMmg?= =?us-ascii?Q?1WGQ/L/fJUvrklfDhgQMEbiXunWUOjBJopr2BUlMLni73EHqAAciUrU2zkEm?= =?us-ascii?Q?lugfsXN9UJvI6/gM+Pv8HiZM5x95LAerJk5TGAJPsvT0XoZ8eRS0ETii9EUO?= =?us-ascii?Q?KY+e2ZfByFCorqaW60cx9BzaujZOWQU5+vWURNDA4bxnIlXyBYjisisMHOnv?= =?us-ascii?Q?xGOJFHATxwCc0Z3ZYnbmxEdSX7R0Cozm143knl+Jer+2R+Hm3FVX9vz3FShj?= =?us-ascii?Q?W1+USg8v/PCiXjRX14x6XCfqyY6S62Y5nwn1HMRbNwl34ZO3svmjFejQoK7x?= =?us-ascii?Q?4H5GCgHp4UUkMFsOnxDz+OLYxLx0ckL8lVjrWWixiAiqbn5DAX9/8Un8bz5A?= =?us-ascii?Q?VBAKaGflQE+JRZthOg7Fz42UUntHm0YPDfdp36rMdK/EPKCrJTsMHvKT7lEP?= =?us-ascii?Q?rpP356lDu30gyGHRtVnfMZO+F9t1NkGtUG7iV3feqpTyaeu85UJliBmf7mnp?= =?us-ascii?Q?wakatEKB1RyyrKGlQE1mvwdZcmiXikDnH2eKEdJo4A+HUSjSPGW2zGhGnCup?= =?us-ascii?Q?lLxKUTwlA97xo3c7TYab+GKQAenwZFSEHRfgpAJrlXS40hfCU+APo9HcOZQ0?= =?us-ascii?Q?YDrUutUpc+gs0M7KPX0/P4dE4A5wDqZRDFhp2pjUDNDkm1I5COhl8Lm80pFk?= =?us-ascii?Q?hSuo7MDBhcC++73OfJ7lTHcVijyly5A7ETRtbzSGjI0D3XgNJXVMbFiz4eRT?= =?us-ascii?Q?gRw5BjW5CCi9YxjzGTC6H5PcKng5FmruL85vbHX61a3bWwJ11ip0EWwVtWaE?= =?us-ascii?Q?duiGooN2Jylitit0EdOqth8qrOS/qJf/rVAlYmcMx97X108tIumLh665+Qot?= =?us-ascii?Q?Msn+TWTx3/jlHWBLahJD08ogftIgu9bRQQe4oZevCWodVMY3hqqRQHEWsyRj?= =?us-ascii?Q?5G05NKmkPxxp81e/RCFyK4pa/n3m5e2fc2s0rxxRUc2gFPttOmrU?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: c2a5481d-ee94-4002-42a6-08de6dfb691f X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Feb 2026 08:06:10.1824 (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: OCXUeUG7Bss5WV23R9wSaik6LveiTsMEculIUpDvWSqhrglsQm0T1UCLS1WGrrcDn5pY02HrfwQd5xlqP4Pnmg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7132 Content-Type: text/plain; charset="utf-8" Endpoint controller drivers may integrate auxiliary blocks (e.g. DMA engines) whose register windows and descriptor memories metadata need to be exposed to a remote peer. Endpoint function drivers need a generic way to discover such resources without hard-coding controller-specific helpers. Add pci_epc_get_aux_resources() and the corresponding pci_epc_ops get_aux_resources() callback. The API returns a list of resources described by type, physical address and size, plus type-specific metadata. Passing resources =3D=3D NULL (or num_resources =3D=3D 0) returns the requi= red number of entries. Signed-off-by: Koichiro Den Reviewed-by: Frank Li --- Changes since v7: - Add a 'data' field in pci_epc_aux_resource.u.db_mmio. - Add comments describing the type-specific metadata fields. drivers/pci/endpoint/pci-epc-core.c | 41 +++++++++++++++++++++++ include/linux/pci-epc.h | 52 +++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) diff --git a/drivers/pci/endpoint/pci-epc-core.c b/drivers/pci/endpoint/pci= -epc-core.c index 068155819c57..01de4bd5047a 100644 --- a/drivers/pci/endpoint/pci-epc-core.c +++ b/drivers/pci/endpoint/pci-epc-core.c @@ -155,6 +155,47 @@ const struct pci_epc_features *pci_epc_get_features(st= ruct pci_epc *epc, } EXPORT_SYMBOL_GPL(pci_epc_get_features); =20 +/** + * pci_epc_get_aux_resources() - query EPC-provided auxiliary resources + * @epc: EPC device + * @func_no: function number + * @vfunc_no: virtual function number + * @resources: output array (may be NULL to query required count) + * @num_resources: size of @resources array in entries (0 when querying co= unt) + * + * Some EPC backends integrate auxiliary blocks (e.g. DMA engines) whose c= ontrol + * registers and/or descriptor memories can be exposed to the host by mapp= ing + * them into BAR space. This helper queries the backend for such resources. + * + * Return: + * * >=3D 0: number of resources returned (or required, if @resources is= NULL) + * * -EOPNOTSUPP: backend does not support auxiliary resource queries + * * other -errno on failure + */ +int pci_epc_get_aux_resources(struct pci_epc *epc, u8 func_no, u8 vfunc_no, + struct pci_epc_aux_resource *resources, + int num_resources) +{ + int ret; + + if (!epc || !epc->ops) + return -EINVAL; + + if (func_no >=3D epc->max_functions) + return -EINVAL; + + if (!epc->ops->get_aux_resources) + return -EOPNOTSUPP; + + mutex_lock(&epc->lock); + ret =3D epc->ops->get_aux_resources(epc, func_no, vfunc_no, resources, + num_resources); + mutex_unlock(&epc->lock); + + return ret; +} +EXPORT_SYMBOL_GPL(pci_epc_get_aux_resources); + /** * pci_epc_stop() - stop the PCI link * @epc: the link of the EPC device that has to be stopped diff --git a/include/linux/pci-epc.h b/include/linux/pci-epc.h index 7a87f5962dd0..c68aaaf3542a 100644 --- a/include/linux/pci-epc.h +++ b/include/linux/pci-epc.h @@ -61,6 +61,51 @@ struct pci_epc_map { void __iomem *virt_addr; }; =20 +/** + * enum pci_epc_aux_resource_type - auxiliary resource type identifiers + * @PCI_EPC_AUX_DMA_CTRL_MMIO: Integrated DMA controller register window (= MMIO) + * @PCI_EPC_AUX_DMA_CHAN_DESC: Per-channel DMA descriptor + * @PCI_EPC_AUX_DOORBELL_MMIO: Doorbell MMIO, that might be outside the DMA + * controller register window + * + * EPC backends may expose auxiliary blocks (e.g. DMA engines) by mapping = their + * register windows and descriptor memories into BAR space. This enum + * identifies the type of each exposable resource. + */ +enum pci_epc_aux_resource_type { + PCI_EPC_AUX_DMA_CTRL_MMIO, + PCI_EPC_AUX_DMA_CHAN_DESC, + PCI_EPC_AUX_DOORBELL_MMIO, +}; + +/** + * struct pci_epc_aux_resource - a physical auxiliary resource that may be + * exposed for peer use + * @type: resource type, see enum pci_epc_aux_resource_type + * @phys_addr: physical base address of the resource + * @size: size of the resource in bytes + * @bar: BAR number where this resource is already exposed to the RC + * (NO_BAR if not) + * @bar_offset: offset within @bar where the resource starts (valid iff + * @bar !=3D NO_BAR) + * @u: type-specific metadata + */ +struct pci_epc_aux_resource { + enum pci_epc_aux_resource_type type; + phys_addr_t phys_addr; + resource_size_t size; + enum pci_barno bar; + resource_size_t bar_offset; + + union { + /* PCI_EPC_AUX_DOORBELL_MMIO */ + struct { + int irq; /* IRQ number for the doorbell handler */ + u32 data; /* write value to ring the doorbell */ + } db_mmio; + } u; +}; + /** * struct pci_epc_ops - set of function pointers for performing EPC operat= ions * @write_header: ops to populate configuration space header @@ -84,6 +129,7 @@ struct pci_epc_map { * @start: ops to start the PCI link * @stop: ops to stop the PCI link * @get_features: ops to get the features supported by the EPC + * @get_aux_resources: ops to retrieve controller-owned auxiliary resources * @owner: the module owner containing the ops */ struct pci_epc_ops { @@ -115,6 +161,9 @@ struct pci_epc_ops { void (*stop)(struct pci_epc *epc); const struct pci_epc_features* (*get_features)(struct pci_epc *epc, u8 func_no, u8 vfunc_no); + int (*get_aux_resources)(struct pci_epc *epc, u8 func_no, u8 vfunc_no, + struct pci_epc_aux_resource *resources, + int num_resources); struct module *owner; }; =20 @@ -337,6 +386,9 @@ int pci_epc_start(struct pci_epc *epc); void pci_epc_stop(struct pci_epc *epc); const struct pci_epc_features *pci_epc_get_features(struct pci_epc *epc, u8 func_no, u8 vfunc_no); +int pci_epc_get_aux_resources(struct pci_epc *epc, u8 func_no, u8 vfunc_no, + struct pci_epc_aux_resource *resources, + int num_resources); enum pci_barno pci_epc_get_first_free_bar(const struct pci_epc_features *epc_features); enum pci_barno pci_epc_get_next_free_bar(const struct pci_epc_features --=20 2.51.0 From nobody Fri Apr 3 03:23:07 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020081.outbound.protection.outlook.com [52.101.229.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6FF052DFA46; Tue, 17 Feb 2026 08:06:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315577; cv=fail; b=GUxGTzDI1biIUTThZoedBxvFruWUf0TCnoQk9HyQmEsP04fnDzZuRe2C/q4KjHnk2Tkuq1iT0uDKyRZqPpjPJS8No6IhgKya8tB4d9sfU8IneAZKoZGnQMnqwxbK4Dq9YQI9OMf7IHpeJBQ69f/+NyEiK/a/JkZ/FC9N5l/eaPc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315577; c=relaxed/simple; bh=yYPpkjnhy0ZFLQ37LXaMIFbOH9NQvFdbcGMcU5dJDEg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=EbAJVv3HBXGY+53SGwVza0Wxd4TpcYi8bXs26YGYCWf5B7q1bmxGakc4l8awZP6CiIXllOhce187XfHqw29Sy7acixVOjsERpSsGep/qJs/Tfn5M466xXIzYoBwDxROgAa4PjMPsbZd+rhs7lFyAJA4y40oJRdDccdy2vbOyHaA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=MVPiGLvS; arc=fail smtp.client-ip=52.101.229.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="MVPiGLvS" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QL9Lz1375IIP+wkNYYVb3i6tPli5zTFlMGKAt0kd+WokrVdNygiGiuX+OqtPd/yKD9uUpybjr/EOLCiA4Zso/sHgvfYvSum4KRUWp7n/yM/6sWCpcXy7RwkGcqBsfl8skM6DrJsb0vrBnpZJZdGhqTMumLhEpQ/JQsGonfz1nPbI4q3pCDNtjCxL1LsZfo5FO5G9LPySEVgT5mPfQdDgakjTR79GYGvWB8fI3SiSMkqwsUOPABGC4UWpvlw++GyP25fYVcUcZIbjoTE8QgNZPMwkyEhUYck6ib/8PlRUfTWAmd7CZEkxAIU7gUnLdraSGtt7GkddEaabUSrQWsqPfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=IpMBWHmKo9m4Bn5DsWqxUnKAG8hRFfAVV32vx7GzjJU=; b=KpQujll2RhgOKuAhJaKPMVEZJgAztoBjT6rECcw5SO1KzbjaiG98BNQSgdu3WvlkuphAUbIY2dKgDHmd0KvuMs+Fv3Xru9gEfNrXBw7J1MbWVZDh0sQAfCEk9Kq7EymIgy2/Mr8/2KNPf9BOPhwPw251hCfex5Zh18IhpTOdEMPLVQKwedNzoVhR5aUM6pQzZ7ZQHylh/c/NJU/fIJoAIo+6ZJ1H9ojvXXcRj/LWDUPTPbHjlnXS4c/qRgXrfX9YI20RhQaQOu/DXdO+MY5ydZSp3HjHgN1w6UMaAfkWn7Rrs+sQNXNHUEOYwMycDCFpasMam4oZodCRz7E87y7Iww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IpMBWHmKo9m4Bn5DsWqxUnKAG8hRFfAVV32vx7GzjJU=; b=MVPiGLvSutXxpQYmijscGMwLAHbgqTDOuJfqQct7Ymk09jAKoun3wsl7TF8fLKnV/IIbT3UVxSAlB6Vtqp3GsEmjpCw9PbKCog75Xmnkuf3A982OaFe9kCJ/b/0q61tYTtAIyzhSLyDBig27AKumFlBtoPZpcs/QiLpjqrg0o5Q= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB7132.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:42f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Tue, 17 Feb 2026 08:06:11 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9611.013; Tue, 17 Feb 2026 08:06:11 +0000 From: Koichiro Den To: jingoohan1@gmail.com, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com, heiko@sntech.de, kishon@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, cassel@kernel.org, shawn.lin@rock-chips.com, Frank.Li@nxp.com Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, ntb@lists.linux.dev Subject: [PATCH v8 4/9] PCI: dwc: Record integrated eDMA register window Date: Tue, 17 Feb 2026 17:05:56 +0900 Message-ID: <20260217080601.3808847-5-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260217080601.3808847-1-den@valinux.co.jp> References: <20260217080601.3808847-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0006.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:26f::10) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|OS7P286MB7132:EE_ X-MS-Office365-Filtering-Correlation-Id: 89a3fd3b-c1d5-4f71-54c8-08de6dfb699c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|7416014|10070799003|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?DE+ftTIR17rrqE2+BeJGrTDt5hyNI9yoiT2LD6X+1FJIH20pga2uyBgMiuMm?= =?us-ascii?Q?eMiIkvxvMqIkGiCjHo7c1xg5vwyhC46F6a8CrQhZpU6h7VWrCZ28SEPU5AmL?= =?us-ascii?Q?gcIECpdkGDiCTxVJIWbODsOwRxFqQd/W4xoL3EPJz+fxgI3BgdtJY4LUhFq8?= =?us-ascii?Q?FDJ2Qx7VG7T+xtCEQrkCwgokfaUHu+ri+VRhQTannLkyK/UAFF+MCw0G1ei2?= =?us-ascii?Q?J4K4aLvHBFC8nbi0+hNh3j0hGQF1NkO/I/MTgk86NNc+nNZ+bPimkv1oV0uR?= =?us-ascii?Q?aJx+XKwFZtHHDuv9jFwXuvCs+1rhxJuDMfIdeJzLEGQ9u2OiVLBcAQucdGJS?= =?us-ascii?Q?UdtftDbm3GDNW/DfUeW9g4FGGPiXXAjMYl5nY2OWW6ToXl5TwJeSTSOJhX14?= =?us-ascii?Q?QxOyuL8Z4cPjNphnIIqD+SN31GjOslHanK8uKGEkOqWPueTIi1smWelf6CmD?= =?us-ascii?Q?rqmR0rtDOw2nWZbL1WrEaqU//NLS3uyVUoXwqvB46pDFM84wyUdOIpVuq6nV?= =?us-ascii?Q?qSK7u7QUvU0IKF8ezIxFZxBHhZNHGQb45KYESHyggVk/0Xx0zS0PgCG46ios?= =?us-ascii?Q?25JhH1w92DB+kwqBAPVef/kwhm8GkyCOVWAfs1+hg45sYPr0IWkO5Mg3xNXE?= =?us-ascii?Q?e+KQnrYn1/0+vpGjxAJX1GPCPmscGxqAdFSX+sFZaEpSjtO7v31y1NKVdi8b?= =?us-ascii?Q?5muWcR84FPmFflZkglDaH7+9wmnAQFRHMqRg8u/nIVCamHGUvc/5FlCtJ+D4?= =?us-ascii?Q?ajx6XbryBQRNrlCNYpRfISaLymJW+6ODmPRXjlSEH6f9WP9uXXzqWYoJ7EUq?= =?us-ascii?Q?M5twMhRaukTJIpD2mKEiQXurkpkuDqp5BIScABElq9HzLdjZIRQOyxmmPjYM?= =?us-ascii?Q?GTzmhdnJwUekb1UgAe5bTCrjOqzlvUPkuDI0i4KGdB21Q96fqS5VXt28TMW/?= =?us-ascii?Q?Tp/Qzs9fwozu9U3qxIMce+2p8V89sCdj9IikBNMJHHpCfvbY1C/bBHbwZYAB?= =?us-ascii?Q?zDjqjkWubdGZ0WqQqJktiam1mDnZcFGtr7GekPIBqR4QieYvC0NvMekk3el/?= =?us-ascii?Q?Zi+iqUuZwBGowr+CLT2ejq8h/U7OxOEQGyhnHExu0/7xAjsUYbiuLCuvwTXy?= =?us-ascii?Q?eNOrbuOertH7a57JLFlNs0sWEyyvWppJE3TScpjQqF60bMpQ+BJMw2qUnZ8E?= =?us-ascii?Q?4Dn9NAcbvBF2SodUH836t+4cGc7rUntpm4rnIjlotcJy9Sc7OSV8PidZmEPz?= =?us-ascii?Q?Ig3blfNhF82LHSI6XO4kXC3wds/fljXAe2FiVreQ82gLitrNhaR6q1QxHDva?= =?us-ascii?Q?64xL57UhzEyQ7J8b/rjuCMCUDGeDHTi6rpz6ruWuscAYWPMdaM3q+MID3eYh?= =?us-ascii?Q?+jET3JU0K7VZN9pWqHwlHxYRHHwgor2bzRvfRuhSuF3n2bweZMFFge0Kbkwj?= =?us-ascii?Q?4/jgR+o9Wk6K7vnNH76xIkog9mjNIsE8zRQ9y0UowCM65oae1gTbU2hqxV4S?= =?us-ascii?Q?dwzvinCdfy0/JHcQlHTmzKq59bX+WqCpHXpbxWI7WiUGbOj4lE7vwlEeZ35k?= =?us-ascii?Q?phRHvIytkoYPs5XKy8vA83Zkitj54XeUt2TcqLH8zFh+mTi1B9BQaG9eGWsD?= =?us-ascii?Q?Qg=3D=3D?= X-Forefront-Antispam-Report: CIP: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)(366016)(376014)(1800799024)(7416014)(10070799003)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?/cLQ4CwiRou0w6kqldxtUe03Zy1eNmmhnV5Qg0MqOCcg9Ar4f34P0yNvTIGW?= =?us-ascii?Q?K21igHU7QnKetlv8mEOC7A0EgKaScPxMMqZr7iutaKq6JSYHCXnMKEmp0dsH?= =?us-ascii?Q?2Jp3CRsKmCiUnrgr5VWnNZ8MGFvwWnFDMzJMQwLfNTOudAm8C9iIf6+7OqBC?= =?us-ascii?Q?6UdT2mgR85BUebpTQV69moVOWHzlurzPOPvhD1xU8iY6IXDx+zNr+UPqrU6j?= =?us-ascii?Q?gEP+Rpl8HCv4SIu5frsO68w731teOfIHaxrlc05FpDUyC1ZUiBf4krHz3wCJ?= =?us-ascii?Q?GF+h7YqKcTjZgRAmdaTXQ9T0/X2CHMmKQItGESYwuqZ/F1JuxOryVNZ58M2w?= =?us-ascii?Q?tgGigPwpmy439Tnh/Rg7KCnH2cwsUNN3HatHTH9DgMkI5uhVu8YUBE3j4oju?= =?us-ascii?Q?3PmK6pDkRnnHnasbi9ng0hbxTXO78SEGc7ItoouATBi3+GbuLD36O03qNgy+?= =?us-ascii?Q?o3iUm3w0V0RsBjSOEi5Uoh0LDE1MtWsNK0qQ15qkTpl787/C2bwAM5ZnCBnN?= =?us-ascii?Q?4QgvcHZVKmJhXw0ffLnJCaM4gkESI+5sWuzAnQQnGo/AcSRGW3N3pXZ+SpnD?= =?us-ascii?Q?zR0PW7jvoNJZ81yvUyLWwSTvJG/KF/TRX/CkDsyWVAB74gI7rJcVq86wHNZN?= =?us-ascii?Q?iRQE+WkKiqK1eliR+Bo6bh4areifFP2Li0+31JSCeH/yUkxLcpt5cs2uhsLD?= =?us-ascii?Q?5dgCqDD+7tEE8GeS6hnzKrUrC4GF4qzH/7zvk9dpsbDhxguPcKPeQiFUaE7X?= =?us-ascii?Q?zOlnVtL76nWURh4nd15cF/pbyOim4gVAM38FsVf3zoPQL5aCgBBO8iguERaK?= =?us-ascii?Q?zRP3JXUT2X8W2lzSctwue/yV1PLDtpUFKi/vt0UcLbdVERVcA+6fCOb1HRLv?= =?us-ascii?Q?RZ5pqasa2RBMBB6zg8vwTzA1ORZqDg80BP1WTup6ZnENKXDNbWbEXAa0Ffc6?= =?us-ascii?Q?BjekqNXUXRP8FWO1vSoxmXKtsKfN0q04IH/mu8BFQ3hCsNri5w22urw3I0g9?= =?us-ascii?Q?zIxMxd/GNFJh9n3jV6/jOHQPm4KkSttJ/BF4cgHdVXpUZ1WsGatMOlmkrifu?= =?us-ascii?Q?iZEZPqRexiD9ixF0RyKN+NxpA0v4VvtJ1vL/HdNxZy8R1vjdqA2inJfsEGg5?= =?us-ascii?Q?IGDL/BGLWHfy1aorGjaiEVQOz6KDPJ0UYCYeMMp1hr3IzcdZWcVrW6RJN/Sl?= =?us-ascii?Q?x+VuAVkIlkUATpiI/tZAJpZkkCz1bhkfympKZJfuk1t0/QdaF4kWxlG2z6nQ?= =?us-ascii?Q?sHKTfv7Oz42JIcrKbOvDoXk6FASCiWQioQhpynUuyeZLgctE4iFR4h1GP1cw?= =?us-ascii?Q?bKklJuTe8IMxDouEXqO3SiqsOy26tBFEtua5P8HN5YuwKFwwaYQASmxFk7B8?= =?us-ascii?Q?DPeRVFzQpIF+hZZHYzYcERpuLqQTgowX102wclFqsg31VfUMoGwTyCumhGHj?= =?us-ascii?Q?pIEskNDXtl0KtxZzv45lzMDH+ub9dg1vtqWas4U7gEXWBlWMxbPfUuWWi2BE?= =?us-ascii?Q?fY2+sa2+UDIKLC4Nyu0xdVeHbhDjZRSo/Wc3wvROOAFADvdbYtKKLNAdToDo?= =?us-ascii?Q?cquLE9wjQg1x9NMeDX+/lG2GQ3fh10+vh3JLhgXralJIHLjTluaFPkzdGpuK?= =?us-ascii?Q?p7KnHQU32hsl4+dnVA2PhvcaAtCGNrZKLuP8TaQl8PrYd8PnEethHC/97/7M?= =?us-ascii?Q?7RIp1d9s3Lo7vAxW3TfRzE0pELFXVKGu5pezFr5Y+Cf35JYMsGF5sxKE6SfC?= =?us-ascii?Q?X9Z2hhO1/QuLvFUkwH+7gD/h+5nR3d9n4W9JSeynja4xOb93ZVln?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 89a3fd3b-c1d5-4f71-54c8-08de6dfb699c X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Feb 2026 08:06:11.0203 (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: Th/DOrTqFvcozrVeuMWRdAjLai94vD82ZSTpZin+VDUBdOFf2JU2LSmODBz+EEz5t5JzlVnjHGdcCIgFn1TZ+Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7132 Content-Type: text/plain; charset="utf-8" Some DesignWare PCIe controllers integrate an eDMA block whose registers are located in a dedicated register window. Endpoint function drivers may need the physical base and size of this window to map/expose it to a peer. Record the physical base and size of the integrated eDMA register window in struct dw_pcie. Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- drivers/pci/controller/dwc/pcie-designware.c | 4 ++++ drivers/pci/controller/dwc/pcie-designware.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/con= troller/dwc/pcie-designware.c index 5741c09dde7f..f82ed189f6ae 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -162,8 +162,12 @@ int dw_pcie_get_resources(struct dw_pcie *pci) pci->edma.reg_base =3D devm_ioremap_resource(pci->dev, res); if (IS_ERR(pci->edma.reg_base)) return PTR_ERR(pci->edma.reg_base); + pci->edma_reg_phys =3D res->start; + pci->edma_reg_size =3D resource_size(res); } else if (pci->atu_size >=3D 2 * DEFAULT_DBI_DMA_OFFSET) { pci->edma.reg_base =3D pci->atu_base + DEFAULT_DBI_DMA_OFFSET; + pci->edma_reg_phys =3D pci->atu_phys_addr + DEFAULT_DBI_DMA_OFFSET; + pci->edma_reg_size =3D pci->atu_size - DEFAULT_DBI_DMA_OFFSET; } } =20 diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/con= troller/dwc/pcie-designware.h index ae6389dd9caa..52f26663e8b1 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -541,6 +541,8 @@ struct dw_pcie { int max_link_speed; u8 n_fts[2]; struct dw_edma_chip edma; + phys_addr_t edma_reg_phys; + resource_size_t edma_reg_size; bool l1ss_support; /* L1 PM Substates support */ struct clk_bulk_data app_clks[DW_PCIE_NUM_APP_CLKS]; struct clk_bulk_data core_clks[DW_PCIE_NUM_CORE_CLKS]; --=20 2.51.0 From nobody Fri Apr 3 03:23:07 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020081.outbound.protection.outlook.com [52.101.229.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 047AB2DCF67; Tue, 17 Feb 2026 08:06:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315579; cv=fail; b=OJiVKARCKeyWDrV0pqMN7ODv/gccQLt8BGSPnCyLts1QFRFp9TtI9e6eMx9cpwFpbF8mbaFEJHLeWkOnf9rGAnxLI0s0wAw1msv7RYf5Pwg5FrbYVvoI+ank1o2YV78a6x4WyHhmiFX+ZutFKnIpI354cdx1zy6utKf90XeNExc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315579; c=relaxed/simple; bh=ow9Rvr7Xa3d8sCp5pYSBL2pgt0eQ7sbODVSx/i7UriE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Wj9Uxi0PbV8zSsEJNvvZ9hHXI99cwhCrhtjAu3LA6ScXq9AwEHIj/8UEksD8t3h6Z7xWwifpakMEg/o45UBKEAvpd/OlxwiiNT2xvKHhYMrdBiZZUWSdOrjoFNDDvvvUuA1QCdr2KjvOpPyviWdSrp9mAlb3svFTKxUQc5Uwzk4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=t6DOuzWw; arc=fail smtp.client-ip=52.101.229.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="t6DOuzWw" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=syyBoT2++IoWwAFVFoo6mkX8+CTS44RCuM6n6TiJDyvf5UftutTZ76rF6PJPBg3J0Pdlxoq0ENmmlND9+D1zh1hRayFbbnCBBKFnO/CqdIRGF5Yr6880Z59KSioABa8dkO9s29GH2QhcZUw+bMsuBVRCC5dSpYplCDKAe04jaQYtRyA4KF0r/34T53MXxkApqhDXIubNHPpVdw2JgxRF2pcH2gHz8gLjgFvtdikJ9ptwXG+dz//IUhqx0GjQ0pjQbbLZf/0wwqkquWqYh24II7vxsakzUs144ANrifeDEDHG8HH38QLQywdU6Sf/Pz3FjLZx1c8JRjvWsFOooYnJIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=3y/7aay/Q1opMjEwmwzIo6Z4aSJnX3go3WXe7OfGjmE=; b=DxFEERiA9DwhZVn2c1EzP1RZwUORbKuCseEQhewWMfE1fpjnSMT1zyqB/9SOcqhl6+KZAPnnXqBTtm+mgYIiYzrhxi67tJAjpxkep/5TxUSnHfIyZ617jYF/bmj/3Z+vOkdHail/L2T8LmPCSWpYhPG/N4aOvB2VWsipYDIAPn1EQDo8z397tdFS1Z/2+4V6mMHR4aFP5/nzzYAVcwfqLpbwRqgB4/SBIpM1MoWMU9bqB0HqvKATUSX74c7vHy3iqxlz79mx4y0mEdL2vVeVl7p0QwmcXQ+Re6AJYJFOKnYCdJk5qqTcSGlap2SpW4WgTHddcYWrglIXwRSfGpV1Lw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3y/7aay/Q1opMjEwmwzIo6Z4aSJnX3go3WXe7OfGjmE=; b=t6DOuzWwih0qfdmS0vIdkIPW0UvNwxnur8iMomR5YusO/ZudFFFh1/39PvD4mAr4YRKHL2m/RC/iVQAoj2azme8yb4MAcAn4yF+xm5pHuiXvPPUiTwduMa2KX1e6IbpVx3iP/ia9OG8RTCFwtBxZXTcI0NmU5crT9qcs95cKhgo= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB7132.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:42f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Tue, 17 Feb 2026 08:06:11 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9611.013; Tue, 17 Feb 2026 08:06:11 +0000 From: Koichiro Den To: jingoohan1@gmail.com, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com, heiko@sntech.de, kishon@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, cassel@kernel.org, shawn.lin@rock-chips.com, Frank.Li@nxp.com Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, ntb@lists.linux.dev Subject: [PATCH v8 5/9] PCI: dwc: ep: Expose integrated eDMA resources via EPC aux-resource API Date: Tue, 17 Feb 2026 17:05:57 +0900 Message-ID: <20260217080601.3808847-6-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260217080601.3808847-1-den@valinux.co.jp> References: <20260217080601.3808847-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0116.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:37e::19) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|OS7P286MB7132:EE_ X-MS-Office365-Filtering-Correlation-Id: 62545fad-ccb8-4051-1fb5-08de6dfb6a1d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|7416014|10070799003|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?RhN3ImB8LUxfhwAxI2NFlgVl+SThf73RhVcL0/lQKYFLlxY/UCfQ4s88ld9Z?= =?us-ascii?Q?Y0ZMnNyJDpQX05nZQfSTZ3DlFvn5akhRTphh5upZVUhwGSCcp4z5jWECqN+l?= =?us-ascii?Q?XDoVNCGU0JHv1iuBFcN/Oh5RuSbt8IbUiXHIjFN7OTcB/9g+BMKN5+8XyJtH?= =?us-ascii?Q?BKXHTLckg89G062cM1wr7/mZy/MYRnRdevPXJKOfKNCvdMHPB/uglQzCNnTM?= =?us-ascii?Q?qUhIvZheaIiQZjwsIX6XSjp54T43FnJIfF6nOvUrk7FHvJGHzvthJOMoao0H?= =?us-ascii?Q?t9B/1vH4Drcp0uqPL33SOK+go1S81XYzHRE5nWQXLPayp6J49x5HsOQ6bY2U?= =?us-ascii?Q?ScwGe9HG2KPWdkZs3n6AXxlQBtafKbrlHpYGZ1SZjdqMjykuM1yI6epMv2Kw?= =?us-ascii?Q?1oXARzMQ/fexIaE3M7LKV44+T1t1ckdKJgsj0lplW7t0kHa7XLdZ8X4dfezn?= =?us-ascii?Q?hSFvQc8a92xTBvvCmZMsGH+g65LhsAdjklRSj3JN+sPD7/PYbDJFo6czg0s8?= =?us-ascii?Q?32UV7P/LkU1rzMa/L9rNTcBKZjxeZ41KiAWWF3hAVep7WHtjB1kbQqqaYSX3?= =?us-ascii?Q?Sd8T1lYBZxuFUuAlU3jy+UOfg8L3Arb2nI38oMpwONikMU9HrpOAW6nnMCHv?= =?us-ascii?Q?5PjAYeSGz+CcBCp6gb+WKGqtjRSoRPIyIfVseT06TAYuEAVrJ7WiRM4K8yNf?= =?us-ascii?Q?ta+1SJumon1PVZSdrYIlEW9xyx13ye1vztdkZaIEKfqrslthNXs8wtVGB0tx?= =?us-ascii?Q?14bvKskN3WwV6BwgyuKPcl8LACNILL8qaLkLGGTJ1Bql445xiZ1dZcKDeZCN?= =?us-ascii?Q?NK9TTseLKGNiFasUzhbcdNkr2UNO1J0722yf8LalcKZkeBMj8S++OysUPEd+?= =?us-ascii?Q?iHsRVIYsXtWVQ6N39L+oh5A9UPr/l4U3qnhvW9Y12Fnu8FfEgCIsWG2459AR?= =?us-ascii?Q?daUFM+G+kQ7zljB9mweLr7ojost5TdUAcFcbFZeqmCYKCAZ7gI68c51YdL6C?= =?us-ascii?Q?+2nr1s76VZURjWtNdAsl5HSo1XOpEIkmXBfF1wV1P3SAhuS/sGwog5iHQ/sn?= =?us-ascii?Q?Q1S/LNKclIHAqNVqx83GiUkvED+BP4w+XSXE8cZRKtFUpvZa2prvAaNsAMq7?= =?us-ascii?Q?lyjsFgIXcSVN83e5XUpddEkeKHI4Ar77TKbnvvlwI1U1X+B7O6qP2vXWSRdX?= =?us-ascii?Q?m5C7H/vqR1sy57oImM+U0+cCGVsUezi/8TQU8BkB/pPfWcJOgfDIdmbeZ/fN?= =?us-ascii?Q?HvzWUPbuMb/7pOmt4yVpKMahzwxWGIreGtz+S5pf7vWH8qT6gGEoq3fdsGyp?= =?us-ascii?Q?sF95iLWt8c9gWJCF7TCZSlhdHWpAJY6Ob2ODKAzMvydaYriVQDunfq+AaEtw?= =?us-ascii?Q?I2+DG0kfLcIAzTO4RNwwYopmqsX+h7+ax8rWn61OkBlfa1rtPKzCpU4C84DL?= =?us-ascii?Q?QgQSKRDTBK2QHB0a/x9HgqWI/37Z7MaHpUCxf0ZWa87i5Rbp99ed4vZZqX4k?= =?us-ascii?Q?Yz4oEbOdalgZNxe/5YSJvxf8stclmihCxjXmu09Yx5yljcyOMuxwgocZ7qtf?= =?us-ascii?Q?4ewbzZPNoR+xwUOQEbyI5Iq7I2PHDPE9+sv6audX2iudKFVN46X8BZU6HbCs?= =?us-ascii?Q?hQ=3D=3D?= X-Forefront-Antispam-Report: CIP: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)(366016)(376014)(1800799024)(7416014)(10070799003)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Ee0W7bNaOmfz9UZX135XPPge+4HKhHwAnWjb/8TMOUZFwrThd2K0LyXRtzbr?= =?us-ascii?Q?/JGOAMS0jHwzKc6feoV9csArGIuXRaSZljBM5GEq0njf85JCQ88bk2zYi/5R?= =?us-ascii?Q?NxJxGLoU5O9pAu9hS9TMZV1d9wE/S/qHlDlpJ6bBz3zFGXDKQG71ATz7oxBX?= =?us-ascii?Q?m/t0ON7gJCUGVHqLq09HbRekdwD6YanAoIKC6usdViFSRsNerorP7wntr4s0?= =?us-ascii?Q?xDMF6tOwJbRplNfpjaPw0u+N3Ud35aTW+25Af5asINFMiDdvCp/Tqe84epVL?= =?us-ascii?Q?gbN09zW6SzKraxwTXyhpV8ymGz62aHYHGJU/JPQBiv7KnU/HEvZAtbITmnke?= =?us-ascii?Q?bd43P9qmKznePD6g7bd9vNeUAk9f8m33EnZp1ZJyz6pzPRrpKaJMWUDx71Qb?= =?us-ascii?Q?4o751mJ1qvr4qfcU0LKOSP7V8ICQeg0qVDRlImj0Vfk7Uo3eRSqN2ca2Z+mt?= =?us-ascii?Q?BPZEgWJ//tTPV3LL/ClOuz/1kJks/n15XUirZ3KFT1y3G8I93Orq2Nd7d+Zd?= =?us-ascii?Q?7A49FueDn3ByFCbshEltJANe61Pr66UuwtVGYKLXV1sXHiufjtl3e1RYb5Zc?= =?us-ascii?Q?kYR3J6e61D7LE9ePcBTnHVflnwNXamSOTsHQFz2dusJ36qm95OgdfK98XUqd?= =?us-ascii?Q?wqGbOuoaAooZvT0cAwe6tzgTISkzJUv3QQFkS3Ssg4yeVCdtAf+dBYb0yH6o?= =?us-ascii?Q?qwsZgkj/QOCtRDGxrOHogJDyIX1KR5WRcROblOXyga9/B8Rnvg7jZFEJC7aM?= =?us-ascii?Q?SU1VzvGUQyUGvqM4oZ55LBH7eMxO7+1FNiHQoYI0nrrYeegIweNYIdE7eUft?= =?us-ascii?Q?wh3JFf8Bqhx6nC3IJhQAkHOaeyLLDkLWvqIDBldSLqLmdd7XeIzkPnEuQRhd?= =?us-ascii?Q?hWMc1xTdEWpL0IJ9UxJ+Vt4DUYfr4qjjxB9Awqwm5xAqwGWFrDLeEyRzU1zV?= =?us-ascii?Q?N+yFBRPzfnZGupTBeD5DjL2JJekwbNc/abDYmsmk+x0oXCc5GmeMY1Bz7MWZ?= =?us-ascii?Q?GP2C/FnvB2+9ZHJYrW7n+MGGSR6MCK/hEwoRfbab5pstT/wlEdg7T8ROA22n?= =?us-ascii?Q?52Qx/pz2yhCsPtUBrVI0nYXPF8fPeksuSVeXu110noK/4VmWyUuiTYFggqFv?= =?us-ascii?Q?7HoG1ziBRy8GXpfDZMErTgZXXhnwHYwxIMixYa+M0y2Ww2cBje4SwzvykHPT?= =?us-ascii?Q?lL9AQlPa4Z2QyspGizVIRxnPDBhqZCZjB+L+qZ3v/+eXPmm0zdRHwwRLJS1W?= =?us-ascii?Q?cI9tYKIFmngMMXkUdr+U3Nsf6N1c2u7ybps2IouzvEm2S9FvbK4jkWNORNVe?= =?us-ascii?Q?xcwcXftXOcoPfcXGN56rM861YqEV19Pdhp6OgnOPmm4lZjiBWDX3ufQpmEt+?= =?us-ascii?Q?L8gvI0t3vut+BQ/4PJdR6nP6iXW25JdqRyO53uAFDgLAT1Joi9SBHck/VIh7?= =?us-ascii?Q?CIRW0yjPJxwwhEgQCivEXOCzPtm5QPsezQ9mjnencUchcWW55Oiq8e14miVT?= =?us-ascii?Q?72KCEDzUwisZphN6bEiFGDykP5EYoUnN7Pur/+30nAghapAU80RRa8AZPRAB?= =?us-ascii?Q?QULwPDVK37d0SWWLb2TvtFi2wsftIlyXuTKaXZaMMGjXpgHcYgNrz1+pL1du?= =?us-ascii?Q?UxnZI2pYtGYF7t9myrS0dWhVX6gpSNqMwxr/t8NCxzN3vsO6THKi3tRcNxQH?= =?us-ascii?Q?EgnTupXUB2nQxNFAP4+/aRj+TNdMNgndqslHCZ+Syy/Zi4Kwx8A2/q6h3hir?= =?us-ascii?Q?NDLcslx8iWSMqx5XNCqcxMPZoQqXoOr6lXqpJgdqF9J+ZsEzC977?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 62545fad-ccb8-4051-1fb5-08de6dfb6a1d X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Feb 2026 08:06:11.8394 (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: ghjgU8an8G6AJGBv2fHL8qWY0q1Ng/WWEFMDheY1F6mQgT8MHcp6fosmfXxyuyuhYMiSls31+XvpGmNH/Ws9Wg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7132 Content-Type: text/plain; charset="utf-8" Implement the EPC aux-resource API for DesignWare endpoint controllers with integrated eDMA. Report: - DMA controller MMIO window (PCI_EPC_AUX_DMA_CTRL_MMIO) - interrupt-emulation doorbell register (PCI_EPC_AUX_DOORBELL_MMIO), including its Linux IRQ and the data value to write to trigger the interrupt - per-channel LL descriptor regions (PCI_EPC_AUX_DMA_CHAN_DESC) If the DMA controller MMIO window is already exposed via a platform-owned fixed BAR subregion, also provide the BAR number and offset so EPF drivers can reuse it without reprogramming the BAR. Signed-off-by: Koichiro Den --- Changes since v7: - Use range_end_overflows_t() instead of an open-coded overflow check. - Make it explicit that the write data is 0 for dw-edma. .../pci/controller/dwc/pcie-designware-ep.c | 151 ++++++++++++++++++ 1 file changed, 151 insertions(+) diff --git a/drivers/pci/controller/dwc/pcie-designware-ep.c b/drivers/pci/= controller/dwc/pcie-designware-ep.c index 7e7844ff0f7e..22b6777d520f 100644 --- a/drivers/pci/controller/dwc/pcie-designware-ep.c +++ b/drivers/pci/controller/dwc/pcie-designware-ep.c @@ -9,6 +9,7 @@ #include #include #include +#include #include =20 #include "pcie-designware.h" @@ -808,6 +809,155 @@ dw_pcie_ep_get_features(struct pci_epc *epc, u8 func_= no, u8 vfunc_no) return ep->ops->get_features(ep); } =20 +static const struct pci_epc_bar_rsvd_region * +dw_pcie_ep_find_bar_rsvd_region(struct dw_pcie_ep *ep, + enum pci_epc_bar_rsvd_region_type type, + enum pci_barno *bar, + resource_size_t *bar_offset) +{ + const struct pci_epc_features *features; + const struct pci_epc_bar_desc *bar_desc; + const struct pci_epc_bar_rsvd_region *r; + int i, j; + + if (!ep->ops->get_features) + return NULL; + + features =3D ep->ops->get_features(ep); + if (!features) + return NULL; + + for (i =3D BAR_0; i <=3D BAR_5; i++) { + bar_desc =3D &features->bar[i]; + + if (!bar_desc->nr_rsvd_regions || !bar_desc->rsvd_regions) + continue; + + for (j =3D 0; j < bar_desc->nr_rsvd_regions; j++) { + r =3D &bar_desc->rsvd_regions[j]; + + if (r->type !=3D type) + continue; + + if (bar) + *bar =3D i; + if (bar_offset) + *bar_offset =3D r->offset; + return r; + } + } + + return NULL; +} + +static int +dw_pcie_ep_get_aux_resources(struct pci_epc *epc, u8 func_no, u8 vfunc_no, + struct pci_epc_aux_resource *resources, + int num_resources) +{ + struct dw_pcie_ep *ep =3D epc_get_drvdata(epc); + struct dw_pcie *pci =3D to_dw_pcie_from_ep(ep); + const struct pci_epc_bar_rsvd_region *rsvd; + struct dw_edma_chip *edma =3D &pci->edma; + enum pci_barno dma_ctrl_bar =3D NO_BAR; + int ll_cnt =3D 0, needed, idx =3D 0; + resource_size_t db_offset =3D edma->db_offset; + resource_size_t dma_ctrl_bar_offset =3D 0; + resource_size_t dma_reg_size; + unsigned int i; + + if (!pci->edma_reg_size) + return 0; + + dma_reg_size =3D pci->edma_reg_size; + + for (i =3D 0; i < edma->ll_wr_cnt; i++) + if (edma->ll_region_wr[i].sz) + ll_cnt++; + + for (i =3D 0; i < edma->ll_rd_cnt; i++) + if (edma->ll_region_rd[i].sz) + ll_cnt++; + + needed =3D 1 + ll_cnt + (db_offset !=3D ~0 ? 1 : 0); + + /* Count query mode */ + if (!resources || !num_resources) + return needed; + + if (num_resources < needed) + return -ENOSPC; + + rsvd =3D dw_pcie_ep_find_bar_rsvd_region(ep, + PCI_EPC_BAR_RSVD_DMA_CTRL_MMIO, + &dma_ctrl_bar, + &dma_ctrl_bar_offset); + if (rsvd && rsvd->size < dma_reg_size) + dma_reg_size =3D rsvd->size; + + /* DMA register block */ + resources[idx++] =3D (struct pci_epc_aux_resource) { + .type =3D PCI_EPC_AUX_DMA_CTRL_MMIO, + .phys_addr =3D pci->edma_reg_phys, + .size =3D dma_reg_size, + .bar =3D dma_ctrl_bar, + .bar_offset =3D dma_ctrl_bar_offset, + }; + + /* + * For interrupt-emulation doorbells, report a standalone resource + * instead of bundling it into the DMA controller MMIO resource. + */ + if (db_offset !=3D ~0) { + if (range_end_overflows_t(resource_size_t, db_offset, + sizeof(u32), dma_reg_size)) + return -EINVAL; + + resources[idx++] =3D (struct pci_epc_aux_resource) { + .type =3D PCI_EPC_AUX_DOORBELL_MMIO, + .phys_addr =3D pci->edma_reg_phys + db_offset, + .size =3D sizeof(u32), + .bar =3D dma_ctrl_bar, + .bar_offset =3D dma_ctrl_bar !=3D NO_BAR ? + dma_ctrl_bar_offset + db_offset : 0, + .u.db_mmio =3D { + .irq =3D edma->db_irq, + .data =3D 0, /* write 0 to assert */ + }, + }; + } + + /* One LL region per write channel */ + for (i =3D 0; i < edma->ll_wr_cnt; i++) { + if (!edma->ll_region_wr[i].sz) + continue; + + resources[idx++] =3D (struct pci_epc_aux_resource) { + .type =3D PCI_EPC_AUX_DMA_CHAN_DESC, + .phys_addr =3D edma->ll_region_wr[i].paddr, + .size =3D edma->ll_region_wr[i].sz, + .bar =3D NO_BAR, + .bar_offset =3D 0, + }; + } + + /* One LL region per read channel */ + for (i =3D 0; i < edma->ll_rd_cnt; i++) { + if (!edma->ll_region_rd[i].sz) + continue; + + resources[idx++] =3D (struct pci_epc_aux_resource) { + .type =3D PCI_EPC_AUX_DMA_CHAN_DESC, + .phys_addr =3D edma->ll_region_rd[i].paddr, + .size =3D edma->ll_region_rd[i].sz, + .bar =3D NO_BAR, + .bar_offset =3D 0, + }; + } + + return idx; +} + static const struct pci_epc_ops epc_ops =3D { .write_header =3D dw_pcie_ep_write_header, .set_bar =3D dw_pcie_ep_set_bar, @@ -823,6 +973,7 @@ static const struct pci_epc_ops epc_ops =3D { .start =3D dw_pcie_ep_start, .stop =3D dw_pcie_ep_stop, .get_features =3D dw_pcie_ep_get_features, + .get_aux_resources =3D dw_pcie_ep_get_aux_resources, }; =20 /** --=20 2.51.0 From nobody Fri Apr 3 03:23:07 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021114.outbound.protection.outlook.com [40.107.74.114]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 932B52E7BB6; Tue, 17 Feb 2026 08:06:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.114 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315581; cv=fail; b=uUB3JrzgANJt1uClzLkR19ecsYxog2wvcSBGJUysjI7H909gtAsmuFIJggbCuZTnw/9BIPditWi/MHvvuMIzLLrNt+pd9rgFgPxIqrMV9REYgnW56J9H+0m+WdGiHVRpHHlgaZZHVweqEAqxdl2NbRwqIdToC1ZZRzxucTYqyZ0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315581; c=relaxed/simple; bh=0A+Nzvi/THnQlf9+ifmqNuLybQAR767UOD2UXe0VSpo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=r6O7cug6BKewFmBuNq+AzFm7BYLuEe/D+Bg0KMrpeM9NyLiA3PaqLZl8EdQDdZkpkQMx+OAAe/eo5VNhCaaVzp7uOQGYveBUtyYYLQVtwEc3D6VsIahkMsm24NESQ1SB8Zlkdud3w63+HYJcCjdTU5WKj0KjsrKj2c9mXQt+AOM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=FdzoWNVD; arc=fail smtp.client-ip=40.107.74.114 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="FdzoWNVD" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EvUG4CV60TLmIiQ9RQqiLpf2sInJLJKVfZvgttHCnIJoManUYT70h7DiR63QV7qVDz5nfYHloBnturgyQaUxIxIg8pt3JhZSxccsNrr4kBOXKPSZI4tESYlxztJqQA0laJVwFJqf1GRhIt9lq7C/DDTz13CaGrySLU53aot727TGvUmc47gfLPAPwkhb19UMj0XJ77miPnyDepVui6zIryLyBV7roHFeQxZoz6H2OhadFB1ecY85UKKNBH8SiObggAXqknjsK8GVx1UyKGnw9g1gaWguudNtrZzWo/47TVI+ZL/0jW0cbe+d/WsYjLa2AMUw5j5J3QkOWOFF2tvy8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=MA/cpjlOgnLoTWJQ7J5AKBUtCS2N96V6l8xsnKjShwU=; b=shxiGNHDlcwrF5nLIR0hO3IjppwqYx+Gw2O3UBfwbqbuALyVgZnK3XwYf6XuiJFll0jtP5dHQPCHQuAl5uons97TSIbp3Ih73Liy4dITblpX6qWKzfz8/gVSykbxpU5/kt4sofuYWYSiCdhDllvqZOBlRBG6GxkH20h91jjhwPrNEybzRfB7edlrIEE/bCZ2PLzKJUMn9QItZeCbBSjdxG6SwIQFZfavjjl5bEgw0v0sit8L4cwJWY2qYsyDphWf3fWbr1fItkkJ25KWQEK0d8zDrQs+PKJftSgma/I/rK9vCBWNbB4r1p7KfpefJe5mVX8YzJjeyxFnBn41f98SMA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MA/cpjlOgnLoTWJQ7J5AKBUtCS2N96V6l8xsnKjShwU=; b=FdzoWNVDy4TrWe40JBEiT+fIrsTlodphri8yP8pTXQN4GYSA6xRNEVGeuSzPqMge8Ex/ET4uuLemYa6tX/qcXPxTVpumGnk2m2gslF1S+MYrdt90I/kaoePe1yfshhrT29S/L9KvpGytrKkICqxDsWbOxKdN6QngpXTeXVpttnA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB7132.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:42f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Tue, 17 Feb 2026 08:06:12 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9611.013; Tue, 17 Feb 2026 08:06:12 +0000 From: Koichiro Den To: jingoohan1@gmail.com, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com, heiko@sntech.de, kishon@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, cassel@kernel.org, shawn.lin@rock-chips.com, Frank.Li@nxp.com Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, ntb@lists.linux.dev Subject: [PATCH v8 6/9] PCI: endpoint: pci-ep-msi: Refactor doorbell allocation for new backends Date: Tue, 17 Feb 2026 17:05:58 +0900 Message-ID: <20260217080601.3808847-7-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260217080601.3808847-1-den@valinux.co.jp> References: <20260217080601.3808847-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0250.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:456::14) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|OS7P286MB7132:EE_ X-MS-Office365-Filtering-Correlation-Id: 375f6ce8-192d-47cb-b0da-08de6dfb6aa4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|7416014|10070799003|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?TXSEs4Y6jnuOy6Bq3MlbX8/lqdv7VxNvNOOSnhXovudiDhq/M8T3KuqgX0TI?= =?us-ascii?Q?YWMQTVpquijVnWTDk86yiLn4nK+JiZRs1Rnx0aDUeL2wkvX+jOIqfqDnFPnO?= =?us-ascii?Q?ShCP7Yym+E7XCLBkWGYkKPVA6ww9u3OfKMapc0GohZB7ORibJ137wNDmPpiM?= =?us-ascii?Q?Z5Choe02QxPRrEeh9lFw4mjdLpxkcNa/UmGhdTgsZV8d3XbWAMdtfGWsLCxp?= =?us-ascii?Q?wRrPDr5xEMf6P8XERzHoodslrd/nLiG4pxk9ouyyLYh2NmV2P/f8T6pjxbXN?= =?us-ascii?Q?ikZXGhMlt4MbVOvg5pYwPSj1mfw+aDyi4k5ZVPuV7yfy8Wt24BU8U02S6mUG?= =?us-ascii?Q?6zUhyv7ex+FDHEARE/KsgrHY04Q8Jds7wJG3Az4FMVO6oj2xa3iOicrKZo73?= =?us-ascii?Q?JrDwXIhyUurnUl19zwbK0YEzIZLYwwE1aeXz0alrfl9+5l62h0o94ntTQWvk?= =?us-ascii?Q?vLYUk6ZyblKV0ZiKKaPCfc3qDWkvUFvo2O0tbZVixTzP8DypBW6Vez3UU9i3?= =?us-ascii?Q?0h6Q+eigg3GN+WMDnjHkcqvCwl43P7uYm/KURyzphEp01vUxNk6xoOK9r06S?= =?us-ascii?Q?+bk5id2j/9Vw1ywUrcVcSaSuyRmHS1l+l+Z37ivuPURuw38r+KO9SaxEZO0t?= =?us-ascii?Q?Io300m529z6ONKWUoAYz8/tReyXkJKE3vumRh/152a8jUqFxVlpHHjKwDrjj?= =?us-ascii?Q?XWEK3AiWyRmZWoVC9/YQ8TaGdkQYc4bpWj4TyWX3EIxB+bYxo6EuH4pApjtT?= =?us-ascii?Q?QibXT092wQU7TU1unShJbMEU/losUXw6K6SNbVFCS2sguQVNSRVUH8wGY6OU?= =?us-ascii?Q?LWGkIVY2J9hUy9w1VR71tIbEURhimX+S98Y3XxlcSP9KqOfb8H68l27kZkI2?= =?us-ascii?Q?69WYVKx8/S5UKGSGJR3xg8VnECVS+Yb18PeEkEy5pt72CdTKnEr2/1dFUu4Z?= =?us-ascii?Q?qr4GCesA8mjkInWV8CMalT6PVMLKO4K75l2Otms9iQIXDrU3YNLXU+qAxKGA?= =?us-ascii?Q?vvQQ+kpdRqxuxrhmmaU7GrjdcsnyXhkGewK2bqmfeLi+/l4v8VrqQn76N5is?= =?us-ascii?Q?1coZJopsOmJMyhyVFCSfs6NhYCAhBi+V7cpJga3/yZSeG08OtiBknGcybXa2?= =?us-ascii?Q?dcHkJU5FjDzDD6d1cRH8g5Hn0KGJ/HUdRVO1b27LmUP+vGaFnZfUA6IEFm8Q?= =?us-ascii?Q?MkV3KsHk+jjkr+uUUjrQDgTkIO1cYIR1yqDiQKg3gY3b3iWveWk4Z3JtrWSK?= =?us-ascii?Q?2cuqdWDFBK0FsRjXtP1SmxTHiFy6PpGtC8PDzNAVnp2ZIf9a7HMDKw79QFuY?= =?us-ascii?Q?dIQYdtCi6x7LA/KF4R9+AgIbd4e3fjZKEtMRwQ4i+ZctQhLyLec535/F0PUN?= =?us-ascii?Q?eHsp6x997KmkQxiUjvKHaIw4wsYRVviRAYLoisznPVgNq/TE7rRb1hW0mRkD?= =?us-ascii?Q?0JtHYuoZqBkRm3/wlzzX7hDNRprshPylhnphi3y3dN7TWHtPtlkFgQtMl79l?= =?us-ascii?Q?aDLL4f60UXnjfwKrYjO/lmgTgd0UVxPQWqdqRoKNSxhGZPMfGv8zdZCERXBK?= =?us-ascii?Q?ELARCdFKQcD+hcWyukzkCgUUoKKKHk77LseOCXPAj9Fn65Hrc2+6KCaZpDdD?= =?us-ascii?Q?tA=3D=3D?= X-Forefront-Antispam-Report: CIP: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)(366016)(376014)(1800799024)(7416014)(10070799003)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?NkFDMi9+dwP7a8kCGNqzEtNXkkJ/EgSA6GRtMbwC4xBoCmaIbgCUf6EE4DZB?= =?us-ascii?Q?5bQ52WCRW3vgfmZgfu9ftdccp09Tn8KCzOJxsMgSbAuJsxNPl1FQbp5KWDZ7?= =?us-ascii?Q?7dyn7wvEMEDwMFNt1nXjbOcQTf+i+Xp4NIUM/vbgOsFKr/iSJVz9tzCA87Pn?= =?us-ascii?Q?bWJGfMUv185Qqwc7ss83UKd7RDrTIziXJxQAPNSHDaeVcKIj9OCH6EBjssbA?= =?us-ascii?Q?BRM/3DMQdvPaKhOsErpdjMVTM3Mvx+uZp1YDdGcFHk0kwR0DNzr85hWZnZ/7?= =?us-ascii?Q?2Q1f7vUHfPgnjoYoMbtCjfF2/KzpQdhFvVpJCVarpeti9s9iC7HPfoay7GTA?= =?us-ascii?Q?DytNke3icKxcCi9FxMZIqRZVjizot8cFAfZWlIYWw7bwB/UzGJzsc/sBijNV?= =?us-ascii?Q?xGl57HoNUzLi2LzMW7HbVkEloggHjj7EGAptXy7HHTN6lKVDXvHVYIw3lA94?= =?us-ascii?Q?ZkACgtmXQheJkOBbhswqeGZa81FTuq/QQMmkvlgXrTEmNwO6bbCyEwxTQq9b?= =?us-ascii?Q?AdXlt4sfHs7EIxmrzBMmuMQ+aaK6d7aW2t+QEHeXQ2a7zwQPAcr0Sc8GqmR6?= =?us-ascii?Q?NHL58Dg0+WszHhjTaANL4GyZ2y0JSykPY3ATw8oGiU78orn8+DBNmSTc9/7q?= =?us-ascii?Q?bK+t4zJuLtFdWiW9JIEIfy5uKMwG/52I6GZwyhHPKQREQHyfXjxTBZR7rMEl?= =?us-ascii?Q?jPvvzzeIQEIZp0vanzUZt4pEDN9QMSfeOKqjRRQUsSMTGZEPwz1PsjNtiqWv?= =?us-ascii?Q?IvxwtE421JLfiHaPvW18GqOkND+JtmX+1VEkLmSU0xW/B5SZQV1qfL+jk5Hs?= =?us-ascii?Q?wEdgri22mrNoElUi8VmYHvoibIWuXYBIlQvjintXpUnfGd5z1RMVPeaLdoHn?= =?us-ascii?Q?W57Uj1/kYpYEUeKt6CoFtp3YEL/Arntl3dbCl07MQJBEq1Nplzna0uPBdEWO?= =?us-ascii?Q?Gvkw0w9raVpYKdvrM/yUSm+996+daJDTMXD6t6FkX7Js15ehZI9npRcibqhI?= =?us-ascii?Q?+pPNfWAGQjQ9+C2qbSeak1jzVbHyQOKi5cQegjK1vmD1t1kQ6eJaJvMKeq8G?= =?us-ascii?Q?JUgJypHiIpeWYflTWI2XAiBuewCVhJy9q3QzLATy5sPhWVvnXJzvqFAPZYTW?= =?us-ascii?Q?jjLV2aRwyz9LVqWwj6i7d5LO/nGrsu5XWaF8WPhUhQZQ4BpajwKbNQO3X5bV?= =?us-ascii?Q?7qPKjDkw6qxkZSssycRslX6MbnVKJItIW2MLqr0kCDF1jrJodPQcsfCExdeO?= =?us-ascii?Q?eFiLxT5B9qsudxrvnIbvJ/HjCHfobQgL0MeY726AUv9fPRwdnPzOF3vKaZrB?= =?us-ascii?Q?u9e6a0mIQ7iMx73SvD0zCF9+1vfzzvWI0wOOAzkqfKybirO06eUw21fVIV+U?= =?us-ascii?Q?LzZB94t4JlMRa6SxTUQMWlDISUo2Vf/tiTwZdQyg6RrysetD2oz9FMPkPy7R?= =?us-ascii?Q?UAgP3f55fl/mqvogfeNd4ch+RciVI813AcT2HrjACAH9ix03E+quqsxJ0yUB?= =?us-ascii?Q?+uwA1kMVglfsliphCA7TG0Uda/olqUNITIkeWDo8Xxa6RkaYMYxikvrKYRqc?= =?us-ascii?Q?Ho1NJKV2DClVhGr8jp2vaX/Cn9ux1WRIgHQCTYuxKWOVkcVMkUyyCEqTVH8T?= =?us-ascii?Q?DH6N69njX2ZIi8DzA24VLCJrO7bVERiVzmsho0xs5LMBzSkJdwfuSPNYKQ50?= =?us-ascii?Q?idkS2fXViiwO+TEZCVcMXcxlxUh0nB/zugPSdPgvJRbCX/srBjWrxLNuDDQn?= =?us-ascii?Q?HjCxL5mW2H2cYfXkCzn65q8VGA6bH17n4EE8kNlVTLblccXGHdhZ?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 375f6ce8-192d-47cb-b0da-08de6dfb6aa4 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Feb 2026 08:06:12.7144 (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: I3bMdj9rz+qoiUCHJRQ7e9FFRLuGvNRsySZH/NNxT9QwxFiBKcTSkODGWhrJtikywpDyuhwnT3IyjBn19+Fsww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7132 Content-Type: text/plain; charset="utf-8" Prepare pci-ep-msi for non-MSI doorbell backends. Factor MSI doorbell allocation into a helper and extend struct pci_epf_doorbell_msg with: - irq_flags: required IRQ request flags (e.g. IRQF_SHARED for some backends) - type: doorbell backend type - bar/offset: pre-exposed doorbell target location, if any Initialize these fields for the existing MSI-backed doorbell implementation. Also add PCI_EPF_DOORBELL_EMBEDDED type, which is to be implemented in a follow-up patch. No functional changes. Signed-off-by: Koichiro Den --- Changes since v7: - Switch to designated initializer and rely on implicit zero-initialization. drivers/pci/endpoint/pci-ep-msi.c | 54 ++++++++++++++++++++++--------- include/linux/pci-epf.h | 23 +++++++++++-- 2 files changed, 60 insertions(+), 17 deletions(-) diff --git a/drivers/pci/endpoint/pci-ep-msi.c b/drivers/pci/endpoint/pci-e= p-msi.c index ad8a81d6ad77..50badffa9d72 100644 --- a/drivers/pci/endpoint/pci-ep-msi.c +++ b/drivers/pci/endpoint/pci-ep-msi.c @@ -8,6 +8,7 @@ =20 #include #include +#include #include #include #include @@ -35,23 +36,13 @@ static void pci_epf_write_msi_msg(struct msi_desc *desc= , struct msi_msg *msg) pci_epc_put(epc); } =20 -int pci_epf_alloc_doorbell(struct pci_epf *epf, u16 num_db) +static int pci_epf_alloc_doorbell_msi(struct pci_epf *epf, u16 num_db) { - struct pci_epc *epc =3D epf->epc; + struct pci_epf_doorbell_msg *msg; struct device *dev =3D &epf->dev; + struct pci_epc *epc =3D epf->epc; struct irq_domain *domain; - void *msg; - int ret; - int i; - - /* TODO: Multi-EPF support */ - if (list_first_entry_or_null(&epc->pci_epf, struct pci_epf, list) !=3D ep= f) { - dev_err(dev, "MSI doorbell doesn't support multiple EPF\n"); - return -EINVAL; - } - - if (epf->db_msg) - return -EBUSY; + int ret, i; =20 domain =3D of_msi_map_get_device_domain(epc->dev.parent, 0, DOMAIN_BUS_PLATFORM_MSI); @@ -74,6 +65,12 @@ int pci_epf_alloc_doorbell(struct pci_epf *epf, u16 num_= db) if (!msg) return -ENOMEM; =20 + for (i =3D 0; i < num_db; i++) + msg[i] =3D (struct pci_epf_doorbell_msg) { + .type =3D PCI_EPF_DOORBELL_MSI, + .bar =3D NO_BAR, + }; + epf->num_db =3D num_db; epf->db_msg =3D msg; =20 @@ -90,13 +87,40 @@ int pci_epf_alloc_doorbell(struct pci_epf *epf, u16 num= _db) for (i =3D 0; i < num_db; i++) epf->db_msg[i].virq =3D msi_get_virq(epc->dev.parent, i); =20 + return 0; +} + +int pci_epf_alloc_doorbell(struct pci_epf *epf, u16 num_db) +{ + struct pci_epc *epc =3D epf->epc; + struct device *dev =3D &epf->dev; + int ret; + + /* TODO: Multi-EPF support */ + if (list_first_entry_or_null(&epc->pci_epf, struct pci_epf, list) !=3D ep= f) { + dev_err(dev, "Doorbell doesn't support multiple EPF\n"); + return -EINVAL; + } + + if (epf->db_msg) + return -EBUSY; + + ret =3D pci_epf_alloc_doorbell_msi(epf, num_db); + if (!ret) + return 0; + + dev_err(dev, "Failed to allocate doorbell: %d\n", ret); return ret; } EXPORT_SYMBOL_GPL(pci_epf_alloc_doorbell); =20 void pci_epf_free_doorbell(struct pci_epf *epf) { - platform_device_msi_free_irqs_all(epf->epc->dev.parent); + if (!epf->db_msg) + return; + + if (epf->db_msg[0].type =3D=3D PCI_EPF_DOORBELL_MSI) + platform_device_msi_free_irqs_all(epf->epc->dev.parent); =20 kfree(epf->db_msg); epf->db_msg =3D NULL; diff --git a/include/linux/pci-epf.h b/include/linux/pci-epf.h index 7737a7c03260..cd747447a1ea 100644 --- a/include/linux/pci-epf.h +++ b/include/linux/pci-epf.h @@ -152,14 +152,33 @@ struct pci_epf_bar { struct pci_epf_bar_submap *submap; }; =20 +enum pci_epf_doorbell_type { + PCI_EPF_DOORBELL_MSI =3D 0, + PCI_EPF_DOORBELL_EMBEDDED, +}; + /** * struct pci_epf_doorbell_msg - represents doorbell message - * @msg: MSI message - * @virq: IRQ number of this doorbell MSI message + * @msg: Doorbell address/data pair to be mapped into BAR space. + * For MSI-backed doorbells this is the MSI message, while for + * "embedded" doorbells this represents an MMIO write that asserts + * an interrupt on the EP side. + * @virq: IRQ number of this doorbell message + * @irq_flags: Required flags for request_irq()/request_threaded_irq(). + * Callers may OR-in additional flags (e.g. IRQF_ONESHOT). + * @type: Doorbell type. + * @bar: BAR number where the doorbell target is already exposed to the RC + * (NO_BAR if not) + * @offset: offset within @bar for the doorbell target (valid iff + * @bar !=3D NO_BAR) */ struct pci_epf_doorbell_msg { struct msi_msg msg; int virq; + unsigned long irq_flags; + enum pci_epf_doorbell_type type; + enum pci_barno bar; + resource_size_t offset; }; =20 /** --=20 2.51.0 From nobody Fri Apr 3 03:23:07 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020081.outbound.protection.outlook.com [52.101.229.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C72B02E88BB; Tue, 17 Feb 2026 08:06:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315581; cv=fail; b=l5Vs58tP9rmnWTo+kOrtELJ6KAVEvZWNulBcrh5rwxsI3E3VEs/FrWurWHiq0730+JM7VJlP9cv50r8lbi1PGCICyeBcXX+llzeK8z+3p/EZuGmruvhsl6KjFN57Ktdh9J0fQydwl6Simr5Apap6oPb9Nk5FSQza/f+ix50Vulc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315581; c=relaxed/simple; bh=b6mP3l7AVlXAmFdDK07Enu74UGPbS8mgjK2hkcZc2OM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cHPAyYZSr/wC1FwEZ76fRYXM+w5EIAoNqSRLwhFCSKUDDLJZAxuuTpe0LztnlN682n6LgkW9Aa6fOvvlnsW0p8Q91KziAHPdtAYZhKUDM/jLXe1x9HE8aWx/Q4GtfCKMX/CsiKqZl6tq5yHIx5uWAuto/qqnEAYq8wMMPWWtfTU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=mUWC7PrL; arc=fail smtp.client-ip=52.101.229.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="mUWC7PrL" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sUyfsCoaNlQI987xZ0tSERL6riEsvC/+/w4WRLrXNW8hPQd6c+63L6imOT41DaZ/VWzS3U6w6o+SjXeTiNczuzohMSu1hi2LSJmL4E+8o/3vxtwMxaJy1Wfzq486BdOLDDTVmgHejhUU4thddC15PGHYN+tmtvjvMz2zclk3wgYzcIN9xOCxJLiO8Dnqp08DNls+NiyIV3R+EsINBOmKTWO7heph643ArVP/pGYtkGGHuvkzqBpBslIRquPA1WrM0P1iKPW04xfgV24QVzoxvF7BUqO5gdYPteaIIKdMNrjRhcrTnTLcoEbIajVcGgxffp6msFj16hsUdU+jhgze0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=u1BAPTlNatUoHlaOrVSIaSs94OahqbT2+tOPMe3ZTF0=; b=kUYmkf7Eqy5RBC+cUE+bNKkapeqsMD4ytnVABQ/wBR4Xljl33jSbrkwSw/qLkqCACq/6dLPp2Da7hkb5Xj1q8XxtEv3tiIn6qErlpLOoO2alC7hwANufGNr+9Bc6nFx4YR0/Oc5KKuflUwfT3N8FsMoc0QI/uhduK2AE8U/4Gb4vgWTrOi8uyIAe/bnHpmiC5d6f7ii8djeWDXP1aoWc9DnPrvgRbRNmaVDc3JAOtwkbMitX//pLX+unBeiGfG40oBcRV+a1n3NOqJCrFj9+brANlzS1ybFJltvH7eYuqsPqnVSMPMcgbfR2tmDj+nDcVO0sCk9u0Vd1bTXQ0PUfEw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u1BAPTlNatUoHlaOrVSIaSs94OahqbT2+tOPMe3ZTF0=; b=mUWC7PrL/x74pbSSd7UgmTsT2H3kCIhGV0iP8dxLxlvZ9HWNYcqHkOoOI5RZslilxqnoXB8TMoyWDdOsPnj9SAcQ0SrkcLugvAJ/DiykWJNBRAmq/s7JnCwGAihuIQzZOEsNPOdaDZaWzBfkJnQDDhPrfosZDIKRDZpgelYT9rI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB7132.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:42f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Tue, 17 Feb 2026 08:06:13 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9611.013; Tue, 17 Feb 2026 08:06:13 +0000 From: Koichiro Den To: jingoohan1@gmail.com, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com, heiko@sntech.de, kishon@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, cassel@kernel.org, shawn.lin@rock-chips.com, Frank.Li@nxp.com Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, ntb@lists.linux.dev Subject: [PATCH v8 7/9] PCI: endpoint: pci-epf-vntb: Reuse pre-exposed doorbells and IRQ flags Date: Tue, 17 Feb 2026 17:05:59 +0900 Message-ID: <20260217080601.3808847-8-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260217080601.3808847-1-den@valinux.co.jp> References: <20260217080601.3808847-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0115.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:29c::19) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|OS7P286MB7132:EE_ X-MS-Office365-Filtering-Correlation-Id: f3255220-74dc-4813-8861-08de6dfb6b19 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|7416014|10070799003|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?YWccVYsWiWr1aVcAM3+2oBhJOdaDRNBEerDFrgzZY8G/MPsZ23G9NU34g5Nu?= =?us-ascii?Q?6/7AExACjoL2HzOSVYGuy6GK0RddBOPggbTnD+1luXoGr75RqmoSuHwN9X+2?= =?us-ascii?Q?6iP7vFKL95F3agkzdSd6eHhx7EqZiWjDZQ6AT+9hPk0FUdY9MiVc4m+rAL1z?= =?us-ascii?Q?knq6tvgTEMEQDmfbE6oVtYJFlVf/NXMPU3cBqaXNSeKi7Xr/vTSRDSQkRqdi?= =?us-ascii?Q?8sK7o73CYDko9hTPPhi9cy0Y4n+x3inZJO7kxgm0p7F35T5xgJE3wkmGNnYY?= =?us-ascii?Q?36G8epwPnYCCRLQn7mPyOWSZcW22shqoO+izRWZkt3tDUNRfTp6d6PizWqZo?= =?us-ascii?Q?QsPCC53wJBOEok+9+QQK+6WB/VoMioZqJl2lw8tU29N9aW1Qi8ZS1yoEEfit?= =?us-ascii?Q?WsXRT4CSyAgm2UWk/kHUVo8cH7NLY9OIHgFMcyuZZFJrj1nLLhFsEYaMptd8?= =?us-ascii?Q?IMi+cM/qynRGkPmtwNviCgNbdQdbGRZoealJqA5jJD1CW7u3EKSnnsmvn6DX?= =?us-ascii?Q?9/A2I9zPdjv2wjRBbzgBKw0WpZvLExv1jHS+GlWzUvT+55tgI0VJnhwhugS+?= =?us-ascii?Q?/lfotT7rQQjK4eQJpJ7t+Nj56LGdPCEPgi2jm3gJ4Jsp70k2ON8TEAk9xzxI?= =?us-ascii?Q?Z1hPd3hoTJP+/DqSzzbC4zJ43KlCkUonWxK6TvpYasXRAC8LG4BiLm5hUM8s?= =?us-ascii?Q?uUW5PosV0apgYlrBz2SpaFOVL2Zh380CZb8wfEvG8wKf0yyHUKfbR60J44Wz?= =?us-ascii?Q?rd0qdyLCVm4kuoav/F6OnPPjXXX4Lp8UyCUHexAF5gPWbxhCAjJoYNg4COLx?= =?us-ascii?Q?CkmIq5v5uXyV0kts3722hcE9xslw371LtvExd8vTncXtSJ8u4KdqoeP6pcZZ?= =?us-ascii?Q?VPB1mdo25cDak979tsgxvbBr9KzS2mEj7GWEYBK3tvGKzG93beHESYgA2aSF?= =?us-ascii?Q?18Cj6eaDgfd2xLxuGf6+D7A7gwJi+Ygw3UXzklktge4G6bfymd9SXthtQrXV?= =?us-ascii?Q?q2xHzA0CpXFd5EOmhwz+RFJHMxxEdu5vMG7+yXlYcKlLbDqhCEigGkqQApvj?= =?us-ascii?Q?HHKYgFsQKSxNvCjttJBXcZEzeoU90h8HPyWbTiy2ct+OQzZlC9XyxkDZD5Vl?= =?us-ascii?Q?e/Cff//VusMNBbg+wWa5q9I4nCg/vNG5PkM3QkzUaj6LwMFDpH2a3KkMesF3?= =?us-ascii?Q?ZSqfU3Brvgf6RqjzR1DAVxC8niNOvbXWzzHXm+hf8MCP/S/Tuxf7cUPdmH4X?= =?us-ascii?Q?KstC3p1GrjQBJb86e8NpqcH18BWPbShCnICy2vRYbAdLBaaEb+9lOwN28QOM?= =?us-ascii?Q?Y9HRIqh8lGDYFU/PKeJTyJOdtwzfk9/6mMHWi8vfhv249cAjL/Ny9HZzLkDu?= =?us-ascii?Q?kBKnVc0StU+3bj3M4kbpFqYKBjKfDngkXfgBvnhAomW93hq3pWgLgN0smlOe?= =?us-ascii?Q?6b+YSPYYDBRdfQoC8H6PLynLlNs9zEnIWEfhHIflAc/6ij8J1ESlFlPHokHg?= =?us-ascii?Q?U3RT0BgL48tOQZ2vbFX7QaGclMj5AynkQoH0XbXna3dqd1eFi31fqV36EllW?= =?us-ascii?Q?EZEcdKmpiL2NuZLLML+R3BNeed+LpjR8d2yQG2qKZ0UHaY21GgKnV4xDBFBH?= =?us-ascii?Q?/A=3D=3D?= X-Forefront-Antispam-Report: CIP: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)(366016)(376014)(1800799024)(7416014)(10070799003)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UkLpg8/9FLnSgvyTFsPFwea71O7peIPmH4YaEElMvcilLN8SghrciNiTVWst?= =?us-ascii?Q?kkISZkYelZ2tig08gTEb3gTr6/fEa47ZmW7RXeUlF10b5cxnCInYAw1LRMM5?= =?us-ascii?Q?mH35WuLF13S47qldg2Fx0bYZKNttzhE6GtlmsK78NT8K+2pu18epdyEidyB5?= =?us-ascii?Q?8HdYacNEWR30arxgWcaCzStKb+cf15c5Da3MW7pxcXSvR/MSDfQwTVfE0DEX?= =?us-ascii?Q?R1pIhGZX9oWdtIouYSIkAnYov+xzxHLYFpgK6G510nRVtT/5z28VHeyZq5Xs?= =?us-ascii?Q?WqqYjEtBjTSsB6bs5vV5GMsud0Hdr8IWMog1Hoc7m012EoJgsJY3x05+l/Ps?= =?us-ascii?Q?b5NbmQl6H4rWdFyXuBZDrnNMQF6j6U4NB4tDsoGU/uUgnhYseoMJzf/22FWL?= =?us-ascii?Q?+iAoFmolbdySqeSVXY3hYvVca/WcCOmMq4IbwljEkMaIPld09j7aoVgf42ox?= =?us-ascii?Q?+8N6xPgT7tH9BpibaUOWbmic1Q6xo+f7ZfzgWQtyqDkbKE5w/v/PlCQB4klQ?= =?us-ascii?Q?j32KqgWuDECed6iK6wqznLRNc+hut8Z7IXWakfQ/zd1Hh1rzOjnEmAfeh1dq?= =?us-ascii?Q?kAzIHNfjJmfW0VA7F1VeGB9HoGKhMmwSiV0eIijiPQhY3EXypFyC8KuFHDG1?= =?us-ascii?Q?go0znjc+ux0xQEaVG+RjnhF65SGfWukntPoUMdjW4Cbp8s9bTOlQQ6DuSmAX?= =?us-ascii?Q?BXmQOXb9H4Y8gb6VmZf3Htjzx7jopbQwWC+bfN5CBGHH4qXtu+WOEoDn6l1b?= =?us-ascii?Q?jTdSSZ2Eg8Iz0SdTAD/TxnpGKL2FtTgW99QXJqhIxXDLOPBzKEro8bWlsYpo?= =?us-ascii?Q?AzNZ7gG4FgUrvheupol8Yse1Io5RxfK8VKvMHYbgCoU5Zph6iEtCxjzzFk+L?= =?us-ascii?Q?fN2Pl2kc4ObZ9nYd9C8jhd6ghRUGuD0/nA7SwJYrDY4QdIvoxzl/NPRNEMNu?= =?us-ascii?Q?vJm7mB7LAJZxlTJvtAfJWyf1ce7VeZQNKYrvULOCsQQCWsyy9SC8gauMafN8?= =?us-ascii?Q?A3Ok/L5kKEZn3lZ6sBv9FERgiejgYo0yjc/dWI0RKcsNstwntQpMs031C8of?= =?us-ascii?Q?Fibq/zqLLTCxRKWlhQ8g0Igtfutav8irV5OGT4GCWFz0CGEfB6SXb4SG2GXi?= =?us-ascii?Q?PdOxCcmqVzC4KzJiFB/iY2VBRb5awjm5RzfNNhMl7bSmoYh8TZLS7Mak6Ij6?= =?us-ascii?Q?roc7SLQV68alLfARQMC/sEAeuwjrhC9twwNRQQRfLthpMJxBELnfpCGt9jKL?= =?us-ascii?Q?rSs9Oz2Ziem9WvSYH/fSYxMqOZU0JgDI7jE0soFpKgaF7b8p7QTRQj+qWo3R?= =?us-ascii?Q?5hcsPf8Th/kwFO41BluW0dAMCc7ZdSdVnipXDwBEukyY2bxh1LYUKlAeGwqv?= =?us-ascii?Q?u0VZ7hvN2aEt2U0lNW3jA2W1FBbZEUxGhZH6wdLef9abhlnbsFIszvm1tKWj?= =?us-ascii?Q?AwQ/Mg3xJIKWS9dNHH8ngywHG+GRqSpSN2pGA6vEKmHUhGqxwE5yznIYd+Zy?= =?us-ascii?Q?qCePvqLeDm0IDh5TLMK7xbZARPmIeKoOS4GPfb+CdnMiGYazNeAkSfkT6tnf?= =?us-ascii?Q?UVwXG9SLV+fBV49NnmRcnQ3s6+sjdGMjQ7tDFkjf44wV2/enNtM/ADuNDrOB?= =?us-ascii?Q?8pwRRPZN0eNJxw/HZ1M/+uTcyA82/ABoNOpsqlC51gO2yBa4q9Q+Fkt404aL?= =?us-ascii?Q?GQe3SfdnMfGcx65dHHQe1kaiwzBGPHJpvJdlz35X6ZoiIW5y7N9+pVNOkS2o?= =?us-ascii?Q?qvjMaXlEgsZyN8GxNQdIL3DsgFkJHlEONw6DAbhvT8Ch12nXuUph?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: f3255220-74dc-4813-8861-08de6dfb6b19 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Feb 2026 08:06:13.5000 (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: OFgHwB6nHWceRY+rvxn4SSnLFyHSvUO1Le2Zy7LPO4K08+NFF5nqnxLTe8vjK7nm5ZpXts7qioja/5lTC3eHpg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7132 Content-Type: text/plain; charset="utf-8" Support doorbell backends where the doorbell target is already exposed via a platform-owned fixed BAR mapping and/or where the doorbell IRQ must be requested with specific flags. When pci_epf_alloc_doorbell() provides db_msg[].bar/offset, reuse the pre-exposed BAR window and skip programming a new inbound mapping. Also honor db_msg[].irq_flags when requesting the doorbell IRQ. Multiple doorbells may share the same Linux IRQ. Avoid duplicate request_irq() calls by requesting each unique virq once. This makes pci-epf-vntb work with platform-defined or embedded doorbell backends without exposing backend-specific details to the consumer layer. Signed-off-by: Koichiro Den --- Changes since v7: - Deduplicate request_irq()/free_irq() calls based on virq (shared IRQ) rather than doorbell type. drivers/pci/endpoint/functions/pci-epf-vntb.c | 61 ++++++++++++++++++- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/en= dpoint/functions/pci-epf-vntb.c index 52cf442ca1d9..b1e8414c4e43 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -134,6 +134,11 @@ struct epf_ntb { u16 vntb_vid; =20 bool linkup; + + /* + * True when doorbells are interrupt-driven (MSI or embedded), false + * when polled. + */ bool msi_doorbell; u32 spad_size; =20 @@ -517,6 +522,17 @@ static int epf_ntb_configure_interrupt(struct epf_ntb = *ntb) return 0; } =20 +static bool epf_ntb_db_irq_is_first(const struct pci_epf *epf, unsigned in= t idx) +{ + unsigned int i; + + for (i =3D 0; i < idx; i++) + if (epf->db_msg[i].virq =3D=3D epf->db_msg[idx].virq) + return false; + + return true; +} + static int epf_ntb_db_bar_init_msi_doorbell(struct epf_ntb *ntb, struct pci_epf_bar *db_bar, const struct pci_epc_features *epc_features, @@ -533,9 +549,24 @@ static int epf_ntb_db_bar_init_msi_doorbell(struct epf= _ntb *ntb, if (ret) return ret; =20 + /* + * The doorbell target may already be exposed by a platform-owned fixed + * BAR. In that case, we must reuse it and the requested db_bar must + * match. + */ + if (epf->db_msg[0].bar !=3D NO_BAR && epf->db_msg[0].bar !=3D barno) { + ret =3D -EINVAL; + goto err_free_doorbell; + } + for (req =3D 0; req < ntb->db_count; req++) { + /* Avoid requesting duplicate handlers */ + if (!epf_ntb_db_irq_is_first(epf, req)) + continue; + ret =3D request_irq(epf->db_msg[req].virq, epf_ntb_doorbell_handler, - 0, "pci_epf_vntb_db", ntb); + epf->db_msg[req].irq_flags, "pci_epf_vntb_db", + ntb); =20 if (ret) { dev_err(&epf->dev, @@ -545,6 +576,22 @@ static int epf_ntb_db_bar_init_msi_doorbell(struct epf= _ntb *ntb, } } =20 + if (epf->db_msg[0].bar !=3D NO_BAR) { + for (i =3D 0; i < ntb->db_count; i++) { + msg =3D &epf->db_msg[i].msg; + + if (epf->db_msg[i].bar !=3D barno) { + ret =3D -EINVAL; + goto err_free_irq; + } + + ntb->reg->db_data[i] =3D msg->data; + ntb->reg->db_offset[i] =3D epf->db_msg[i].offset; + } + goto out; + } + + /* Program inbound mapping for the doorbell */ msg =3D &epf->db_msg[0].msg; =20 high =3D 0; @@ -591,6 +638,7 @@ static int epf_ntb_db_bar_init_msi_doorbell(struct epf_= ntb *ntb, ntb->reg->db_offset[i] =3D offset; } =20 +out: ntb->reg->db_entry_size =3D 0; =20 ntb->msi_doorbell =3D true; @@ -598,9 +646,13 @@ static int epf_ntb_db_bar_init_msi_doorbell(struct epf= _ntb *ntb, return 0; =20 err_free_irq: - for (req--; req >=3D 0; req--) + for (req--; req >=3D 0; req--) { + if (!epf_ntb_db_irq_is_first(epf, req)) + continue; free_irq(epf->db_msg[req].virq, ntb); + } =20 +err_free_doorbell: pci_epf_free_doorbell(ntb->epf); return ret; } @@ -666,8 +718,11 @@ static void epf_ntb_db_bar_clear(struct epf_ntb *ntb) if (ntb->msi_doorbell) { int i; =20 - for (i =3D 0; i < ntb->db_count; i++) + for (i =3D 0; i < ntb->db_count; i++) { + if (!epf_ntb_db_irq_is_first(ntb->epf, i)) + continue; free_irq(ntb->epf->db_msg[i].virq, ntb); + } } =20 if (ntb->epf->db_msg) --=20 2.51.0 From nobody Fri Apr 3 03:23:07 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11021114.outbound.protection.outlook.com [40.107.74.114]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 644DA2DF707; Tue, 17 Feb 2026 08:06:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.114 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315583; cv=fail; b=KrF1cRCt7bWghAldnJV8p7uoV4zKeUoVNZCgQMD4FzTEAF+2Ww698C4O5nHsgMowBfBwxcgGev90Z/GE18JxjWyBnDJfBW44oqdegq5z0lKv/OU8/0h6Ak9TQGaJueVsK0HPsA9tWeXzDQymOGwxg4kAb0Znzz//SkjAjEUW298= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315583; c=relaxed/simple; bh=NGUBqpXStEhYVYNtvBHkE3nhOawXzDFxMEJeZIQZrN0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=GLrLq+rBTytwOda7GlLiX6AGrojIx/NDubDqnEAUoWISKCjyoHOA08W9Q8Zb/5UVUHuA3mREIcn9rpI2Y1dd92wtCRCZxlcMPYaEt80rRbe9pqtQF6Usg+RXhZnHtnsN41gFUnGLRBqndk43OKm6zcNKM0jb0Ztoemhmc10soA4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=K7C1vUr/; arc=fail smtp.client-ip=40.107.74.114 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="K7C1vUr/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=J5pGICgPmnqX4rKcRu+CGqTCCj6Yllx9Mqni0OevKDId4Uu7NsJe5Si26y+6U2xWDLQ57JRLZZ1Sapvj6pV35uQpmjD5A3UTyQ36nnXu4eCzYC1LhEiq3qr9PjdawDlVMWBBTprvOI1+r3o2KTQHdYPgzAhug1biVxF4EyaYznRYq+X4JRTcJV433+U7fZN6UspNfKgvR2B844Q93mM8ZzlY6KBInGCcoaxDkSOQqpQy8jOe/Ha8QyNCFw10yHqGiQk8B4ZuDneKAtcB3NAfNjWiZC/+rmBSYXuFjdzq1CddxWDkppBhVoS3qXal8phnUkI3OPprFI0IXMcutSDQaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=pHwHdnhRuoRN5muLu8YkVyQT5oWn/9wyB21jJTKRj0I=; b=nqCrJYAL+Q+Id8coMMNiC53PsaQJ7YquHMRnGu0Y+mJ88Agcv85uPtoRzJkjx2+BzVXGxL0Kycj7+a0v2hMY2UkGjlRKuzwG1dgGcd3zOPB7rFeABwyJ3ZLJHim65XI4DhpkiW4EMlFspkLEUEOGH3bMoOJ0C13xKVwEKZnz7t3rq5nQorYeBlEVsZGmsXrQ5pk0i2FGz8RGj6HQeJ34fWcTHXwjqpXGgGFEOYOyJUYqD+V5q8D9JoMwmmuC7d520qmhGRuOEDrr7MAGOIVhAfueMN00CeYbvJGggah5y+nhdk+hI8TrMXWJorMJBB3TaOdffw3DZ5OuYG+dLS/oHw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pHwHdnhRuoRN5muLu8YkVyQT5oWn/9wyB21jJTKRj0I=; b=K7C1vUr/oJw8ZDT8m1POtq4NdZ5swj76PgUYgmSGvXMSKHlf4KEtu+oEY8QR2FXwLsWK/1IPF4D5gcA3yQ+PanD5HbYQ1IgdfsKqmjPOC9kDHj+PbZTvUQ8kx/XjT+s2jp1eubotHkD0AqgleDk1BKLdyDIG0cml1A8NSy00l0g= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB7132.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:42f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Tue, 17 Feb 2026 08:06:14 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9611.013; Tue, 17 Feb 2026 08:06:14 +0000 From: Koichiro Den To: jingoohan1@gmail.com, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com, heiko@sntech.de, kishon@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, cassel@kernel.org, shawn.lin@rock-chips.com, Frank.Li@nxp.com Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, ntb@lists.linux.dev Subject: [PATCH v8 8/9] PCI: endpoint: pci-epf-test: Reuse pre-exposed doorbell targets Date: Tue, 17 Feb 2026 17:06:00 +0900 Message-ID: <20260217080601.3808847-9-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260217080601.3808847-1-den@valinux.co.jp> References: <20260217080601.3808847-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0112.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:29c::7) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|OS7P286MB7132:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d0a01fd-de9e-449d-6eee-08de6dfb6b8f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|7416014|10070799003|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?eO3U69qKQqjrst7rPjSBxoiHJD2GY/O2GTsjnMsQruFmEsL4OJVOxXvh5JQS?= =?us-ascii?Q?1IbnXNNS5XY2Dxtrlap6+STMGbS0re9zMEgA4NNOOj1t+v2SWeKPqzTwv6gb?= =?us-ascii?Q?/8bNTLgTeg+Vv+djdEcIBxLd9CW+fpVI0JhtYIdR9n0Gib40ULp03OZzj3ci?= =?us-ascii?Q?2HoiI/rp0olEjYcJLvd7X9tFytD51WpCNyHj2tGC6Pt7jZiCaVm5fsD3t1jT?= =?us-ascii?Q?qfkwhatSXOR1D2XVZcHpumFqIbIx2wrr4Tb8EFGVsx6WjLiqzega4bB0U5QJ?= =?us-ascii?Q?f6/JHz2mjmHSpu6UbpaNpeEkqB9ewCDGC5mydmBQfm+p8CjPGMGKH6RMbBaK?= =?us-ascii?Q?wsK2gtwPzvnoB1nM6iFDfcOsmaVTBx2XG5xpwgxpyBa+Epz/k5a9Z0dUW91W?= =?us-ascii?Q?zl5MCcTRICGbHIA+f2xUT1ejSSgBbzXTcRNfpXSFPyxf/D4CX6fN4VhSPZ6i?= =?us-ascii?Q?x9gDGFIIWRV+KraqQW7NBOyjPjtEE1XqNYtQgHJNRF6w01mgZDDWMp/PYCOv?= =?us-ascii?Q?uI08RVTiJse60ZmZewrGAxNCSHaFS29qEXC0bAH3mtqOa8SY8ITYtOE+UFvA?= =?us-ascii?Q?+U7Hmkk9KCTmKORoqrx7iJTmbVkDUNpPItlfyGhGbDGrLRMUcwfyZgb8SFF4?= =?us-ascii?Q?IWbcR3unmN68KRaE3s3CTKOMsnGeEf+K8mIcKSxLhxNIpTq2NYj2X+4lAJBt?= =?us-ascii?Q?3eiCFCsVNhypMAxq0Qd+qiVABeGavm5Q2k/oD3vpkOJSGc1bxNnIsaAbwi9m?= =?us-ascii?Q?75nwdkboZZ077GdY0IH90BnuQeCX9sXKKjWO6BK5zv+QHi0cpZe0oEHeAlNG?= =?us-ascii?Q?nlkRNVDf1B+zt85RJZwrbDcNTC+9+UJpjmE6WdNwaYl8nBKflBOTNDQZ2rq+?= =?us-ascii?Q?Q06TpAO7Scz2sXyNrWd5MGKSZAIhlguRUstLk/u9XCtrEY8nxNveuXa13xK6?= =?us-ascii?Q?mnzHtOTK5/lK+uc7UZ7NzI3Vqs0g7KXDvxCkfLy5We2TLhb3YoQe8+CfxiC/?= =?us-ascii?Q?Mu+6VkAFwB5lCiExJZuaQkPeuqmvBGSh3WjPNGvRMaP3m40HEp8UBCE4Gqgv?= =?us-ascii?Q?TDMW4e3dT/JzkJUHsD0aXh0KdfSINKboFoKzg80TtEpuKE/tbJnhNLUpVszO?= =?us-ascii?Q?lEjQ4O+5Xph1qi0F0SOQ2sP+y1aOl4MZc97HqbRPryz3szRRHii74eRmnz60?= =?us-ascii?Q?PMsKsQxlPX9Pn2pVzFmwv+djr87t584MFq3pXruJQnRzAQrSS4LA68Y+Vrdl?= =?us-ascii?Q?1a3M4unrRKENq7tY1KBkztCL/khDjux6xhQJDxoZHVEP57I9yrcJWe+75AFX?= =?us-ascii?Q?pgon5jWglrZwJw5dWEKmYAaGwucsrS0BhYJErU4bAN1ooWXM3SgYKjG1bAIT?= =?us-ascii?Q?VN+49Z+WnfAQk+309l83NcgAgsyzE0VDSLXcCAeWz1pS5TccnB/PH7zwa9ae?= =?us-ascii?Q?0/llCY5OJ+UIwwxCEkIEr58Oyj9gDa+9/qKgosFY0IAIbpZlT6/gnaJhndg3?= =?us-ascii?Q?5qertQCQz1o9LKxN76MrXlqBGPRaL1dpzprkF8EaWHPBfV/MJwBnrVt4SZ/P?= =?us-ascii?Q?BFjhUN5U8cLBQhG9epVgcEGQbVCK4nYpOliVJ8QCZV9WJbRNEtVPTXrOis0k?= =?us-ascii?Q?bA=3D=3D?= X-Forefront-Antispam-Report: CIP: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)(366016)(376014)(1800799024)(7416014)(10070799003)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lh0IbMj6uh87/zkhFKZaniRne102Dx3jYojJmKdOe0eepog7eUZu3haU7MhJ?= =?us-ascii?Q?yXz/bAE5ip2DHdik3/z91ErAnbh1FLSqdpMOXHkExLPOLxf5SyaPyZAixy0o?= =?us-ascii?Q?nPuFovHzDwCDr0M+49fGvwRV1eYOrnbObjAUq1odj4USQh0Z6fe2l3zvW9ao?= =?us-ascii?Q?3prCQhnJr2VnDqhYqXOTK4slNLbCnJIIgXkXEEoqompR3hKpjz/fapltzsZR?= =?us-ascii?Q?SU9kRBaYi4tPlVLgP+w6aHekMbnRc2X7PQZBnHRrTx4wtRC45wzjr1kJZiA0?= =?us-ascii?Q?L90hhLth/MDIgqe90DaRK7owdUyjB9STcUb5RZEe9LrHEVA6WBKhRbHevalq?= =?us-ascii?Q?jAKkl8znebPB2XOIK3TDYC1Gakk/NCrD5wxCZXXHjbTzKkHk8iCPvO0XOIep?= =?us-ascii?Q?0ueXg0RCbklxzqDCTm/upsiWEUuTjX1SW/cLfjHn5wEztJ/qi/cSqvQpjCr4?= =?us-ascii?Q?olfw65JrnqALUCiaer6qZA/nsOdXel0ZcdgUg3BaMIff4FhPzOYE/Fkdy9Nx?= =?us-ascii?Q?GY3mWk6GGcZBBIkaGAz0hr7ocJP2vj/p8hpP+5W13i1hvno5qe4twLYmP7Ey?= =?us-ascii?Q?SwV7BYGYEXpYH12+kZhhZq2GM+vo45O7ZMkO4GsoZQsSbDGgJRr+OcC8auV6?= =?us-ascii?Q?wz7D8z9q/1hG7K0gmDicFEhPo72JKvzMsgOjwMSYf4JXijBw82zbrYZKscsF?= =?us-ascii?Q?3uY2qWgxM3gyHZDXp17S3FCu6DlzLs9QRO7UsGTHEQFjFyC0VzPLWoWQu57c?= =?us-ascii?Q?9/GiepNKuIEAcTk+ebvbPTqm6l1ekiRuLK6PZWkXqCz70lLgh7zpt6aC7g3w?= =?us-ascii?Q?++hxM8+/Mi/QgES2p+tIAGT03uyJZVyDiW1AOTFzujJk2dC2rVlKGx3NiApe?= =?us-ascii?Q?Fzk3enmeYDovnNJFBXgEjwZvn8LoEXDg2j7HoTLj9oz1UMbzgWLewBB3LdzS?= =?us-ascii?Q?8w2H9Du1G1NkHUc7E9am3KWHGZIRW1EOWqyWTgpNQxjbUK/Y0bbII8kgLKWP?= =?us-ascii?Q?xzqntPhUI1pEgOYaLbwOnBsuVnUytqHx6pbVXSSd0RE0Y7e8adk79W8mboMS?= =?us-ascii?Q?NvYgwU50BFj2BS3UDcrZ8Lr4EgfdQWNQJlLbb8aGPw/rgcUpuFIrCXbDRtac?= =?us-ascii?Q?ZM9WGC/AhcNfqRZafLGxG6kcTjuUlYM4fGE4ZrZIuRwSUPAUbDjbShusdYQN?= =?us-ascii?Q?dOwn+W2WiF9DXy/NqWzPhRMPOMf0Km9zIYMct0Ss/NZnWGx66jWKeYet6iHp?= =?us-ascii?Q?6/fIhuSX129NfYXfHKiL2thESLE5JmFltTC/ORvixQ6cz9Qd/HVAkBNGKncv?= =?us-ascii?Q?J4yktpPFCmaWuSHeDHglx7DFs3o8jn+ryNSIiTjp+SlZo9lbJoHk+cwLpkJc?= =?us-ascii?Q?7HWL0aWwgzJjxTbojRogVV9cl+mBgFt7vX1aSZTOX9VILKtS+gV+ieF2PVar?= =?us-ascii?Q?v0GggPsTiz8X+vG2Z82+LyBNU7h4dl2gnEdmqiIg/tdGwVaR/offvaVKqViI?= =?us-ascii?Q?PgI+rQnJ+mFWk4W+Q6tdafbu/T8leo6W9gg+qYeGn+yEEy8xCmt/vnxdyWxw?= =?us-ascii?Q?dKahhhqfAP9R7ntIm4iJvBkVmZ9wYBoHxAZtZqy4SvCpyOllSEV8sCzTvgz8?= =?us-ascii?Q?lK39wTjZXOITk5EbWLRRLs/qYy0HD1vKov5VcnGnElweZNPvEhbvgSxrBIAw?= =?us-ascii?Q?vp4LelaqsGxp39/a0ZJ4ayOno+K/l2kfi/w1BDfu5QvYNdLBF71UuRd5fqLR?= =?us-ascii?Q?0JSw28nvaQygSqTeqg2/z8Y9/9zamVwBZ1msVCgI/5vgn8gtiNuz?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 4d0a01fd-de9e-449d-6eee-08de6dfb6b8f X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Feb 2026 08:06:14.2762 (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: AqvM8NxSnhJVB+yV7LOK4mvR3bDvxn5d4v4L8PxW0Yc5veH9Sb/5uuEcdhRK/4ytX5I1adzqCzAUwh3H9k94uQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7132 Content-Type: text/plain; charset="utf-8" pci-epf-test advertises the doorbell target to the RC as a BAR number and an offset, and the RC rings the doorbell with a single DWORD MMIO write. Some doorbell backends may report that the doorbell target is already exposed via a platform-owned fixed BAR (db_msg[0].bar/offset). In that case, reuse the pre-exposed window and do not reprogram the BAR with pci_epc_set_bar(). Also honor db_msg[0].irq_flags when requesting the doorbell IRQ, and only restore the original BAR mapping on disable if pci-epf-test programmed it. Reviewed-by: Frank Li Signed-off-by: Koichiro Den --- drivers/pci/endpoint/functions/pci-epf-test.c | 87 +++++++++++++------ 1 file changed, 60 insertions(+), 27 deletions(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/en= dpoint/functions/pci-epf-test.c index 12705858e502..f5a74108e180 100644 --- a/drivers/pci/endpoint/functions/pci-epf-test.c +++ b/drivers/pci/endpoint/functions/pci-epf-test.c @@ -86,6 +86,7 @@ struct pci_epf_test { bool dma_private; const struct pci_epc_features *epc_features; struct pci_epf_bar db_bar; + bool db_bar_programmed; size_t bar_size[PCI_STD_NUM_BARS]; }; =20 @@ -725,7 +726,9 @@ static void pci_epf_test_enable_doorbell(struct pci_epf= _test *epf_test, { u32 status =3D le32_to_cpu(reg->status); struct pci_epf *epf =3D epf_test->epf; + struct pci_epf_doorbell_msg *db; struct pci_epc *epc =3D epf->epc; + unsigned long irq_flags; struct msi_msg *msg; enum pci_barno bar; size_t offset; @@ -735,13 +738,28 @@ static void pci_epf_test_enable_doorbell(struct pci_e= pf_test *epf_test, if (ret) goto set_status_err; =20 - msg =3D &epf->db_msg[0].msg; - bar =3D pci_epc_get_next_free_bar(epf_test->epc_features, epf_test->test_= reg_bar + 1); - if (bar < BAR_0) - goto err_doorbell_cleanup; + db =3D &epf->db_msg[0]; + msg =3D &db->msg; + epf_test->db_bar_programmed =3D false; + + if (db->bar !=3D NO_BAR) { + /* + * The doorbell target is already exposed via a platform-owned + * fixed BAR + */ + bar =3D db->bar; + offset =3D db->offset; + } else { + bar =3D pci_epc_get_next_free_bar(epf_test->epc_features, + epf_test->test_reg_bar + 1); + if (bar < BAR_0) + goto err_doorbell_cleanup; + } + + irq_flags =3D epf->db_msg[0].irq_flags | IRQF_ONESHOT; =20 ret =3D request_threaded_irq(epf->db_msg[0].virq, NULL, - pci_epf_test_doorbell_handler, IRQF_ONESHOT, + pci_epf_test_doorbell_handler, irq_flags, "pci-ep-test-doorbell", epf_test); if (ret) { dev_err(&epf->dev, @@ -753,22 +771,33 @@ static void pci_epf_test_enable_doorbell(struct pci_e= pf_test *epf_test, reg->doorbell_data =3D cpu_to_le32(msg->data); reg->doorbell_bar =3D cpu_to_le32(bar); =20 - msg =3D &epf->db_msg[0].msg; - ret =3D pci_epf_align_inbound_addr(epf, bar, ((u64)msg->address_hi << 32)= | msg->address_lo, - &epf_test->db_bar.phys_addr, &offset); + if (db->bar =3D=3D NO_BAR) { + ret =3D pci_epf_align_inbound_addr(epf, bar, + ((u64)msg->address_hi << 32) | + msg->address_lo, + &epf_test->db_bar.phys_addr, + &offset); =20 - if (ret) - goto err_free_irq; + if (ret) + goto err_free_irq; + } + + if (size_add(offset, sizeof(u32)) > epf->bar[bar].size) + goto err_doorbell_cleanup; =20 reg->doorbell_offset =3D cpu_to_le32(offset); =20 - epf_test->db_bar.barno =3D bar; - epf_test->db_bar.size =3D epf->bar[bar].size; - epf_test->db_bar.flags =3D epf->bar[bar].flags; + if (db->bar =3D=3D NO_BAR) { + epf_test->db_bar.barno =3D bar; + epf_test->db_bar.size =3D epf->bar[bar].size; + epf_test->db_bar.flags =3D epf->bar[bar].flags; =20 - ret =3D pci_epc_set_bar(epc, epf->func_no, epf->vfunc_no, &epf_test->db_b= ar); - if (ret) - goto err_free_irq; + ret =3D pci_epc_set_bar(epc, epf->func_no, epf->vfunc_no, &epf_test->db_= bar); + if (ret) + goto err_free_irq; + + epf_test->db_bar_programmed =3D true; + } =20 status |=3D STATUS_DOORBELL_ENABLE_SUCCESS; reg->status =3D cpu_to_le32(status); @@ -798,17 +827,21 @@ static void pci_epf_test_disable_doorbell(struct pci_= epf_test *epf_test, free_irq(epf->db_msg[0].virq, epf_test); pci_epf_test_doorbell_cleanup(epf_test); =20 - /* - * The doorbell feature temporarily overrides the inbound translation - * to point to the address stored in epf_test->db_bar.phys_addr, i.e., - * it calls set_bar() twice without ever calling clear_bar(), as - * calling clear_bar() would clear the BAR's PCI address assigned by - * the host. Thus, when disabling the doorbell, restore the inbound - * translation to point to the memory allocated for the BAR. - */ - ret =3D pci_epc_set_bar(epc, epf->func_no, epf->vfunc_no, &epf->bar[bar]); - if (ret) - goto set_status_err; + if (epf_test->db_bar_programmed) { + /* + * The doorbell feature temporarily overrides the inbound translation + * to point to the address stored in epf_test->db_bar.phys_addr, i.e., + * it calls set_bar() twice without ever calling clear_bar(), as + * calling clear_bar() would clear the BAR's PCI address assigned by + * the host. Thus, when disabling the doorbell, restore the inbound + * translation to point to the memory allocated for the BAR. + */ + ret =3D pci_epc_set_bar(epc, epf->func_no, epf->vfunc_no, &epf->bar[bar]= ); + if (ret) + goto set_status_err; + + epf_test->db_bar_programmed =3D false; + } =20 status |=3D STATUS_DOORBELL_DISABLE_SUCCESS; reg->status =3D cpu_to_le32(status); --=20 2.51.0 From nobody Fri Apr 3 03:23:07 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11020081.outbound.protection.outlook.com [52.101.229.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 975C72EBDD3; Tue, 17 Feb 2026 08:06:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315583; cv=fail; b=mofS6dcBRFx2suqxMKa7WkjpEm9BDmWH/qUEWkN10kVBx5WWtrVaC67yXMfttWqLjDBUPr9vndc5QmJbnXW3C581tasyzN50LTO1V5eL2eoi0IO6lElNTcstVZhncK9vL1n+imXlOvGJ0ovajOtxeJjH2tzJue4DE48jYpYfAJw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771315583; c=relaxed/simple; bh=lb9k9Kras3OEKJiuzh5fCP1G8ZJS4Mpk8i45PyaUz4c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=jRN4cSRn7ugRzzT2lSZe9A1SRynuOA7hN/r9COr8eZZ6U0zJ0xcZVRukl5XbXAwpcNxbCRItklJMnhATmMaAqdBPORpR/l/Xcp6d3+RLIzofMzK6y5kXvYhr7VzcFK2YeT8ra4C0Xiej3tvN8jP5MbgrMeJk7g/rxPfYHasJb6E= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=ufXPRn6i; arc=fail smtp.client-ip=52.101.229.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="ufXPRn6i" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yAChYzMrdoR00U3KrodVvJA11xilq2W2ckLTUPQLxKxvKS9WxWEzbKc1q5PDtYHUggDXDCeyfcjaywAoFmGBqNCaxi2Y8CY6Wss7tLIHwn/5fXQmdL2YgRWT1CNkhhZZoxO4GloeCGiCBjPhzq59gW7h7oWXceWJ38oxDblCqSEhVmDnDgxBmqcKmyoRIlEYYs+rGfbWtVFmjKWrqHTDdZCY98ZpaNeyqAYDWAzurTBJuq0QJmerbgdYv/SHYN7aRV+b3BbQa6p20KT7qnCO7xyWP2Xk4zTbEhr9sWkNHYDuHBQCanpSkzdeVZkN+PExdzXHGZHH1MHCL6py50G7YQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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; bh=grlMiPTDP7Nc9QwHhLGOZLZFADyNdipGVN7Bdny519A=; b=PseIdxXg9vZHuy9slCxyLw07g8Fl7WUEnNCqg1FPtXSYjfAABdmQtLBfUEeu2GQ7BEOY/BAOXpZylNfJH2rNGGIG3dz7CATqtslRXMhSWTmgAEiDE3Yt4bErZHE7KSLJ/R+ia8x3JFVGegZWq70dhfQF2gDz9EM/mYbEebyebp+5iKrA5OZXf9g+9aN2ECtKPJ6qRpHYcIqyN4VbfrrkAuPvUF/xlN6VXSqXawP9e6FeHRGPU/NlhQmhTAjrCNrRI5r+2DQ2XCw/FWOQcP3I6fs0SNZM6vtgnSGEFSZo+bpIWyjYdPbgyCvZYh0P5aUVF1ijd8V1osC8WQK+SOU4ow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=grlMiPTDP7Nc9QwHhLGOZLZFADyNdipGVN7Bdny519A=; b=ufXPRn6iSMIfDk9NON+7LH+MhJzAnlcZBZdvWvGSM7ODYlYjc9qF/yMzaw8I7rPSckoWR9Y9ZDlHcdLKkX09boVDpLv0o7YI39uBMXihPGWsISa9X4u48VRejbUkcf3nXFIVEez9ubmXoWgAkRB0P978uxiWhhNpDs58RbtFD98= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB7132.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:42f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Tue, 17 Feb 2026 08:06:15 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9611.013; Tue, 17 Feb 2026 08:06:15 +0000 From: Koichiro Den To: jingoohan1@gmail.com, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com, heiko@sntech.de, kishon@kernel.org, jdmason@kudzu.us, dave.jiang@intel.com, allenbh@gmail.com, cassel@kernel.org, shawn.lin@rock-chips.com, Frank.Li@nxp.com Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, ntb@lists.linux.dev Subject: [PATCH v8 9/9] PCI: endpoint: pci-ep-msi: Add embedded eDMA doorbell fallback Date: Tue, 17 Feb 2026 17:06:01 +0900 Message-ID: <20260217080601.3808847-10-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260217080601.3808847-1-den@valinux.co.jp> References: <20260217080601.3808847-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0281.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c9::14) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY7P286MB7722:EE_|OS7P286MB7132:EE_ X-MS-Office365-Filtering-Correlation-Id: 7c509650-cc41-44a2-f211-08de6dfb6c0c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|7416014|10070799003|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?vHcyCrnOBzrlfgMNsEo2by0LBQNZ8Ym8HmYUUjcbSF3Uvn0KmHYf/7qe3cnI?= =?us-ascii?Q?AifoLcz9f76/iA2P52qoDVTG+CQ35CZHiCKw0wR3itzGFevptc5xxMPDCNqd?= =?us-ascii?Q?HSkdFX905zvmR8xOLwV0WTz7VcknwW+5oJ53C8clxzj++C9yV6EQD51MOlhj?= =?us-ascii?Q?+pMmtbnKgjG1stswuUAik0nqcYUkgn4L+8hrDRr9uih6mShLMQlwKoRgoDTp?= =?us-ascii?Q?5+z6MfFiWWJgs/8jMLN751Mz9zeHFtKqBf03JqMND7pf48N4zWRTTyk7sVNF?= =?us-ascii?Q?NIFt0qhZY+zoAIVlAj6VinI90Zbm/USattuAYYAiWlsmJYwxFo2EkH46eEDO?= =?us-ascii?Q?9WUsZNtSpiKS2WpR6Y0lFJe+j1vcE+k2/k3dpJGenliO90+CYzi3px6QdMR3?= =?us-ascii?Q?hzUmd7cp8ts8VILfLrCLyb9Kj4hPxocI6zIJnCWnWwAHRnX5GlxTW3mNL+mv?= =?us-ascii?Q?7vdlGLDwndgUT0UYI4S2s6hSm5pRCvB0pENkRDDpvgAYH24xHJLZNvI7chU3?= =?us-ascii?Q?CuvVdv22zpUP51WxHij8jzHUp0X0RsWgMS0DyWTwTI8EslkWoyMD74kwsJEm?= =?us-ascii?Q?1XZjxhO5FCRpqUch7XVxGI+8bEG+G5YP25Q+XlqXZSWt0y8G2JMs/lVyDnyb?= =?us-ascii?Q?ygkZ9j7qfpdOZdQnjU+LBEI7+h2g+gOU2COwDM3GuN82CnDDD0H+Dcnb5U2n?= =?us-ascii?Q?1hLNaFVxhzfSd81N4YNlOnI2Bfd12290SOO860LYuYkNxCP2T0DW4o46wU6p?= =?us-ascii?Q?6ycOQRGNYZTGi1hlFS1HG9GxiFVadAz322/H+4Qz+rP7QYIPgQprAXwZU7ff?= =?us-ascii?Q?dWYj8V2ES5+WwKZ9Ly5LUH27mTTBgJjWaOTyZZ+FGiN5JxVX8ihxdzNV6WKb?= =?us-ascii?Q?nm8UXerLEJddU387WnEJbgEgxWuB/HS4+gZEXAOIwbLNtRA62rxPdMg0K+bE?= =?us-ascii?Q?pvcbeXrF+mhrJOhF0Lrx37o0QwgPg9OgJPMkZzAs17pJGY8eAXAVQ7/nlRYY?= =?us-ascii?Q?ioADMVtxMTi9+8qbWhdKitVRZb+znG5bZTnIFZnj67GKTVFDVtLG9xKbGVex?= =?us-ascii?Q?9p05mya75J3EZ+r0Ipf3nIUPY7t1oV+igMos5ukTA2UJmIxsNj3+Y5W8Y+9s?= =?us-ascii?Q?yUPgVUtgL9zNN0r1mTZkMcxXplKrLDFlLWPyQGTjI1nXk3OTBFa0P4aUybTV?= =?us-ascii?Q?AeImH0+X3eLwhJdYM7Z+88uTO+68RFEhnkuNQDVNXxYHVpb2xyIjQ4+R7jiz?= =?us-ascii?Q?HiPpEW3sT8P82i331ROTeUVx/O78FzcW1A9b9IIaxFQMncbfLqrxtDiyX+e3?= =?us-ascii?Q?RUcbpT05sdIT7hZk8+CF6enbu+D38U1sBG4cyf+zj5GOzp9FGfzwWusTJLYz?= =?us-ascii?Q?1+X5t2njqIGT7NRrW8yEGFdIWD8ygUi83ClFO+End/t2YC3AMn22KUH+q5ys?= =?us-ascii?Q?4wdbF4cEtie0LuPvV+ONrpQmV63zjFVt4wPWHy/9kt3m6wylwO4digPytI4I?= =?us-ascii?Q?5f898HMRs3XrVj1+4thob8TRe46yQMR3KKGvOWMKfqSZypQWi1vqVOhoptWo?= =?us-ascii?Q?yfmci04ofZZ6dgvoQIhW/Uj3S8kCyp+7YwTb7axfJBlZmEA7Ijle3eR9N29z?= =?us-ascii?Q?tA=3D=3D?= X-Forefront-Antispam-Report: CIP: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)(366016)(376014)(1800799024)(7416014)(10070799003)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?XUxlVelVumOfIkFMSPfupBFniNjszlJHtE1mJx704lQUSueTXOVG/RsIC+Uh?= =?us-ascii?Q?7k3x/NQt0pgHoRXuo7asRFv7wJU/R/XNeOP6qIq8jySwHurGEKY/N1iRjrop?= =?us-ascii?Q?gN4W2/9GTuZWGQUR79VNJYTBJdcqiLgOe5Q0zQrUEAZ0J0/ER0TkRPib+0hS?= =?us-ascii?Q?m99I2B/GgfNZc3TMCUjGZZKkeApTf/FfSJODnRgLdVXOLDbKvDBDI+V8uFPN?= =?us-ascii?Q?iV1HIGojN/1KzkELWrfqy+ZbTVLuOr1ldfsTNf4mSTKxBerlRup5AtqD7DKI?= =?us-ascii?Q?5IbRIKwmdJbeuo8EkajZ7JLw5xXQ/QOG+XmEQ4ecgb+xHANJuVeoKWuhRocw?= =?us-ascii?Q?jTiygWl2KoVh4o52MCbIPD6icAsPE5NuO4Z2fEWupYAlPQBtdu4/7itdOMgn?= =?us-ascii?Q?JJQH5HsHb6X8/O0mfi4bpGWDzhAN/M1hkTqVwRXAigZwCnFdU4tk/LrKzywL?= =?us-ascii?Q?8y6COYhrrXOUqSX7un2wcf509eCKU58xELsnLNqnCRp4F+DOJ+1WcE45Lmrn?= =?us-ascii?Q?BTWdmukMdlNPzx5hW/g7BqV4RJTXEkdNCvJ6v1iaZnq9w/M0WckBPQLd9S8q?= =?us-ascii?Q?XAlt8bXL0VcVJef45NRp9rd1l1OH5Q1JBxL/mhUxNsng+Sc1F8R4Wq62cvUS?= =?us-ascii?Q?hU7VTL3ux7ku4zfyzlqt4QaQg5im4jwsc1qfKGcSV7lzeRFM0wRGLeLAigou?= =?us-ascii?Q?FO22uXYRpxwMvuLOyEfWEBPXhiRMPok7ddegyI59c9EhTuldOCbLTb7lEA9U?= =?us-ascii?Q?EiZzlfbmZxS7/2n2bEEnmIr1EH8W9YazC5HW70TZbzYGf24vti/s69PDHHIl?= =?us-ascii?Q?8Y5aPs60F0Awxfty3Lfl5rYJjcPsZPqlfJO5TRc3Ak38qkK9Me+ZGhMcgy5j?= =?us-ascii?Q?uCRQHRWoo+toGRhUxpQRUnigW67UkTCQtI2fA74uBw76FMnmsKSXyO+OqCLe?= =?us-ascii?Q?jQlVwPhBpTmR3elXWPw3PdjI40YfN058+kvU0KM8P64roXAX/Eve5TGK+1Nu?= =?us-ascii?Q?em/fbIFIKMOjw3v1OwV2FSqEpfQsrUz8KPjbm15NEleSaI7Ku6itGMrBKpZr?= =?us-ascii?Q?Q0vyWDjZDuGfU/xSXvKHrjQRb0jW+i9AI7QLh+0Fxi0/m/x8NLwwexsRRca+?= =?us-ascii?Q?wPBZDeSSRV8fttBygdJVuItdMRT99kgYwUMYLG0bpVCXfF64aEsk6Rsl6h9B?= =?us-ascii?Q?ykPqw6JxV91pX9JldUYIQeRa4e4WM/iCqPsA3LzT04x4un5l2jt4gYmEch++?= =?us-ascii?Q?L90rVr/qZV7l0NZSqRH95qEwpYIyfVOJhVegmhS5gTH2OROnT09SrIc5GxTB?= =?us-ascii?Q?teiRbAJYQ0mS9ESmh3NDB2g5KIiNF5b24Pt3Zcny3RB8JdnXuSDrG5J4tiFM?= =?us-ascii?Q?aXAR3A8gp4ec6+9nLj3TOM0UIesDMvwIK25ljQbyUw8MDPGByaOrKu565JbT?= =?us-ascii?Q?qbq+9wucfwu4U3iFQsi0IGyuzt9JMzZxnx2o8n4t/hUOQD9Uec8rOtmURkTy?= =?us-ascii?Q?bE7WQD19vrN4+XdUkMwAIYvjPlFOh3a6KUq2/HkiKwLc+EQSLER6AGpkzE20?= =?us-ascii?Q?p2zgyVcO2FYoCdo6x0hJ9C9mQEYKxIUZZhvcHKCTwglF3bbAHzrdmQ33NBUB?= =?us-ascii?Q?o2X3QR0wWnlHizUP3lMt1r37F92c2xWd7nXG/SESVDClA83MPsL/NlfRlBhW?= =?us-ascii?Q?PHnS5MfUDmrIT6TuJrgKP/xU28O/PzObdgv4El9EDjfq4CEs5JbwKnobcl2r?= =?us-ascii?Q?5ztgfWKkGRmy04h7w8y7N/CplbMiW55iKgIh/pTWTcVQzWZsYMgg?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 7c509650-cc41-44a2-f211-08de6dfb6c0c X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Feb 2026 08:06:15.0993 (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: LG3SrRWUpQvyLZDfhnNiIVsuIsOsqabzbUiayWJBkOgvlYT7AAMPPOqjTweqIXIsRcHPMQSmrLSkrmLieeT65Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7132 Content-Type: text/plain; charset="utf-8" Some endpoint platforms cannot use platform MSI / GIC ITS to implement EP-side doorbells. In those cases, EPF drivers cannot provide an interrupt-driven doorbell and often fall back to polling. Add an "embedded" doorbell backend that uses a controller-integrated doorbell target (e.g. DesignWare integrated eDMA interrupt-emulation doorbell). The backend locates the doorbell register and a corresponding Linux IRQ via the EPC aux-resource API. If the doorbell register is already exposed via a fixed BAR mapping, provide BAR+offset. Otherwise provide the physical address so EPF drivers can map it into BAR space. When MSI doorbell allocation fails with -ENODEV, pci_epf_alloc_doorbell() falls back to this embedded backend. Signed-off-by: Koichiro Den --- Changes since v7: - Use designated initializer for consistent styling. - Clean up the pci_epf_alloc_doorbell() error path. drivers/pci/endpoint/pci-ep-msi.c | 96 ++++++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 2 deletions(-) diff --git a/drivers/pci/endpoint/pci-ep-msi.c b/drivers/pci/endpoint/pci-e= p-msi.c index 50badffa9d72..66f5a68c81b0 100644 --- a/drivers/pci/endpoint/pci-ep-msi.c +++ b/drivers/pci/endpoint/pci-ep-msi.c @@ -6,6 +6,7 @@ * Author: Frank Li */ =20 +#include #include #include #include @@ -36,6 +37,84 @@ static void pci_epf_write_msi_msg(struct msi_desc *desc,= struct msi_msg *msg) pci_epc_put(epc); } =20 +static int pci_epf_alloc_doorbell_embedded(struct pci_epf *epf, u16 num_db) +{ + const struct pci_epc_aux_resource *doorbell =3D NULL; + struct pci_epf_doorbell_msg *msg; + struct pci_epc *epc =3D epf->epc; + struct device *dev =3D &epf->dev; + int count, ret, i; + u64 addr; + + count =3D pci_epc_get_aux_resources(epc, epf->func_no, epf->vfunc_no, + NULL, 0); + if (count =3D=3D -EOPNOTSUPP || count =3D=3D 0) + return -ENODEV; + if (count < 0) + return count; + + struct pci_epc_aux_resource *res __free(kfree) =3D + kcalloc(count, sizeof(*res), GFP_KERNEL); + if (!res) + return -ENOMEM; + + ret =3D pci_epc_get_aux_resources(epc, epf->func_no, epf->vfunc_no, + res, count); + if (ret =3D=3D -EOPNOTSUPP || ret =3D=3D 0) + return -ENODEV; + if (ret < 0) + return ret; + + count =3D ret; + + for (i =3D 0; i < count; i++) { + if (res[i].type =3D=3D PCI_EPC_AUX_DOORBELL_MMIO) { + if (doorbell) { + dev_warn(dev, + "Duplicate DOORBELL_MMIO resource found\n"); + continue; + } + doorbell =3D &res[i]; + } + } + if (!doorbell) + return -ENODEV; + + msg =3D kcalloc(num_db, sizeof(*msg), GFP_KERNEL); + if (!msg) + return -ENOMEM; + + addr =3D doorbell->phys_addr; + + /* + * Embedded doorbell backends (e.g. DesignWare eDMA interrupt emulation) + * typically provide a single IRQ and do not offer per-doorbell + * distinguishable address/data pairs. The EPC aux resource therefore + * exposes one DOORBELL_MMIO entry (u.db_mmio.irq). + * + * Still, pci_epf_alloc_doorbell() allows requesting multiple doorbells. + * For such backends we replicate the same address/data for each entry + * and mark the IRQ as shared (IRQF_SHARED). Consumers must treat them + * as equivalent "kick" doorbells. + */ + for (i =3D 0; i < num_db; i++) + msg[i] =3D (struct pci_epf_doorbell_msg) { + .msg.address_lo =3D (u32)addr, + .msg.address_hi =3D (u32)(addr >> 32), + .msg.data =3D doorbell->u.db_mmio.data, + .virq =3D doorbell->u.db_mmio.irq, + .irq_flags =3D IRQF_SHARED, + .type =3D PCI_EPF_DOORBELL_EMBEDDED, + .bar =3D doorbell->bar, + .offset =3D (doorbell->bar =3D=3D NO_BAR) ? 0 : + doorbell->bar_offset, + }; + + epf->num_db =3D num_db; + epf->db_msg =3D msg; + return 0; +} + static int pci_epf_alloc_doorbell_msi(struct pci_epf *epf, u16 num_db) { struct pci_epf_doorbell_msg *msg; @@ -109,8 +188,21 @@ int pci_epf_alloc_doorbell(struct pci_epf *epf, u16 nu= m_db) if (!ret) return 0; =20 - dev_err(dev, "Failed to allocate doorbell: %d\n", ret); - return ret; + /* + * Fall back to embedded doorbell only when platform MSI is unavailable + * for this EPC. + */ + if (ret !=3D -ENODEV) + return ret; + + ret =3D pci_epf_alloc_doorbell_embedded(epf, num_db); + if (ret) { + dev_err(dev, "Failed to allocate doorbell: %d\n", ret); + return ret; + } + + dev_info(dev, "Using embedded (DMA) doorbell fallback\n"); + return 0; } EXPORT_SYMBOL_GPL(pci_epf_alloc_doorbell); =20 --=20 2.51.0