From nobody Thu Apr 16 17:38:30 2026 Received: from ZRAP278CU002.outbound.protection.outlook.com (mail-switzerlandnorthazon11020138.outbound.protection.outlook.com [52.101.186.138]) (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 CCE143EFD15 for ; Thu, 26 Feb 2026 15:14:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.186.138 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772118869; cv=fail; b=XLo4/TC0UKCMEY9Tv2D/w9wxYmug9WFQqPfjlwlyxo+KungUpEvOtSnpy1/unXrJtfH1aA6uinEv5ALzRhQmXj9KNiS5EJqN8kBGV2GbO5dDGJMvnKFK6tqB2lsAOvxO7zy6MnmqCbxLgF1db30k/U6AOcRlaDaXmWkXdQ/M/Y8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772118869; c=relaxed/simple; bh=ae05sfru65F2Y0kzwY5RYl+FEgTxnvk6aSeqkrM5qZQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=rhH/zMV7e8guq6dqOkqs+VZQ1Z55eQd7vLJAyjJTFuKPQ3WiJF6BYOemVa1qvbSwnmsnAN3ZgEl4iQHNtW2lods1ComtP7hR+xUga1kVRmeCBb17srqRUkrIxEo92YmbHYmLyDRcuZ8RYu47YveYZIBbtO3Xg9SLdEpjEd0C0Y8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com; spf=pass smtp.mailfrom=duagon.com; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b=SYd3gBHt; arc=fail smtp.client-ip=52.101.186.138 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=duagon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b="SYd3gBHt" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DoHZ3PuRx0m6kw0SAkmFPzq1KVeAkBhFF4IUw29phYU9bFBEsxKgaaB26IFkm3pRITk61KiNbsBmcmy6VkBl4SzbNRg+qc/RuSHvk6p+OiYemN/7zut5S1CwEuYcjmJH+e5pGzut0qmzCuaykDlHxGHSrK4VDl/wduiGR/4zfglCrfbmMzwMBL2heNDaEl/hFMjo247DrwCNAdKesemjEIoTD8lyzCQNr4IBNUC2TOyE6yEuQ/y/TKtqgg8JJXoIc8ERJPTLWLXLXyy39snC3AP8q7w2Fvf22gNVjCn0qCSlIugbj3gcnScsqchEGBvDXRK8zM+keVLoSCYqkJqyog== 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=KNDxzQYxpLFgtS9zlzPW+YlMD84my+9apEzZnWkuiVk=; b=gupdwyf3YuaZHgWoWm/GmYKOnvWND4Spk2kE1zS0n4z2yxR3mKY2YelbMrHqsgptOyu5mVSOTnNxCsoQ5EDx3zJUG4ijjPk4By6fbTHCmvY0z/ymTI3HOiRDufWl+kP5CtaPrpqm8dKf2HC5ZAXAfSGsOMQkcePXJM58kSGRMH86YrQX4IiSR6jThgLOIBxJR7YnnvAHHc56FDmcWP+W/BQzYSava+yEfpV8LtMmlfJP8xrA0O0W4hG2MyMM3xF/cfr39fsHmWl6uWRZFppI7eCBTO3/SkuL9hitsUVHfqrZobVOHbUEdBI04KUctWjVSkjLZTELQFMsqwBMc9fztA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.93.85.1) smtp.rcpttodomain=gmail.com smtp.mailfrom=duagon.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=duagon.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=duagon.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KNDxzQYxpLFgtS9zlzPW+YlMD84my+9apEzZnWkuiVk=; b=SYd3gBHtfWHKfhSsNM4cE5sq+n9D/kInglZ/HYh1ERpjTTLkTEep34sdn9CSCRzXCXq/dqxWTLC8BbHLv8sYAmnIZtGbBk0zZ4zTqVVAmlmyobmDv3Jrhn7RK2ITrjHQARRFXiLzDJcEgpfer6RZAQglGD+EOG9m+EITchRGMHs= Received: from DUZPR01CA0141.eurprd01.prod.exchangelabs.com (2603:10a6:10:4bd::28) by ZR5P278MB2019.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:b0::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.13; Thu, 26 Feb 2026 15:14:23 +0000 Received: from DB1PEPF000509E4.eurprd03.prod.outlook.com (2603:10a6:10:4bd:cafe::32) by DUZPR01CA0141.outlook.office365.com (2603:10a6:10:4bd::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.26 via Frontend Transport; Thu, 26 Feb 2026 15:14:22 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.85.1) smtp.mailfrom=duagon.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=duagon.com; Received-SPF: Pass (protection.outlook.com: domain of duagon.com designates 40.93.85.1 as permitted sender) receiver=protection.outlook.com; client-ip=40.93.85.1; helo=ZRAP278CU002.outbound.protection.outlook.com; pr=C Received: from hz-deliver01.de.seppmail.cloud (162.55.72.219) by DB1PEPF000509E4.mail.protection.outlook.com (10.167.242.54) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.12 via Frontend Transport; Thu, 26 Feb 2026 15:14:23 +0000 Received: from hz-glue01.de.seppmail.cloud (unknown [10.11.0.26]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-deliver01.de.seppmail.cloud (Postfix) with ESMTPS id 4fMFNv2J3Cz4wxW; Thu, 26 Feb 2026 16:14:23 +0100 (CET) Received: from hz-glue01.de.seppmail.cloud (unknown [172.18.0.6]) by hz-glue01.de.seppmail.cloud (Postfix) with ESMTP id 4fMFNv1xhgz1vgl; Thu, 26 Feb 2026 16:14:23 +0100 (CET) X-SEPP-Suspect: 35317572fa65422888bef49303314871 Received: from hz-scan07.de.seppmail.cloud (unknown [10.11.0.49]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by hz-glue05.de.seppmail.cloud (Postfix) with ESMTPS id 4fMFNv1JC7z20Dl; Thu, 26 Feb 2026 16:14:23 +0100 (CET) Received: from hz-scan07 (localhost [127.0.0.1]) by hz-scan07.de.seppmail.cloud (Postfix) with SMTP id 4fMFNv0rBczmRR; Thu, 26 Feb 2026 16:14:23 +0100 (CET) Received: from hz-m365gate03.de.seppmail.cloud (unknown [10.11.0.36]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-scan07.de.seppmail.cloud (Postfix) with ESMTPS; Thu, 26 Feb 2026 16:14:22 +0100 (CET) Received: from ZRAP278CU002.outbound.protection.outlook.com (mail-switzerlandnorthazlp17010001.outbound.protection.outlook.com [40.93.85.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mail.protection.outlook.com", Issuer "DigiCert Cloud Services CA-1" (not verified)) by hz-m365gate03.de.seppmail.cloud (Postfix) with ESMTPS id 4fMFNs5vQ3z1vgJ; Thu, 26 Feb 2026 16:14:21 +0100 (CET) Received: from ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:80::5) by ZRAP278MB0963.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:49::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.14; Thu, 26 Feb 2026 15:14:20 +0000 Received: from ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM ([fe80::311:4b5c:48da:9514]) by ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM ([fe80::311:4b5c:48da:9514%5]) with mapi id 15.20.9654.013; Thu, 26 Feb 2026 15:14:20 +0000 From: Filip Jensen To: morbidrsa@gmail.com Cc: linux-kernel@vger.kernel.org, Filip Jensen , Jose Javier Rodriguez Barbarin Subject: [PATCH 1/3] mcb: Use more than the first bar in pci devices Date: Thu, 26 Feb 2026 16:13:37 +0100 Message-Id: <20260226151339.48800-2-dev-Felipe.Jensen@duagon.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260226151339.48800-1-dev-Felipe.Jensen@duagon.com> References: <20260226151339.48800-1-dev-Felipe.Jensen@duagon.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0019.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:47::9) To ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:80::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: ZR0P278MB1218:EE_|ZRAP278MB0963:EE_|DB1PEPF000509E4:EE_|ZR5P278MB2019:EE_ X-MS-Office365-Filtering-Correlation-Id: 7048ea4c-24da-446f-4159-08de7549b976 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info-Original: NG2UHKC/Q+LZ6eOZ0oPxszMFVSPyvV7mLcA3j2/0oh6/QthC08aMruoWOSFkvTa69qCNqzXesQjlH5URCW95tYRTJSHSOMZsdAKOxG0eYGfD+dUE+ci7C9dfaScdE0uxQYWAU0X7kUsMVa5f/oQyA5JrwMSyUwcNfO4zCQ58Z1eyefJR0QjuC+1as1zHi6mUPQeR5xhbM+iKp0u5kErzxZ6u9SAPfBvDc5bUPcQ3HdxAxZmeZL9FmpNLDTlXNxTq+MdIqmmyt1NiyYK1BHZUPU9UvIp9i1Ea3yhtXA1KsXlUZI+MqLMGU9RkGBQqrVPk2r4oSWxIVM1YnUZk4JRc+LxPBsTv2oSzC6Vypm1aeEavcaTbTagueoFk1L27TlqY6ImAUFLGxqfZ6HCb42aT/l9x30Oh+A2Mmu12okCspL4ACaNyPoaz14K4WvnPVYJNl7cTCWxo8B467r1FJiWtZfL1qkJyomTPcnmA0KKulRAmEN0qqdqS8ViX3nLf9OOFFqQHp1+WHw0MoadTEr0Ur4LGaPZFKx0FbakVgLPvx0fvxhaVN4jc6hPdhyhPfyCkVY8f+oTvHvZsw5chr8fJyouVAP94PKIFZ4wy9keuwrJBA2Es42685xt3aTA4CTlQMfhotEyNsGPVBVSThf2JmqmE1CM6iySpHrb8/XJT/wkcIUZTL1u/4MzfEV9tG/jL3feC8/wva4wh7BujRWht78B8CjbnSjCmvMheQdHXpl3Bb5cVBgWznQVyZ76saj5yOHps0At0ByqE2ozvAQ9VpqxBXVSM4RE15zeIEkN6uXg= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZRAP278MB0963 X-SEPP-CCCVersion: 2025-12-11T08:12:51+01:00 9ed91da2 X-EOPAttributedMessage: 0 X-MS-Exchange-SkipListedInternetSender: ip=[40.93.85.1];domain=ZRAP278CU002.outbound.protection.outlook.com X-MS-Exchange-ExternalOriginalInternetSender: ip=[40.93.85.1];domain=ZRAP278CU002.outbound.protection.outlook.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509E4.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 46d6ce98-f6d7-46cf-7613-08de7549b736 X-SM-ruleversion: 2.1.0 X-Microsoft-Antispam: BCL:0;ARA:13230040|156008|14060799003|82310400026|36860700013|376014|35042699022|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?d1lXM0F6QnlwenBxWklZRUU0b0ZBeVNFMnJ5ODYxR3JONVhmZ0NRclRTNVlQ?= =?utf-8?B?eGJMbm1BT3ZzWEwveUJjK1MrWTF5RERURDlPbFV0UzRBbWYwRkNjWmw3NFdG?= =?utf-8?B?TTVGTnlBNGMyYWp5eWdPU1Bjdld3WjZwVlFxUFVQMkYrOGpnQjF3a0llZGdP?= =?utf-8?B?dkpWV1RoVnRKQ3A5N3hXVi9vY0Q3RUYrRFBYVTFmYXdmZkY3OTdGbVVEOS90?= =?utf-8?B?OFc3c1NNTVdqQW9QVFVxMUd5Ynd1ODZOREFNZVhNVzRveWZtZFhRYU9iQkxq?= =?utf-8?B?VUlNeFdkUlFEdlA0aStodFlOL3dkVE5weFRzaHBMV2tOMXp1MjNLWXhwcm9k?= =?utf-8?B?YklaeUdIU3lqTmxRVFpoS2JUNDkwV1oyR0xuU3dYeHRqaTZxY1YwdTVuTG5r?= =?utf-8?B?bFdjTUxjckJyQlUzQURTUCtISXp1bDhuZ2RiR0NTQU44MzhtNzhsU1h4Ulha?= =?utf-8?B?eUFsQnY4WXljWXltaUpaSklvNVh1bnFwV3d3NzlweHBoZ0l5b3Z3RTlqUkhW?= =?utf-8?B?b09CVUhrVjZSSTNUM1VNNWR0dm5YL3BYMzQ1VFBSU3FNazdKYjJDNkRLdlVK?= =?utf-8?B?clpoa0UxcmdaWXlxUkZYWUY3amoveENBY2U2WFJQUHh0YjNLMnpqNmVXTXNY?= =?utf-8?B?NWo2MDVkRmx4VVlHM05HcCswWm8xdThZbEFobms4YlBoMzNXSmhsZXB1Q2oy?= =?utf-8?B?VkVJSnZLZkNGZVJBcnVWTUs1Ri9sWnp1SGZ4SzZNbmZaQjZFU1JKYzNwb2FR?= =?utf-8?B?UFZMUFQvVmp1bjVRS3lEa3U0NllBaUdrYlpLSldRVGFEU2V2Mk5xQXMyVHdu?= =?utf-8?B?YXdyUzN2SjFhakN6c2cwa2djWVBYMGFmVXZVSURHYWVhSHE4RzBCQmk2N3B4?= =?utf-8?B?ZG9Kbkp5YlE2dWlkQUVzT0hvZmYxM0w0TUx3SHV3MFdqM0phWHc1RGp4dHU4?= =?utf-8?B?SmwwckNMOEtVbjlHUzB3aytCcVAwT25Dc251c2Q4a05uQ21BTjdhZHJBOGU5?= =?utf-8?B?RTJoMWRNaS9Xa2JDcktqbXJydkZITW94QmplVUhEdm1tK0IrQllyODBHb1pC?= =?utf-8?B?amhHZXpXNjJ6M0tXeUZvNlhSUUwyeFYxNTA4dC92UktybFg2bGtERXJFZldP?= =?utf-8?B?cmNNUjZPNVRqWFZZNTBzNUZWSXZGT1MrR2pUdHk1SWVuQUUzb1RxV1h4a3A0?= =?utf-8?B?Z1I2WEhndzhCNENMTFVSUWxDWDczOElxS2xCSFp1M2xWc284WTNOeTJpME5l?= =?utf-8?B?bnEybmt6R1BkSHVaNjN3enJzWURjNllsS2Z6dDZqRG43aHovT1ZNS3BSOGEv?= =?utf-8?B?UTg1bUVhbVlBZThYUGR4OHZQWDhlVCtXMVovV0U4TFJEOVBjdzJpYnRrNEpl?= =?utf-8?B?MEFpY0hwZFpIZnkyMjlNRFlqcmVpRUpaSWk2bjZ6cFdSRXpSNGdQZ3dlZ3Jx?= =?utf-8?B?bDNBQ3lhaGo1UWxYNXdJeUlZMEhIdHlZelpnU2tKS0lnME41NXZaRVNBUlhQ?= =?utf-8?Q?zjPB/MH4F6ZwPnVDhfigUuKA6cF?= X-Forefront-Antispam-Report: CIP:162.55.72.219;CTRY:CH;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZRAP278CU002.outbound.protection.outlook.com;PTR:mail-switzerlandnorthazlp17010001.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(156008)(14060799003)(82310400026)(36860700013)(376014)(35042699022)(1800799024);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1JeQEaVUqop21SwQFbvpPqNgT1GRTRTqseVfK3Q/kBM2ixDdqRtxMZ9XL8pPGweRxR3ax34l3C3MpLjH2lr+kL0AXDwJbZ+CTsmUEwto9duzsP6Tn8pOB/ePnXLmX0axpQwZg9JN9JvEfzuw6UE+4hhhUk50jqvlVv/5cU4dcJXpMdCjXXglx+3imhYIuo3PPCzWSw3XwdSldV84sxRff+Q9AoTjAHAyffx1p2XRUNqQEoyv3iAGh66LZzVSOWC4kjEQHXqc04IP9HIwoZ6SQO8cKkcQnq2jLEzrTGviMlau2twbW59PGpOgUzuMQGzIY+yDcqRBccWU5pEPHOf4qN8rqLzFyDdn4CPtas9bW19u57FPNpSMeBEkPwju8L1/bQw+PVp8tWRRpW6jOa+kR6VePq6aA8v31XZA3eftXZ805fIMixScaVzU+t36X097 X-OriginatorOrg: duagon.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 15:14:23.6844 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7048ea4c-24da-446f-4159-08de7549b976 X-MS-Exchange-CrossTenant-Id: e5e7e96e-8a28-45d6-9093-a40dd5b51a57 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e5e7e96e-8a28-45d6-9093-a40dd5b51a57;Ip=[162.55.72.219];Helo=[hz-deliver01.de.seppmail.cloud] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF000509E4.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR5P278MB2019 Currently The mcb driver in a PCI bus only uses the first BAR when parsing the table of attached devices and thus cannot map devices using other BARS (=C2=ABNo BAR for 16z=C2=BB error will be thrown in method chameleon_parse_gdd if assigned to a bar higher than the first). This patch allows the parsing of devices in BARS other than the first using the standard PCI helpers for accessing PCI BAR info as described in pci.h Reviewed-by: Jose Javier Rodriguez Barbarin Signed-off-by: Filip Jensen --- drivers/mcb/mcb-internal.h | 3 +-- drivers/mcb/mcb-lpc.c | 2 +- drivers/mcb/mcb-parse.c | 22 +++++++++++++--------- drivers/mcb/mcb-pci.c | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/drivers/mcb/mcb-internal.h b/drivers/mcb/mcb-internal.h index 3602cb3b2021..180ba97cfc08 100644 --- a/drivers/mcb/mcb-internal.h +++ b/drivers/mcb/mcb-internal.h @@ -122,7 +122,6 @@ struct chameleon_bar { #define CHAMELEON_BAR_MAX 6 #define BAR_DESC_SIZE(x) ((x) * sizeof(struct chameleon_bar) + sizeof(__le= 32)) =20 -int chameleon_parse_cells(struct mcb_bus *bus, phys_addr_t mapbase, - void __iomem *base); +int chameleon_parse_cells(struct mcb_bus *bus, void __iomem *base); =20 #endif diff --git a/drivers/mcb/mcb-lpc.c b/drivers/mcb/mcb-lpc.c index 070aa787abc6..d3f48e1ea08b 100644 --- a/drivers/mcb/mcb-lpc.c +++ b/drivers/mcb/mcb-lpc.c @@ -56,7 +56,7 @@ static int mcb_lpc_probe(struct platform_device *pdev) if (IS_ERR(priv->bus)) return PTR_ERR(priv->bus); =20 - ret =3D chameleon_parse_cells(priv->bus, priv->mem->start, priv->base); + ret =3D chameleon_parse_cells(priv->bus, priv->base); if (ret < 0) { goto out_mcb_bus; } diff --git a/drivers/mcb/mcb-parse.c b/drivers/mcb/mcb-parse.c index 2b115cb0e5d9..806be67b960d 100644 --- a/drivers/mcb/mcb-parse.c +++ b/drivers/mcb/mcb-parse.c @@ -6,6 +6,7 @@ #include #include =20 +#include #include "mcb-internal.h" =20 #define for_each_chameleon_cell(dtype, p) \ @@ -123,13 +124,14 @@ static void chameleon_parse_bar(void __iomem *base, } } =20 -static int chameleon_get_bar(void __iomem **base, phys_addr_t mapbase, - struct chameleon_bar **cb) +static int chameleon_get_bar(void __iomem **base, struct chameleon_bar **c= b, + struct device *dev) { struct chameleon_bar *c; int bar_count; __le32 reg; u32 dtype; + struct pci_dev *pdev; =20 /* * For those devices which are not connected @@ -153,12 +155,15 @@ static int chameleon_get_bar(void __iomem **base, phy= s_addr_t mapbase, chameleon_parse_bar(*base, c, bar_count); *base +=3D BAR_DESC_SIZE(bar_count); } else { - c =3D kzalloc_obj(struct chameleon_bar); + pdev =3D to_pci_dev(dev); + bar_count =3D PCI_STD_NUM_BARS; + c =3D kzalloc_objs(struct chameleon_bar, bar_count); if (!c) return -ENOMEM; - - bar_count =3D 1; - c->addr =3D mapbase; + for (int i =3D 0; i < bar_count; ++i) { + c[i].addr =3D pci_resource_start(pdev, i); + c[i].size =3D pci_resource_len(pdev, i); + } } =20 *cb =3D c; @@ -166,8 +171,7 @@ static int chameleon_get_bar(void __iomem **base, phys_= addr_t mapbase, return bar_count; } =20 -int chameleon_parse_cells(struct mcb_bus *bus, phys_addr_t mapbase, - void __iomem *base) +int chameleon_parse_cells(struct mcb_bus *bus, void __iomem *base) { struct chameleon_fpga_header *header; struct chameleon_bar *cb; @@ -203,7 +207,7 @@ int chameleon_parse_cells(struct mcb_bus *bus, phys_add= r_t mapbase, memcpy(bus->name, header->filename, CHAMELEON_FILENAME_LEN); bus->name[CHAMELEON_FILENAME_LEN] =3D '\0'; =20 - bar_count =3D chameleon_get_bar(&p, mapbase, &cb); + bar_count =3D chameleon_get_bar(&p, &cb, bus->carrier); if (bar_count < 0) { ret =3D bar_count; goto free_header; diff --git a/drivers/mcb/mcb-pci.c b/drivers/mcb/mcb-pci.c index f1353da6ef4f..2401c19a8830 100644 --- a/drivers/mcb/mcb-pci.c +++ b/drivers/mcb/mcb-pci.c @@ -86,7 +86,7 @@ static int mcb_pci_probe(struct pci_dev *pdev, const stru= ct pci_device_id *id) =20 priv->bus->get_irq =3D mcb_pci_get_irq; =20 - ret =3D chameleon_parse_cells(priv->bus, priv->mapbase, priv->base); + ret =3D chameleon_parse_cells(priv->bus, priv->base); if (ret < 0) goto out_mcb_bus; =20 --=20 2.34.1 From nobody Thu Apr 16 17:38:30 2026 Received: from ZRAP278CU002.outbound.protection.outlook.com (mail-switzerlandnorthazon11020091.outbound.protection.outlook.com [52.101.186.91]) (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 B2B1D3EFD3D for ; Thu, 26 Feb 2026 15:14:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.186.91 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772118879; cv=fail; b=N0iJ1OxoKsKqEApBTpdWQZA1jijcscrQfkjzTyumvjn8LmRT5gcGvS1v3RhCjbLi5LxCImR7H1slYi1lfOGSQzcDCF4dapcD7SvxJh8/p49uqTNdIiTlLFlXtejwAIiQN4tr7OiQTdY07I/Ezadx5tyRHwucbCe5wuE50R+uwHA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772118879; c=relaxed/simple; bh=aDhDEGNN49GWbEMHLfpKfHlgSFXIMza70hw6SD6GIyo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=YA6dk3jrhXNmWyjGCF1PT6k2dPp6JiBqftwhCpjnA260ELyAwUn+eOAx8jvYhACiYqIYAXQn/CTH4Amiw5wOqsWydZsFWPWUl9KAnofbWAWLptked2nJikFV7UvKK9QFrsKc0gQE4aYmBu/dbOgyxEb7P2RjN073nL77aA5TswI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com; spf=pass smtp.mailfrom=duagon.com; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b=nKvXWk+5; arc=fail smtp.client-ip=52.101.186.91 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=duagon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b="nKvXWk+5" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VUVQxGOvnnhP0u99Ffr9/d6wh0ECahbr1UA1SnYSl9tYCUWFmTEavXlhEpTPjBGgKL9mqQg1vGdul+jdB/wRgWCA8c7aQ1Ibun5RRAJfViUr6TJPvkA0nSfN1O4O1pB2CAfBLoyehVM4NR6LvthRrUOrIVCIuyd4dgBjDHMs6JhKX5GYaxwGCor/DJr9JZBOwMTGEBHDcv7kisLY53uhkRmuzp55eWU0NeC56ZoPQaI0vvOH5L4SjSLBjhsiKzSshoZGvtlaebRzkycCa629EexiqDlcmxmz/oVcgMkL1t8YbXWfp+22rq8at5j9TERfpPQzBoaSvQqzmixnwIdEGw== 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=80iWvjBZdMaQjW5j9OJfzuB+EIQBCfCNJrEf2lCXnU0=; b=R8M7qIpaIGD1hxPVhIAoIvaAgmky95Wh6bbBtm0V5aGwoYhewzD5hxEbWh4TgF97biHUVIO3AgNmWQxGtbK1y+XrDLLcs7ZQARgsHl0V6++hRI8USzJV8cgF0hfIIWuYxbPS95COj2UdzIGZAw1lKhZfYxhRqYNlpTgdJdZbJ57Vxo2F/Z774bUb6IKLzlK3CKSvDRrJvnsO9sG1dM0U/KqnejXytpBSg7zJEEFLra3YBJl9J7UpXjGI4kvRy1ffJRzI+5gY5heSkaDiaLVNiKH0ufV5kqQLodfFITIYi205yohG33z0YfFVIh+BlHlfdIaxC+iQqWsRvWzmY7rgvw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.93.86.6) smtp.rcpttodomain=gmail.com smtp.mailfrom=duagon.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=duagon.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=duagon.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=80iWvjBZdMaQjW5j9OJfzuB+EIQBCfCNJrEf2lCXnU0=; b=nKvXWk+5CQ2UHsJ5FVEpwcs35kRZ0SzAzGBUZa6msh3fS/5N//ds7PWDEpYnWScsoJQT7ofeInMCtEN7UU/A6C7PyYKKodTIKWi5jppB71yaiiAq3k0YrmsFPfxPtlW79WRvh5sWcFp9FeI1SbnI0d4NGlHfgqaHDN2LBYEhWhQ= Received: from AS4P191CA0033.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:657::20) by GV0P278MB1768.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:6d::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.23; Thu, 26 Feb 2026 15:14:30 +0000 Received: from AM4PEPF00025F9B.EURPRD83.prod.outlook.com (2603:10a6:20b:657:cafe::5b) by AS4P191CA0033.outlook.office365.com (2603:10a6:20b:657::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.26 via Frontend Transport; Thu, 26 Feb 2026 15:14:32 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.86.6) smtp.mailfrom=duagon.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=duagon.com; Received-SPF: Pass (protection.outlook.com: domain of duagon.com designates 40.93.86.6 as permitted sender) receiver=protection.outlook.com; client-ip=40.93.86.6; helo=GVAP278CU002.outbound.protection.outlook.com; pr=C Received: from hz-deliver01.de.seppmail.cloud (2a01:4f8:a0:13df::219) by AM4PEPF00025F9B.mail.protection.outlook.com (2603:10a6:20f:fff4::a) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9654.0 via Frontend Transport; Thu, 26 Feb 2026 15:14:30 +0000 Received: from hz-glue01.de.seppmail.cloud (unknown [10.11.0.26]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-deliver01.de.seppmail.cloud (Postfix) with ESMTPS id 4fMFP14Wnyz4x2D; Thu, 26 Feb 2026 16:14:29 +0100 (CET) Received: from hz-glue01.de.seppmail.cloud (unknown [172.18.0.6]) by hz-glue01.de.seppmail.cloud (Postfix) with ESMTP id 4fMFP14GqWz1vgl; Thu, 26 Feb 2026 16:14:29 +0100 (CET) X-SEPP-Suspect: dd2879324d1946c18c5c9516f0531d3f Received: from hz-scan09.de.seppmail.cloud (unknown [10.11.0.50]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by hz-glue05.de.seppmail.cloud (Postfix) with ESMTPS id 4fMFP13k7Zz1x0r; Thu, 26 Feb 2026 16:14:29 +0100 (CET) Received: from hz-scan09 (localhost [127.0.0.1]) by hz-scan09.de.seppmail.cloud (Postfix) with SMTP id 4fMFP133D2z19TK; Thu, 26 Feb 2026 16:14:29 +0100 (CET) Received: from hz-m365gate01.de.seppmail.cloud (unknown [10.11.0.27]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-scan09.de.seppmail.cloud (Postfix) with ESMTPS; Thu, 26 Feb 2026 16:14:28 +0100 (CET) Received: from GVAP278CU002.outbound.protection.outlook.com (mail-switzerlandwestazlp17010006.outbound.protection.outlook.com [40.93.86.6]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mail.protection.outlook.com", Issuer "DigiCert Cloud Services CA-1" (not verified)) by hz-m365gate01.de.seppmail.cloud (Postfix) with ESMTPS id 4fMFNz4C6nz2sqD; Thu, 26 Feb 2026 16:14:27 +0100 (CET) Received: from ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:80::5) by ZRAP278MB0963.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:49::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.14; Thu, 26 Feb 2026 15:14:25 +0000 Received: from ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM ([fe80::311:4b5c:48da:9514]) by ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM ([fe80::311:4b5c:48da:9514%5]) with mapi id 15.20.9654.013; Thu, 26 Feb 2026 15:14:25 +0000 From: Filip Jensen To: morbidrsa@gmail.com Cc: linux-kernel@vger.kernel.org, Filip Jensen , Jose Javier Rodriguez Barbarin Subject: [PATCH 2/3] mcb: Fix detection of iomapped pci devices Date: Thu, 26 Feb 2026 16:13:38 +0100 Message-Id: <20260226151339.48800-3-dev-Felipe.Jensen@duagon.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260226151339.48800-1-dev-Felipe.Jensen@duagon.com> References: <20260226151339.48800-1-dev-Felipe.Jensen@duagon.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0019.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:47::9) To ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:80::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: ZR0P278MB1218:EE_|ZRAP278MB0963:EE_|AM4PEPF00025F9B:EE_|GV0P278MB1768:EE_ X-MS-Office365-Filtering-Correlation-Id: e232ccef-8e99-4888-394e-08de7549bd5d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info-Original: xXY8xpTwGJrEy7IZOqNFaavZXGF9sbhWmuOZaIRBsF3gaWeg0eKZYiHXBsbAkChgi2c+uO7mz2IB4dgA4J/BqcauDe3a7KwPUbrX06wbJ9HqfPI46rSJWne7vEpgakobOvfEr3ULi9mkOgOqYW/UG1Z0cfic5QUL9EmqMsSMuwEZSJMbfkBG1/tua4rHghzFRpHIh5ZirIUJ1PvFa7gIBz25s8lbPgcMZDnRtmXU/zBiERqmKZNHmWZxG+4NPYUcSiAFOrBhvULMJe9ZjLnuG9/NkgOdFevHdcq+pHMTlJ865yqTP98AbK1w6qfmEqBUdBln7xExlnq2lc201ZV/lTcSlHur2wVvdeIuQurbiqgJZpOm8gFHk1qVOHXDp16rYsYYibIXWOXSA7vrhyDZk4e8ZvECM1HvWkQjcOX2pAYfvAieH3OHpfrh/hjKmEauhEzbwN6Dxi21HcjfR0RGp6nbN2v8QBp+r2qHNd1glfeDG1nYt+PEySXLlfdkuK12KckniM940gi1A0Yx7MpgsuZZEySTTJ8C8dgChPTyp8shvYJv0aDrz1eaUjpKklajqFrewXRznF8ovk7j4yRjcGfqMrpg3JYmcSfCvS4Qd/PjWf9j6YRJ4FYleqm27L66LU4Fi5hGarx8yqLUS03mNr91Il+OViawFOigsUa0PSH9p5BWn02tUJGbOC+izzrECD6/NKCBEsHBc8wqU9Bn+KKWnxAfuSXypux2QMENZ4lueKaizkS+H5VNLE9EMagk8AsTFZNAnquUr3LXYxNzuE7jv3K0TcPpL4dhZSJi2cE= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZRAP278MB0963 X-SEPP-CCCVersion: 2025-12-11T08:12:51+01:00 9ed91da2 X-EOPAttributedMessage: 0 X-MS-Exchange-SkipListedInternetSender: ip=[40.93.86.6];domain=GVAP278CU002.outbound.protection.outlook.com X-MS-Exchange-ExternalOriginalInternetSender: ip=[40.93.86.6];domain=GVAP278CU002.outbound.protection.outlook.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM4PEPF00025F9B.EURPRD83.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: fe3b41f6-7df2-494a-02fe-08de7549ba76 X-SM-ruleversion: 2.1.0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|10070799003|35042699022|36860700013|14060799003|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?LBHd/hBiXku4D0f/ljnSM3iEgKOhY0cc9iEsAhWwlP4eClhjAdxEg2skcbuQ?= =?us-ascii?Q?6cvM35amv570GAYUU65MKptTW56iWh1eFL+bOPkcHi16RthcOOX6i8j1wn/w?= =?us-ascii?Q?u/iTMYofxBHSKfUIwHkYKf1oT4VSHnhiDrNioLLgpvpq6gNEjJ/shvpuXZuQ?= =?us-ascii?Q?9qRT3UHUCNgWk12bWLKuGpdNO/vbealnWuRl+iUAKFOM4kYmPkBDm5TtsNwL?= =?us-ascii?Q?pYE7Bcd/lCy3KwLWG27Myn1nfwaOlJz/WtZLX1dMuxEMuJ0H1RfFWf1jrO/G?= =?us-ascii?Q?mW5l1pTPpy7SbMO7sdBT2klh6YSp1IoFsF/bXaRIn7PCoA10OCXraGSD3BiO?= =?us-ascii?Q?wu7KItNa5wVQ5dGSfBOdoIbQVSSD49kD4wqC9nzYzhKknhGPnfOM6tWnCFGv?= =?us-ascii?Q?mgzZIMzIHM+oOvhyKP1SArg5LwYRLKwueF/KrNekmW4CxOVqYLpRxgdbZRWx?= =?us-ascii?Q?uX5uVsYD65FNbU3iYwseneO+iMB1ydoQy/IpePbyhyaHOARTTiyl/QoKdd6I?= =?us-ascii?Q?m/XgaU5MGinuO9cwuLiz5AVOJt26rQdXi2Gx5RRURt57hHe0YuBpcitjhzeq?= =?us-ascii?Q?IQhEEZUoijlC/IU+2NEiYFR6LmiPVEiY1DrilLnaW7vnvYsAOljjBTum+cte?= =?us-ascii?Q?nc7o0cobQNvT+F4x21iOEvERqhvhIJLxwCVj4lU4TEIBu/ahun2QpzByVKOI?= =?us-ascii?Q?RvtE6UeidonCEEjLFA76MYTaCeZGz8PuOAFPPYhBNiPTX7/XWZv+XfD8TdmE?= =?us-ascii?Q?47NigHsQiXUuqVhVth4hIqDdYFq5PgK8gelEv7UX5lakuFf32JYtPFPFHC2n?= =?us-ascii?Q?vHedIIPon4gOk2wGBR2c+RJ8ZvwB+3ZUegSR5H3LWBULS6sfhbLYNFb2fgLO?= =?us-ascii?Q?3UFUZxQBUZY/KiDy5Vcc2OY63uAyMPCOupIWv0PI27IAiypigFYYypNaPYti?= =?us-ascii?Q?WTheip63jFCheZxd8x6Ere/Nn/lFvA1e4umDBQoXef2CIOfuFn4m9QoyXAS9?= =?us-ascii?Q?HkV5CUOtksmu5vko+tDoSdvWQwUnAXgJ+n/0mweKEKYWKYkDcL734ZBnnQFZ?= =?us-ascii?Q?8mHMq5L3hrAzeL1B8SO/DpLFtV/j+jjymM9HycKKpohtmDuohYpf1k2wydjN?= =?us-ascii?Q?Y0v0GtxQJCri?= X-Forefront-Antispam-Report: CIP:2a01:4f8:a0:13df::219;CTRY:CH;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVAP278CU002.outbound.protection.outlook.com;PTR:mail-switzerlandwestazlp17010006.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(10070799003)(35042699022)(36860700013)(14060799003)(376014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: v24sILwmbc9gjJwMUf5gH0gz8pvcyhBZSN9RFFkJSgEYwO3gbJaSKedpTP+ydUcXX2xfR+a+I+ryIOeOyFhXwcQ33FCqPimO4QeOpAlQEbekTVVUfs8yp0pfH2si7GGJMf0F5VXNbe5Fy7VZyR4+CgzeVjpkDtCcOIkuYwMu5HuibVmBqrn6KALIRNC42GLFR42KqZXCGzKYQyAz5nvl0TekWgZIsk4VoWSNAIwhJQYZfP7yG0rB40khECTX3QWzaehDnlViEGsxXhAMtncASopWICTi42orCmNXEYeXwLxVBeRHxTPCaivGmfUap/jb8jRCsulm9DYnc9bg/YTZNlRBcA9sLj5obttVeUl6FeOSgqVWm5cq6JLKYchnzaB2QLnhK2WELbh736LOTIP+hdEF1l4qEH3S5uyHq6CoSvyZi4ep6jdS/Hbr4s+b7Oiz X-OriginatorOrg: duagon.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 15:14:30.2345 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e232ccef-8e99-4888-394e-08de7549bd5d X-MS-Exchange-CrossTenant-Id: e5e7e96e-8a28-45d6-9093-a40dd5b51a57 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e5e7e96e-8a28-45d6-9093-a40dd5b51a57;Ip=[2a01:4f8:a0:13df::219];Helo=[hz-deliver01.de.seppmail.cloud] X-MS-Exchange-CrossTenant-AuthSource: AM4PEPF00025F9B.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV0P278MB1768 Content-Type: text/plain; charset="utf-8" The mcb driver in a PCI bus is not detecting if an attached device has an iomapped or a memory mapped BAR, as all the addresses returned by pci_resource_start end in 0. Instead of the low level approach, which is still valid for lpc buses, here it will be used the standard PCI helper pci_resource_flags for checking if the PCI BAR is IO mapped (as it is done in mcb_pci_probe) Reviewed-by: Jose Javier Rodriguez Barbarin Signed-off-by: Filip Jensen --- drivers/mcb/mcb-parse.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/drivers/mcb/mcb-parse.c b/drivers/mcb/mcb-parse.c index 806be67b960d..251be2428873 100644 --- a/drivers/mcb/mcb-parse.c +++ b/drivers/mcb/mcb-parse.c @@ -29,9 +29,9 @@ static int chameleon_parse_bdd(struct mcb_bus *bus, return 0; } =20 -static int chameleon_parse_gdd(struct mcb_bus *bus, - struct chameleon_bar *cb, - void __iomem *base, int bar_count) +static int chameleon_parse_gdd(struct mcb_bus *bus, struct chameleon_bar *= cb, + void __iomem *base, int bar_count, + bool mcb_is_pci_device) { struct chameleon_gdd __iomem *gdd =3D (struct chameleon_gdd __iomem *) base; @@ -76,8 +76,12 @@ static int chameleon_parse_gdd(struct mcb_bus *bus, ret =3D 0; goto err; } - - if (dev_mapbase & 0x01) { + if (mcb_is_pci_device) { + if (pci_resource_flags(to_pci_dev(bus->carrier), mdev->bar) & + IORESOURCE_IO) + goto io_unsupported; + } else if (dev_mapbase & 0x01) { +io_unsupported: pr_info("IO mapped Device (16z%03d) not yet supported\n", mdev->id); ret =3D 0; @@ -125,7 +129,7 @@ static void chameleon_parse_bar(void __iomem *base, } =20 static int chameleon_get_bar(void __iomem **base, struct chameleon_bar **c= b, - struct device *dev) + struct device *dev, bool *mcb_is_pci_device) { struct chameleon_bar *c; int bar_count; @@ -154,6 +158,7 @@ static int chameleon_get_bar(void __iomem **base, struc= t chameleon_bar **cb, =20 chameleon_parse_bar(*base, c, bar_count); *base +=3D BAR_DESC_SIZE(bar_count); + *mcb_is_pci_device =3D false; } else { pdev =3D to_pci_dev(dev); bar_count =3D PCI_STD_NUM_BARS; @@ -164,6 +169,7 @@ static int chameleon_get_bar(void __iomem **base, struc= t chameleon_bar **cb, c[i].addr =3D pci_resource_start(pdev, i); c[i].size =3D pci_resource_len(pdev, i); } + *mcb_is_pci_device =3D true; } =20 *cb =3D c; @@ -182,6 +188,7 @@ int chameleon_parse_cells(struct mcb_bus *bus, void __i= omem *base) int ret; u32 hsize; u32 table_size; + bool mcb_is_pci_device; =20 hsize =3D sizeof(struct chameleon_fpga_header); =20 @@ -207,7 +214,8 @@ int chameleon_parse_cells(struct mcb_bus *bus, void __i= omem *base) memcpy(bus->name, header->filename, CHAMELEON_FILENAME_LEN); bus->name[CHAMELEON_FILENAME_LEN] =3D '\0'; =20 - bar_count =3D chameleon_get_bar(&p, &cb, bus->carrier); + bar_count =3D + chameleon_get_bar(&p, &cb, bus->carrier, &mcb_is_pci_device); if (bar_count < 0) { ret =3D bar_count; goto free_header; @@ -216,7 +224,8 @@ int chameleon_parse_cells(struct mcb_bus *bus, void __i= omem *base) for_each_chameleon_cell(dtype, p) { switch (dtype) { case CHAMELEON_DTYPE_GENERAL: - ret =3D chameleon_parse_gdd(bus, cb, p, bar_count); + ret =3D chameleon_parse_gdd(bus, cb, p, bar_count, + mcb_is_pci_device); if (ret < 0) goto free_bar; p +=3D sizeof(struct chameleon_gdd); --=20 2.34.1 From nobody Thu Apr 16 17:38:30 2026 Received: from ZR1P278CU001.outbound.protection.outlook.com (mail-switzerlandnorthazon11022107.outbound.protection.outlook.com [40.107.168.107]) (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 1E4473F0746 for ; Thu, 26 Feb 2026 15:14:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.168.107 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772118880; cv=fail; b=nKrC5iyIzp45An1DjpB2Q+fD0uMwDntlL0wfPAnCOHp0jyxRRqr5007Ut+qhPrwBog4VcLWFIpPG5siy1tigpLV6k0ywajlB51bYlpcYDfwXpb53cpzNnenvzqHCbCZtFxnY8ev8aN2MN5CUpreuq8IGPAIgw17l9kcAfIeRgcE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772118880; c=relaxed/simple; bh=MT2OGRG90PwJlWvXaHCNbdQWSCkxIRWVC3K2/l3rnrM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=sggZmvEd9fR6aAvhIg0WaDK6K2U1hdABDo0PtadWUdTfuJQgoKncbN0MBd+MgkxNp/YyoOkQXxRqKObvsqQ7lev97NCwn4tjGudZF2KwSS0gqpoH2PBYoIE7BQ5R9ObUHisJg/l3f2FaNBqjxG2YdW1iGeur7dHbPcwjV6sP4Nc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com; spf=pass smtp.mailfrom=duagon.com; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b=dvOMheIX; arc=fail smtp.client-ip=40.107.168.107 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=duagon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=duagon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=duagon.com header.i=@duagon.com header.b="dvOMheIX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=K4JFu4hE/STcE5UXK9bvB2H+1B646qDNG8KvbAAgqp9qdUeEDaUaVg1pq48KGl6/HeAjeE8PS6u9zjblQTjNsngTxBfx0kIGDzDixoUJl8GxMO5tyUnC+YZTNFfFD629yv1l4tbmiJzzFIp28YX8nMf8/RFzfV6q8XvYvkv9NwbzVjd9t85r6Wt6Vo+YiBTlhnwa4XbNTeblw+H4mH3VZ7de3RtbGRPLTj8oxxtb9GGB0B+DCllkjjC5WZI3NG8p4eDdNMCQl9zX5yFV1NOF5OFdp6NdH2s0nbRGumElfj5MANfNuAuPYUeGrK01LwJDQjZTDV67SJDaMfnpqpnQzg== 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=mKQcSfaOqpMzfriev39CpHcy8B4HS0uxQyxEBG67c0I=; b=Ld7ELl91w/Xtnt8DhWKaTsAY8sHuoDxCjHOoymYsjMEBK2j1ilcG1a07IN3bfkNyZEHbhNQeX+jxEFArWmaaLkR33J1l540FT9kgUF/wglivfBdg35EqD4ABp5ndvRcWOFZqzMznDeA/BzMtBfFrDdmHlErPZER+3SBnPpPvhP99z7szDzROqnfUuufEpVPSbTSYQVsyjRZVxEfP0M45dY5pAo/W/oPPnfak4d8kVzNIcWY44rbbIvpSYBVebCRXS9MHgnb9QKnBrf7s7frnOAJoeE5dwW+3YyWf2iOQApQhcmHDUEZXhh1hoGJlJdJdIhy5+BiAPsJEczBjseyMcg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.93.85.54) smtp.rcpttodomain=gmail.com smtp.mailfrom=duagon.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=duagon.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=duagon.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mKQcSfaOqpMzfriev39CpHcy8B4HS0uxQyxEBG67c0I=; b=dvOMheIX+ynUf9dRTkXScrQhdyUofrkeBu6CVMbC6rRboNEVthOZcN07g7KWgMI/RdbUjz4QMVTjrm9wbgNzDkf9uPcwQeCfQNyf73fnuw7ZRNJxufQrmrImfAXZJWfAiDCmo1pfE2BvhjpwaC+qxN21LMmFbwOuV57Rar/mFBA= Received: from AS4P191CA0011.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:5d5::9) by GVAP278MB0117.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:23::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.14; Thu, 26 Feb 2026 15:14:34 +0000 Received: from AMS0EPF000001AD.eurprd05.prod.outlook.com (2603:10a6:20b:5d5:cafe::25) by AS4P191CA0011.outlook.office365.com (2603:10a6:20b:5d5::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.24 via Frontend Transport; Thu, 26 Feb 2026 15:14:31 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.93.85.54) smtp.mailfrom=duagon.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=duagon.com; Received-SPF: Pass (protection.outlook.com: domain of duagon.com designates 40.93.85.54 as permitted sender) receiver=protection.outlook.com; client-ip=40.93.85.54; helo=ZR1P278CU001.outbound.protection.outlook.com; pr=C Received: from hz-deliver02.de.seppmail.cloud (2a01:4f8:272:5fe6::218) by AMS0EPF000001AD.mail.protection.outlook.com (2603:10a6:20f:fff4:0:9:0:9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.12 via Frontend Transport; Thu, 26 Feb 2026 15:14:34 +0000 Received: from hz-glue06.de.seppmail.cloud (unknown [10.11.0.48]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-deliver02.de.seppmail.cloud (Postfix) with ESMTPS id 4fMFP61F12zyRm; Thu, 26 Feb 2026 16:14:34 +0100 (CET) Received: from hz-glue06.de.seppmail.cloud (unknown [172.18.0.8]) by hz-glue06.de.seppmail.cloud (Postfix) with ESMTP id 4fMFP613ycz1wP9; Thu, 26 Feb 2026 16:14:34 +0100 (CET) X-SEPP-Suspect: ef37547d87b54938b222c080a4be5362 Received: from hz-scan02.de.seppmail.cloud (unknown [10.11.0.16]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by hz-glue04.de.seppmail.cloud (Postfix) with ESMTPS id 4fMFP60k9Nz1vtx; Thu, 26 Feb 2026 16:14:34 +0100 (CET) Received: from hz-scan02 (localhost [127.0.0.1]) by hz-scan02.de.seppmail.cloud (Postfix) with SMTP id 4fMFP609Mhz6FSM; Thu, 26 Feb 2026 16:14:34 +0100 (CET) Received: from hz-m365gate02.de.seppmail.cloud (unknown [10.11.0.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hz-scan02.de.seppmail.cloud (Postfix) with ESMTPS; Thu, 26 Feb 2026 16:14:32 +0100 (CET) Received: from ZR1P278CU001.outbound.protection.outlook.com (mail-switzerlandnorthazlp17012054.outbound.protection.outlook.com [40.93.85.54]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (secp384r1) server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mail.protection.outlook.com", Issuer "DigiCert Cloud Services CA-1" (not verified)) by hz-m365gate02.de.seppmail.cloud (Postfix) with ESMTPS id 4fMFP35wC8z2w8c; Thu, 26 Feb 2026 16:14:31 +0100 (CET) Received: from ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:80::5) by ZRAP278MB0963.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:49::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.14; Thu, 26 Feb 2026 15:14:29 +0000 Received: from ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM ([fe80::311:4b5c:48da:9514]) by ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM ([fe80::311:4b5c:48da:9514%5]) with mapi id 15.20.9654.013; Thu, 26 Feb 2026 15:14:29 +0000 From: Filip Jensen To: morbidrsa@gmail.com Cc: linux-kernel@vger.kernel.org, Filip Jensen , Jose Javier Rodriguez Barbarin Subject: [PATCH 3/3] mcb: refactor the bus operations out of the common code Date: Thu, 26 Feb 2026 16:13:39 +0100 Message-Id: <20260226151339.48800-4-dev-Felipe.Jensen@duagon.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260226151339.48800-1-dev-Felipe.Jensen@duagon.com> References: <20260226151339.48800-1-dev-Felipe.Jensen@duagon.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MA3P292CA0019.ESPP292.PROD.OUTLOOK.COM (2603:10a6:250:47::9) To ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:80::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: ZR0P278MB1218:EE_|ZRAP278MB0963:EE_|AMS0EPF000001AD:EE_|GVAP278MB0117:EE_ X-MS-Office365-Filtering-Correlation-Id: 35cdc0bc-784b-4825-5612-08de7549bfd4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info-Original: WFDSDkuRevyV2Kx7+6B9a7CZ92IaT6h7PGwE2/JKU12jtiUkPIxeQm86wqFa4/1vUZIH5K7a8DEmN7zHwTLRspSzZP/9ZbPHgy+mgejNdqD4BeXzriaoVJWjaMd1l2wggk3Vscl5trL3sITZA/ANREszm7BdkXwv+8Ih5sGNXkh3/qwd/q/0Yi4N9TWA+36MQwVLxiEwkBrEvZMHhOhWZUQis49ZMl96GWQ4YGPxxKYF86jJfUE+lvt+YLm95QnQEGdQDaDX+Mr5JOPuQLwMby7Xb0xMij3J0M7Lh+mXlpxdxzLGqDyKJl32PoKIya0Zj0SdeR/elDKiFr6IcFUK+t9uyOFKkTJ7/h58Evw9mXS7JYS/TP285Zd9YsAGtnis/Z0nYklVBFqvBsPKbjxvQgXCetmYf0OOpJpGluT7l8QrzukOYnG4hxu63cOiP9ZQbWPNBE/lmpo+ZIsQd1eHuQIfi8LSHknkQWWz7ez4FKKMbslflwTPJEe5yhH0Oq2I+v/AHsznEd9IR3kQT/R4t+sJ0/EvUbAeLbJDaFyyPYeyzJzBJI1WJy5XDoWeoh6Iw02bip676K7D4BBknAjomMuh6cB3BPbwHkVcLuVryBo5SUKd6zzlOVepgyQAkwMf7suuBgYWsvTm74sgmTnkRb8xj98nTh1MAyUpkFMBeekoBXGEiOTs6Iu87zC3nkOrbWY7iGNMko2NYYop4OnSJdHB6cNKoH4g2QAVI8CauDk0+m7MT9SAYIIFyZOHQOk/1WTt5G6dq97/xSiuS6UAu+hO2D5d/uoQ8TS7i08KDgc= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZR0P278MB1218.CHEP278.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZRAP278MB0963 X-SEPP-CCCVersion: 2025-12-11T08:12:51+01:00 9ed91da2 X-EOPAttributedMessage: 0 X-MS-Exchange-SkipListedInternetSender: ip=[40.93.85.54];domain=ZR1P278CU001.outbound.protection.outlook.com X-MS-Exchange-ExternalOriginalInternetSender: ip=[40.93.85.54];domain=ZR1P278CU001.outbound.protection.outlook.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS0EPF000001AD.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: db1aa416-d91c-4b73-6950-08de7549bca7 X-SM-ruleversion: 2.1.0 X-Microsoft-Antispam: BCL:0;ARA:13230040|14060799003|36860700013|10070799003|82310400026|35042699022|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?6SCoRUorr85n1zgTaM7kFSWWUZ8E6Vn3EFmEA9KpY8dxj6s55paxR9sq/Hlb?= =?us-ascii?Q?sfHDOyzr1MbWu931y4trkacMGk0pIw9WGAyn3oMreggCvA9wioKtsUyGVJPJ?= =?us-ascii?Q?RkvW7CnZXlHdxMbAgTGkOez81siRjwFKzZ5cIbv3AAjJcGYYCWWn5qHWX/0u?= =?us-ascii?Q?gaOoPXoZKyWA+CmG9KTYUGVxzAl5sI3cU+gSlokJnwmHJ6DNo7iWFc3sAeBM?= =?us-ascii?Q?5G3fDqoES8vngjBBDVsGo5qXycoC0Udy2cnhlpE/q6uMaOWFen4nbU1FqNM4?= =?us-ascii?Q?6jqdBtgd+Y0VtM5RRRuBLU47dyX3AYRWLvHo3otiOWRsTBIirBI8UJwSBulK?= =?us-ascii?Q?daEhz8H0eQBVD30+W7l/aDu//B1QBr/aScdZwaB93LO58guf5l8QcfyW1F+N?= =?us-ascii?Q?fDcszcF+1062YB3gEYoT7xBj6z45V6mmLjoNlUjPYFAJdJvVaeUuiLkfpB5p?= =?us-ascii?Q?4EJ9sh/Zj34Uo9XmkSecBJjOGVvkG+hDX/vm8jYKw8NiEfTX6Hg1LDV62BSn?= =?us-ascii?Q?Idk7PjpxDsYIqRwMgoSg9lE9HRwt8TOGYoSEScyeKYeeFdJPzBZ20KtcyRgh?= =?us-ascii?Q?xfqEi58NFgk9r+ucDDsY9Ls6k5DJoeEEVn7Dya+r8olr/+K4/mQlpSmlb6zx?= =?us-ascii?Q?V5J7MDnnWj2uOezl1sKMXyjOhY+quIJCZk1xTLhyIOeCQ9G7Ad3qshDniKii?= =?us-ascii?Q?FRFNCnae8d7W+08Ooo8gdOop3TuldoGzrCS9MEnu4pA3Ww7kj7aYuh+ygVJa?= =?us-ascii?Q?2YgI05YS8meib+45EjKYQyvOldytAz1AoyP1zJLa+UAlIQMiKTNu8skqrHUH?= =?us-ascii?Q?qz0V1hiUJQXp3bFQ6euAQPtcXoMd/cJU9muT3TdygAuRhXEJFVIIllsjru2G?= =?us-ascii?Q?MCK7oYkYVYvlv0qTflTS39gEq8tZpobLKgRQYt85F0gO1RfFaSQhlIwT7dRx?= =?us-ascii?Q?7VE+sFCeLYpPrHtKZD2YsmZ5PhBbR/als5g2YIqMDWjqo18YfnJGa8SmIfsF?= =?us-ascii?Q?LBHNwBNKPHNLlRVOfvXNaJ8I4pX6qqQ/DbI5cjL8BmF4vnPpdVB+o1MGWfxG?= =?us-ascii?Q?Il82/SzFTA/vEoDcgkySOZS5IeRdWAAomEtE1is5QJlq0zj1hki4suCIildP?= =?us-ascii?Q?nSoNpRUXMaeZ?= X-Forefront-Antispam-Report: CIP:2a01:4f8:272:5fe6::218;CTRY:CH;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ZR1P278CU001.outbound.protection.outlook.com;PTR:mail-switzerlandnorthazlp17012054.outbound.protection.outlook.com;CAT:NONE;SFS:(13230040)(14060799003)(36860700013)(10070799003)(82310400026)(35042699022)(1800799024)(376014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Aj9pLkd0CsxEdO9V2C3rjxs3cchxujTe7MD4HcwpomFvcqHH68W2avtfnHD5DYca9RNpoeNklGQPEj8J7GeJdXUzPM0XKv/1hmmYK8tpHunkxnl+D8AEWBi9UTfjH0CJTmAP8kwy/+aTGaEl6+e8GVqIbIpS9AeYozrsUvxMCdDIxMf48Wzu6PZPRKVh3OsQ+fFMdX5dByqGXNOfNlAcY73t9jIjuxGx5DkZvXmp6/4xlvXb+jC0QaERusHyXE3WrO9GmFTWzxtaNXeylW6V7KQL5EmRgSBnE5VrxuuPMYyhUarSw/l4wa2hx9rxe4GCH4TQOOAOtFL/txv10m+vq4bhC4SogEpmLrzAZicvQqWTl+uLXEeawp/tU5zVy+GGNtij7e062NCIIaD2vDPrw5hzDyRXlAODcBUcNrldHpBtd/ljPu4Jcp1J/8HU1/cN X-OriginatorOrg: duagon.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 15:14:34.3760 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 35cdc0bc-784b-4825-5612-08de7549bfd4 X-MS-Exchange-CrossTenant-Id: e5e7e96e-8a28-45d6-9093-a40dd5b51a57 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e5e7e96e-8a28-45d6-9093-a40dd5b51a57;Ip=[2a01:4f8:272:5fe6::218];Helo=[hz-deliver02.de.seppmail.cloud] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF000001AD.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVAP278MB0117 Content-Type: text/plain; charset="utf-8" Two operations can be identified that are bus dependent and are needed in both modules mcb-pci and mcb-lpc. In order to avoid having info of both buses in common code, two callbacks operations (is_bar_iomapped and get_bars) are defined and passed as parameters to the mcb-parser. Reviewed-by: Jose Javier Rodriguez Barbarin Signed-off-by: Filip Jensen --- drivers/mcb/mcb-internal.h | 9 +++- drivers/mcb/mcb-lpc.c | 56 ++++++++++++++++++++++++- drivers/mcb/mcb-parse.c | 86 ++++---------------------------------- drivers/mcb/mcb-pci.c | 40 +++++++++++++++++- 4 files changed, 109 insertions(+), 82 deletions(-) diff --git a/drivers/mcb/mcb-internal.h b/drivers/mcb/mcb-internal.h index 180ba97cfc08..3152cb4bd1b5 100644 --- a/drivers/mcb/mcb-internal.h +++ b/drivers/mcb/mcb-internal.h @@ -122,6 +122,13 @@ struct chameleon_bar { #define CHAMELEON_BAR_MAX 6 #define BAR_DESC_SIZE(x) ((x) * sizeof(struct chameleon_bar) + sizeof(__le= 32)) =20 -int chameleon_parse_cells(struct mcb_bus *bus, void __iomem *base); +struct chameleon_parse_ops { + bool (*is_bar_iomapped)(struct device *dev, struct chameleon_bar *cb, + int bar); + int (*get_bars)(void __iomem **base, struct chameleon_bar **cb, + struct device *dev); +}; =20 +int chameleon_parse_cells(struct mcb_bus *bus, void __iomem *base, + struct chameleon_parse_ops *cham_bus_ops); #endif diff --git a/drivers/mcb/mcb-lpc.c b/drivers/mcb/mcb-lpc.c index d3f48e1ea08b..9dbf9604e5a9 100644 --- a/drivers/mcb/mcb-lpc.c +++ b/drivers/mcb/mcb-lpc.c @@ -19,6 +19,60 @@ struct priv { void __iomem *base; }; =20 +static int mcb_lpc_get_bars(void __iomem **base, struct chameleon_bar **cb, + struct device *pdev) +{ + struct chameleon_bar *c; + int bar_count; + __le32 reg; + char __iomem *p =3D *base; + int i; + + /* + * For those devices which are not connected + * to the PCI Bus (e.g. LPC) there is a bar + * descriptor located directly after the + * chameleon header. This header is comparable + * to a PCI header. + */ + reg =3D readl(*base); + + bar_count =3D BAR_CNT(reg); + if (bar_count <=3D 0 || bar_count > CHAMELEON_BAR_MAX) + return -ENODEV; + + c =3D kzalloc_objs(struct chameleon_bar, bar_count); + if (!c) + return -ENOMEM; + + /* skip reg1 */ + p +=3D sizeof(__le32); + + for (i =3D 0; i < bar_count; i++) { + c[i].addr =3D readl(p); + c[i].size =3D readl(p + 4); + + p +=3D sizeof(struct chameleon_bar); + } + *base +=3D BAR_DESC_SIZE(bar_count); + *cb =3D c; + + return bar_count; +} + +static bool mcb_is_lpc_bar_iomapped(struct device *dev, + struct chameleon_bar *cb, int bar) +{ + if (cb[bar].addr & 0x01) + return true; + return false; +} + +static struct chameleon_parse_ops lpc_parse_ops =3D { + .is_bar_iomapped =3D mcb_is_lpc_bar_iomapped, + .get_bars =3D mcb_lpc_get_bars, +}; + static int mcb_lpc_probe(struct platform_device *pdev) { struct resource *res; @@ -56,7 +110,7 @@ static int mcb_lpc_probe(struct platform_device *pdev) if (IS_ERR(priv->bus)) return PTR_ERR(priv->bus); =20 - ret =3D chameleon_parse_cells(priv->bus, priv->base); + ret =3D chameleon_parse_cells(priv->bus, priv->base, &lpc_parse_ops); if (ret < 0) { goto out_mcb_bus; } diff --git a/drivers/mcb/mcb-parse.c b/drivers/mcb/mcb-parse.c index 251be2428873..f5e86b6e2e4f 100644 --- a/drivers/mcb/mcb-parse.c +++ b/drivers/mcb/mcb-parse.c @@ -6,7 +6,6 @@ #include #include =20 -#include #include "mcb-internal.h" =20 #define for_each_chameleon_cell(dtype, p) \ @@ -31,7 +30,7 @@ static int chameleon_parse_bdd(struct mcb_bus *bus, =20 static int chameleon_parse_gdd(struct mcb_bus *bus, struct chameleon_bar *= cb, void __iomem *base, int bar_count, - bool mcb_is_pci_device) + struct chameleon_parse_ops *cham_ops) { struct chameleon_gdd __iomem *gdd =3D (struct chameleon_gdd __iomem *) base; @@ -76,12 +75,8 @@ static int chameleon_parse_gdd(struct mcb_bus *bus, stru= ct chameleon_bar *cb, ret =3D 0; goto err; } - if (mcb_is_pci_device) { - if (pci_resource_flags(to_pci_dev(bus->carrier), mdev->bar) & - IORESOURCE_IO) - goto io_unsupported; - } else if (dev_mapbase & 0x01) { -io_unsupported: + + if (cham_ops->is_bar_iomapped(bus->carrier, cb, mdev->bar)) { pr_info("IO mapped Device (16z%03d) not yet supported\n", mdev->id); ret =3D 0; @@ -111,73 +106,8 @@ static int chameleon_parse_gdd(struct mcb_bus *bus, st= ruct chameleon_bar *cb, return ret; } =20 -static void chameleon_parse_bar(void __iomem *base, - struct chameleon_bar *cb, int bar_count) -{ - char __iomem *p =3D base; - int i; - - /* skip reg1 */ - p +=3D sizeof(__le32); - - for (i =3D 0; i < bar_count; i++) { - cb[i].addr =3D readl(p); - cb[i].size =3D readl(p + 4); - - p +=3D sizeof(struct chameleon_bar); - } -} - -static int chameleon_get_bar(void __iomem **base, struct chameleon_bar **c= b, - struct device *dev, bool *mcb_is_pci_device) -{ - struct chameleon_bar *c; - int bar_count; - __le32 reg; - u32 dtype; - struct pci_dev *pdev; - - /* - * For those devices which are not connected - * to the PCI Bus (e.g. LPC) there is a bar - * descriptor located directly after the - * chameleon header. This header is comparable - * to a PCI header. - */ - dtype =3D get_next_dtype(*base); - if (dtype =3D=3D CHAMELEON_DTYPE_BAR) { - reg =3D readl(*base); - - bar_count =3D BAR_CNT(reg); - if (bar_count <=3D 0 || bar_count > CHAMELEON_BAR_MAX) - return -ENODEV; - - c =3D kzalloc_objs(struct chameleon_bar, bar_count); - if (!c) - return -ENOMEM; - - chameleon_parse_bar(*base, c, bar_count); - *base +=3D BAR_DESC_SIZE(bar_count); - *mcb_is_pci_device =3D false; - } else { - pdev =3D to_pci_dev(dev); - bar_count =3D PCI_STD_NUM_BARS; - c =3D kzalloc_objs(struct chameleon_bar, bar_count); - if (!c) - return -ENOMEM; - for (int i =3D 0; i < bar_count; ++i) { - c[i].addr =3D pci_resource_start(pdev, i); - c[i].size =3D pci_resource_len(pdev, i); - } - *mcb_is_pci_device =3D true; - } - - *cb =3D c; - - return bar_count; -} - -int chameleon_parse_cells(struct mcb_bus *bus, void __iomem *base) +int chameleon_parse_cells(struct mcb_bus *bus, void __iomem *base, + struct chameleon_parse_ops *cham_bus_ops) { struct chameleon_fpga_header *header; struct chameleon_bar *cb; @@ -188,7 +118,6 @@ int chameleon_parse_cells(struct mcb_bus *bus, void __i= omem *base) int ret; u32 hsize; u32 table_size; - bool mcb_is_pci_device; =20 hsize =3D sizeof(struct chameleon_fpga_header); =20 @@ -214,8 +143,7 @@ int chameleon_parse_cells(struct mcb_bus *bus, void __i= omem *base) memcpy(bus->name, header->filename, CHAMELEON_FILENAME_LEN); bus->name[CHAMELEON_FILENAME_LEN] =3D '\0'; =20 - bar_count =3D - chameleon_get_bar(&p, &cb, bus->carrier, &mcb_is_pci_device); + bar_count =3D cham_bus_ops->get_bars(&p, &cb, bus->carrier); if (bar_count < 0) { ret =3D bar_count; goto free_header; @@ -225,7 +153,7 @@ int chameleon_parse_cells(struct mcb_bus *bus, void __i= omem *base) switch (dtype) { case CHAMELEON_DTYPE_GENERAL: ret =3D chameleon_parse_gdd(bus, cb, p, bar_count, - mcb_is_pci_device); + cham_bus_ops); if (ret < 0) goto free_bar; p +=3D sizeof(struct chameleon_gdd); diff --git a/drivers/mcb/mcb-pci.c b/drivers/mcb/mcb-pci.c index 2401c19a8830..6245714646a7 100644 --- a/drivers/mcb/mcb-pci.c +++ b/drivers/mcb/mcb-pci.c @@ -18,6 +18,44 @@ struct priv { void __iomem *base; }; =20 +static int pci_get_bars(void __iomem **base, struct chameleon_bar **cb, + struct device *dev) +{ + struct pci_dev *pdev; + struct chameleon_bar *c; + int bar_count; + + pdev =3D to_pci_dev(dev); + bar_count =3D PCI_STD_NUM_BARS; + c =3D kzalloc_objs(struct chameleon_bar, bar_count); + if (!c) + return -ENOMEM; + for (int i =3D 0; i < bar_count; ++i) { + c[i].addr =3D pci_resource_start(pdev, i); + c[i].size =3D pci_resource_len(pdev, i); + } + + *cb =3D c; + + return bar_count; +} + +static bool is_pci_bar_iomapped(struct device *dev, struct chameleon_bar *= cb, + int bar) +{ + struct pci_dev *pdev; + + pdev =3D to_pci_dev(dev); + if (pci_resource_flags(pdev, bar) & IORESOURCE_IO) + return true; + return false; +} + +static struct chameleon_parse_ops cham_pci_ops =3D { + .is_bar_iomapped =3D is_pci_bar_iomapped, + .get_bars =3D pci_get_bars, +}; + static int mcb_pci_get_irq(struct mcb_device *mdev) { struct mcb_bus *mbus =3D mdev->bus; @@ -86,7 +124,7 @@ static int mcb_pci_probe(struct pci_dev *pdev, const str= uct pci_device_id *id) =20 priv->bus->get_irq =3D mcb_pci_get_irq; =20 - ret =3D chameleon_parse_cells(priv->bus, priv->base); + ret =3D chameleon_parse_cells(priv->bus, priv->base, &cham_pci_ops); if (ret < 0) goto out_mcb_bus; =20 --=20 2.34.1