From nobody Fri Jul 24 23:32:06 2026 Received: from mx07-0057a101.pphosted.com (mx07-0057a101.pphosted.com [205.220.184.10]) (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 416A73E639B for ; Wed, 22 Jul 2026 08:26:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.184.10 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784708822; cv=fail; b=RA0qvmr0DIubTbECHehac9WxgeqqF8BRw4SqTzMoCywsLOngAbY5KGtMwkZRszTxb7nYmxAdhaY3kLu0fMUKsC4/4KCHrA8sRle0mvBJOPpnnm9588ITFPfyleuHIzmOiNLw5TK/McoSZoj7InQyqj2gEJN1HmePQ4D+J52KRAM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784708822; c=relaxed/simple; bh=AsgMq9TqPEKxIvtLbeaYQ0Rh/WMcciFfcoYQVsn+Qyo=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=CKh0f9i3hN2/RbGwblXsH+35kfQ7TN5vWWwA1+9fGHHqhfs0G/1S/cL/msoW48dmvPUp30cJzvYAMb09hEpbIc+nkNuJkb6mQOPD17te9GULvJBYp+UnJk3VN1195AGCDsAvi0HO/HZwbmGLhwafO/YK1zcxxSZP7JtG75WAkFQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=westermo.com; spf=pass smtp.mailfrom=westermo.com; dkim=pass (2048-bit key) header.d=westermo.com header.i=@westermo.com header.b=wqqzj9gZ; dkim=pass (1024-bit key) header.d=beijerelectronicsab.onmicrosoft.com header.i=@beijerelectronicsab.onmicrosoft.com header.b=sxIJb3Ii; arc=fail smtp.client-ip=205.220.184.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=westermo.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=westermo.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=westermo.com header.i=@westermo.com header.b="wqqzj9gZ"; dkim=pass (1024-bit key) header.d=beijerelectronicsab.onmicrosoft.com header.i=@beijerelectronicsab.onmicrosoft.com header.b="sxIJb3Ii" Received: from pps.filterd (m0214197.ppops.net [127.0.0.1]) by mx07-0057a101.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66M50Dec1466028; Wed, 22 Jul 2026 10:26:43 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=westermo.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=270620241; bh= eVo8h3dPNjt9ZOsOCyWfdqc9h1R/IeCWoE7b6A7Fvso=; b=wqqzj9gZ4q6uYLcW SCtf3e/OTKETSuKYod5o5IWOI+4Lv7BMlzpsvXAKr81Ax/Z+U/3CJVNB/It6hqiW cqtjeO/RCD0Tf/LPHWh2JEJqtxZzTKvMrjrJYHozn5JSJyUNcDbfVpMM0GnoiTI1 Q84dh5Nt6dOC6saBFn0ZjHRruB+sanWHyLo4RmrKk5FKVGh0h5dnDhNufbHYV5vn 9r5v1Ft/YEgag5WgI9Wk3Hh7a7CuOiEefkBWMJuBqukhGBwBtOHjCOPfB/J2gCnz MVzHErWaPzpuuxRaVzA66qyiGHFeJc9bIiJmBpkZYVHIjFsBZ+Qxorg1QuAv2VSb yRyOPg== Received: from pa4pr04cu001.outbound.protection.outlook.com (mail-francecentralazon11023109.outbound.protection.outlook.com [40.107.162.109]) by mx07-0057a101.pphosted.com (PPS) with ESMTPS id 4ffwua5729-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 22 Jul 2026 10:26:43 +0200 (MEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WoLOZCQfnJAynaSPc2XuQiTVTHtDKbNiPz2FFW3+hGY83ozcggndF6vvmGPrZQkWNYk3XbEg8lHrWrHzBLTrnsGOnTQfVxSLjmGRdgzuKAassrNZKmcjRBq5fJg+0A01hGvkR4okZQ26OfIW5HaakkIhDpoqr7EHKVQ/4ai8V9sh7pRuCLC8wx+xzyTA/fguVQK2zIIw608ENRzovF01KzivcRFU/PJnL+pOAAFi3+RSD/OmoIp8bLCL4z5QHkkW5kT3LVlicO/sEQfw/pihTAD7RVQ3JaT1MBPeEkrITZJ4B8GpHWZnqPG4mnaERc2nJ/sOjMmbXtjEGD19ImsXww== 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=eVo8h3dPNjt9ZOsOCyWfdqc9h1R/IeCWoE7b6A7Fvso=; b=ysOpGPdO5SWSlQw0Mi1J4FMdliy2mJQ+dDW7lKLOWqZ/D6E+TcJXXiBnny1xKogLMK28hC8QzbbJJjJKUKNCZjPGFJwQRipHdYMWLdpveF9wpkRPf6ob1uRwszXNdNX2COIZY9CPQl4JM2sIHbgqNuBwfxFJG2QZ82eZzYLGO1XtZUtL3wWDoRT2pazYcYDh86oda1ULgnfpRK69zp47z2M6/kBKwl+6z9UAyoBJ/t3bacrpreB6krZBBqFCvna9bBo5YHChmNGiMHZpszOSnqNzmM8BBU2HD5IsvqLr2Gpk/uUG/GFwGgEb8WqSjQlQXwnX2BH5t+AXSUzUocQK0w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=westermo.com; dmarc=pass action=none header.from=westermo.com; dkim=pass header.d=westermo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=beijerelectronicsab.onmicrosoft.com; s=selector1-beijerelectronicsab-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eVo8h3dPNjt9ZOsOCyWfdqc9h1R/IeCWoE7b6A7Fvso=; b=sxIJb3IiZMCmXI9xdBwy3vulU1GhGeX7v6bkZFi7Zlms757G2OYS30nvqDLE0L3EeZcKgAMYshJogx7mBhpOq7X9CliCHDEILv7DGu39t6K8F/NO8f4D1VhCCXJ7QQe3GTgJsrb35FsMjKGP1Zo8PqiPAHjd0b/QCp0L3rBxpKM= Received: from DB9P192MB3090.EURP192.PROD.OUTLOOK.COM (2603:10a6:10:5e2::11) by AM7P192MB0691.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:177::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Wed, 22 Jul 2026 08:26:42 +0000 Received: from DB9P192MB3090.EURP192.PROD.OUTLOOK.COM ([fe80::656d:42d4:bdce:a46b]) by DB9P192MB3090.EURP192.PROD.OUTLOOK.COM ([fe80::656d:42d4:bdce:a46b%6]) with mapi id 15.21.0245.009; Wed, 22 Jul 2026 08:26:42 +0000 From: Alexander Wilhelm Date: Wed, 22 Jul 2026 10:26:34 +0200 Subject: [PATCH RFC v2 1/2] irqchip/ls-scfg-msi: refactor allocation to bitmap_find_free_region() Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260722-irqchip-ls-scfg-msi-add-multi-msi-support-v2-1-24eb208c5d38@westermo.com> References: <20260722-irqchip-ls-scfg-msi-add-multi-msi-support-v2-0-24eb208c5d38@westermo.com> In-Reply-To: <20260722-irqchip-ls-scfg-msi-add-multi-msi-support-v2-0-24eb208c5d38@westermo.com> To: Thomas Gleixner Cc: linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-ClientProxiedBy: GV3P280CA0091.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:8::25) To DB9P192MB3090.EURP192.PROD.OUTLOOK.COM (2603:10a6:10:5e2::11) 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: DB9P192MB3090:EE_|AM7P192MB0691:EE_ X-MS-Office365-Filtering-Correlation-Id: 73cc15ff-f70f-4013-2969-08dee7caf571 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|56012099006|10067099003|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 6MfUHei/b89+k/NVsiZfdPtI/VuRsFN85nN2kPdpAxXGPmIHQnJJAOzb/dXFQuLe6WRetnLa4J98tFE4mXnQ65BMJ2+O7yOQhx4gqsyfeevRKugD0q5njMcYxJZuUnc2WOuYU8gUlhBEyVhDzVLu+Yf87hZo1+aDVOc1kv4gnsBArEyHbFwaf3Foq79U/A0FXrrKU2LbyQj+1vBIRPG5sHU5Dg04zxWBPDqpyuQmwqESWFcbA7ppOWY+cvvvVQJoXk/YLqzHavvc5+6oxhyaxpZ+dOyforpGd9LhmraHSWzLkWn5WTngUc1cUZxuGX2nBu7PD4oLseZcgiksBXVKSnYVx2hCyi6SJ2akB0zLnRdddfr+Fn7znmsOo6wSuDxuIezr9GvztiVXAqHbdA4NPqPsl+IgEuit96oQWIfw1FJVOm02OFtECYFygFmAwqNgoUv8dDx4/z3+bYuMM7KJ5/5Tg4Z3+7Y72T0TjwOAy0hQJfOv1VgQKpQuLI+iwHy9FHVmChkAHDClVm9y7IPASeQWPYZgiaWwJxgEU0L4NKGXIp+j22u/BnW+HnAGzg0PSwh1TQz12xoO3EkaVxz4g47jkm+ZQvbe/jGwbC8z6Z6/LYFUIaIes9Y0kC3lZjKaztMPgyZf0Zi4DmHdQ8J1zdotk59XAu0zFQ8ALWrXwls= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9P192MB3090.EURP192.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(56012099006)(10067099003)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aHZ0VHlCdHIxdk0rOFp0RDhzTm04dFZNVG9GS2xRZ0lhSllaTXZycWt4c09F?= =?utf-8?B?cWdOeGJRSUtEZE1hT21jU3ZsQ3k3elVSZVFLalNwZ2w5M2JmbnlIYVFHbXRy?= =?utf-8?B?R24weG51WWFPYjg1YjYycTlxNVZ3dklEWFBGbjQ5bE1RWnFCVkFrZnVyblpE?= =?utf-8?B?WWVmWkdMdlVaS1ZIZUJuQmhTcWRDbmpMbFJMOUowakZ2Z05pSVlTMjYzRFpK?= =?utf-8?B?UW8yRmtmK3N5VVFXVDZGZ3pZc0E3bEFLeHhHZi9nZll5bXcyWkhYTzBwZGIx?= =?utf-8?B?TURraXhvUW1pSlF4N2lGcHFFanZsdEZJNnhxM0hoaUN2RlVNalBzTFU4cUl0?= =?utf-8?B?YXllbTJYbExXN3RzUTNncEk1NzlKaXB0OFhaNEhieTBJc1lWL2pqeCtMajZz?= =?utf-8?B?ck5Pb1diTWJydlRLbWVIcFRMK1Vvbi91U3pwRWZ6QnNnUmk4dXJ4UU1DbUx3?= =?utf-8?B?b0R3NjB2SEJUNGtXeVZFR3ZYSFJLY3J2cGppWEpYTjNxRjFEa09zRWlkQVlv?= =?utf-8?B?VzhyMW9KKzdGQ3BlcUhRY29TK0xrZ3EvU0sveXpPNzY5SFhWQWJqSXlaaEp1?= =?utf-8?B?UGNvYnIxRXFpaFZzdXhDVm5KS0VVaFRCbXZFWnpSSm54UDdBNkNVNk5nc3Jp?= =?utf-8?B?MDNaWThLUXRLU0hZbUZtaGxoL1JvMTIyaCtjMUJQdjNQZGVabEs5dmZtVzVM?= =?utf-8?B?WGRoamJXdWpCTDhObGF0alN5UmtLdDM4ODlVQlNWSTZLcElDeHVsckovVEZQ?= =?utf-8?B?RVpheXA1cFo1OXpCRy9YbDcvemNmTHROcnhDcG9LL1NsdzhERTl0aU1TTkhQ?= =?utf-8?B?a1pvdXJLaXdwNmhhYXZmcFpaUHRKWWowOHZUdmRsYkxCWXI2N041cHNnRjZJ?= =?utf-8?B?OHVxdFhUM1lBdDNEK2E3YmdwbldGeFVhUXIxMDRLTFZ2d3dpMVYwL2x3aUp4?= =?utf-8?B?U0pJTHdpM2cycmNVdzFCT2o2VlZscWc3TC8zRmJUckd0b2IyS3RWR1pRZEFk?= =?utf-8?B?OW5aRUNDKzE0RCs2V3BrN2VXYmVsSG9RQ2xsOFMrcnFYYVJ4Q0NUbithV0xV?= =?utf-8?B?NVRFT1dQZFptN3N3VXFNK0oveFFsUWNTbXhVRklJQkdIMktBajJvc1VDUzBy?= =?utf-8?B?Z2RBY3JGOVdPUDBTVmJMN3ZDd3hwckN2L2hYa01CSkMybmk3ZEJWS0xLOFlz?= =?utf-8?B?ZEJSTlRheTlFNys2SlpDR1dRdHI1OThSem1YSGY3Mmx0aEdIbW5GMis0cGk2?= =?utf-8?B?MWcvbW1Ba2k2M3hYbzAxRk9tN1B5Q2pNclMvTkk0M1VRVjl4N0l5ZDl3elpD?= =?utf-8?B?RlowdkZFZWJNSWIyQ29BaDRZdWVaZURxY2pKbDdSYnlXTElONktGdGVMVHRo?= =?utf-8?B?K0xVczlGNXpZQ3dXMm1lM213ajBXaVdGVWk5RzlzUDMwQ0Q2RXpqYThVdHNW?= =?utf-8?B?NFJWM0w3NkFTKzVQOXpQb0VaVHg3WVRVOWJSamw0Q3pHN3NIWVhEM2MvZ1JW?= =?utf-8?B?U1Y4YmxnbFE5OG5hTHI1Z0tpS3RNTXJnQWE5d01FKzBJN3cyd1hkQmZFQkJu?= =?utf-8?B?SG5Tdzh2eXhabGRIdlF3dW1ZVXlIQUZKVmlMUHMrdFkxaHl5QWUzbVVVQUpU?= =?utf-8?B?Ni8wbG1TS1FlR3gzQTZPbllXelZ1cERRZDl0ZGwwK0c3TllvNTdIbHBnLzZ2?= =?utf-8?B?dG1GTHhrRFdUK3FHL1JVT2s1MFc1QndsbnJqV2NzT3Y0RHhkTTJLcXBtV2Zq?= =?utf-8?B?ajlpMHVnRkdjTkpmWGJTaWR6QWlJN3lVRVZ1ZUo2aHNtaUR4M2VXV1pZWVJa?= =?utf-8?B?aGkyNm9sWkRVaFcxNmh3Zml2di96TjMzS2wvdWdVZ3lXNHJIeWFSYTg2RjRG?= =?utf-8?B?b1EvU0ZWTXpRMDhMTDJ6Q2FwV0JKTjg5czA3eTV5Njd2NlI0QlZmcjRqSEU0?= =?utf-8?B?UEpRN2Z3d05FT1hvTk9kV3dWZ0NuSVhwT3ZkbkxUbVZxMERiZnBzY0RUdEVu?= =?utf-8?B?NWg5cjBaZEZtS1BFbXd4azZpNEJJMWhSK1BtS1dhS2dDWlVnL0tiNE4zV3FC?= =?utf-8?B?ck5ydGZiR1UrKytzSCsxdkh5NlpmaEtzdzJMUVRUbW11emRTVUhFdnN3cmRU?= =?utf-8?B?NU5YU3dXOXQxalhGdXNVcG0zWlgxcUVEak5SaDVwdEppWmRwbHJweVVFaDJL?= =?utf-8?B?NHEza3ZTTVpQaWxJZFRTbE1oUGl6aVI3TEJIT1FyQ29yRXpRNEZ4YjZCY3gw?= =?utf-8?B?N010QzY3SDB4ZzQwMzBMS0FZK1BkeDdzd3pIaTYwbUwyTWFRNld2VjZCVzNV?= =?utf-8?B?OVpiMjErQkVIbWQ4VW1jdHhSSkFDVnRmN1l0dmxiUUJFUXFRdjJyZz09?= X-Exchange-RoutingPolicyChecked: DfkSH9+92Fbz3SDBTUeRsuVlcTj6wo4v5M52Gmnrh09aiC73V3YMvZKYDI0/5oQyoo5NRcCwEVLMBTjxBKSAEOjeyBODy7bLrKn5b/QFiK0FM3b56b0125T4qaJ685AxS89qa/OGHfyULMOdqkYrINxjNJoxyRSSrgzCt5NUW8y7tW3Jl3Fytea6EX95F1TFQDDlZhYpEpdBrDCbk60PD67n4dJMnhj8oMfL93tYPa1fdsE872MU5d26V0bRS+lIS8nzPkvptBrM0g3S2PUPqrs+jbdZW5f2N6FtNU+khsUI30lN2W9xuDEH5OIqn+uxSEBYLHwIhIo+CWXKxxn0TA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: qKqwzkSzQTkxvcpKVMdRwmFkwQvL6hoz4gZRPCofe3/ndgkU13SoG4q1eAzU8xaGKCEtH/bqOlP2llFFZqEtz/oh35OUjGUbPxRmOjHpBTfOIBPH5O8VqvICh1JvgyxC1m9nAvPX9L8a2VZKlvbCiwjWtUGeCtv+BUp4PbvdB1UhwqlX3j38nC8+wH3dLJSxSM9Iin1XOPqpMBJZA/2OMgC9fWHKTChAQ/pgOffSx0kgjHYb60Sdk4d/dI6VIG+D8/PIrMxVyI2jKyQPB/chHSQdNoQAhD1gQS+iCS8IcOHrMYxHhdpsHoUuYrkUX9WeI1VVq6tJIAJ67JbljSDHeTbqIGvQPJTBhC0Hh6DPvn/XpolW3C7wjzsw6hf/CF+JnLnZGgpyz1rHRZNIh9rBA74g43wNVnYTs1YIk4agoia270cUgAnJ5a48JTK8a8T2pw5ruqnuAwhuSJydw0fGY2vHJPwXPFnvf7WAnnUPhHGt5rFR6kuErtuyvcCjuJNjqKJEMko/YskNZVSboiRSSGnzFButbXRMW1Sggn9jiqxrLKkawzEdDOZ3RXha3A73FuyGRT1bLLIjA4D6ACGtsfUuZ1jYRRsUjmUCRm81gickyUgEtSpYjMLfAfJM7y4l X-OriginatorOrg: westermo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 73cc15ff-f70f-4013-2969-08dee7caf571 X-MS-Exchange-CrossTenant-AuthSource: DB9P192MB3090.EURP192.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jul 2026 08:26:42.2522 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4b2e9b91-de77-4ca7-8130-c80faee67059 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pvjpar/z4q4RHOEhnTKBYNs3bq+5tZO0C3GaqCAiEpMS9MfqnSxjudurKfnce05SsoXeljYc46VQ5s2RwnqNlg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7P192MB0691 X-MS-Exchange-CrossPremises-AuthSource: DB9P192MB3090.EURP192.PROD.OUTLOOK.COM X-MS-Exchange-CrossPremises-AuthAs: Internal X-MS-Exchange-CrossPremises-AuthMechanism: 14 X-MS-Exchange-CrossPremises-Mapi-Admin-Submission: X-MS-Exchange-CrossPremises-MessageSource: StoreDriver X-MS-Exchange-CrossPremises-BCC: X-MS-Exchange-CrossPremises-OriginalClientIPAddress: 104.151.95.196 X-MS-Exchange-CrossPremises-TransportTrafficType: Email X-MS-Exchange-CrossPremises-Antispam-ScanContext: DIR:Originating;SFV:NSPM;SKIP:0; X-MS-Exchange-CrossPremises-SCL: 1 X-MS-Exchange-CrossPremises-Processed-By-Journaling: Journal Agent X-OrganizationHeadersPreserved: AM7P192MB0691.EURP192.PROD.OUTLOOK.COM X-Proofpoint-GUID: TmsQZlAQGuayfzecseRTDliWUeqs9Qz3 X-Authority-Analysis: v=2.4 cv=DvFmPm/+ c=1 sm=1 tr=0 ts=6a607ec3 cx=c_pps a=JPWZPiCYxraT1qhJNtFPCg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=8gLI3H-aZtYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=tr3XZvuDWTETL0Uaxejn:22 a=8ys4xmT3Mru1TjC2zVq1:22 a=N9GNhs4bAAAA:8 a=eUTmcq7pGjQ2J2e9O64A:9 a=QEXdDO2ut3YA:10 a=PZhj9NlD-CKO8hVp7yCs:22 X-Proofpoint-ORIG-GUID: TmsQZlAQGuayfzecseRTDliWUeqs9Qz3 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDA3OCBTYWx0ZWRfX46NN4SScxy2o ZJcRqNUIgeSk2UQh1k/clT+1B5QAhXrtOeH37Op0CkkIdDomUn0e5VVIRd4MvJcUrSzq6vp6XXq eHjjjgJeEyon9GeVUGq567Wmmnx2SRI= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDA3OCBTYWx0ZWRfXwSi9IRvbUvPY OjigOkC3teXAuZLt2g2QsFKp+fVRKC2CWGvJNhAZvlAi3N6BB6re1keXVYSAnilhWQneO9bH9vq FIpPYWmuR7JeRkaWssogF+FMk61QeFfcggp3uH96CwwEgql7Zsamv4owyqHMUPeEuDITY+1H9Ix uTG08jH39yULkcjUHA+eD2Zgtyik9Fg195k29TenPx/2t9bexVGm240dAsmYuR182nhgVo/0yz8 Un9Sl9EzMceimaZJwv2iGuEP/sL0fUnuspQ0fODWQMjE/6g3BFSplP0+Xu0Xo2jWWlK/6cHk1Dz BLgUdE22Q9760U0BKcS9lnpOe0UUacW+930OSoxwHUmU9NCU8taT61ce+JDNTA+MZonz+Em0k6B 3oNVVRWnmYESjhSaRqZTvq42eGra6qkjrA/YwvhImh/jT3Qg4/zNxXJWIf3VFoo7iHf/cv/lV7v 0vm6OBgWwVPLlvZ2EuQ== MSI hwirqs are allocated from a per-instance bitmap. The current bookkeeping picks and marks free bits by hand, treats every allocation as a single vector, and on iommu prepare failure returns without releasing the bit that was just reserved. Enabling multi-MSI requires atomically reserving an aligned power-of-two region under the lock, which the split find/mark sequence cannot express, and every callsite around it must handle a range of vectors instead of one. The current error path also leaks a hwirq on every iommu prepare failure. Switch to the bitmap_find_free_region() family, which reserves order-aligned regions atomically, release on the iommu error path, and range-check and iterate over the requested vector count. The single-vector case stays functionally equivalent; the only externally visible change is -ENOMEM instead of -ENOSPC on exhaustion. Assisted-by: Copilot:claude-opus-4.7 Signed-off-by: Alexander Wilhelm --- drivers/irqchip/irq-ls-scfg-msi.c | 42 ++++++++++++++++++++---------------= ---- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/drivers/irqchip/irq-ls-scfg-msi.c b/drivers/irqchip/irq-ls-scf= g-msi.c index 4910f364e568..50bd84644769 100644 --- a/drivers/irqchip/irq-ls-scfg-msi.c +++ b/drivers/irqchip/irq-ls-scfg-msi.c @@ -139,30 +139,32 @@ static int ls_scfg_msi_domain_irq_alloc(struct irq_do= main *domain, unsigned int nr_irqs, void *args) { - msi_alloc_info_t *info =3D args; struct ls_scfg_msi *msi_data =3D domain->host_data; - int pos, err =3D 0; + int order =3D get_count_order(nr_irqs); + msi_alloc_info_t *info =3D args; + unsigned int i; + int pos, err; =20 WARN_ON(nr_irqs !=3D 1); =20 - spin_lock(&msi_data->lock); - pos =3D find_first_zero_bit(msi_data->used, msi_data->irqs_num); - if (pos < msi_data->irqs_num) - __set_bit(pos, msi_data->used); - else - err =3D -ENOSPC; - spin_unlock(&msi_data->lock); + scoped_guard(spinlock, &msi_data->lock) + pos =3D bitmap_find_free_region(msi_data->used, msi_data->irqs_num, orde= r); =20 - if (err) - return err; + if (pos < 0) + return pos; =20 err =3D iommu_dma_prepare_msi(info->desc, msi_data->msiir_addr); - if (err) + if (err) { + scoped_guard(spinlock, &msi_data->lock) + bitmap_release_region(msi_data->used, pos, order); return err; + } =20 - irq_domain_set_info(domain, virq, pos, - &ls_scfg_msi_parent_chip, msi_data, - handle_simple_irq, NULL, NULL); + for (i =3D 0; i < nr_irqs; i++) { + irq_domain_set_info(domain, virq + i, pos + i, + &ls_scfg_msi_parent_chip, msi_data, + handle_simple_irq, NULL, NULL); + } =20 return 0; } @@ -172,17 +174,17 @@ static void ls_scfg_msi_domain_irq_free(struct irq_do= main *domain, { struct irq_data *d =3D irq_domain_get_irq_data(domain, virq); struct ls_scfg_msi *msi_data =3D irq_data_get_irq_chip_data(d); + int order =3D get_count_order(nr_irqs); int pos; =20 pos =3D d->hwirq; - if (pos < 0 || pos >=3D msi_data->irqs_num) { - pr_err("failed to teardown msi. Invalid hwirq %d\n", pos); + if (pos < 0 || pos + nr_irqs > msi_data->irqs_num) { + pr_err("failed to teardown msi. Invalid hwirq %d nr %u\n", pos, nr_irqs); return; } =20 - spin_lock(&msi_data->lock); - __clear_bit(pos, msi_data->used); - spin_unlock(&msi_data->lock); + scoped_guard(spinlock, &msi_data->lock) + bitmap_release_region(msi_data->used, pos, order); } =20 static const struct irq_domain_ops ls_scfg_msi_domain_ops =3D { --=20 2.43.0 From nobody Fri Jul 24 23:32:06 2026 Received: from mx08-0057a101.pphosted.com (mx08-0057a101.pphosted.com [185.183.31.45]) (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 B037A3E3177 for ; Wed, 22 Jul 2026 08:27:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=185.183.31.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784708828; cv=fail; b=srNeFd6VQJy0uq7Du59aVcifoxnQrqY7LReJQmfIW7ERMzLwHQ5og+bT5iePgIXk2f5mr+hyj1drD2xD6dmNiWZHWi7PUZ5vUFGawgCGPtIPmcNz/BDi9cHAIYNc5cpPoBr3u31KqS/AcY7EAh2hexfwJjojwslYsXsvYMOcf9Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784708828; c=relaxed/simple; bh=kUMECTjsnNxn+Ggel5wjOkj7vYyWVrcIeF4ewjD2iFI=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=AsJwiqPH8rgnm4zZRMJBBmdyi9/ydp/0e+CkRsGxAsXJYUz8OvYTtWrGPllQ/CBvu75ybKmYpztS+pihU+UKi/fUNhN40Lw9Ec7vXhuyyU3AQl2TjHWtngg8KBXrXR0DFqfkDoceVu56cucDOUQlDo9mmBdITZRMK9i7hGfPmcc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=westermo.com; spf=pass smtp.mailfrom=westermo.com; dkim=pass (2048-bit key) header.d=westermo.com header.i=@westermo.com header.b=Uz2TyCyo; dkim=pass (1024-bit key) header.d=beijerelectronicsab.onmicrosoft.com header.i=@beijerelectronicsab.onmicrosoft.com header.b=tfUF4ihl; arc=fail smtp.client-ip=185.183.31.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=westermo.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=westermo.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=westermo.com header.i=@westermo.com header.b="Uz2TyCyo"; dkim=pass (1024-bit key) header.d=beijerelectronicsab.onmicrosoft.com header.i=@beijerelectronicsab.onmicrosoft.com header.b="tfUF4ihl" Received: from pps.filterd (m0214196.ppops.net [127.0.0.1]) by mx07-0057a101.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66M5j8n41896996; Wed, 22 Jul 2026 10:26:46 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=westermo.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=270620241; bh= Hb4z+v+oVX8pLYjNZEtodOVopHYZlsQLyvbCYzI1l/Q=; b=Uz2TyCyokzSqRNNV xh8rMsMKUJJxXWW0x3G51gnNg8f2mJ7vuducRYFsF024gDKB4TKyCQIETj2KxVbg Su9IqCLocEoMoimqpmH74jM/3rv/jKEVKdHMQGPKJDcjJ+HAUMkvItau9F2806cP W/as6o9GGM5Us/NY1kVXuyReQ3vVfuuvSuRsUAVEwJ2R7bxrlOYH/xqYE/O2qnI6 vvPISmAGHIBVYoXufO0hwAjIbOf/kkxCo5JGKVYHMpkrNpAhIRL6h38Okui/2C/Y zJc/mjsawYAzZEmVtZssQfmMBzdsz83qBIgmBnikekLA+kdItZ548W024ntN3vJ5 sqkT/Q== Received: from gvxpr05cu001.outbound.protection.outlook.com (mail-swedencentralazon11023074.outbound.protection.outlook.com [52.101.83.74]) by mx07-0057a101.pphosted.com (PPS) with ESMTPS id 4fg14evs30-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Wed, 22 Jul 2026 10:26:45 +0200 (MEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=o7f9V7TMsLDzmqIlDvg1SdwVzgxrRUTk8wrXPfmYaxJbwtMRe+NQ3m1EH4kY4jZPadJjFrh/8TAHYoGURBVRveZ9FgGE2q7YUqRoh34LJZo2T3f3UITAyYVHnZbCtC4xsl3mFNepIiN66le+4kzimdV37UuHhdIEnk/OcCtiuJSCBOkrR/mr8dBb8Plf1V0Z4Ge2irurL3hlp9TdRyXra+1kljd6QK50klLC9ZoMgIWS7vBQfouguu9zIpjy5/TLPRt40IEMLb34Jn4RYaHxs3AKvg/7+fEoG5NwKjDyA4LcPTa+ZG8BFXDVMAVA3v609O3dZNeMWSWWwrp5qlsJzQ== 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=Hb4z+v+oVX8pLYjNZEtodOVopHYZlsQLyvbCYzI1l/Q=; b=k4RUz+e7sk18EifH0LSzcRn+xmAE0ylFyMojrepMkw/ht3yui5Or9W+/1KAzD8sJA6Ehh7cPdTrq/6UY+7IcKg0uGdvz/AKPta+lqbAGmvcL5x7P0us9Gc1LdeHyzbJHDiZnuYXLvKCe0HKr+IZqglyw9skyrESLw0g05DjwlDW13HeZsZVfQ3ngTJEWOXgBHlHeqXs9y1EiF7/L1nfMDb5EuurKm/MuA2JPqJM+l79T+I/SzmHh/ip1hdaYkomdNACa5C5zVcwQdQ9iHLgM0u9eU1WnVUE4A52tvsjlGsSWjMJLZE8u5JGrnvX4Yl3iSX5t2k3vaunnv3OTLazCGw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=westermo.com; dmarc=pass action=none header.from=westermo.com; dkim=pass header.d=westermo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=beijerelectronicsab.onmicrosoft.com; s=selector1-beijerelectronicsab-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Hb4z+v+oVX8pLYjNZEtodOVopHYZlsQLyvbCYzI1l/Q=; b=tfUF4ihlreCMikwLjcF/sCoz2Twm1AmtAT3ktld1gNudP9rBiRg8s1mzCmeHQ6iCjlrRdyL2rbpEmDnxxdR0FAQRUqI1avAjAPz6vU9sZOQnENjOXl0v/vcS3wkAx8r6HCDVdWaNPkp9Tynn6DOJjHMiNDuH4Rkn83g6RgXAQx0= Received: from DB9P192MB3090.EURP192.PROD.OUTLOOK.COM (2603:10a6:10:5e2::11) by AM7P192MB0691.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:177::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.245.10; Wed, 22 Jul 2026 08:26:44 +0000 Received: from DB9P192MB3090.EURP192.PROD.OUTLOOK.COM ([fe80::656d:42d4:bdce:a46b]) by DB9P192MB3090.EURP192.PROD.OUTLOOK.COM ([fe80::656d:42d4:bdce:a46b%6]) with mapi id 15.21.0245.009; Wed, 22 Jul 2026 08:26:44 +0000 From: Alexander Wilhelm Date: Wed, 22 Jul 2026 10:26:35 +0200 Subject: [PATCH RFC v2 2/2] irqchip/ls-scfg-msi: enable multi-MSI allocation Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260722-irqchip-ls-scfg-msi-add-multi-msi-support-v2-2-24eb208c5d38@westermo.com> References: <20260722-irqchip-ls-scfg-msi-add-multi-msi-support-v2-0-24eb208c5d38@westermo.com> In-Reply-To: <20260722-irqchip-ls-scfg-msi-add-multi-msi-support-v2-0-24eb208c5d38@westermo.com> To: Thomas Gleixner Cc: linux-kernel@vger.kernel.org X-Mailer: b4 0.13.0 X-ClientProxiedBy: GV2PEPF000239B9.SWEP280.PROD.OUTLOOK.COM (2603:10a6:158:400::22b) To DB9P192MB3090.EURP192.PROD.OUTLOOK.COM (2603:10a6:10:5e2::11) 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: DB9P192MB3090:EE_|AM7P192MB0691:EE_ X-MS-Office365-Filtering-Correlation-Id: 546547d9-cebb-4918-d7c5-08dee7caf6d9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|23010399003|376014|56012099006|10067099003|3023799007|5023799004|11063799006|6133799003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: ilNLmpK1Nnh+sUAOahKD6lQmHqI5Z3nLE4zRsbtCBA3I5JpF6dEQPWvESKqmwaPfK82ewixrBGA+n090x6tYPOYJfER77G/ao2mx+O+96AUKuS2Ln6BC8QEcRUWdQOKCAmha10fMdvRxW8JW8cs40v43A/rWu+Vi7+U9/MWBWOQK1SrSN890nKjDRVgOCuzzbl4NWCT4t4sntK5h3Z/CY4U6qD5VfN5V93IqSa6eaT3A8ZmDqaWxkBO5LzGHLyrrjEb43qgoied19sFqNE1f7ujMtaQzvBo/4XklGRphOzDBoeTzvz3gk/s0liCnC9YCjsBlpG2hK86BEEWPWsqQaucyXqnmJpnNxli5p2tPUc2c0IdvvIBuWO7KthCP/1YFImb5hLFEoTvm51cZypR1MrRA/L6dyPc8PgLyhhWImgyMxgSDY1qfITz5v/tJknd8cstgWrmDBOwaAYGopYyzsp1FFVtai1g90ZEArwcRntmivX22yfQQS4P7B8/8ZJAlCg7u/TW24Yk4ODniiIyi1seeQZvcIwwjZ6WHp/UDiTS1La7LFcuk0Lh9Q39k+x1c0eBwHaBr6hJQ9dqNl44y2i02CKyN675huG8eshAHDOROBK9JGTwntkajIwuSox07qs/jAWgiBEn2iHW1dtKf7ZmDGW8iRD1fPTG4x9BBpTc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9P192MB3090.EURP192.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(23010399003)(376014)(56012099006)(10067099003)(3023799007)(5023799004)(11063799006)(6133799003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RXgySnRoTTBFdXNkZ2JhUVh4alIwU3hHbW5OazUwVHgrMndzWDRtbXdlU0F6?= =?utf-8?B?TzBwbFE5RjRqTjhXQUd2K3d5S2hyVnc4RWVDcjVxMlpkZTV0N2tsdUFxbmpv?= =?utf-8?B?d25MRm5TaXNNaUx1SWg3ME1YTHlIS2FvejE2ZzNtU3hybW9NL25jVXJpbE96?= =?utf-8?B?cDBmdkU0VXJteFVVbUtXTU0yb1pBK3FyMklYZnd3bmg5c0MrM2RGdzR4K0Ir?= =?utf-8?B?ckJyMEFuUFZ2NEhzLytoM0lYSE1FOWVVbEtnZ3BuTWRNcUloMGlFOVZ6NUt1?= =?utf-8?B?SHoxQ2UrNWdpOVQrK1h0ZGh1Q3FoU0xMK3NkOElJYUZyNGdTMzNEVFMvOXg3?= =?utf-8?B?NmdKSlNOSnBJQWlPTytPL1dzc2p5bGpTVFFjZ2NOK3ZGRGl0blI3MzFoOUE1?= =?utf-8?B?QWtFdVFKZHpHWjd1aGxlaGtEcldIV0hiWUlRWHdzVkhBOTRzZVIybkxrdWZo?= =?utf-8?B?ZVdVRGM2SVJEUWhKUlNNcGtYOHVqQmxGeDlDeVQwV0ZvenR6eVlCcjg3SkRx?= =?utf-8?B?QllENEt4U3plNVArMnJCQ1dkVTZZdkliZlVjSVY5cXlTb1RPQS93TWo5TnA3?= =?utf-8?B?LzF5cEFqN1VZQmFZZ3FhbnZlZXlDNlB5djJUMjlST21XRDRRY1JEeW56ZC8z?= =?utf-8?B?b0ppb1VGM1VDdWYyLzFSUnlxRTF5V3A0MGh6dUR4L2UwQStCWlFEQUIzVFUw?= =?utf-8?B?SWszcnA4V1U1UVdwWHhZQTNXcWZtNW5CVmpKOGhGMjIwdWMzYStVYjVJb0Vy?= =?utf-8?B?VWt2T20wQ3phVCtUc0lrbW1CMTkwVTBxYlczelQxaWdab3VwRmZYbDJocjZI?= =?utf-8?B?Q1o0QmN0RWZDOEdwTyswTXE1VXdIMlRtblRpM29HT3pBRkpEb3FYUGVhTURi?= =?utf-8?B?aVRpYTNiMDNDT1A3NTVvSW9UWjU4aVhoNEdVWjdWWTBFOXd2YVVSMEQxYk1z?= =?utf-8?B?V3NnOFNBRGswZWw0L2ZIbnFuaG41enA0Wk1vZ3E1OVp6K3BEazBPVDFjRE5X?= =?utf-8?B?OHorQ1dRWExVdmJ4SjV3dXhYQks5VmxjSDhnMGtyV0xDYUdCSWNqM0lNZGN6?= =?utf-8?B?NmErRTRNTW51R3lmM2JQWFFUeUtlWWw2RStFOHZjMnZuZldLM3BralRhQTRF?= =?utf-8?B?Um1aZXh4Z21uZUUrVi9xZDNZY0tiTzJoRndwOGRrTmI2QVNQRXJoc0QvRG9h?= =?utf-8?B?bzNrQ3Q3dEZFT2VEdlNZZGxOdk8rRlNmcUpQemxvNHdhY2U3VVpzTkZuclJr?= =?utf-8?B?SGtjUVNHdFFjVHZXeUozZEd3NUdCTmlLeWRmeW5BMVNoQ3FFRnBDWHRQUkFv?= =?utf-8?B?VGdLbHRVcCtXWmtkSFhuaXQyVHlsTnNsUE1IWk5udHpreGRTeU1HNFF3UCtQ?= =?utf-8?B?UUlIVUJlMm9EdGM1Uk5KOFhyZmpFcEoyTUJ5M1p0Tld1NDlPMm8wU09BTjlm?= =?utf-8?B?RUlQM2l6UEl4ZmxqZndJK1FxczVpU2xYNUluMkgvZ2pvQVVaZ3pVVzcxaG9O?= =?utf-8?B?SHFwYTJHNFpFTkJoQSs2WWNoRFNIcmNoZFh2b0VGNjZlMjZFV1hPbTdYZWx1?= =?utf-8?B?M2NxbXBhcXo1S0g4R0dzVVprRTd0WHJNdXVna0xKUXlibS8rdGpoeCtGRXpB?= =?utf-8?B?c001QTh5UWdyNkFUTmZoQzN5NGNIVTB5bDhRdjBDdWUvNzROTkJPaXlpTzFY?= =?utf-8?B?Sy9tZTBzQjQ0ZTJTSE1QbVF5Wk5QTW81Z3plTmdPTTk4cVN1bGtMT2RYa2dL?= =?utf-8?B?Q1k5TmEwT3U2VDdadjJ5aW1hbFZxbHgvaGdEWDYzWjNpNTMzWHVrcGNhZXUr?= =?utf-8?B?S2xuUWhKdndCVmlTV3ZZN1d4VUROMXUza1hqcTZiU0dDQittZzUrdG1MWWNz?= =?utf-8?B?SUVEbTg0bHRsT2JBR3l2SllmT0k5V2pjRThYZGFjRi9RSVZQMmJ1b1F0U0lm?= =?utf-8?B?ZDdFTWZEdm8yV3k3ZS9VQmFVQ0hCeTBiOXBUbGUySVlKMjJFS2h2U0NLc3hk?= =?utf-8?B?ZWVxSC9VREdTSXB2Z1JPSHgwaEdLZCswd0h1L1VUbzBFRWhsTzVVaGRNdnB6?= =?utf-8?B?SzRLUHlJRU1RNmhLSm9UVkZtSG9vaXdaSndVUDdaeUZUeGlZUURDZzZVYXN2?= =?utf-8?B?TzFyQjhrbzFBU0hYQURrUVU2RFYxZXF0QzRYcERxbWlySnRaOUk0dWtjS0Ir?= =?utf-8?B?cnR3MHNwR1NDN0JBSmRXS0xBMGZLbUJRRUJKZUFRbGxGK2w0N1l4SDlCcVhR?= =?utf-8?B?MjV4ejA0M1B5c0FTWG9JZi9DZDl5b0N5alJNTUxWTEU4RUt2REJsUXgxWFds?= =?utf-8?B?MFpWMTBoMml3QnAxeTE0R1g1aG9JTDBxODhFenppYzhxOGZIZHZ4Zz09?= X-Exchange-RoutingPolicyChecked: U8i1dO0jYo/a+5JWd4FqlTqbb9bPNYDVbTRj8y9udGgBfSb2hxWmuy/Gh/NqQCudMRiUYHEtVhdRgKGBaItb17Tp1nbLM23lGGZA+LI+yfpFpbxzENjezySXYaJ7w7Tph4rRBsJ336Rn/wUO97qqlbL6qlYmMH5/F6M43ndKE5CIE4epvpg0obnuwz+01xH5CuPWNltwHNpRx4YQ4o/fBLnvubjiB2KPFuQRk3Q/Bkq388lea4HNCJA7ZPYMp5dRoXEh1C2FEp2Cpvih5osxK5scTUXkFaJibI05BbhvnZ6P+nvxRmp5AasZiaSdpRg3lh6ut7sMwkHQZ/9QWofg+w== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: UAlI8eEJew/Fhm9mCBy6gIkuaCxOKqQZ/tHxXlEhjFTGkO6aQjcHLE6obw+qeEPuoFM+BxjeMWdJ+cVzXPSfc9TH8sJAutZcYqoJlW6urxg7qcgBz9j3L94l9k6TchH0M3Nn1XvCqlaIVJRXBZJ+kHTU+SjpuZ3nWur9HN/ZRrQalKAjXsS4pYYGalAuNSN3DE7SFaEg2jZRp5WmqqH/ED+ESrqH30PZ9jXD3kljX2zdibNcKgZKUr1raCO5VhnIpuROUUrr1CtzwP83MKAd7ngOKhWTuRPzsPYXqX8qrc6yjzJmkkC7jnIJ+5EGyoN9qJZRow/3396FwbkzCJDdd6vhRrQ14SBFWYtrkZwbG5+HsVTRFpvZ95xiBccePAbRfaUqhJ28IHSuSF/bU1Oz+Zo4TPectkAK3jUkxKhjZLOBPbXlxjMsydruSi7S0dLWt7yZocl/30OkDFwCQjJD1LZ3rkDRxHVrj1StZkuWa3W3yF0hOJm+VOxbGqZyUC4vLm9chyg0U1k/2E1q6ppVdP5aU/gQFL1GDBvP7F3ogG/cZ8HJc2GPgYxzMezGUuVu4W8qTtUfrfwVViEW7RHEF+rvzIWJQUjuR0zGle1oWQ3c1Q0mYu4Ovfl4OyQJIWia X-OriginatorOrg: westermo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 546547d9-cebb-4918-d7c5-08dee7caf6d9 X-MS-Exchange-CrossTenant-AuthSource: DB9P192MB3090.EURP192.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jul 2026 08:26:44.4896 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4b2e9b91-de77-4ca7-8130-c80faee67059 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UCJ4x/xKh6vRVhgjwVP8ihSM/Hng0tU4f2TH/JThHGCoxz7q+BeP9O2lOzhqccf1otaAnsY+GY1fg2Mt0MJRKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7P192MB0691 X-MS-Exchange-CrossPremises-AuthSource: DB9P192MB3090.EURP192.PROD.OUTLOOK.COM X-MS-Exchange-CrossPremises-AuthAs: Internal X-MS-Exchange-CrossPremises-AuthMechanism: 14 X-MS-Exchange-CrossPremises-Mapi-Admin-Submission: X-MS-Exchange-CrossPremises-MessageSource: StoreDriver X-MS-Exchange-CrossPremises-BCC: X-MS-Exchange-CrossPremises-OriginalClientIPAddress: 104.151.95.196 X-MS-Exchange-CrossPremises-TransportTrafficType: Email X-MS-Exchange-CrossPremises-Antispam-ScanContext: DIR:Originating;SFV:NSPM;SKIP:0; X-MS-Exchange-CrossPremises-SCL: 1 X-MS-Exchange-CrossPremises-Processed-By-Journaling: Journal Agent X-OrganizationHeadersPreserved: AM7P192MB0691.EURP192.PROD.OUTLOOK.COM X-Proofpoint-ORIG-GUID: iQxA2HB3ZtdN20mx61u6ZrAqWmIUnlNW X-Authority-Analysis: v=2.4 cv=ReigzVtv c=1 sm=1 tr=0 ts=6a607ec5 cx=c_pps a=gp5pe0KoKJPrw/MdDGfhdg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=8gLI3H-aZtYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=tr3XZvuDWTETL0Uaxejn:22 a=WQ4YJ39tjzx_Hbm9pN5v:22 a=N9GNhs4bAAAA:8 a=gMMh-vzO2PhQ5Z8aN60A:9 a=QEXdDO2ut3YA:10 a=PZhj9NlD-CKO8hVp7yCs:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIyMDA3OCBTYWx0ZWRfX8wj2yxmNYHyS U0f1KHorDumEAuZoV4q7mKcfQUa6XdGpWRSq5hY8Jm/XSDQVqnK5/qY3O6/2lzG2XKuODNqIDAE 17PlQGe6dG9g8J1iiv4yBdb1otz5ryg= X-Proofpoint-GUID: iQxA2HB3ZtdN20mx61u6ZrAqWmIUnlNW X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIyMDA3OCBTYWx0ZWRfX24S2F4sdOEth DMZfztoIzWytNcE51CRlqnphHwXpvG64M+57dooAu2U257jfsyS3QyMM1UPXQ/ZHMGGrl4CpJdj 0uBJIyb7FJNm09BrfcmaOAsGOf1l0y77o85TsGVruM4hDVaRoboQHZlFJlhJ5bRkgUVTd95sUwl RmfMeMaeWqxeII8hhj2MC7VHkI16NalR1R89R3MkXrhxNaJjvznAZvGHzxvIgZSBFMSuMYasHzs Zzg1Kl3YEUZMhQ77BYAXCI0zbpDOXGZ95UIzrZfG3rgvOrMh+sIxJE8q04O/ILaxnXQ4OdeT4Ov fP1n2RFyg1sAXpPs6ZBaBi9+aktFFsGhChCLxtQOuYJwdCgA4pDJ67qpZc/tM9AYHHm30r2GJ6N MIdM7ZHxiwpLgW5S3NeIpwkHpr6z16ydvatRlOQ/bUMsIQkM3SCmZactOYUb9rZYl46l44uJMFQ ua6rME+4VuXMr9ZvGAw== PCI endpoints that ask for a contiguous multi-vector MSI block currently fall back to single-MSI on Layerscape SCFG and multiplex every device interrupt onto one CPU. The hwirq allocator already reserves order-aligned power-of-two regions, but the parent domain does not advertise multi-MSI support and a leftover single-vector guard rejects any request for more than one vector. Simply lifting those two restrictions is not enough. A multi-vector block spans several MSIRs by construction of the hwirq layout, and in no-affinity routing mode every MSIR's chained parent IRQ defaults to CPU0 with no way to rebalance individual MSIs at runtime. Allowing nr_irqs > 1 without a distribution hint would therefore pile all vectors of a single device onto the boot CPU and defeat the per-CPU scaling that multi-MSI is supposed to buy. Advertise multi-MSI support on the parent domain and let the allocator serve requests larger than one vector. Distribute the MSIR chained parent IRQs across the online CPUs via a modular round-robin at setup, so that multi-MSI-capable devices see genuine per-CPU parallelism instead of piling every interrupt onto CPU0. Assisted-by: Copilot:claude-opus-4.7 Signed-off-by: Alexander Wilhelm --- drivers/irqchip/irq-ls-scfg-msi.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/irqchip/irq-ls-scfg-msi.c b/drivers/irqchip/irq-ls-scf= g-msi.c index 50bd84644769..6c05af6b3fa2 100644 --- a/drivers/irqchip/irq-ls-scfg-msi.c +++ b/drivers/irqchip/irq-ls-scfg-msi.c @@ -60,6 +60,7 @@ struct ls_scfg_msi { #define MPIC_MSI_FLAGS_REQUIRED (MSI_FLAG_USE_DEF_DOM_OPS | \ MSI_FLAG_USE_DEF_CHIP_OPS) #define MPIC_MSI_FLAGS_SUPPORTED (MSI_FLAG_PCI_MSIX | \ + MSI_FLAG_MULTI_PCI_MSI | \ MSI_GENERIC_FLAGS_MASK) =20 static const struct msi_parent_ops ls_scfg_msi_parent_ops =3D { @@ -145,8 +146,6 @@ static int ls_scfg_msi_domain_irq_alloc(struct irq_doma= in *domain, unsigned int i; int pos, err; =20 - WARN_ON(nr_irqs !=3D 1); - scoped_guard(spinlock, &msi_data->lock) pos =3D bitmap_find_free_region(msi_data->used, msi_data->irqs_num, orde= r); =20 @@ -267,8 +266,16 @@ static int ls_scfg_msi_setup_hwirq(struct ls_scfg_msi = *msi_data, int index) /* Associate MSIR interrupt to the cpu */ irq_set_affinity(msir->gic_irq, get_cpu_mask(index)); msir->srs =3D 0; /* This value is determined by the CPU */ - } else + } else { msir->srs =3D index; + /* + * Distribute MSI processing across all CPUs so heavy traffic is + * not throttled by a single core saturating on interrupts. + * No-affinity mode disables per-IRQ rebalancing and without a + * hint here every MSIR's chained handler would default to CPU0. + */ + irq_set_affinity(msir->gic_irq, get_cpu_mask(index % num_possible_cpus()= )); + } =20 /* Release the hwirqs corresponding to this MSIR */ if (!msi_affinity_flag || msir->index =3D=3D 0) { --=20 2.43.0