From nobody Wed Apr 1 09:46:40 2026 Received: from LO2P265CU024.outbound.protection.outlook.com (mail-uksouthazon11021116.outbound.protection.outlook.com [52.101.95.116]) (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 2E7A33A9610; Mon, 30 Mar 2026 22:10:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.95.116 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908659; cv=fail; b=OulY8rkWr1bsjokfpfbQH08CO5LJM26Ac429gBa9WuxmjFWkMdTRySbyIrS2/pH+QrSKRbYsL+D06Oox+DtoSMu6zOX71YGfEwfb8Ye3X+7w+7iok+MHHubD1EVztEmh/8UfNIZKI02iWcXYwxaq7jRR6lUDABBg7blE/lXHqbc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908659; c=relaxed/simple; bh=rlCRI6w3B0G2dfF3EH8m3Bulrl7HIYzKqwGvieAqpRM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=QCzP5kLg/XtgM5k2wacLjCVcTr6Nbvn9Io/n9H1kMEw7wW9psZdLYz8eApcoKrFrqLLpBftbqi9Xgo0aUG3UPHRfLTd3Vz6pZ6ojfkoSLLk6RXeTf8Yeu9i40m7bFHJ5l+pwobx01880YnsRlK5GaHn03zgg3Vb6iXHiOF1fhdM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.95.116 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vN1g+tHoZg/7JXbWZJCcKh0cCUKjcJlels+QPVJ8Vk9esDFsjpx/llZ7yc+Ye/V6PPrlqCvGraD9QgUz4UlzubJq9Z5tl6b37YduOnDqJ3L3rk4pbJe19ckFlsXJTzw7o0ykvOPicmCWQBIJRp+BrgAHs+kchr9/HSH4hRMD6rsbnPqaTsexbw+5QBG0aYKbcM6eaO+F4wrS59MGr/tS3nnTsSeXTdnipuPYL4vOF1O+t+Vd1/RNFEx0e5EVpqnSVLVPzIWhpwvo6W7e29tNbzzMmyRG2eju3ryp9EcCsnMaaOUf506QJlV0Q/FwfOZUrpGsL554oIKWb9Mj0w9LkQ== 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=cO0UiFQ2IRes4ghqRITa3JO8yWqXB4isrdREy2MaGLM=; b=V+E+zj1p+S5DwF4aSmyTLE6WSi/OTzBDjQPsbqmeu4UbEXVbDrG9dOkOLpcyOIfB9jZXu9BJGwrAXomUBkuPADgmuO7S7s5gZQcVtlinzR5mTAd6B4cObap3tJgdLNq+ZOhnCKgoUREJpZeGtlbL2hfHbff35SIR20SnyaUWZfzw5fmY4PrTPDNHKYw+jEoFRJqlSlF80wPmglxSw4Omurs1KlclgRgJ6279DmJvx7V/xmCoUj7PGm9ybb/vUTk5OWIUlsWDI2Gs9ocr0Zt9BS9jHMgySrgQ7JLAXbpwyInXBGU/gZpCFSrM/LK/pqlt0GWntB+eOCKgFQaFMQwbow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB6512.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:186::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Mon, 30 Mar 2026 22:10:54 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%2]) with mapi id 15.20.9745.022; Mon, 30 Mar 2026 22:10:54 +0000 From: Aaron Tomlin To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, mst@redhat.com Cc: atomlin@atomlin.com, aacraid@microsemi.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, liyihang9@h-partners.com, kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, shivasharan.srikanteshwara@broadcom.com, chandrakanth.patil@broadcom.com, sathya.prakash@broadcom.com, sreekanth.reddy@broadcom.com, suganath-prabu.subramani@broadcom.com, ranjan.kumar@broadcom.com, jinpu.wang@cloud.ionos.com, tglx@kernel.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, akpm@linux-foundation.org, maz@kernel.org, ruanjinjie@huawei.com, bigeasy@linutronix.de, yphbchou0911@gmail.com, wagi@kernel.org, frederic@kernel.org, longman@redhat.com, chenridong@huawei.com, hare@suse.de, kch@nvidia.com, ming.lei@redhat.com, steve@abita.co, sean@ashe.io, chjohnst@gmail.com, neelx@suse.com, mproche@gmail.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, megaraidlinux.pdl@broadcom.com, mpi3mr-linuxdrv.pdl@broadcom.com, MPT-FusionLinux.pdl@broadcom.com Subject: [PATCH v9 01/13] scsi: aacraid: use block layer helpers to calculate num of queues Date: Mon, 30 Mar 2026 18:10:35 -0400 Message-ID: <20260330221047.630206-2-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260330221047.630206-1-atomlin@atomlin.com> References: <20260330221047.630206-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0768.namprd03.prod.outlook.com (2603:10b6:408:13a::23) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::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: CWLP123MB3523:EE_|CWLP123MB6512:EE_ X-MS-Office365-Filtering-Correlation-Id: f3b9816f-6f9b-4719-d629-08de8ea93644 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: PbDSLSbJb7lEPDrb68Q/WBB+F/st32B5m/sELDyDSgItH6ztXIxFwDdohrccl/gQvRYjn6T6a/sa4P1/9sPT4NjS4mioANd4iL7tEENn2yfWrfp4IkhE6Hn71ntHivcBoGD1qO4HwqLVRyvpdHKzmO2QKL6QouxsZ3Dc0enhwlJDJ1mYMPgbmQo+lu9PnsaPIwmsRoRMDITrAJ3CZ9slaamLo+QWbJfr6IiOAVEwOmxqwMjxitND/QfOop32+UrxBAGEPTUDODAw5ORZ8k/5pnors0tTnJfWii2pMySRGrsPz745oyH+CydZdjfJ6V2+bg361FAHmrRHiDW1VvrYTR5i8xpXMH5vcY3ivkimo9A8iQOw1KqBvQInj3AzTwFsQj4PQjvmGR8M31s2+Pe8WzQEzYxiFjMBCbaHoG4CSlQAPiTldyg+UbA1t508MCpA5p+8K0PuQc35c2LbZQgtufmla6NnGBTcFlAhRf6PZKCOHyHiL22y/7rPCyU20KpDS/cyK72bCIYa5zSgWK9buEaTlwwJPuYAOGft6GqDRyuJHsq9L0Uy/eZatepRSgjpy9Bnh357cHVIFwaEwWLrlTayxRPIvst/TlrttSm+Q/8L5tkZz0JQMeQHZBTHf1FfXiCZukmJWDHG2WAG+YQBCLWzeCfM6GgYcN3a6x7ks+3EUFUrIs0Z+84iKocUno0Slt6Jv31w//TTsYOaMenRhS/wNYH7k7jkfJrhInmxEVo= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UWop9aZ34icJ28RKidH7XiKmALA4TrJWCYUtw+GQKxs5bk1E8l0lnixyDo2X?= =?us-ascii?Q?5sB3cxu14MdZMRU76np5Af50AWjjbDwQKheIlv1z/UKT1RuoQa9q9/fn61OR?= =?us-ascii?Q?F7hXI7fzyig9qVq8CNWmRN/a/YRtVvwht0B+Iuwza9R28mBTmY7OBNyw/JKG?= =?us-ascii?Q?wZ6DSWnqQn6kQvfePrmearx1oXHwZTNGJsnAQajElgwxgfkO1Hl9WUzyzPkQ?= =?us-ascii?Q?UzEL98nxS3FeTvIuRrjIScYm/1YR4PSo9X9VxI4uU7Ncv9Fk2rv+fpbf2B/X?= =?us-ascii?Q?Ok8MPSoCxIkv/HcqUjqJ5MvaQsHfSDX0XKY147HDOh+S+BI0Myo6dAU8eGxD?= =?us-ascii?Q?YVk9BlKSUlzgGfBo3zX1wG85UvIKaqFwnTuXP2/fhLDWcY0y7hfYV9y80l9Y?= =?us-ascii?Q?lKWILAZQXprN6J5+/qc6G+AWuhw7nn6Knyl5DF1pT9IpPOJQyblsMYtleDRM?= =?us-ascii?Q?r3USPaCbe0rLBhlkIyV0oNXAxoS3kuO6Vs+/m7rfDodmMr0H7NlTqLvyFTcI?= =?us-ascii?Q?fmNIFUwwh8SCLSdMMAYZEgBejTmRFvpNi2blgrm3kcXeV0H3neMXdxo6UaF5?= =?us-ascii?Q?dy3pQyaPEFaz4zA3gFuTYBJSqndxtKrymk6/PFY/oIOExLiFUzNXmli9JPf2?= =?us-ascii?Q?p2jXkUGi0LAPy3Cl2SIlofXUQ2woGvU69Fea1pptYFW5cyQOBk/EbDLLKQCe?= =?us-ascii?Q?BFasuvpy7Yh2AkpFUgP7yRK3qHQTZnwxiyDp3+QhuGQjFJdlrL6dnI4ihbXK?= =?us-ascii?Q?XrTs/yNflI89LpdiNzXPuXaY+H6P+x3i9MNECXaALB2tzucW2mRpWm0XKzAh?= =?us-ascii?Q?y7WNm3VVFxErWxAXuGWEmM0xQ/vQPQ0KdnckwvBk2ecpY23JhRap8oDJPqrO?= =?us-ascii?Q?WZ29+rJe1dT/CWdulO2LuCulXU6R7OK7uX+R87BykPXq0QeCeiacb9ZJH6bX?= =?us-ascii?Q?b7Y9F3hb28F1q7W+I3Y8sG2bg+RlfI8cMtH9lvjMDmaTg2Dt6I0eXbxeNGf8?= =?us-ascii?Q?zbqEl0vN8uXwIOQiceVtgn23z69MBobvsk/q7F6akyPz0it17UpL3C3/X6eQ?= =?us-ascii?Q?uNCFpMoBbwLSAdtJECH7Tl7q9xw0ZfvqE4VhCWWf7V7fEYYbOVsaljFdoa+9?= =?us-ascii?Q?HlBovHaiLf4YSjQLhPCeymamGOSNsj7gZOStPBdd919BEhPb5/0zanvZ3A6c?= =?us-ascii?Q?A6l9ycdLfU3LVq0VDiScAnSsQ5x3Y83IwMG6AO8zul+2gbMkHYK6BOfP5rDt?= =?us-ascii?Q?j5ICPuCcQDcPq00GzwIxhnAsaLPDPmORrjQGW5Pc1hVw/U7ftxTUaiQ4yuBt?= =?us-ascii?Q?3fIzj3sgYGIuuT09B2XgIne50yr53ZrvRN47fLUJnV2Ao8g7nI0FBvtJoR2b?= =?us-ascii?Q?6xLRK1SCOTJ8DWU3spBeQ8x5QPZajcRLHb4Efa8VAaGSIdyZNT1QaAlEB14M?= =?us-ascii?Q?WewBHri0AJEb9zdAWycuzvPpFZaFFpIhEFrhFWV6Xed5OjPYBNiveBcKnmKj?= =?us-ascii?Q?QiBvgOVdt7CrOSDrCwsqThXUR0JlBjdDcqFqECDW8QJIhJcMRa8psRxQDM8v?= =?us-ascii?Q?QutavgXaQghEHyo5nFT827vnGBVfF8A7Pkt8pF22TBZl57mWdJGBhR35KNhm?= =?us-ascii?Q?uHI1rNfzz2a9T3abo6xUMa0vIQyACyEsTsL/+T+AMIYs6kqXiI2MPMd8w5VP?= =?us-ascii?Q?W33//62t+4yfTg1ANi+0ypTC58d+ZvbQY8nrjKhF2333q649OveZLdJ7mWAG?= =?us-ascii?Q?I8nWBc3zLg=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: f3b9816f-6f9b-4719-d629-08de8ea93644 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2026 22:10:54.5407 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: r/GwaBp+TEbxj7FCMmFsoLHn7TnMplgYKLzYN50z10baUWQNu0reLHJEjcDoUG+k/8oA2ks2P0HqNL41MsCe5Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB6512 Content-Type: text/plain; charset="utf-8" From: Daniel Wagner The calculation of the upper limit for queues does not depend solely on the number of online CPUs; for example, the isolcpus kernel command-line option must also be considered. To account for this, the block layer provides a helper function to retrieve the maximum number of queues. Use it to set an appropriate upper queue number limit. Fixes: 94970cfb5f10 ("scsi: use block layer helpers to calculate num of que= ues") Signed-off-by: Daniel Wagner Reviewed-by: Hannes Reinecke --- drivers/scsi/aacraid/comminit.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/scsi/aacraid/comminit.c b/drivers/scsi/aacraid/commini= t.c index 9bd3f5b868bc..ec165b57182d 100644 --- a/drivers/scsi/aacraid/comminit.c +++ b/drivers/scsi/aacraid/comminit.c @@ -469,8 +469,7 @@ void aac_define_int_mode(struct aac_dev *dev) } =20 /* Don't bother allocating more MSI-X vectors than cpus */ - msi_count =3D min(dev->max_msix, - (unsigned int)num_online_cpus()); + msi_count =3D blk_mq_num_online_queues(dev->max_msix); =20 dev->max_msix =3D msi_count; =20 --=20 2.51.0 From nobody Wed Apr 1 09:46:40 2026 Received: from LO0P265CU003.outbound.protection.outlook.com (mail-uksouthazon11022078.outbound.protection.outlook.com [52.101.96.78]) (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 EEE53395272; Mon, 30 Mar 2026 22:11:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.96.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908668; cv=fail; b=G9aqMnAffgVnWMHNAIbjWcRkwsrbXj5n0m4OH2cLpR44jNvCDelvTJj9ZAOfc7WzaBWQlpcFkS6N5C7iMuq6HQiaLSYH2tADGf0UQgFrL+cMF8G62wGtvYhDTKxDnodJT8S6rKujD7hFhwD0fAKnAHLjuLJknJIcF6DgShLuZ+0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908668; c=relaxed/simple; bh=+ykk7WLKTb7SRvwZwLW7Db6OMovSK5huk5/K/O7deOs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=dJz169ZnUeBt7JPyfiTeHeYr3ZI9FTsF1+Rxm7m0T7sVgJD5GH/xoaK0lES65BkfCBFmbPhspRfHEaMQE0miGO6ww2DDXteEj0hQJTKl1jZjcdI5RJOL5KNqnNRkxsAewRNb8VqnNOvc83J6DuNr3nJiRDaUyow+u7q8rbAY1O4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.96.78 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qbQcEUhaR7arHgJd25Qqqf1rhIcbO7f4xTFaID0lvBWjykNULSwpM/rQSDl+bTyWgq9FK529Cl87PawhJKjhzPODvWjosEly/IGqVz0VCFtorvOtPp0OT8/PxhnIZXz2t5XrOqotYlNNSq/LYiVlSBK09Bt0YvPmM2tKcKmdeBFOi2dMlCuPorY+dXILnK8JXMzU6Obf01eFj+wYckL3jIyhU3wWvFCcTQwrjuPpT/cqfrI6uSz1GhDjes8lK+svL0ezMQ2muuknhWO1yZiwy7DCOEccmjwovuil/+LfOvrXWm/aLohTKnKcOAVvQKTI2Cf5LcSQ0VljFh5vvGg1IQ== 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=xkAFoD9AGa3a+dVCY33iT88DiZ62sZo4vQ3Qj2JG3Sw=; b=oykdQXbBCsFFOAULPgR7GnPAFfLr3DPxC5VSuArWQV/8C+cRdffzJ9WbCYVDZqHKYnfryZ4h+k5l9P4N5+so7ybq3q61uKStGq+XN/kW6/vyBmd3d/qzRYAy5UilE/rl9Qtkr56ThPYPcZCrYFdTSdo13GkbtYDYuLqthhp0y70sSsfTM4tnld9/pLwmk972Lel8x1vgrDFSOPbNhx3H6Vpp6yntE5+ukOw6YajZJxczFmn1J6d7cUlWtuq0hOFfUq/KdAJ2voEo6jsRKAN4pnBUjKv0K7Fj8CX9ixy2nYEr41J/d0GCjzy46LwxbFi3LnaTN57Dve1a+G93jf1s3g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB6512.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:186::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Mon, 30 Mar 2026 22:11:04 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%2]) with mapi id 15.20.9745.022; Mon, 30 Mar 2026 22:10:58 +0000 From: Aaron Tomlin To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, mst@redhat.com Cc: atomlin@atomlin.com, aacraid@microsemi.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, liyihang9@h-partners.com, kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, shivasharan.srikanteshwara@broadcom.com, chandrakanth.patil@broadcom.com, sathya.prakash@broadcom.com, sreekanth.reddy@broadcom.com, suganath-prabu.subramani@broadcom.com, ranjan.kumar@broadcom.com, jinpu.wang@cloud.ionos.com, tglx@kernel.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, akpm@linux-foundation.org, maz@kernel.org, ruanjinjie@huawei.com, bigeasy@linutronix.de, yphbchou0911@gmail.com, wagi@kernel.org, frederic@kernel.org, longman@redhat.com, chenridong@huawei.com, hare@suse.de, kch@nvidia.com, ming.lei@redhat.com, steve@abita.co, sean@ashe.io, chjohnst@gmail.com, neelx@suse.com, mproche@gmail.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, megaraidlinux.pdl@broadcom.com, mpi3mr-linuxdrv.pdl@broadcom.com, MPT-FusionLinux.pdl@broadcom.com Subject: [PATCH v9 02/13] lib/group_cpus: remove dead !SMP code Date: Mon, 30 Mar 2026 18:10:36 -0400 Message-ID: <20260330221047.630206-3-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260330221047.630206-1-atomlin@atomlin.com> References: <20260330221047.630206-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0036.namprd03.prod.outlook.com (2603:10b6:408:fb::11) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::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: CWLP123MB3523:EE_|CWLP123MB6512:EE_ X-MS-Office365-Filtering-Correlation-Id: 39f7db68-f33c-453f-46c2-08de8ea9389d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: u/kJLESIqai5x8AanOJWVxsYDhVBihjcdkmg0nNfH9DA3ZCdjGyrFb2/ldUMre7WvfQs+kis+xgh4XfdIr3fs2MQe4FvuawD/mEWDY0Ztb6BZ7flX6td5YLBIeKRzM5wLkPvNaeOB69NXC51zMFqFE05onblAQQQVK/YKwtaeMMT81oDNmUWjSmEvOQ1vC2SatnMkPdpraAYIkDOH+f2UwV45/VPNNIVZT4DYRI7hFcTHGk/fzT+2mLPfIIqmSWFaobqIeFDWJABbQtF58dhapm10uQA19RTPhVz1Kq7acsWB2r/UAIJ81Qtjb4AWCSunrz0WIshFaXHsonifH+U3gTw8UoCWFhdgxvMsoB+dnuX3l5Nv6lozEnK4a8ZKtRcBU6Y3/s5uMjYVPgLvZ6+Y14CkVi8deSgchmPP8sPrOCwa/wIOgFon3OM9XEpfhqjBfXSeTAh7ocbD61hZp4tHTOZ5wHVzdYzDDsZ3ySl/9rCpbeiPIn7wi+RzvG3WNfMcZGve8jtz31V/fORdmYB1gBgNi51DTU6ii3t5RLkwKxCdt3LLDlRtg7e0/k7JGmNQGmJfHHRplpt63fPP4ptSKzhudu/6zg/OEjfgGgyhAlYGbdVDY5pEHRdWa8KFy/S0YXFfL7dWpjWH0qU1KOUpluUPh6JKRTMrLIJ+FgBs/mbOZuTSOeru/tmOqGkXLhfTQxHXFc876uyhRSFQW/f/UmNgxFQNE2puy1+v59R4Sc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?wFw2NRiwP0PYNKw0RdAspBVkHTOpoQovinALjcy+Gs1i8R0kuIPg60yxJ6Ek?= =?us-ascii?Q?59Xyf1wsbRsJAWWouvP88OxsXZyg78FAD0oCB6C1w1oREQhA1rizxwwivLeq?= =?us-ascii?Q?Kw3poZ6K8cfZriSc6FPDa+QWkWyDfYeknC4nZKnUAqrTKCATUNTxxurJPpY1?= =?us-ascii?Q?91u48fqSqgOP2mFvicS5erukF3e3Cri1fE4DXfxG3c4ezpD4MAdtqCgsaaw7?= =?us-ascii?Q?Kvb6TeEWxFAuQ5tFfHCvj+QOUdSHaFPqtwiNfmluJCbJ7mYqvtgC+HfeAT0A?= =?us-ascii?Q?croMupyGG4VFaKMkMCWIUTjUKr4ac84XMzWjerKq9P3oOEVEw/t/DaQQ8aZ1?= =?us-ascii?Q?fGzyo6GffGHWboldUunGooQT6Nv5haKUKbRbtZ+bXWZrK32bGM1HWDWqB1y1?= =?us-ascii?Q?D9TUHnZ1UvplFAJyOmkuD7EeM/AdE50So55cAJJ0pPXxMUiW7tFjA5iB12Ta?= =?us-ascii?Q?OM8qYrTsK9mCQUP56h9/hr996q/TFKqdQJYwcLJ+e5XvC7ksrw9uSJFVIUvu?= =?us-ascii?Q?sLN3wf0r+uuN7LaJoxzT4sXzH6eahZt9BzZ7iN8efHB2SC4O0XlJyEON4c7i?= =?us-ascii?Q?B7iEvoBYUi7RLyz7ceUW9ZfArT1IOHrbjny2wqstYa1QeQbTso+UTqZPqrpw?= =?us-ascii?Q?nCX1HEziSniv3p0SHudT66QkIShT6/6WKyvgjxpLUM7ayM7foDEqA6LgeVrD?= =?us-ascii?Q?mXGwHJXRUU+1u4Msb8BKpxehV2xHAxEpoeCgbCYiM4RSXc8AqxNE/5eCtBX7?= =?us-ascii?Q?G2vTSBCFN9Gsg63bgEnfHr+o05S/YFrTEPIVSCoB4RhCh2MwXlUlS+P8x9cU?= =?us-ascii?Q?WYWXoEr2o/VC36DfaWZGtaGzpYsHexrwv/b8dS2/zpbyqxC/st8q3NU4RiTW?= =?us-ascii?Q?Sxv8/f2MfmchGny0TvrgpJ7VLo87G02uFoB0PBVpsXDhXpaH4HKOqHnqIBdq?= =?us-ascii?Q?NT6PbW11FTfOoYNAeSPoPNh6uRxJjuiOXRj+6Wn08QZnEg6iI0ltpn2orah3?= =?us-ascii?Q?Lb3GkG6RwShQvKxYMNmza5m+ltzl6jKbFEdPOOpMFyeV7C04Xadqcu+GGNEB?= =?us-ascii?Q?ckCy4WOvoZuGytAyT2ysmpa+0JBitI7DrcXzILJkFlUmPJcENZAfl5zvoMbo?= =?us-ascii?Q?AiRYmWDTSxeQD4pg0DBTRVVYdehBBfxvPN3cZW028AUI1rPOE/Ft/A4SPc/T?= =?us-ascii?Q?qubfRRn6H+6zeoRZyz5jispRN+6XMPp6pzr7NHwIQ+M7MRDgu0TuwASIsJRP?= =?us-ascii?Q?e8hnBt86/VbyrmZYVHosMQY5db2cP7fPM37D5WHoK7Q1haEFSMlAdpDsQMa7?= =?us-ascii?Q?Hdy7PQ4TczjBKrG6gLCBoV6Sq9yHMTRgZ8l1G4TWyb+QiCv8lsRVLxUIqyR9?= =?us-ascii?Q?8kx2xeh1acQVH2i4fUBhu488TAzZ9BZ7aotDnnjmITe3wh2WrCuxxNWmvhoz?= =?us-ascii?Q?8CG0sOhTwxB8Y5iy4Ikkl9SflTGIuEg0XHUCg13BsdABVGEBhYttwtxinN5b?= =?us-ascii?Q?zWQ54+8QfO+YxGnLbT4cJPz+2eDwqgo3gSryQi7lRFdNolrYT9oJHM/esJU0?= =?us-ascii?Q?rqFfy4aAYe4v88rHdHP3HbwThX9xQHvY57BpK2RSGD4sufD7ooU7U0JF93mQ?= =?us-ascii?Q?JJCXuESnjlN9+X9Lk3NnNpj7sk1gfs3q37aaG9pdBIKeWhqfrFBn0PwE11WL?= =?us-ascii?Q?WORq5/U8MDLcOH+Gs+SoBFaCXhQCKTsZwUdgwozCGH29I1VEQGLoqd6HXkt1?= =?us-ascii?Q?ybOWsDYFmA=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 39f7db68-f33c-453f-46c2-08de8ea9389d X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2026 22:10:58.4639 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Eosq+RotVlXNieDhCfywSedHF+cSuoLL0Vi/EbZZdsNhp5WQf152qW0FVidSyEyBxFSZsz5MUK4gSM39JTgQMg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB6512 Content-Type: text/plain; charset="utf-8" From: Daniel Wagner The support for the !SMP configuration has been removed from the core by commit cac5cefbade9 ("sched/smp: Make SMP unconditional"). Signed-off-by: Daniel Wagner Reviewed-by: Hannes Reinecke --- lib/group_cpus.c | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/lib/group_cpus.c b/lib/group_cpus.c index e6e18d7a49bb..b8d54398f88a 100644 --- a/lib/group_cpus.c +++ b/lib/group_cpus.c @@ -9,8 +9,6 @@ #include #include =20 -#ifdef CONFIG_SMP - static void grp_spread_init_one(struct cpumask *irqmsk, struct cpumask *nm= sk, unsigned int cpus_per_grp) { @@ -564,22 +562,4 @@ struct cpumask *group_cpus_evenly(unsigned int numgrps= , unsigned int *nummasks) *nummasks =3D min(nr_present + nr_others, numgrps); return masks; } -#else /* CONFIG_SMP */ -struct cpumask *group_cpus_evenly(unsigned int numgrps, unsigned int *numm= asks) -{ - struct cpumask *masks; - - if (numgrps =3D=3D 0) - return NULL; - - masks =3D kzalloc_objs(*masks, numgrps); - if (!masks) - return NULL; - - /* assign all CPUs(cpu 0) to the 1st group only */ - cpumask_copy(&masks[0], cpu_possible_mask); - *nummasks =3D 1; - return masks; -} -#endif /* CONFIG_SMP */ EXPORT_SYMBOL_GPL(group_cpus_evenly); --=20 2.51.0 From nobody Wed Apr 1 09:46:40 2026 Received: from LO0P265CU003.outbound.protection.outlook.com (mail-uksouthazon11022078.outbound.protection.outlook.com [52.101.96.78]) (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 729CB3A9610; Mon, 30 Mar 2026 22:11:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.96.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908669; cv=fail; b=Ww1OuDExbSrMjkR62KToDkfgbCPhnUQqgyCpIIHs6ly/N7AtJ/7eOoiSBBZaB8nUpmdUR7ui9H7Y42wq354COI7s76eNaoBrokPLgHWq9BRhtZZvuDmxGCIAzENiDmRW1fRXwCqnAylVfEp3+02Z8Uy5J/fVe4twuHIK0Grt3x0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908669; c=relaxed/simple; bh=gEli3h7xLwBYK4BV605YLRgFHp68wbwvowO0lcUTbzM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=t3Y1jUW9wtOF0Q9Dd3kyB0WyfqJ4NL3rC0FupguH4pal4c44TkWOvFeUtPwfzPglsdGhOybbpcS2/L4iNlkNI832o2+cPpuo7X01rov9Hw/Qv40yPMBwXfkzYn05w593qz2jhvDIS9QvNHoLneF+tgCfUMdb6x363mmyEM+6AUQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.96.78 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PD+Irqay+zsmp46T/2xyClahNwnohhIcK0cEK7Wq9wHApE3pPdBrjlnsau3RViR6Zc/G0zRjCewsXRic0XHvXZS26/Gdx4D6JiXBpCeVNLhg69wcePwAPndML95Mn+GcDlAuu6hIwqzk6EUlf+EAau1QYgf5GR/A5Q6CnBM2ZfMbP7L042XdaLibKq6Vi6mMDiXCSAzWyL08dflcHN6+CG9vH2DqfMaBGLHWhHUnefIevbGBdxKOsXZRv4AAuIGHJJfm4E33wSl7MpJWF7fMzhd3Buse7sa/EFPeagFu02nd4Rt/nlIGaK+6TY/oJhKzP2cfSL457ZmUVk+aTZCb6g== 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=7yf0o5+RBpJGxLIuK8K3JE5n1bV+f6SGDbZC2gVdk9c=; b=eSOZlz5b6ZsCPZ0u25AyByOJaLAY0hJckf2xzB//Mbslz529IVASxgbZ0mFaoochwKB4XdlBqZxEesYXoRj7O951AyWXIOgQRD8mUbl2FLT07w2iiezx9BFNBwnnHqs3dF6smFH4tiogqef7iYetiEW38n3k4PE7t/jcbPcQaR+iAeDpXAMTb2OoHElkobm2e+Mf+kMlCqx3F3Mmx0C931s4i2ELJm6uonWYbAbcyD7rSL5iJa0xqKQgCMjgLvDzV30nNIas78bsPKePLuy4VUqzNabv0M/6C6xwn+iM5HK5i4AIaqTYKn0XMz9XdQX0KHepPXKoRtKd89miTtl7FQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB6512.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:186::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Mon, 30 Mar 2026 22:11:04 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%2]) with mapi id 15.20.9745.022; Mon, 30 Mar 2026 22:11:04 +0000 From: Aaron Tomlin To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, mst@redhat.com Cc: atomlin@atomlin.com, aacraid@microsemi.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, liyihang9@h-partners.com, kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, shivasharan.srikanteshwara@broadcom.com, chandrakanth.patil@broadcom.com, sathya.prakash@broadcom.com, sreekanth.reddy@broadcom.com, suganath-prabu.subramani@broadcom.com, ranjan.kumar@broadcom.com, jinpu.wang@cloud.ionos.com, tglx@kernel.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, akpm@linux-foundation.org, maz@kernel.org, ruanjinjie@huawei.com, bigeasy@linutronix.de, yphbchou0911@gmail.com, wagi@kernel.org, frederic@kernel.org, longman@redhat.com, chenridong@huawei.com, hare@suse.de, kch@nvidia.com, ming.lei@redhat.com, steve@abita.co, sean@ashe.io, chjohnst@gmail.com, neelx@suse.com, mproche@gmail.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, megaraidlinux.pdl@broadcom.com, mpi3mr-linuxdrv.pdl@broadcom.com, MPT-FusionLinux.pdl@broadcom.com Subject: [PATCH v9 03/13] lib/group_cpus: Add group_mask_cpus_evenly() Date: Mon, 30 Mar 2026 18:10:37 -0400 Message-ID: <20260330221047.630206-4-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260330221047.630206-1-atomlin@atomlin.com> References: <20260330221047.630206-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0577.namprd03.prod.outlook.com (2603:10b6:408:10d::12) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::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: CWLP123MB3523:EE_|CWLP123MB6512:EE_ X-MS-Office365-Filtering-Correlation-Id: 531327da-880c-4388-3936-08de8ea93ac4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: lfECL8cnOV3MCVPvP2CdesQziLTdairCRfQvoYMf2mGKXqIY04tiXcMBL9OjXxzvZRAH3Qq8c+4meENbTINkgfY9+52mYrjjW0btOpQLx3h8li7Xwxu7sFsVkrQCumacW9p7qTAmenmTzWa4wZENw1RF0JAoNznF0ooige5P8XwIxWaNTybfAyO5ynfTRhp2zXB8/NHPcaPDyn9nHFtuQ23OoxOId3sfgWYBmCS4HZdSyFqpU2Q+OZU/5UR1l9wydiUv22b/4dPs2AxMaRezv+X95+LUlqV4W66gImUC2dQB+Q203rCKHwVLxZgDU2T32bhfQaXnU4jYGTjNFW1bN8Eio/+IciOQFoV5UYI+QaJ70Fe1coAhYgvXmed42Ll2ZofKUVXTqa8cK26Fwyk9Ok/oh5sOG2RWs/pt8AfShMbKCwWFJklhD5he1jhLnY2uCUwCwNV690Te88SnHbP83JKzDQDSGxk71oW3fJ/AhCjoIHenpcfTorW1wsnkYcMUzZtjJUBqfPhtXuVaaI38G5yj7W4lA0iS1WbgSA/8BpPNkAnk/4xFdeorKZC7M+W3341bxj7AEjL/2FDlP6Flcg8F/rGL1nG5GpL+OeCSvt9a6GlXmEqre5QuuFoFHPRZgmjOmNVqwx+/0brz4RUZbtT5zVeGOGY6O++c0et4A4uSwRwcGV5GHT0rwMfO4ydIn0okTJrC5tSAmyBG2XIE13JQPoKsXOcA0GD4JXuAsww= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BFYVV8dZ3rYzSRomiGRrdqsZv6PBKFgiC9FFpAEtGWG5BBgkS1cAwyhTxgLY?= =?us-ascii?Q?DoySTa2S/dVsQhi0JmB4OAFquL5FiZfFZsEmGNHI0hBHNVw2Cxv+Q4ZnzY0m?= =?us-ascii?Q?dHCefOwj7upjikD7Zt/iZ0tbFDur4SQFHAq3faDIOTCAsQgjNBW7C693XNmt?= =?us-ascii?Q?w1tgpnDh+lYkRt2atSvQET1lbN/Vy+YTQ63vblQt4jJiPDNxK5HhBDLO8qJq?= =?us-ascii?Q?BPGg1GmDj/nSxIjAmLklxVfIyhfXc7sP+M92LjNmq3nctItlMznLBMHoaFLp?= =?us-ascii?Q?XwzfUd1/2sZdDPIGc5kaX2qNFxu9eX8cnMvI4MLFgTrjHLqueJybsOJjuKZa?= =?us-ascii?Q?Ll928WGvGDKfb0FwAJhmfOkVemWPFSXiWXLPHOVahxMjJthe6U5NqBWv+GiV?= =?us-ascii?Q?KQojX8jAC2jVuLkb0w+AZs8bldtAlFmk3QQinKDqddbN2RiqXH+HBeYDwSzt?= =?us-ascii?Q?t9xr88HYqCZQWvllBWzJm5rkRZpMIDonDI1DGBNVQVARIm+5LOL7ERztFJdz?= =?us-ascii?Q?V3h+VdcGHph/M6hX9PmrUBnplyBA+1UWXbpzDUx9ofh/Rk41HD5IhkPizwjt?= =?us-ascii?Q?ozc92bOqkU+6kD3WBaxrQS/39A0I6GkD7bduVl/fBZ1FtuijKZGg31KFQPJI?= =?us-ascii?Q?jSybiuRhQrMqlDiZUXSjMien7qseUF5IrM8g+Ky1rP9fTvNIe6Dps6KGEw6h?= =?us-ascii?Q?zc8yEiX0ITIOB/Gdg1jdBaafIxBr4oTkHnnbBoaANVGPesELzT73vmsf5I7t?= =?us-ascii?Q?TZQ8Oy4HNR1G+z2UXK2W/5pWusnkguw86bXgRbxOuakq033IPOIJ6feY2M4U?= =?us-ascii?Q?hGKW29i9bKwY+AvBRer+1Ldokrwzx6iYPjCiM1hfZd50WnHbltjjgwPGZ+0z?= =?us-ascii?Q?SJSdCNWarrrxHXeHF/jxGne7m4a7zuVklSTirMtN+bzDUbzYWbqAxzdRZRX8?= =?us-ascii?Q?Pw0vTsmhQR7bxen5SsQYRIWKAdn7H8u6taBKIdQkxorhsOUOKjoyZF7peBi/?= =?us-ascii?Q?ag1xO3sR7tib3TE2fzoKBje9whDOjNGN4RnYfzbEyXz5jdXzlB9FUE0U5USk?= =?us-ascii?Q?n+z0GjaaQQl7vJWLF4ROuY5OolbzMekYswEnnB+HwZnU7aeV/Bn/+2FeXVFI?= =?us-ascii?Q?E/mkUW3vMnZFyXIQ7duQMlqaMLCZhv6xrVGHaQ42cnf6Ac67J04IVshnsw7f?= =?us-ascii?Q?QxsF6TWiwf0perLQLFIFSGzKMHptbbFlRAha4516nAWQMPIqSib55XwbIqRQ?= =?us-ascii?Q?H57FOSk9ercisxlpCRzCErD8qJtWVi5sqtG10BpySDWWsk/6r02t7UEbMIKS?= =?us-ascii?Q?SLbYcquwDLmW3LFwEi3PGRax8erTJKe4ZY1o1qAoSGdzAb94UJnPxpjy8bbV?= =?us-ascii?Q?3FGCyP3a1PpbbT9BtlHrhd7x0ZVGsABAX8uYoHkXZZfyu0WIVGx/2AJZMhPq?= =?us-ascii?Q?Hf/iDNesHl5cXfqLPNEbPPVqMUa2VeWylvTwXQhXue5dd5bXve341F/7Aj5J?= =?us-ascii?Q?RPC2AYTotdgMLujFdqGWJkopQK5oPmuFzEEDqFFrAf60m3cJRNetOBvlEwTc?= =?us-ascii?Q?l9/xWywzmzvDZbTdIXQqMH2VXYxLLpglM/dddM4wddgn+CTs4cmgzU7zDW2T?= =?us-ascii?Q?X3d7MmqbB+RmFGM/DTmuVryjrLdTkhOl9C6rkH1GAFDcLAhb2LHaNmdA1pQx?= =?us-ascii?Q?XB658I3/w3/7VrFhprnohwD9pRHYi8hlX/Zlzp1udxvU79zmXgcKHyQCVv2d?= =?us-ascii?Q?9fU+NwNFXg=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 531327da-880c-4388-3936-08de8ea93ac4 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2026 22:11:02.1598 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: N3JnrM+YqQuo2rW8gYjgTLF4ZhhCIsFQoH2vurRq8LdR/imposRfv5zoXCLNSPHoQRob1movUUvJqjANEam3RQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB6512 Content-Type: text/plain; charset="utf-8" From: Daniel Wagner group_mask_cpu_evenly() allows the caller to pass in a CPU mask that should be evenly distributed. This new function is a more generic version of the existing group_cpus_evenly(), which always distributes all present CPUs into groups. Reviewed-by: Hannes Reinecke Signed-off-by: Daniel Wagner --- include/linux/group_cpus.h | 3 ++ lib/group_cpus.c | 59 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/include/linux/group_cpus.h b/include/linux/group_cpus.h index 9d4e5ab6c314..defab4123a82 100644 --- a/include/linux/group_cpus.h +++ b/include/linux/group_cpus.h @@ -10,5 +10,8 @@ #include =20 struct cpumask *group_cpus_evenly(unsigned int numgrps, unsigned int *numm= asks); +struct cpumask *group_mask_cpus_evenly(unsigned int numgrps, + const struct cpumask *mask, + unsigned int *nummasks); =20 #endif diff --git a/lib/group_cpus.c b/lib/group_cpus.c index b8d54398f88a..d3e9a20250ff 100644 --- a/lib/group_cpus.c +++ b/lib/group_cpus.c @@ -8,6 +8,7 @@ #include #include #include +#include =20 static void grp_spread_init_one(struct cpumask *irqmsk, struct cpumask *nm= sk, unsigned int cpus_per_grp) @@ -563,3 +564,61 @@ struct cpumask *group_cpus_evenly(unsigned int numgrps= , unsigned int *nummasks) return masks; } EXPORT_SYMBOL_GPL(group_cpus_evenly); + +/** + * group_mask_cpus_evenly - Group all CPUs evenly per NUMA/CPU locality + * @numgrps: number of cpumasks to create + * @mask: CPUs to consider for the grouping + * @nummasks: number of initialized cpusmasks + * + * Return: cpumask array if successful, NULL otherwise. Only the CPUs + * marked in the mask will be considered for the grouping. And each + * element includes CPUs assigned to this group. nummasks contains the + * number of initialized masks which can be less than numgrps. cpu_mask + * + * Try to put close CPUs from viewpoint of CPU and NUMA locality into + * same group, and run two-stage grouping: + * 1) allocate present CPUs on these groups evenly first + * 2) allocate other possible CPUs on these groups evenly + * + * We guarantee in the resulted grouping that all CPUs are covered, and + * no same CPU is assigned to multiple groups + */ +struct cpumask *group_mask_cpus_evenly(unsigned int numgrps, + const struct cpumask *mask, + unsigned int *nummasks) +{ + cpumask_var_t *node_to_cpumask; + cpumask_var_t nmsk; + int ret =3D -ENOMEM; + struct cpumask *masks =3D NULL; + + if (!zalloc_cpumask_var(&nmsk, GFP_KERNEL)) + return NULL; + + node_to_cpumask =3D alloc_node_to_cpumask(); + if (!node_to_cpumask) + goto fail_nmsk; + + masks =3D kcalloc(numgrps, sizeof(*masks), GFP_KERNEL); + if (!masks) + goto fail_node_to_cpumask; + + build_node_to_cpumask(node_to_cpumask); + + ret =3D __group_cpus_evenly(0, numgrps, node_to_cpumask, mask, nmsk, + masks); + +fail_node_to_cpumask: + free_node_to_cpumask(node_to_cpumask); + +fail_nmsk: + free_cpumask_var(nmsk); + if (ret < 0) { + kfree(masks); + return NULL; + } + *nummasks =3D ret; + return masks; +} +EXPORT_SYMBOL_GPL(group_mask_cpus_evenly); --=20 2.51.0 From nobody Wed Apr 1 09:46:40 2026 Received: from LO0P265CU003.outbound.protection.outlook.com (mail-uksouthazon11022078.outbound.protection.outlook.com [52.101.96.78]) (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 017D13AA19D; Mon, 30 Mar 2026 22:11:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.96.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908671; cv=fail; b=pu/MqjydlRQs1Ne4LBdjYnIpI8qBU8XmpIwt1itL4vyL0VBIi6bd4K4pml0R90nkPoBSqR+u1fiXkKxaWzSRR1wjSv8UUBdHEzyidoGvj2UY94YUzAlqZwbbv9S/VFjcl4OVghtDlSMOpQBYOgCRiglNLCAE+HFUX079ynV6mkc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908671; c=relaxed/simple; bh=THpSiGAGqaVKK7VUGXeHeN/dZEVm5lV0Gb50xYFucew=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=krg839TLz57bHxH3J8ya1Da6olLfRkbMwOdrsC8mHbSJMg74FYsLQ3WiIyUh4FrBmz2x6H/N/aqbT5nLULGGNv4G7a0GGRXZEA52JiLVQsd3W9RoT9sWgUfWjaQVQhgn7hYvGhtxk9WmusDSlJ7Xv//LOrlXBXHHhqV+oyUyllI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.96.78 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YnGIyaYofg7F066+WhU+MUK4dw0vxhFsLX/9gyN/SE42SeIQh/zS9iDTPLgxTV/JJ73hwMIDkaPr/jMmjJIZhuxhwBuE5eyWO+kfFkuT/eMHaCKXYJm8g4j0nkuSbbV9rxCLRBKz2myZZSXC1W4Dde8a0drpCtHoiYk7UbTWutQYySSBpDa81Dwxr1cJDab9rB6/q/DXbskWrYwcAafhvc5+lHSwG2AHm9Cnom+kVojBNUES9dV2wLNYENZKLMQsU0i3JCQG5QPXIFA/q1CwrO4c6CUdyAcn8BIGf9Nw+Al497pP3YcGK43o7kRftPK26dbyljeL+MaJcYANYzhIuQ== 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=Z3fH192XZWmJdTfEcIr3Tf37LB1pME6rTt3OO7j//a8=; b=jjBho6wcYrxa7z5Kz25Wpmfi6sGTr7PhNoBfZHIZwS8S1MkdxiFeh+T71Z7Xru2LhTH8+qZigr+Ic2Xk03XV3Uo4nZd2yEW8SI+3t3okiXoq2CFq2XSLdHT6nzyU2D6aZEUx0KUaGCKj5VMPf41rbEQ45eoYOvbuxNTUUY6uIG3sAPve53OkDoq7Pd7pv1R1/cl3MAh4X0RtTK1v+B5BrEw1sKk+bPORHIuIwQv6qX0YOyhhBJbH4gD2zA+0RERhezd2qgSR65WIMpaY7m657AQTFC9NfpHVopNWERYV1OUnUbzcwFBnT5gPF21y7/aHEeHg3+yrHJ62esc4Lah20Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB6512.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:186::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Mon, 30 Mar 2026 22:11:05 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%2]) with mapi id 15.20.9745.022; Mon, 30 Mar 2026 22:11:05 +0000 From: Aaron Tomlin To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, mst@redhat.com Cc: atomlin@atomlin.com, aacraid@microsemi.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, liyihang9@h-partners.com, kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, shivasharan.srikanteshwara@broadcom.com, chandrakanth.patil@broadcom.com, sathya.prakash@broadcom.com, sreekanth.reddy@broadcom.com, suganath-prabu.subramani@broadcom.com, ranjan.kumar@broadcom.com, jinpu.wang@cloud.ionos.com, tglx@kernel.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, akpm@linux-foundation.org, maz@kernel.org, ruanjinjie@huawei.com, bigeasy@linutronix.de, yphbchou0911@gmail.com, wagi@kernel.org, frederic@kernel.org, longman@redhat.com, chenridong@huawei.com, hare@suse.de, kch@nvidia.com, ming.lei@redhat.com, steve@abita.co, sean@ashe.io, chjohnst@gmail.com, neelx@suse.com, mproche@gmail.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, megaraidlinux.pdl@broadcom.com, mpi3mr-linuxdrv.pdl@broadcom.com, MPT-FusionLinux.pdl@broadcom.com Subject: [PATCH v9 04/13] genirq/affinity: Add cpumask to struct irq_affinity Date: Mon, 30 Mar 2026 18:10:38 -0400 Message-ID: <20260330221047.630206-5-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260330221047.630206-1-atomlin@atomlin.com> References: <20260330221047.630206-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0575.namprd03.prod.outlook.com (2603:10b6:408:10d::10) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::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: CWLP123MB3523:EE_|CWLP123MB6512:EE_ X-MS-Office365-Filtering-Correlation-Id: af3711a7-91b2-4a70-d12f-08de8ea93cf5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: MFviWz41+Qdsv7lFMC8UBlZoTU0pSQhwyJMzlFjHTfQuIwCxwFeQCTTXE0aeFAUGzwqsc3cWWJ9II92tVEd4jKb82KsLG8XNhGkE+p4lHNyATGjF7TIzMsEanDbey2PFfL4NPNzNM765NdTBfV1Dvcietddde+VY6vIgEiFzarTyaYPsfiDw29YGLEDO+NFdutYm2Ofvoil/jmuG6rUVp2ngqvRvJE1VtOknoFh6AQUdfBBCDjohtYyEl3ujJsFYK9UXgno8SnjutezX/ioKmRGJ/hTrdszfx6KwnKZMgFpBdiy544vwCSnhCsRXiHD1sKc3zF+uJ4bm60hWV5C+xeUabDwcM14RkoGfOpt7+JRcS5cjTgc9+PRYBceKY8p3q6WDVmdqeFVlBjC4xHYQXiZiqGY53gNEAvFr2fCGAPIcIdFc5atBTL0hxt85vXMg7wEgFbFlxh+5pqLYk7oSO2JZJkxuD+MzIajHL9OMmLyTxyDCq4yH7oFnbZcGMPMdwz+KmSzb1jIHx33OdsdiDfsOQtEsUndlVk8C31tHf1d+cxYytRPb8y+2AcDUB8Py/Hq4lM5SFAsCkYvP6KWnlSEYQoMnCc636366bHpWSjtve+UiQ/FI93vwxGWTArGndtDG9f5+Fc9pgeR4uAgRAlS6stcIH4zzwVSY17Z3ZWoeoF9Tjn1FpBkvvRccH/sDEJeK25oarlwhMUyPJx4gwMtOaX8KIDZfnuH16lbkQeM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2pfJfiQpo4OJoQos9FxB7ALA5Hk1CV/tfY03EsF0lKicN8yFJU+DTJtBLL0Q?= =?us-ascii?Q?LheoWZpu4QHg5RZ7YrZ8EzRu55hM/foPYUjgyT5dVJLcRX1bAGBipJA1Z3Q/?= =?us-ascii?Q?Mpb46emNvKpbzx1PeeH/UcDeqXFRc5RytX4lYaRcviwLd+jeO65+sJLylRbS?= =?us-ascii?Q?Z+W9MtzAVKHVoM5YWYdsik3lm4uvZfnphEPeaUXB8ilxGt/D8/gJKU0I6IvS?= =?us-ascii?Q?vmS5dUlhgqAKovToa4YkqaEK7B5qaNFjYZSaUlAytRU4a0S+qv5uleXt8D0m?= =?us-ascii?Q?O32bDgvTxEtC4GuJZyToIePN9Nm9km1KuK90v7goXbaQdBLnSlRn9NWI8b0E?= =?us-ascii?Q?mkrUk1IlWV9p1ggF6hr2uGxRNrH6vZv3YqrDOts0SNaNxTiiL9n3MMKjcG4a?= =?us-ascii?Q?6PCJsjp8QQe4KOYsTYVl0ExSRBf4WuZsuc4K1wxy1AoI0IrlBrOdCHqpHTBo?= =?us-ascii?Q?m503QbRi/OGrsZAUGyKH/QuCnkXweOAzddFR4eGKZ5w3uhm8IgpmP5xHXvNn?= =?us-ascii?Q?ZQ1BdTU35UuQqmd8D/0VsZl82p5AH3VO0H/7AHTe1XHsYv4T8ltdc/0XMJkZ?= =?us-ascii?Q?iZj8BWd2/T3wowVgfC7k9euYuoXGwdVYuE+BsBHRpeJKSquq9efn4VIMIHU4?= =?us-ascii?Q?Qcsw29PKxRwPCA/RwdgZHrvHcPAgvwC6hzl9tr75EcQ2SGddSblT7HRMeslE?= =?us-ascii?Q?iQxN26ZULBm98ojcYKi6zOLeR+P4/9McwTipVoQRV+JW6XIs4X796YvWQOoN?= =?us-ascii?Q?j+WJRXrl0rdBjju9VKZq4Vg/9oMs1d2yfREwu+O/08KHMWU+XcWOuP4l2jei?= =?us-ascii?Q?MvHjxkBEvBlOB19Mj6j7NGjDfLUsyxvOt7+t/jRXnjAeN2XNLwddEpvQmCbl?= =?us-ascii?Q?JArKQdcJvDusQaliIXXR3xKudv5sXxs6GAm0/YKlj0L7iTC0+g0tY80s7ziT?= =?us-ascii?Q?/RIAVFxrcDN5Wh3KTEwEPSiVs0ZvVKSfGihh32uDkarE/MZUG1O4TZuFklAo?= =?us-ascii?Q?axSVc7DHIQEQ6l77pKR5THtO3XGi4CobMGiHJNLqE3A9/V/40tPXi7P/pqXR?= =?us-ascii?Q?Gx2+jgCbDeAeMvP84Lvs0ZrMAELjkLQqp3sXeJJRNMEcHwD1q7qEQdyawDOw?= =?us-ascii?Q?J/fMZ+gZnugFWIplp3Ezp8t0FFAlxmhiEZm5/bf0U7jQUKF0wQQKZ1UODVUp?= =?us-ascii?Q?hQcDD/27RomskYaSWBlGEVbjovewXSfa/K2BroMB7xWdd7D3XMMEZnlEgreB?= =?us-ascii?Q?7VM+V32XO/LbrgKOi4a2aUHEFoCIxgofcjjlrTTglEjqglW6B5IfZMtSyJgM?= =?us-ascii?Q?enXTbsviJ0p7UJUCQoHgf38tOFn3z00fDGLr+FL0X6uiys2qYdIh4gp6uCYG?= =?us-ascii?Q?Or9m16kB+K4paWvwrC1JPYKaJi3q/x4YGjCV8/uLXJIAnxF6K33hhp/NQL40?= =?us-ascii?Q?UgFh1CwWTSR3/LyD/NSsq+oLhETnmBs9pKUH+d6kpar0Y0zqYMdu5GFrThlm?= =?us-ascii?Q?7fZ0vuzDvq81zALgaOTR5UTyMbixHgiHDvo5ZGA/aAHEcBDjYAbW7wo1sBS2?= =?us-ascii?Q?mr3shVN62uFpK22gBmIhXYcD4lDPdAKALiun3L/+jyCu3RY8m1gODFboXrBB?= =?us-ascii?Q?EP6pQNqIGrWsZNmgmnBj84QfywWiBGr64nC+OwOkqm/X/DYzvLEW9SIllDjU?= =?us-ascii?Q?nZbK8hNh412wlU/HSZfoMz5gRFTEuRTXRisfj2ZtkMjkdeiSeEVBVb3kUMHw?= =?us-ascii?Q?DxaOonBJEA=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: af3711a7-91b2-4a70-d12f-08de8ea93cf5 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2026 22:11:05.8304 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: E2IJBF5IaRIOAmAh7iSla9CsL5j6ONS6QYo3HFaOJHrA0syDa37GhPkTM6+fsSUbHOzLlLeEhp/s1Ve0PjdGCA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB6512 Content-Type: text/plain; charset="utf-8" From: Daniel Wagner Pass a cpumask to irq_create_affinity_masks as an additional constraint to consider when creating the affinity masks. This allows the caller to exclude specific CPUs, e.g., isolated CPUs (see the 'isolcpus' kernel command-line parameter). Reviewed-by: Hannes Reinecke Signed-off-by: Daniel Wagner --- include/linux/interrupt.h | 16 ++++++++++------ kernel/irq/affinity.c | 12 ++++++++++-- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 6cd26ffb0505..afd5a2c75b43 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -287,18 +287,22 @@ struct irq_affinity_notify { * @nr_sets: The number of interrupt sets for which affinity * spreading is required * @set_size: Array holding the size of each interrupt set + * @mask: cpumask that constrains which CPUs to consider when + * calculating the number and size of the interrupt sets * @calc_sets: Callback for calculating the number and size * of interrupt sets * @priv: Private data for usage by @calc_sets, usually a * pointer to driver/device specific data. */ struct irq_affinity { - unsigned int pre_vectors; - unsigned int post_vectors; - unsigned int nr_sets; - unsigned int set_size[IRQ_AFFINITY_MAX_SETS]; - void (*calc_sets)(struct irq_affinity *, unsigned int nvecs); - void *priv; + unsigned int pre_vectors; + unsigned int post_vectors; + unsigned int nr_sets; + unsigned int set_size[IRQ_AFFINITY_MAX_SETS]; + const struct cpumask *mask; + void (*calc_sets)(struct irq_affinity *, + unsigned int nvecs); + void *priv; }; =20 /** diff --git a/kernel/irq/affinity.c b/kernel/irq/affinity.c index 85c45cfe7223..076a5ef1e306 100644 --- a/kernel/irq/affinity.c +++ b/kernel/irq/affinity.c @@ -70,7 +70,13 @@ irq_create_affinity_masks(unsigned int nvecs, struct irq= _affinity *affd) */ for (i =3D 0, usedvecs =3D 0; i < affd->nr_sets; i++) { unsigned int nr_masks, this_vecs =3D affd->set_size[i]; - struct cpumask *result =3D group_cpus_evenly(this_vecs, &nr_masks); + struct cpumask *result; + + if (affd->mask) + result =3D group_mask_cpus_evenly(this_vecs, affd->mask, + &nr_masks); + else + result =3D group_cpus_evenly(this_vecs, &nr_masks); =20 if (!result) { kfree(masks); @@ -115,7 +121,9 @@ unsigned int irq_calc_affinity_vectors(unsigned int min= vec, unsigned int maxvec, if (resv > minvec) return 0; =20 - if (affd->calc_sets) { + if (affd->mask) { + set_vecs =3D cpumask_weight(affd->mask); + } else if (affd->calc_sets) { set_vecs =3D maxvec - resv; } else { cpus_read_lock(); --=20 2.51.0 From nobody Wed Apr 1 09:46:40 2026 Received: from LO0P265CU003.outbound.protection.outlook.com (mail-uksouthazon11022078.outbound.protection.outlook.com [52.101.96.78]) (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 9A7463AA4FA; Mon, 30 Mar 2026 22:11:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.96.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908673; cv=fail; b=BX8vgLRvncR7AWBzn/bEZMGryhdaz5ZjcH6evyWoyJkTRk4Up30Aw7lh06+dX5W0+8m/iY+2ATOB7Olp7JL3EDTb6FRV2QVHlLBzc64Sf3sHevKFLgg948etcINc0fwKw8Uc+y0hWbmd2IJdDgVJeDDLotqT8UgxT6hWC+FGzrA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908673; c=relaxed/simple; bh=TfyOcIJyLFNHOJ/MVSOb3tQsDVEQ+ECPRa/mX3K5Ul4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=gXqac7UakgEWe+B3NxPFMtZma6JrDN2dnkwX+cs5NovaU7nUoVCOB0EiGtT8JJ85n42VhzmYx1D4FRr30OSIEJWJE9sesV0wh6If7iarDmP621yDgqfFO1P5V/s60pP3yp5gFPS3dVV48ClfVVp2Brp+arWAjFkVSQQlMCz90MQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.96.78 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k4F/xYDdgLHmGfFAydZao9cQgd3XX1188+gA/HBjt64vwuXkImGJxA7BDFnqIVgYgCOVBitNxNznHbSqaqEntzF0jMCy8wcwtwMyVZSCnIa/vW8aAzYS3WJo9sl+4yb5o+tbMM615RK+AK9wH+N7HpDSF6ZYOA7CnLa0hL6AfbkMWu4TN2ku4/EqvvHQi11SI0qjbXflOA7ZWiC3ft5aUMzKXurjcMToBttB1fx3rpZn6YAWxs34U1YlhDE3qpL8ONFr4yLGgl6Ln6huTeBHJNbtUdgkx2KoZNXQl2z0UpFNNzK7heoaF7gT5VMPwhX0vRJnFy/Fb6cEvcwjK40hfQ== 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=Kg3yHjLjoMvYW0pRykwx8zyz7xjOhTSffO7qPpl9FdY=; b=UNMDz0KLeNi8ocnGiSKXUdEJIRlsj3KMHQQdzuevQGDY6NBTV1DSGfyEmVuBaYUoZT0VlCHISo9FvkkLHr9bWfBqOIR9aoXqr70WMqtrZUxqxgXQ2ZHhsOOQAfmkMw/WVNUzfNvo7t9bQWOxhhlcP1hzswHIb2A6LPuSpcgGgAgHlndiIVgXpA6lBRRsl1Ai3/LGPout6FunOEmMlQac1G7Mt6j6aTUmE6CahE4knfJTRKmVBqrpXvAzAT8LBKARr6NPOXtW9MDTCN1NNncnaXT6uhN7lXnOEhGCOJg+q7E6/h220QoL4YTZl/bdsrFucYhtSATd/d6bzjxncAoAvg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB6512.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:186::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Mon, 30 Mar 2026 22:11:09 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%2]) with mapi id 15.20.9745.022; Mon, 30 Mar 2026 22:11:09 +0000 From: Aaron Tomlin To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, mst@redhat.com Cc: atomlin@atomlin.com, aacraid@microsemi.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, liyihang9@h-partners.com, kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, shivasharan.srikanteshwara@broadcom.com, chandrakanth.patil@broadcom.com, sathya.prakash@broadcom.com, sreekanth.reddy@broadcom.com, suganath-prabu.subramani@broadcom.com, ranjan.kumar@broadcom.com, jinpu.wang@cloud.ionos.com, tglx@kernel.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, akpm@linux-foundation.org, maz@kernel.org, ruanjinjie@huawei.com, bigeasy@linutronix.de, yphbchou0911@gmail.com, wagi@kernel.org, frederic@kernel.org, longman@redhat.com, chenridong@huawei.com, hare@suse.de, kch@nvidia.com, ming.lei@redhat.com, steve@abita.co, sean@ashe.io, chjohnst@gmail.com, neelx@suse.com, mproche@gmail.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, megaraidlinux.pdl@broadcom.com, mpi3mr-linuxdrv.pdl@broadcom.com, MPT-FusionLinux.pdl@broadcom.com Subject: [PATCH v9 05/13] blk-mq: add blk_mq_{online|possible}_queue_affinity Date: Mon, 30 Mar 2026 18:10:39 -0400 Message-ID: <20260330221047.630206-6-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260330221047.630206-1-atomlin@atomlin.com> References: <20260330221047.630206-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0579.namprd03.prod.outlook.com (2603:10b6:408:10d::14) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::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: CWLP123MB3523:EE_|CWLP123MB6512:EE_ X-MS-Office365-Filtering-Correlation-Id: 069247e8-5803-46c0-73f2-08de8ea93f0c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 6NmqDQAsRG460nzhKGYfMcXQrJaY3tUoOYxdni+7vzJKnfkBixULOsYicD6Rl8je5X57JrRREyGQIOFpxGzDWQLllNPR89o5MSJuyCbGluo0FoCZZdtGAWVwis0kILGpoifKpuWCC7ZbsGhlKpCJ8/z4GzhxXpBN/2WXNMBXp4RKqoqOVQbtq8IN3oUUak4rN7CHWlsW4y7T4up/cd7BMqaneerq4j/zwwPIgQ012+eADPBInXBecer66+PKMKownsk4WTeolyYuya87RumlL5ddSeNC2QrG2JfIxCfhLuxVM1gyWVkmgHsts6rBFbSn8YBKZnLFhie9QYEddl1PGvQVYsr6LQAXP0fwuSi9rYWLprhdmHMsqDFHXIiuwEo9S+RviLWx361bxUgWTITZ9N5yZU6/3I348Tn0ezJJXfNWteo0xBeUgi6AUALIxYbFkCl09IgNccwOTSqXKyHobDScb+9jH4KZhRjdzWVsHY0zIk59M5ZldWTsUGxPO/NfpNwmhPa4Ro/hGplNQ8+FgVszjaUWYop9fwM98U5qtytpuDJlAgB48K61k0y+82KllKGRC2RKK5kzz6kqRQMOP909nDdgwjQu+MbWpN6i/N1m75gvpsd0BiLZnKwet0bIiMlRYqUuUjJCChTsxLXhiKP01LbHLofE9DsRRIzQApHE8B/Fl/dfxdOQx0k9/p3RjtgM7t/HEBlmRSVV7ICDN0BGV9IW6G+ZltJ96YKiVrQ= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?r6h5vbc1zkYcqrNKn7ANjDOq28jeXT4EG4/OJc93pTg4HxvdysyFa8cDGaKh?= =?us-ascii?Q?Cydj0KTkl3mSFANU97Ui3G9eZhRjUr8RGzQJdBfjhYuhSt/6x/jwmoPXC6lz?= =?us-ascii?Q?jdFYqJw0SvS90GnsyAXeS2UXkzYs9pYF2XzMMXP5NS9bODmphfUC3ljP5N7t?= =?us-ascii?Q?wQcBI5Mx5ATnl+lSVCx4raWgZUkvtL/tIyi9+7FCP1j5ETCKthBKJkyRN7Z4?= =?us-ascii?Q?2VZDesrOxfSYrjm54vY7NOftqoAogAfFB8sHKao5xHgSRaJAx8HC9vJZ5pyV?= =?us-ascii?Q?G3hU1AKJFqfUpmc3BMT4rf+Bp6MrP0e2TLTrqv5gZFOEu9L2sho4RImEEJM5?= =?us-ascii?Q?SleF8ttkjO/x/fvuhQ5c/kUVpZTc58mNkRUD24SnIIBnpy5XBCT0CryxlAPE?= =?us-ascii?Q?u5Proh0LClSzh8CrI4M644L9OiTBKBszzj6f9DHrvf+w6A5yVjBcYa8sOAu0?= =?us-ascii?Q?5zyjuhx4yhE9bo9DItIb9wfqUF/CnV3nsy/MdZTFRn1ZKN6PNFskpB+9nOxm?= =?us-ascii?Q?aCZJTGwJcpGJg6RYn6t14HUYI2vZ7nsEpw+Cki9BPC8CKGLeUQaEkuAKg2U4?= =?us-ascii?Q?+oNHfQRWFzCeUSNIbEz+0R5rnBR5pIOnGDiNesi6mffNs/eipk5PEWVsqqBU?= =?us-ascii?Q?hzJsYvSMLQ307ko9FK+BGQbLDBtOaYzBiXpCWJ1QNLywVo1lrNMAU4lE/0M6?= =?us-ascii?Q?l+ZdZHiuuhOS88oVfYAxJYiT5I1pk/k9zR64B7NOOW0X8f5nvTMoW2/PrbHH?= =?us-ascii?Q?+5yqZbQl7V6Rx9OkluBxoc5izydhUEz0EKkbkOHdOlVQng8d34MsBH2hKz5P?= =?us-ascii?Q?ZI/zYLWUU7cQzaSPy790fpMDR2yfJeC1OJx9lhe/GPIr54QKYADGo4eETaiR?= =?us-ascii?Q?0byWbNZFVofu03S7cAdS/FS/uvDHmOEd7RRwSUTvNR70mbThiInFzJknnwUH?= =?us-ascii?Q?xAoz1E5GVwXdyUa0dj8wJubk2hdHVzNXINO3MO9Phla9d4wgkHkDSWDqujRP?= =?us-ascii?Q?Uc9AhkewfFKNyd/T/dVrzoEKMH9uu33/AmBrSXsenuGEj+yE2NEuEr5GOQGG?= =?us-ascii?Q?Tcp3fykpwXpMMS+StuAvvaahEl1oYRMRB4/CTUgSSH0ZkTFYvnz38xI9qAoF?= =?us-ascii?Q?XzFOYwLPSjl4ygsSUCeRue+25fU+BIfHbghWwFyKjv+2vJCKsxDzclJ6lEE3?= =?us-ascii?Q?2yo/+W1OUKXNrohsuXnTuJB5wu7QtgTMnv+LK1oDaV1HlfY6A4zsXAoh7C44?= =?us-ascii?Q?HLHiX1KBKNH0ReMjsZjT3MlqaXwPtA5oFIGOjFvCh0DMkEU9KZjpFkOAPpaH?= =?us-ascii?Q?Yu+2V4VtG0yVfXfv1hEQzsi9rRWyT0J+p2GnF9mVULzwIPH0vIU/muEl2LVT?= =?us-ascii?Q?DLfkjJ7mGHVureVOYI4C9/us/V4kab0rSHApHQh0+oq9bxM+9PPM48u3XAaA?= =?us-ascii?Q?uzyrMuvuuLXwy+aUmWQuHQ8mbfp+yMPfVVd/23CTBB9Z+EUF6tWV6YCfozF2?= =?us-ascii?Q?XbSeZWRH5yFXy4VdThz4Yw1/iTfWe0kUtPXEx1i/EcpD/yfLqW9SJtIP269k?= =?us-ascii?Q?6Jigq5y4uO0H9Jw3t8KnPb6Ov6y71y9Kacoloq+VlvCc66tqWEITHelEvhe1?= =?us-ascii?Q?TPefhxQoeeUrPBw0wi2uv9vr3w90f7oRYL6vW6xuc1vwUSzPDdB+j21JZOp3?= =?us-ascii?Q?yEL3FXC8/ZJahRRHxHGX55K0XnrNsKQMR9cCwTIN0QbVWhpBdZXDjimxolA+?= =?us-ascii?Q?FAZAUwCoKA=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 069247e8-5803-46c0-73f2-08de8ea93f0c X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2026 22:11:09.3153 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Bj+mUYGdrlSrBC9iwsRkvuhrLxC2hLPBtIVllN75v1sKvv+I/rsPvROllAGKSOD79J7R8EA6JNaU6RtCYtI0BQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB6512 Content-Type: text/plain; charset="utf-8" From: Daniel Wagner Introduce blk_mq_{online|possible}_queue_affinity, which returns the queue-to-CPU mapping constraints defined by the block layer. This allows other subsystems (e.g., IRQ affinity setup) to respect block layer requirements. It is necessary to provide versions for both the online and possible CPU masks because some drivers want to spread their I/O queues only across online CPUs, while others prefer to use all possible CPUs. And the mask used needs to match with the number of queues requested (see blk_num_{online|possible}_queues). Reviewed-by: Hannes Reinecke Signed-off-by: Daniel Wagner --- block/blk-mq-cpumap.c | 24 ++++++++++++++++++++++++ include/linux/blk-mq.h | 2 ++ 2 files changed, 26 insertions(+) diff --git a/block/blk-mq-cpumap.c b/block/blk-mq-cpumap.c index 705da074ad6c..8244ecf87835 100644 --- a/block/blk-mq-cpumap.c +++ b/block/blk-mq-cpumap.c @@ -26,6 +26,30 @@ static unsigned int blk_mq_num_queues(const struct cpuma= sk *mask, return min_not_zero(num, max_queues); } =20 +/** + * blk_mq_possible_queue_affinity - Return block layer queue affinity + * + * Returns an affinity mask that represents the queue-to-CPU mapping + * requested by the block layer based on possible CPUs. + */ +const struct cpumask *blk_mq_possible_queue_affinity(void) +{ + return cpu_possible_mask; +} +EXPORT_SYMBOL_GPL(blk_mq_possible_queue_affinity); + +/** + * blk_mq_online_queue_affinity - Return block layer queue affinity + * + * Returns an affinity mask that represents the queue-to-CPU mapping + * requested by the block layer based on online CPUs. + */ +const struct cpumask *blk_mq_online_queue_affinity(void) +{ + return cpu_online_mask; +} +EXPORT_SYMBOL_GPL(blk_mq_online_queue_affinity); + /** * blk_mq_num_possible_queues - Calc nr of queues for multiqueue devices * @max_queues: The maximum number of queues the hardware/driver diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index 18a2388ba581..ebc45557aee8 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h @@ -969,6 +969,8 @@ int blk_mq_freeze_queue_wait_timeout(struct request_que= ue *q, void blk_mq_unfreeze_queue_non_owner(struct request_queue *q); void blk_freeze_queue_start_non_owner(struct request_queue *q); =20 +const struct cpumask *blk_mq_possible_queue_affinity(void); +const struct cpumask *blk_mq_online_queue_affinity(void); unsigned int blk_mq_num_possible_queues(unsigned int max_queues); unsigned int blk_mq_num_online_queues(unsigned int max_queues); void blk_mq_map_queues(struct blk_mq_queue_map *qmap); --=20 2.51.0 From nobody Wed Apr 1 09:46:40 2026 Received: from LO0P265CU003.outbound.protection.outlook.com (mail-uksouthazon11022133.outbound.protection.outlook.com [52.101.96.133]) (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 1C3153A452C; Mon, 30 Mar 2026 22:11:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.96.133 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908676; cv=fail; b=RIM9uTgsnza+wvP71hzMN8ttXGjTlB1FEGEBf9IVatAXerVKzbmIprehGJiwY9uWEvGEe5tc2pauBWx2dRBjBRxqnKlGLs3z9yx0IPhBdOubAGPTIbEVG12bvtVFZNKmfbosNWVL+A39VR9oBB2f8v7C205fktvDIWt9fILHlDM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908676; c=relaxed/simple; bh=9PAeHts+/xxWKvG+ncrtDt0K6d4HnfUQ0MHinX82lWc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=WDiw5TLx0eQjHOPJWuYn1mDbh53ijyLMs5ToJAW7/c1iIQXbR1x6NiPw6twV77CsKuMuEuYc6ALZ1Q4UXFaFKHaEh5c50ViRYH5aYYZ7FbHg0vOsYVmSiyjIPAEPdE+1eNKsyr+T8a8ArxED4YuUY3TeJmuJqRhnSkhrEfGdy3Q= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.96.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p1e3kR1jRGbhWtn4q5rMGEoiqJXgkMcP9o0u+aX2Mbs++rtRfh8dq58vuM/uPg5xnq2br38Y0yPCwvTL5iAM1P8R5zBwh2oR5Spq7eLA1Lu1Hean8t5IzgaHl8+0TGTxuEKLGYFgPozO9yggFiSchNTz6cUSHHpepL8xuq8aPL/1tl5wPNUgKSU8/TUw25WrVPusdK6NcJ+HeiK1jFKw3G+kSPSmD4RO/pcW99RgzInwG5tWJVGOuFSwFmkftXQMMAmoZYtHyrN9iiln+8dekOCQYYa+caQ8g4KokqdZ4duO7kVluDwPcr46DFSqccSottdpjiGH5o1mxuN94h9E2g== 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=QshZOTJioXRV3wV+1i+k2TcmzZPPaOACjJ8wNOCa3os=; b=Aag2zeN0tPRm1DhfD3hk0poSidEkOBYZZlhWqv793k+XTx9xYOSTE7veh/Dlimil1zGtIVcDK0Wmwljcjbn0rgURpfuldYbzlnKNjdzT3A6Ny/wlAP2+zBUaOhCVqT8/JmAw9m9m0ZVU4x63rdXX60rP89a2OnI0srJXqIee38TtBL3RsvtbnowJETit/Rt3FC+WJIhelWsNGjX2nvkn+8A4VAUfjD9Rw/IQZx+86/B86fujOPbcObsk8pgulOh3+I+9jeEEmUt08Yj9ewo7KqrXTwb6J7Ru8orrz/STo0b5Iqm7t0FdwFV7rDW3oV6PdrOgPCW+nSBDhCdJsPVALA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB6512.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:186::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Mon, 30 Mar 2026 22:11:12 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%2]) with mapi id 15.20.9745.022; Mon, 30 Mar 2026 22:11:12 +0000 From: Aaron Tomlin To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, mst@redhat.com Cc: atomlin@atomlin.com, aacraid@microsemi.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, liyihang9@h-partners.com, kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, shivasharan.srikanteshwara@broadcom.com, chandrakanth.patil@broadcom.com, sathya.prakash@broadcom.com, sreekanth.reddy@broadcom.com, suganath-prabu.subramani@broadcom.com, ranjan.kumar@broadcom.com, jinpu.wang@cloud.ionos.com, tglx@kernel.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, akpm@linux-foundation.org, maz@kernel.org, ruanjinjie@huawei.com, bigeasy@linutronix.de, yphbchou0911@gmail.com, wagi@kernel.org, frederic@kernel.org, longman@redhat.com, chenridong@huawei.com, hare@suse.de, kch@nvidia.com, ming.lei@redhat.com, steve@abita.co, sean@ashe.io, chjohnst@gmail.com, neelx@suse.com, mproche@gmail.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, megaraidlinux.pdl@broadcom.com, mpi3mr-linuxdrv.pdl@broadcom.com, MPT-FusionLinux.pdl@broadcom.com Subject: [PATCH v9 06/13] nvme-pci: use block layer helpers to constrain queue affinity Date: Mon, 30 Mar 2026 18:10:40 -0400 Message-ID: <20260330221047.630206-7-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260330221047.630206-1-atomlin@atomlin.com> References: <20260330221047.630206-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN1PR12CA0019.namprd12.prod.outlook.com (2603:10b6:408:e1::24) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::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: CWLP123MB3523:EE_|CWLP123MB6512:EE_ X-MS-Office365-Filtering-Correlation-Id: 98c899db-c5b7-4600-d678-08de8ea9411a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: ZYGiKsPyEWSswFsjq4MCVELe2SShq5bpYBe2iI/KPMgmyyZnV7UswR6LZc5s2dsaSzgktx9ZN3PFxpxPdwI1USqmiLK9dntKANcf4B5TtJIbcaPe3u+6TIKmpnYQp8DMMwv6Gz2YgeRRTQ5PUV+L+plihyFvsohCAwtUxOV0iNPBf6KhnP0Ydby7EB7+zS4MBypeCO2tEk2hlOycbgATu3IoCLgKddJ0GPuGBNKenNlJSySzxz80knZu8LByHJCtJiQsR5dHUDdCOdzd2BRjGVdAO6CENk6r02eCJQdJvxrY27vqJtZEJOPjYoKWHVM7Hbg3X/DIfubqKtMvV34qKtvjpQUuv8WJ5J4dz8RM+ov3K9NRB4/d+riytE/+YQqDy/2ke7h+Nye5b1R7w8OSL2HNuQ0V9arxto5Fdyne3ljlOOSgF8Mclutij60srmSmhRqdUPHgg1KKzdkkWefxLf8x+IHt2JHHhgMf4N4stwBOKIN/VPkUjqXPbPbD+BJ+plQsifLUfIGaxSKT7hNlIGx2vcNekEDdoJcbNuuPYsUB58gW3OgbD+tPnW+JoMMpLJPVQ1kuoqaQ5XNNuGMb+m9FzkbvZ5C0MJ3JPs2SXZOHrlWStdfUDYdClgwqS5v+mSWXm8u+LMxO1IRvyJsCsWXYF51/4FOI5f4ep6IyqKgsl08DzSmcs2ngHIstkJW4HDgDHo82DNHp7j1rbU8R4gW5OUufaxUyO51DT/iIWkk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?xHYnCOPUJ82v+AFyLK5vdHlA7sND/10f97IUZ123R3HXbLBC3xltJ1ic7h+3?= =?us-ascii?Q?X6rMIX36Z8jpMWG1vpGeR0vSv4mq+HMHGdcAZrlIc4Z8URmASndJuvcN+qX8?= =?us-ascii?Q?z7Bp0UT4dJmPF0hOaZQPMDK7cbsQGirnJOSBDJW50z8RYLo18tkufl8xF9VT?= =?us-ascii?Q?eMP+svYgqQqH3+odiFSJN5NyRCjqejFA1mAv2oDnYVRn79OdwbGvKbazomSR?= =?us-ascii?Q?/m8BojYMdPnMgB3/wA7lAd2TeH7/7FNqV+B5sxTfqwPHqtUr4sjaH58a+M0K?= =?us-ascii?Q?vBL+dIdqrXdgBV+LIMaKMNJxPAjDB9rbwFQ9FFx4MBEnTEZUsrJ3u9Q24dZr?= =?us-ascii?Q?g+/nY5m+gyCGd09VVP9IYfrL4LndhpwrMbCOGyhQcjefzcH8prNIvfM5aY9N?= =?us-ascii?Q?X69h3GBRZbD6zezRkMhNxNU5lks0AiMcmfLCMsU1NXhh4LQYMpCDKKaeHP8V?= =?us-ascii?Q?SBd5pXLe1WaOMwQ+jWz2aFTJ+3q1xxqc9M1GE3a7B6yNHv3KtyMAVST31APC?= =?us-ascii?Q?5rge3rz9D/iUpK0o0zFpp7/+2/A9pnqHmTL2/0xsLMlerigQAkuJIiwzTJKW?= =?us-ascii?Q?jNqndNgIxbqMr8+GGkU5TCtmZKAtF5LhVuZbxgj0reTLdgQlEPJrbEO4GAaO?= =?us-ascii?Q?bVoZeP+9S7fex4BGjRonHVPlqD/BYd/kxQouA8UkIn7Q3mwzKh2Rl/NWDf+K?= =?us-ascii?Q?DhANvf8SpvyarntJeVArZe8pTBisJxecFOazwQEKfaSXhiNXNCdv4vFIFfZu?= =?us-ascii?Q?fhsS9G49osEIPtW8MZ4QqKqOQkaYxhyZmZLQts1wx45nmr8/BTrHQ99c5BB1?= =?us-ascii?Q?tQiD4ap67NPFZIFWA4nbIj6Yd9WyT7hsljWOUaPBYeuH897j1mQpPLElWV8Y?= =?us-ascii?Q?ieyGy3ZfhFBTNuUU4S3BA4PlZoEo7/+MwMbCYkErcm4gC23zStM5ODzysImc?= =?us-ascii?Q?+wLGxFNZT3IYaivNa9vEDzbL6gaB3EEOaCfz/q+uOucCY35rtzkLvCKzBtAJ?= =?us-ascii?Q?nKPcrRMvQnO+1jlJOh3lyqs/yu0ZdudSvB0up13vy2IDW+6KfLKDU3H1ZwUp?= =?us-ascii?Q?727TdiUd+RAkSv6ZRLPG4OoBWjwAgN7Ym+LgOjAaZ46aSD6h2qL0v40Ic/CX?= =?us-ascii?Q?EOs/cedOP9y/+8F2o2csNfMwUghyf/s7WWLKUeC3bCJykun/3ZeIuwQ98+6m?= =?us-ascii?Q?5k963JktHVPb3t1tzmzbaG5KOXt7w5xCaVwAEtZfplVo4V2dntI0zcslx/WT?= =?us-ascii?Q?LzYNDkmvquLWBefArRwerhYM03qCOFMb2eyv8BGAnWTSrix20/KgsJ/+Rqkw?= =?us-ascii?Q?+Y3C7Q+GYHuldKmfbkS/t25uGwuE480w0MFw/hbqiKQeSHkS31OjMZSFPMmF?= =?us-ascii?Q?wP7J32bPiqpZYaPQoBEJcbXHkjoIhYAgeSzvrDqlwqYBKKN7G0WQOSkclfWo?= =?us-ascii?Q?dkErldrOmNfFYuSnub+NIMGnRSpCB23lDZ2E40QUQ4a1cFw12ZyD3vCVJhDe?= =?us-ascii?Q?8pb9QGMZgdCBZJEBJKn6QsqCJFaa4HvaZ4rvsS4yFnump0oTdlmYLF6Pq8i1?= =?us-ascii?Q?MjdQuWvcZZ8P2ANaEE0ihE/55motq2pLhbFsHqihmfqqmoSRFCv2+IRrwSuL?= =?us-ascii?Q?nnMaqIsoYlxSljjzUooc83LaHMZeCG3cFdPBNNeaHV9s6fi4/X592zL8ZtzB?= =?us-ascii?Q?ga5lwsAnPz+gLsq6W6yQOnYZLJpFAgOxmIUAL7lT/n0aXx0pBri1dJLDSO8E?= =?us-ascii?Q?5c7x2eQd2g=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 98c899db-c5b7-4600-d678-08de8ea9411a X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2026 22:11:12.7135 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /4npD8E0v0d942/5T30J1ufN2eXZzh4Y3UFVIWHXUFPkTwQiiweYL8TFa/ytYR1jQ95bLlgofzhHo/8ry+Xhpg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB6512 Content-Type: text/plain; charset="utf-8" From: Daniel Wagner Ensure that IRQ affinity setup also respects the queue-to-CPU mapping constraints provided by the block layer. This allows the NVMe driver to avoid assigning interrupts to CPUs that the block layer has excluded (e.g., isolated CPUs). Reviewed-by: Hannes Reinecke Signed-off-by: Daniel Wagner --- drivers/nvme/host/pci.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index b78ba239c8ea..8e05ad06283e 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -2862,6 +2862,7 @@ static int nvme_setup_irqs(struct nvme_dev *dev, unsi= gned int nr_io_queues) .pre_vectors =3D 1, .calc_sets =3D nvme_calc_irq_sets, .priv =3D dev, + .mask =3D blk_mq_possible_queue_affinity(), }; unsigned int irq_queues, poll_queues; unsigned int flags =3D PCI_IRQ_ALL_TYPES | PCI_IRQ_AFFINITY; --=20 2.51.0 From nobody Wed Apr 1 09:46:40 2026 Received: from LO0P265CU003.outbound.protection.outlook.com (mail-uksouthazon11022122.outbound.protection.outlook.com [52.101.96.122]) (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 E81913A9DA0; Mon, 30 Mar 2026 22:11:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.96.122 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908680; cv=fail; b=poCoagdBaaifJxPv5lSjmjVxG4LFv49PPh+KvEw3E2wt4oUKu0eAwo2o/19G+vTUDQZKyR9PjbGkJVqRM2VFoXJea0DrqPfNa9PVoh1Fyl+d0syndCws7issb6+MxpPFzmgD6COj50AM5ZUTz5rTcwkVYQXNifd4CDYsDeGr8Vg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908680; c=relaxed/simple; bh=ZtHXTXuhRLixZ8YDE4VWjxTulOWcXwiKlpbtJPApcHg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=N3b5nXz7qwz5NKFtkfbvnDKBz2K7n/tvC0LdlSxsaJe/DQM88W3LoPAXYZw/DCfzMCOJfQM6rU/vZWBu5Ie5khxvK0RjGeIBzjqb33c27U3tO/1yk/BRVTnMv2GMS+aA5NbcaARhddhUXn7ammHo5UqzWdowEjULXrgMfLXAXsQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.96.122 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cYU4jPyD+Re5/Or9X5hbuSFghFkClL4fQ+qfJQv1gx7/fXIkTYgt+JfyW79HVzG9p0wV8fP2kfUUQrfPdlzPhyngG/+/rwJpj0y9WEUKdsEskWHUhcjSIlK2LUqo1Z6gog2ZlHzrYUDW0nbLTyRREhQDMIV//7gEu1AjV5t1A8jQb0fR4sD5O3Y8uDl/HAXdzzp6ml8lA08UVbcJeNaEPPRrVHlI9uSIkp8RRrWspgHKxQgClALB0HDMlOW1wOC72tIqtWIelhV+lEQjiUXfAcyFcHaeXvk7+WkcSY8eM6D3Ax2egrDAO9RRPgZ9xgdSEo0nogSyIrJNGRTFx24tkA== 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=0pTvN9P4etYBk0A1+gap7BVahQIMJJqvkuPhay4UMdM=; b=bDnCNpE1v21Go/548M/tiwT98NARhfDQJQ3GDR5a8aNywnSNBX84pMhDU70XxxMIv3UjKpkCS4W8Qd9QSCIR/boHMXA2gtUgZHdM006VOxEtOMYwjPzQ1eAuVzGds/3aSGztJzvG65r1edlKxmEnV27EquFofERQyDqpgJQ2zlXCCOqLdSmTYpigB+E/9oIgmkYq5vkyGvogkeXFmhYyRwuqrz5ch2PpKfpgV4Fy9Mex9UWzuADhOdU/mHLVJxg7u50I1a2bhh+DKzmMak4tqB9shUJMi7MOytQojESFGug9DKGRJuar3LnsmzrjmhXHFIMM1wZE1YiKMoOjEtrjZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB6512.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:186::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Mon, 30 Mar 2026 22:11:16 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%2]) with mapi id 15.20.9745.022; Mon, 30 Mar 2026 22:11:16 +0000 From: Aaron Tomlin To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, mst@redhat.com Cc: atomlin@atomlin.com, aacraid@microsemi.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, liyihang9@h-partners.com, kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, shivasharan.srikanteshwara@broadcom.com, chandrakanth.patil@broadcom.com, sathya.prakash@broadcom.com, sreekanth.reddy@broadcom.com, suganath-prabu.subramani@broadcom.com, ranjan.kumar@broadcom.com, jinpu.wang@cloud.ionos.com, tglx@kernel.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, akpm@linux-foundation.org, maz@kernel.org, ruanjinjie@huawei.com, bigeasy@linutronix.de, yphbchou0911@gmail.com, wagi@kernel.org, frederic@kernel.org, longman@redhat.com, chenridong@huawei.com, hare@suse.de, kch@nvidia.com, ming.lei@redhat.com, steve@abita.co, sean@ashe.io, chjohnst@gmail.com, neelx@suse.com, mproche@gmail.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, megaraidlinux.pdl@broadcom.com, mpi3mr-linuxdrv.pdl@broadcom.com, MPT-FusionLinux.pdl@broadcom.com Subject: [PATCH v9 07/13] scsi: Use block layer helpers to constrain queue affinity Date: Mon, 30 Mar 2026 18:10:41 -0400 Message-ID: <20260330221047.630206-8-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260330221047.630206-1-atomlin@atomlin.com> References: <20260330221047.630206-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0894.namprd03.prod.outlook.com (2603:10b6:408:13c::29) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::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: CWLP123MB3523:EE_|CWLP123MB6512:EE_ X-MS-Office365-Filtering-Correlation-Id: 0038dc1f-f3e2-476a-3dc4-08de8ea9436b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: w8fgREJDIaCKCobUPyA5m1i4p/+XksfzPTRqIWe2706Z1qUITSgXb6M3S8928f7F9YSt59Uciu+QAQBNy5rDpX60PYNPUPlt9h+dRB4WmYGH8jcqe3jB27dnt5wF3lI9UJ8WgX4VTgntyqoTlqnNH5uxEiBSp7AHRzkGaWhyVjzudtYoVKMaKT4SuQXf1iDxgZK5l11ngCm9XzXQr+XATO8QHO2ge1acTwkmVG3Try1LbJ4B3B8+LJ+xOEn4pn2wzZLUr16e2OJEfvLCXLGuNi4QmZoUMp36igMWh5OxuYeQYzzgapWAOImjWm5SAFphluoek6eNmPhR0hviX48CIYDF7dr8pX86pojCldsf0CdDDm3Y+/qSJWkVBek1byUjySMgi2WKtp7ryiaetHz2ip5xPbe9jBhwYmioQMIq3kQTSHEvS0tmutygu+j3yLN4tePBHraaaeNrZMXwlDQaY+qIjTZYpHSTLlz6ceJ1wKGsTHvsrbRU8VJGl54yLjcVEKR11VxlPShNqunBGpbOk6+74s4l01dIFlLspHiyeDHop6CtPEgQd93HgpkPOFVHh4SQVKRnopptSN6ip3Esy3pOhdNVxVJ2cvG91/8k7laE+Gtl6Az+7Hgzso8VZ3W2M4FDIbmNjQscFTaqje4hBXD2lOtQ8QZJKop6bT3prpr8ma55iflYEQgfGJXARn5SZ7haIZ9oiasu5GtPV1ImDitjmkCFyjuRhQj6bg4MU/8= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?kl/QdHOXg4S4vZKEQp6+TrU84M9hSdzJRhKjFFyIEQ7BUe9sN58xhuvfoNeU?= =?us-ascii?Q?en3yJermeuuLZk8tyFoGtq+4OBMDAzGtBmGSfRg7pvsJ1sRA82jsKRwX4tFy?= =?us-ascii?Q?GXpdYH5UkBVfTf53hzKyEu01o+EoJqwKfsHFm2icmlmj+XEuv+CbSNAIyWcz?= =?us-ascii?Q?2KQ8C8VYQSpl/yCkFV5vmXi8esOPUkbC3Bhow5bMrpmezzmFR4LpZLhQJHmX?= =?us-ascii?Q?ax2LUBBcHdL2U38/TAC7nE4No+eoHK5ukT3dmtDhCaPgDOMorA0uugREI0PH?= =?us-ascii?Q?Hll8VbQexf1Q3jM5WgKu7kTXHm5KyTU0j+kNqFyrkbbBN8SxobER3jjZUpEv?= =?us-ascii?Q?RsvrTdNzvXpLE4iyMzsINFz45SGnMeZ/cAWWATF6opbkzCL5KVQTpK50QjCx?= =?us-ascii?Q?OVv5nnESZL/3UInR9ei818wjYmNJJe2VF0GW4Jv2ysj0UbTo7IQK+xWdSQOi?= =?us-ascii?Q?m0IAeh/SkCkBqPWkpW+/ejd3fF3UxkkELK1rhDG/jB7X9Fa48Lf0Udx1D9NL?= =?us-ascii?Q?PLiPzedhGXyok4OP6IdwWtRrJyfpgToN8f4WO1l75j0BV/ybaqmlkGeSd/Jx?= =?us-ascii?Q?GUdY8TiWrS3XSMqnqT52mUJnc6shrnHiVhzjNQV4TdrE6dXsYRi2qUZ6QNSO?= =?us-ascii?Q?9r4Vgtu2F7sVzFgAOw8gV/OVnENi8cwIxbJDdNyH5JRLU63ZvMBbw6fhxr4j?= =?us-ascii?Q?dvGTQ8z+uqgayZs7xLl+8KUqPnFqTExNhebysrP5Rcmj9ItmWAfOe7r5xncj?= =?us-ascii?Q?cUaAPxTzefvVD8+0vQbJu0bD73dz2M87mzflaEcJ9qOVDXpjWIBQ0EmDrdLx?= =?us-ascii?Q?7SaWQd3Jj83jo5uFMU+fM00+u4MTlsNJOdPJXWi/UWdEjbIBzJ36zvK12ibq?= =?us-ascii?Q?bY6GFc88pEdg0kKtZ95HFY+arNvfxcrDGQcoj/e24feV89RI/UfokTCZiYgI?= =?us-ascii?Q?1LVOkIrF+rxMuhLXQL+8jBwGIJKu8VJavCGAns4Y6DCS+bEXnaSRLTl71u6w?= =?us-ascii?Q?XBOYO5mYJ6usoUOxVkdCb3lMLrcDeh35Bkbrfq6e7PC8ZtOmhZn/uQyLD/sB?= =?us-ascii?Q?7pTP6rc7Y/cekAAcoH8C0KRTpHPOfUiUBA31XDo7MJtv1aXgfYoiu2j/Drmy?= =?us-ascii?Q?cz4/kG6OYx/EXy6/sxT2GZhQSSuMiG6xrM98dGuyBZgWKJQ/CeF3zrR9HTM0?= =?us-ascii?Q?Lxlh/YgjZkcSaUbtre1hiwkT4OvEFyA9xuXsiC919qI/MK+vXGstKLdq8joc?= =?us-ascii?Q?TV700CVesXVYqCCuiMHfNJQh+/PAsUy76r31C4KR/QW8XU+s3pVuRH7wbhl8?= =?us-ascii?Q?Fkim4Xn4OVMNZTsRJkbhI4eYG02MhM8BYvyVFDfdAYbh2fRekL1fEkCAvnHM?= =?us-ascii?Q?uL5D+x2KD7/3iRLTqRm7UfHF7Bkw/LpWjykaNS28DWtMV0aD6BwQexTFZbCQ?= =?us-ascii?Q?zvKGamKRkgIgbb2HePfXOoxHBDiy/ZXiay/Yxf7C5CwZoJosalplo507hhzd?= =?us-ascii?Q?/1APVorYU+DD00jTP6wVKuXGdjenvteq4lnGTgDgBPywM53+wicM3LM+4wKK?= =?us-ascii?Q?UkAv4y8kvcmICoZVAUFZql6RbwwYuL1RTVyfZtwWi5ilbUOMdJ5KJhbWRtgr?= =?us-ascii?Q?B4bNDMifG5Ki2G0M0dXNIBHWnSD/uRBAhjltf4BzdwkjC8zIqcUFUhJc7HvE?= =?us-ascii?Q?SLbWxAQyhlRx330PHXNoJg22Myz0375B6lsuq5V3V8AIfSTXOkeG64LWThmt?= =?us-ascii?Q?3RWZj/AyRw=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0038dc1f-f3e2-476a-3dc4-08de8ea9436b X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2026 22:11:16.6096 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: DLh3lRvbS+7N9qvV3jvlgNGGGT5xR/SN87A4QUuAgSsD6DIQNZw4HLm6ZhZhlq0QE3jS1K2Y9Oe2+1qcCQXvYQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB6512 Content-Type: text/plain; charset="utf-8" From: Daniel Wagner Ensure that IRQ affinity setup also respects the queue-to-CPU mapping constraints provided by the block layer. This allows the SCSI drivers to avoid assigning interrupts to CPUs that the block layer has excluded (e.g., isolated CPUs). Only convert drivers which are already using the pci_alloc_irq_vectors_affinity with the PCI_IRQ_AFFINITY flag set. Because these drivers are enabled to let the IRQ core code to set the affinity. Also don't update qla2xxx because the nvme-fabrics code is not ready yet. Signed-off-by: Daniel Wagner Reviewed-by: Hannes Reinecke --- drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 1 + drivers/scsi/megaraid/megaraid_sas_base.c | 5 ++++- drivers/scsi/mpi3mr/mpi3mr_fw.c | 6 +++++- drivers/scsi/mpt3sas/mpt3sas_base.c | 5 ++++- drivers/scsi/pm8001/pm8001_init.c | 1 + 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas= /hisi_sas_v3_hw.c index f69efc6494b8..d1f689224e7b 100644 --- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c +++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c @@ -2605,6 +2605,7 @@ static int interrupt_preinit_v3_hw(struct hisi_hba *h= isi_hba) struct pci_dev *pdev =3D hisi_hba->pci_dev; struct irq_affinity desc =3D { .pre_vectors =3D BASE_VECTORS_V3_HW, + .mask =3D blk_mq_online_queue_affinity(), }; =20 min_msi =3D MIN_AFFINE_VECTORS_V3_HW; diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megar= aid/megaraid_sas_base.c index ac71ea4898b2..7e2a3c187ee0 100644 --- a/drivers/scsi/megaraid/megaraid_sas_base.c +++ b/drivers/scsi/megaraid/megaraid_sas_base.c @@ -5925,7 +5925,10 @@ static int __megasas_alloc_irq_vectors(struct megasas_instance *instance) { int i, irq_flags; - struct irq_affinity desc =3D { .pre_vectors =3D instance->low_latency_ind= ex_start }; + struct irq_affinity desc =3D { + .pre_vectors =3D instance->low_latency_index_start, + .mask =3D blk_mq_online_queue_affinity(), + }; struct irq_affinity *descp =3D &desc; =20 irq_flags =3D PCI_IRQ_MSIX; diff --git a/drivers/scsi/mpi3mr/mpi3mr_fw.c b/drivers/scsi/mpi3mr/mpi3mr_f= w.c index c744210cc901..f9b8b3639c64 100644 --- a/drivers/scsi/mpi3mr/mpi3mr_fw.c +++ b/drivers/scsi/mpi3mr/mpi3mr_fw.c @@ -830,7 +830,11 @@ static int mpi3mr_setup_isr(struct mpi3mr_ioc *mrioc, = u8 setup_one) int max_vectors, min_vec; int retval; int i; - struct irq_affinity desc =3D { .pre_vectors =3D 1, .post_vectors =3D 1 }; + struct irq_affinity desc =3D { + .pre_vectors =3D 1, + .post_vectors =3D 1, + .mask =3D blk_mq_online_queue_affinity(), + }; =20 if (mrioc->is_intr_info_set) return 0; diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt= 3sas_base.c index 79052f2accbd..91e1622b5b77 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_base.c +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c @@ -3370,7 +3370,10 @@ static int _base_alloc_irq_vectors(struct MPT3SAS_ADAPTER *ioc) { int i, irq_flags =3D PCI_IRQ_MSIX; - struct irq_affinity desc =3D { .pre_vectors =3D ioc->high_iops_queues }; + struct irq_affinity desc =3D { + .pre_vectors =3D ioc->high_iops_queues, + .mask =3D blk_mq_online_queue_affinity(), + }; struct irq_affinity *descp =3D &desc; /* * Don't allocate msix vectors for poll_queues. diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001= _init.c index e93ea76b565e..6360fa95bcf4 100644 --- a/drivers/scsi/pm8001/pm8001_init.c +++ b/drivers/scsi/pm8001/pm8001_init.c @@ -978,6 +978,7 @@ static u32 pm8001_setup_msix(struct pm8001_hba_info *pm= 8001_ha) */ struct irq_affinity desc =3D { .pre_vectors =3D 1, + .mask =3D blk_mq_online_queue_affinity(), }; rc =3D pci_alloc_irq_vectors_affinity( pm8001_ha->pdev, 2, PM8001_MAX_MSIX_VEC, --=20 2.51.0 From nobody Wed Apr 1 09:46:40 2026 Received: from CWXP265CU010.outbound.protection.outlook.com (mail-ukwestazon11022105.outbound.protection.outlook.com [52.101.101.105]) (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 A1B123A9018; Mon, 30 Mar 2026 22:11:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.101.105 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908683; cv=fail; b=TOSlbv0J+sQrQ30P2M9CzW0JuHrFHJs9vHlhhsnX0i4427a5Gjt2+MWDMgPbYpxEFWpF317+ATrU2VpYJfDQZXYCg2n4PTdLWJ1KXk9wi4RGLXkfFYZEQUlOt2yDc63EWUxaaOtHgPmXBfSEYcvW62J4q8kkmd3bX0LVCQ56YgY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908683; c=relaxed/simple; bh=TlUHsnkxgBojY72XSkFaP3lfzhoKseewLbwAkY6Mv+w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=obZFFoli9vJS20gy8zM8CXe8yW+H+6dZc7wR+lzyApANi/eDuY/4piR/DUTL9Rt0SmAacFp18vgBNR/N/H6h4EnZg6oxP/LVDPkJTpMIIMm+TbFitB3YwRFO12HXHIew92lMlYeXMJ8siXXRyik8D2jCs55Zuz927Qng5x3O2Zk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.101.105 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RepAuzxaxOcSbXt2tBNKRHxxxUxiCTkVW+dMOLMu61zM1/oYijGqc/Sm5QAPrfu9vS4XYOAC87MdciQRPlLx5RCxU8VRaLxLhTxcfunhneDfY2Cn55nSpy2yeNa3N/6J2unvkNEVg7MKmzuGxiA0oB9FIHP25yOI7CliMYwSwIZCrRhnG6VVFGNrU2AkM5McPRbv9rTsLQBMR0KTVAn7IV8pluhiG5pP3Oh+hE+12kbMDOA8wuq3D5Nynuk5Foq8c0MfLk97oTca1jRvyXz+AcyMksZINl+B+ki5/ztSX65DHgRk+qcX+D36FRyDvDPC/Z9E6kEXfR7KiW3S0Gk1Xw== 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=EFVX2nBQrqOnj8AATFrzWKYq/hh3DTG2CeX+as4ObcM=; b=svMJaI8VFvm3tmWGZ0mIA2VZ7ULCab4BHjoD2Sf21nW8djANOxym5DPF555hQ4fE5pG321IiddItRXblFIZitWRqX2psgw/gZc7XgD0L1yJry2LvAWchtDEPHhR+6Mw871RAQb1cEPDI2S2+akdW1E95fkbLVO0/QXVZ2lXZomCebecO5Jq9A+xSYKzYWB8hjDQTMVvdCVPRKaAA5ix59/ZYup9mnVbtjvPjL4Hnpy1q6rwPJKyuifulTTJ875AZKb6KBXWbThYBhiQvavRFJvWP+WM7Qr4RqoMsIrF09z+GF3k9JkSfGjd1mrbzFo72eCceYRqJYm26XcO/HIEBZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB6512.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:186::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Mon, 30 Mar 2026 22:11:20 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%2]) with mapi id 15.20.9745.022; Mon, 30 Mar 2026 22:11:20 +0000 From: Aaron Tomlin To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, mst@redhat.com Cc: atomlin@atomlin.com, aacraid@microsemi.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, liyihang9@h-partners.com, kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, shivasharan.srikanteshwara@broadcom.com, chandrakanth.patil@broadcom.com, sathya.prakash@broadcom.com, sreekanth.reddy@broadcom.com, suganath-prabu.subramani@broadcom.com, ranjan.kumar@broadcom.com, jinpu.wang@cloud.ionos.com, tglx@kernel.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, akpm@linux-foundation.org, maz@kernel.org, ruanjinjie@huawei.com, bigeasy@linutronix.de, yphbchou0911@gmail.com, wagi@kernel.org, frederic@kernel.org, longman@redhat.com, chenridong@huawei.com, hare@suse.de, kch@nvidia.com, ming.lei@redhat.com, steve@abita.co, sean@ashe.io, chjohnst@gmail.com, neelx@suse.com, mproche@gmail.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, megaraidlinux.pdl@broadcom.com, mpi3mr-linuxdrv.pdl@broadcom.com, MPT-FusionLinux.pdl@broadcom.com Subject: [PATCH v9 08/13] virtio: blk/scsi: use block layer helpers to constrain queue affinity Date: Mon, 30 Mar 2026 18:10:42 -0400 Message-ID: <20260330221047.630206-9-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260330221047.630206-1-atomlin@atomlin.com> References: <20260330221047.630206-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0324.namprd03.prod.outlook.com (2603:10b6:408:112::29) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::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: CWLP123MB3523:EE_|CWLP123MB6512:EE_ X-MS-Office365-Filtering-Correlation-Id: 09a94da5-df75-45bb-0ac9-08de8ea9458d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: ZrO1xdzl5GpVuj8P2u/SkPy0ZyBsGxP7JwL1ZFfFmDnz9dHx1mkpIPwbYqlZarThfnacXDTbxAAZU2nInkCfIhh7CCXxp12yhypK0S57/p5yZEnDnuAJUqg5ODZuVZRP5sOtKkhIbCfyLrt2WClH48FKhJh2DkvGYrR0QH6lbf40TfBEttaOHFk8VINxdOxE0OSqaEZE0S1A/O4rDMie+ygyuq6QjpiPueS54R5e/c3zWhURgY4TCodx1JsiGc/Ji1c3rRFJfUONDiLMWBX5qFYkjru/MtFn4A427YngoObBoFVsdVxY5n8R/tBrPHHzpokkulsdb99T6X3ybBHnXNcnVOi+7bjjBn1wf5TNWSchRlBfr31tBA7rIFbWbfCMThl2AeWC6xdANISWf5UFCmGvOHeLNG6ut65tbvBuS8Mmq9dm7Ue+GE3jJNl2nykO61yFUc8Td/Ihi9DINmFX11rruUfsVLsw1Kiecsyib7ddzdVNBoAgTL/Iwo9Kj7WQhr4NKZsqKrHfL5gEuJ/Wa1h1gWuFQRn7mp3OT6EVZegmNwy4o4JpfxfZ1xFivg5O3iws5rDnH2GOwLSa9Wnh5IUkDb5T9eDxmmpTrhF2swg3hJtNcZKR13eSTK3SQgh+bkSAdQduFfaKeXCWZcRpoDBkIYO5fx+o8TMaZ9jZC5jhI8L0Vlnk+zE8/BiL8dLduY3GaJEeoM0IZv/+Vi90sxLJ27mgKGVpV7tWy3cRiMw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?1IcVUMZL/Wvc9YQq/UqHHIvhKgc/ejypkqTbWnKaxgiUPyNkzeX0pErts0xM?= =?us-ascii?Q?u3vXdf2441iYv0YyI/WUsSma/SaHGxodDzv1oHSPHhghbZvS4wpR4uLm2zXJ?= =?us-ascii?Q?3ecgXaQSg+N20PPb0W2zFqENQbPaDeLG+LWMAX9DzB3vbv9437OyW/lS8ll1?= =?us-ascii?Q?9AwY9tyv4snwk83cUa6fjf5ZRHZY0PhWa1hGBmmwDBGtFKtt9SyJuhT7+FAM?= =?us-ascii?Q?H6Y1fV9j+G/1TBej6X02LNNTwTW4Fzf/sFdSueskNRgevrRgotPegsTEqX1l?= =?us-ascii?Q?KGLrgeET3rqDPVBHpT51zaTlGejaivT12yfn/5wQf0DdHwCDu7o5t6NF0AMO?= =?us-ascii?Q?Ln/o79YuS27d7SX8AGR8bqoVwhusDCLlxaqm790jRR/WJW5mtSPNoCVqTupu?= =?us-ascii?Q?vNPIL/SEsak9uGjrUyq0yXiWfF4qRxn9WanB1Nw5I0jvpwR2YCMbousb5XiI?= =?us-ascii?Q?bDtGnBNj9wUR4nBpX3DUSOgRhGIPvGIeZ+7/ZdOAou1+l7OM7MyPn4ez62Gc?= =?us-ascii?Q?dxBD6CyjepMnRto7H1GaY10A8t6NqIHmVS9+sb+WMBI+7jCGeLEfh/G8iWWS?= =?us-ascii?Q?KqUGf7Y6G7K0rFI7id7nnu0I1fU5KGozkxFOc6j8vOnz3yHMXygGqHW7DAAm?= =?us-ascii?Q?jdX1qA3LG/ELRYqrJbdAuYtK21cZBKUw/I6M8MjRXhT2HeMjCHMmc8K38Y21?= =?us-ascii?Q?H7+u7xQ3jnUAh4G4KRoCTGyQRYBw/YJezTikBErZygOgRs8sYdoxXzZ4pFgi?= =?us-ascii?Q?Oc3XnVKH67M/nKB4jobElughjsKH6p7ZdeEmzvy7o/AFpc1VLdX3vbBRhanB?= =?us-ascii?Q?3R3gjOiCbv74iZT2wY1esqeVKpgpD2yLtE7feK9LGZCL6RBusCMXOxLfEthZ?= =?us-ascii?Q?PpEY78sbMRf91+4hKLAlFwQxwKYVfBnXsQYJRKTZbC8+15hq5Lnkuplt7vxV?= =?us-ascii?Q?HIZgrtEhGVwgW/8f/jDXIUwXDUs9wfkDACA4YSdzRmdNQ8VACrKfMtsItG0Z?= =?us-ascii?Q?71SCFgpdcER03FRxDpFF6VDT4CIbjCWgNmSkDN8dyTWbvYqTvEFSH08Fdl8G?= =?us-ascii?Q?ar+B7IvNnkrkv74w+tKuTmfSMw84LNTsFSgaQGpbSvLALkm8CNiQg4s4Q/7L?= =?us-ascii?Q?E57vjhK0xnqmZJorUs8SHUNRRLiO8MFzPsFdLlGA5G8Y0RfIL8Cp10NHtwcO?= =?us-ascii?Q?OgPPeLpotdqgOPomFM9UU/baaDFygCCvKvJUsi5qhY97XS7dH9lykbDGvDeT?= =?us-ascii?Q?4z2aM+8fZmWzIbjTRrulkeEAZQ0Qjaug8hbkXuiYDFYTBANq7DjnFqIyDGJ8?= =?us-ascii?Q?M1G7/tsL+S5r0euDd49d+WUWiXPUMAsx7qB6F2RgEAaI/6o0IwN35fjFVAj8?= =?us-ascii?Q?vNl74O7KEfX1Zth1Hr4c5SowYDdGKsLJaNTiWL7lFWElHGMOCmYPff7E0xUj?= =?us-ascii?Q?S83rraBJpTwHlTw/SIjt+3NrICNPUwT4xvPrL73Sjxzuc5hJYr8pNijZd0bS?= =?us-ascii?Q?YWuGfEUyxZ57wToEZQYWOmN/hMqHrgR1qRopEU9eX9E8ZgLLMbc2xYVC5p7b?= =?us-ascii?Q?V08gbWYjRvtathqVAXUYGnTApUR9KaNlGEbhGh/PFWCyLoM5MZea1iwwmOg6?= =?us-ascii?Q?APTQ04tRSpc/sCh+2woftYicAfCSutz6iUxuh0Js/2oaSQOXI1RHIWlKUjBA?= =?us-ascii?Q?/alzNTrvbFNIwt51CI4je6IWMUM7IA9CSiZeuHkueWLWRc4Icq9iztNn1KAc?= =?us-ascii?Q?j1UMNPuLIQ=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 09a94da5-df75-45bb-0ac9-08de8ea9458d X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2026 22:11:20.2755 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PJEDIAeGdmbuJJSJ2EhiJYq60TNvAPKzXfUkWNlcGmgeR/k/Uv5Vzj2v8s9EcAdjKaYTSqI/medYTsyU/trc/w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB6512 Content-Type: text/plain; charset="utf-8" From: Daniel Wagner Ensure that IRQ affinity setup also respects the queue-to-CPU mapping constraints provided by the block layer. This allows the virtio drivers to avoid assigning interrupts to CPUs that the block layer has excluded (e.g., isolated CPUs). Reviewed-by: Hannes Reinecke Signed-off-by: Daniel Wagner --- drivers/block/virtio_blk.c | 4 +++- drivers/scsi/virtio_scsi.c | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index b1c9a27fe00f..9d737510454b 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c @@ -964,7 +964,9 @@ static int init_vq(struct virtio_blk *vblk) unsigned short num_vqs; unsigned short num_poll_vqs; struct virtio_device *vdev =3D vblk->vdev; - struct irq_affinity desc =3D { 0, }; + struct irq_affinity desc =3D { + .mask =3D blk_mq_possible_queue_affinity(), + }; =20 err =3D virtio_cread_feature(vdev, VIRTIO_BLK_F_MQ, struct virtio_blk_config, num_queues, diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c index 0ed8558dad72..520a7da5386e 100644 --- a/drivers/scsi/virtio_scsi.c +++ b/drivers/scsi/virtio_scsi.c @@ -849,7 +849,10 @@ static int virtscsi_init(struct virtio_device *vdev, u32 num_vqs, num_poll_vqs, num_req_vqs; struct virtqueue_info *vqs_info; struct virtqueue **vqs; - struct irq_affinity desc =3D { .pre_vectors =3D 2 }; + struct irq_affinity desc =3D { + .pre_vectors =3D 2, + .mask =3D blk_mq_possible_queue_affinity(), + }; =20 num_req_vqs =3D vscsi->num_queues; num_vqs =3D num_req_vqs + VIRTIO_SCSI_VQ_BASE; --=20 2.51.0 From nobody Wed Apr 1 09:46:40 2026 Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020084.outbound.protection.outlook.com [52.101.195.84]) (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 2B60C3A9018; Mon, 30 Mar 2026 22:11:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.84 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908688; cv=fail; b=fZlqOwrIrLfizP1KYIKkv3EkWN/kqDdjpoEatC5LXc47oYK0ChfJASxma5wwRKAYboONfa10KoHscFplSx/AKqT8qe2vskXBy4FbhTO07ERqXgqq4lRGuj2UbORvG7K8hG/9yZ/Ezf/leHP7+GCvhjVGUsDIpGXjDXsAjr8I+zM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908688; c=relaxed/simple; bh=lLevRQEArZXmbuY7Nc5r+Co0TZfifSsSOKkVBpaOkqM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=QdAafbmiWEl46WFDn7uR/6P+VkqwVbdOmvD4NdzREAXSKgCv7yYRpxcLb4LPPNdJP8OSCDxeA2TrGFLyt8jcf7wurGSh25Wr2vB+rKgZIKW3ubvnKaQGbc2KxF9vCBBrpmJ0hszqYMtInZkH7m0VG/Xir2mNkp511+cz5Kreqvs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.195.84 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Gu8QtHUlRmuU66jmLKEfiJHB/ZdgeL+gTNtpeWwpDtvkOZbJZkqMkyo5eYsxmIjqc6FWu6N61YOvJsFkhug9eVhT8Aq7qHd1f62Ey7PLbz97NeRhdu3exOguzKduTwNS5OXDe5/b0x8rjBW95zbj0ofJ48vuFxbNTnXnME97q+2RRy5y4sj6h18ia/gdWzuxvq0PlZiV8Wj9ju/s5/bUACg7sXgKC/QqJiuzfh4A+lzVIBJTBoagbR08Y8qGImrey+Jmur/b8pPHAEwOsEoSZJSg0gY8cWGUyNBBBiD4Vbnft22huG5YnzcL5s9urefAe7jz5x3sQhQgHdDPZ886vw== 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=G9IKzeaSAuxyJT/WzibXroDWpuaOj0lyTepP0F6uDcs=; b=rlMi4z/K2MCFURoMJk2wMLiMJgrdlEceHoVyzORCsuq9OL7pBsVtpZQRxSDtxh/RyUZOcZWsbsLKNYeeV2IlMxbkhMj0tosfhMg/rxq5ewSNp/6e5x+p4rNMP10JQCTjsL91XXZa6MlccMKRiQ6vZPJozK4rg4fBiMtBlsYC7rIdu51tOcmCh4CR6rfSZ9nFYnTFoUno7NmgWA9dqr+KQDfI7fzd50M9cVv62wgri+iPKrF/Mo1n0RDstyLs0WNUYZ2qfwUDtf7Us8ZTx91r3wIzqQuoDEczNS873LFi4v0rSzBR1hiMn126xVl/dd9zwwnh4B1kuX04Qosm9XXdQg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB3841.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:a9::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Mon, 30 Mar 2026 22:11:24 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%2]) with mapi id 15.20.9745.022; Mon, 30 Mar 2026 22:11:23 +0000 From: Aaron Tomlin To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, mst@redhat.com Cc: atomlin@atomlin.com, aacraid@microsemi.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, liyihang9@h-partners.com, kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, shivasharan.srikanteshwara@broadcom.com, chandrakanth.patil@broadcom.com, sathya.prakash@broadcom.com, sreekanth.reddy@broadcom.com, suganath-prabu.subramani@broadcom.com, ranjan.kumar@broadcom.com, jinpu.wang@cloud.ionos.com, tglx@kernel.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, akpm@linux-foundation.org, maz@kernel.org, ruanjinjie@huawei.com, bigeasy@linutronix.de, yphbchou0911@gmail.com, wagi@kernel.org, frederic@kernel.org, longman@redhat.com, chenridong@huawei.com, hare@suse.de, kch@nvidia.com, ming.lei@redhat.com, steve@abita.co, sean@ashe.io, chjohnst@gmail.com, neelx@suse.com, mproche@gmail.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, megaraidlinux.pdl@broadcom.com, mpi3mr-linuxdrv.pdl@broadcom.com, MPT-FusionLinux.pdl@broadcom.com Subject: [PATCH v9 09/13] isolation: Introduce io_queue isolcpus type Date: Mon, 30 Mar 2026 18:10:43 -0400 Message-ID: <20260330221047.630206-10-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260330221047.630206-1-atomlin@atomlin.com> References: <20260330221047.630206-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0957.namprd03.prod.outlook.com (2603:10b6:408:108::32) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::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: CWLP123MB3523:EE_|CWLP123MB3841:EE_ X-MS-Office365-Filtering-Correlation-Id: 740c172f-de8f-4b31-5dc2-08de8ea947bf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: OatHIHss0l8fILI8X4WrvvhsnqVd4eyhTbf+p4/eNyTMtOItwdfbSH3nFrgahgGGA6093dx/TOfG73QH23ov8B2c/4CguhUIzmxAs620Q2nHgvx+uEk9FE1Ggvz4DMQFyjH1POp2nN6L1eHUWQrg3k5p9kOKUrnp59qLdrrhEUXFUEgDBVm8+u677+U+K63OhTySjQoKwTW5+KvJ0mLsBaenlHzSXwH6UbFFx/++7N/Cj9TFijT5crba//yErg7aEczW+Q1XIXTImQ3NeAcDofF2Uw0fGDXbLozKMZOam0hCKQp+9gqED7IGGi0OPNfwMYanVQil2WaK89DVa2Xf1vVKfMifOQiZIBr5cUjIAaOaQm73ZUzLjYmF7CjPkZau5gLDNJlZZNnEHk+oHW7nMHSFEJQMPED6YOL3N5NU2/jUET/U/i7NF/k22adVqd4uhGrDcSE+szNdDTX7GTQR7NgwEMnUlSj8Xr6JPqfnhFz+ekIXgACvTBkTDF3Bk0WcRUAowbJ7U1MKlNyjwHmt7vtgYEhg6cUlX7gLy0hy3snzbd+vtuzp0O8DY3sOC2pCN/KxVbvXP6bCLCUC4an+H2NVjrOeqpBCILHviO66LaM2yvFViGd7zo4MR81NqgP7xSHgI9Lh9B88wDmbsrAQ5aAmFo8OV2hUzaHeLYFNfikBA/sVCnPi/Lpt/qo8cK/GfqU+uVlF3skrgIM4SoCAYEDgxpkZ95LdaXI8ez+Z7l0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bmWcpKSpo71wOYvK782WizJObiRZDTdypJZx3Hp9Lvcvflbs5heuXtaqZ23A?= =?us-ascii?Q?EXa3qqvIXamvosjjzMsu1CdXX1ntpasWxTpIlwUBTDZHoLr505IT0xw0YdJi?= =?us-ascii?Q?BL7oZRoMoB2YhU9AjoK6Gl1SPHbnxpQd0yTC8zhq2zE34MONOWpA7/iJojJF?= =?us-ascii?Q?ZdJfZ54+SOfXpNpNbs1/IMmWDFIWcTs+w1/9ogJ1E1VNg+hErI54mx2NWjxF?= =?us-ascii?Q?nvBGb6Tnkme3cHCv0pHFzFox5dJYRzlI6DpJbMI3LCQRnWi+ed+GkVycPZMg?= =?us-ascii?Q?/f9H0jJ/OEnMJG6xgHFBesON5CXmqpAPcOPmlZ/sQUmD387t9pOJVF/VKvcR?= =?us-ascii?Q?K+jODPk6efF+qn0DFJAScBYym7r/wb9gQUxccpxHDSle8ucSUseWdoeSQwpK?= =?us-ascii?Q?IOxm+e4ljKZVbY0JIJs/YPfOG/vYnrmR+XwEKIyj7hKEmfTypG4TWOcVqiel?= =?us-ascii?Q?OtgRFJXV2xovShykXGId6uB+1j9eQt9yn1IgCdhAnVn0SXVFmlNmbyvIRyu6?= =?us-ascii?Q?ccS0yjMijcy4i3cxhplhiasMmL+80Hw/lXya1hfHMUhkxYVFOfSfK3K9T5RD?= =?us-ascii?Q?Jg58D+jUwILpZAXZT8TsTgv4M3iLnFfcC5SO3u9NNbfYm5nAcvZDgkP8qWPy?= =?us-ascii?Q?VbzzIArd4WSTDxFWfYpucwFDGe8ksg4v0oiuOQyv+l+vdby14voXenN2neIn?= =?us-ascii?Q?/kxhVKMlwJfeAZIoBfufIwVZ+hiPybRp61WakE1UaqGssFUk37jQK+Ya14OT?= =?us-ascii?Q?hqQw0Lr8ujP+i7yiZfwadfZBLi7xjAsuHQ3On7xDIbBR5y7BIuK6MPfofSk8?= =?us-ascii?Q?WjvjgTxDWkqJFrh/WVtozFSU8hRJE+sjgGh3GKkSNXsVxgeQVxDmqDghzNYW?= =?us-ascii?Q?ssujQzUoy3XNeNxQe3RNMiaN6vfuEA/B6hgGnCedc1sVMKQlIJjknib7ThmX?= =?us-ascii?Q?dfjO7hDoMG3U1YyzWZz7dQky/dJDC1DK0oghPf0knjFzQDVeNKhGDaiTXsag?= =?us-ascii?Q?0MgzlQetCbIlJTD03oqm1vdytPC5tCjrJ63wGo8esAijrjoFHj+IekxF0eLg?= =?us-ascii?Q?wKiXFTbq8s2fodDdVpFc4lwvsDkOk0Lmgqs3UoZd1/7W9lMxfDb7sx79m5mv?= =?us-ascii?Q?I3kKpzoL8T114+ww0dM3Asgh3dKH1HjXroVFUnB7WH2Ptjt94bfM0AxgPcJ0?= =?us-ascii?Q?OcbXI+Usi49y4xXM/dboAwpKn91v7WcsRZzAwbtiy7ZYQed3lySnM9HYQS1H?= =?us-ascii?Q?A8BMABlYxlMF5XXSjDPYFlif4afjttvAesbhOSmBwRsUG4V4TA4z/SXFbd07?= =?us-ascii?Q?bwOthfkec+ozoC0aHYdJowWquVDqF/A45sAu0YZ9z+RK6IVs41YMnOzjVtOf?= =?us-ascii?Q?xhX0GLBgMpxdPUTkuSDeud13uTdW0ODdvVk2BRJCJx8VdPtr3GeCBOpmZbbH?= =?us-ascii?Q?ySX0m0LECPPJ6G9QAC7UCduSxMb4bsktXIwfUhGs9BKfNWHT6w9mC4fDn6B8?= =?us-ascii?Q?wkaySMyYiW/YHTXhz2MArxRj9/Lsx2CRIc5tE5U5hylDG7a4QyaeDmZkylxR?= =?us-ascii?Q?15ECC1cuZIJVo3VKSmRZJp686uHjbMbxHr419PLGftbrl0Hh+mbc+k1a1Egh?= =?us-ascii?Q?05ckPW0Or2RSmH3D7YH6hUNSsru4ewNJuGc0Eijful5TK3gcMtei2h/wjhwe?= =?us-ascii?Q?FILWYSjPiE7slVpBpngQXygWx6JCTKSLSBTp5h2rxZu/wTnKAB0QzeC7SPqS?= =?us-ascii?Q?H/TUFK1wpg=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 740c172f-de8f-4b31-5dc2-08de8ea947bf X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2026 22:11:23.8834 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: OLXxBOi6DQbF7tiW+a0vlorvkl1GSG0v+3aLrKy51Zqla+NAqxtKTi7pTCP/GADt+xW50j02j/0qb9yZ5XQ/hA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB3841 Content-Type: text/plain; charset="utf-8" From: Daniel Wagner Multiqueue drivers spread I/O queues across all CPUs for optimal performance. However, these drivers are not aware of CPU isolation requirements and will distribute queues without considering the isolcpus configuration. Introduce a new isolcpus mask that allows users to define which CPUs should have I/O queues assigned. This is similar to managed_irq, but intended for drivers that do not use the managed IRQ infrastructure Reviewed-by: Hannes Reinecke Reviewed-by: Aaron Tomlin Signed-off-by: Daniel Wagner --- include/linux/sched/isolation.h | 1 + kernel/sched/isolation.c | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/include/linux/sched/isolation.h b/include/linux/sched/isolatio= n.h index dc3975ff1b2e..7b266fc2a405 100644 --- a/include/linux/sched/isolation.h +++ b/include/linux/sched/isolation.h @@ -18,6 +18,7 @@ enum hk_type { HK_TYPE_MANAGED_IRQ, /* Inverse of boot-time nohz_full=3D or isolcpus=3Dnohz arguments */ HK_TYPE_KERNEL_NOISE, + HK_TYPE_IO_QUEUE, HK_TYPE_MAX, =20 /* diff --git a/kernel/sched/isolation.c b/kernel/sched/isolation.c index ef152d401fe2..3406e3024fd4 100644 --- a/kernel/sched/isolation.c +++ b/kernel/sched/isolation.c @@ -16,6 +16,7 @@ enum hk_flags { HK_FLAG_DOMAIN =3D BIT(HK_TYPE_DOMAIN), HK_FLAG_MANAGED_IRQ =3D BIT(HK_TYPE_MANAGED_IRQ), HK_FLAG_KERNEL_NOISE =3D BIT(HK_TYPE_KERNEL_NOISE), + HK_FLAG_IO_QUEUE =3D BIT(HK_TYPE_IO_QUEUE), }; =20 DEFINE_STATIC_KEY_FALSE(housekeeping_overridden); @@ -340,6 +341,12 @@ static int __init housekeeping_isolcpus_setup(char *st= r) continue; } =20 + if (!strncmp(str, "io_queue,", 9)) { + str +=3D 9; + flags |=3D HK_FLAG_IO_QUEUE; + continue; + } + /* * Skip unknown sub-parameter and validate that it is not * containing an invalid character. --=20 2.51.0 From nobody Wed Apr 1 09:46:40 2026 Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020084.outbound.protection.outlook.com [52.101.195.84]) (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 AC1253C3444; Mon, 30 Mar 2026 22:11:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.84 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908690; cv=fail; b=hsrsCP1qqDflXIHLQasxWxPmO2qlEq839+Wz4+fupmeRHLtS7HxTqayDKi0YwXkCK2ztIC3b/vxfxgNaVen68iprJtAtdz74ocE+7Sknrl+uU5tYPBZZPHIYiTjhABKYTzi3DI21tKm4zLwOI1XRzmFMCP9qdzZQnKpid30nvHw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908690; c=relaxed/simple; bh=p9a1Awwt0GnRGkxYrvS/gFDn3a5+cWAvEinlCjUUtHY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=kaPmR66wHEBG8W8ILvHnltyd8zhfkw+6jh6qrqyWoo3XWcXeBPkmIW7hptSQ5YJdPaF7lw+Z1UdpiYWiMzTleymfV3crYKQHyEvmXYc/DlyD7Spm9DZUTMfttRj61jrXHMI373nehg4ihw1GUSKK62n+Pq89nxLF/+GC1Khv1gY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.195.84 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xNou811H+vZxYqnjMEOfegeVPDADxWIT/C2+iCq7mcydAzPFJukJo0d5HRZMfhPiaxyArxUEgioXdMWtR1MRPg5/wJtOCAShi0JZjfL/BlaS5kyp6GXcWF745H8RviuHUb9HJMm0kGanwU36nR48+JL5fzj6La5QHpoYQ9Dz7bOFREn2CXqIU5HuaRvWXmXyl9eFz745+3EQTGgBc3vfjKDTAYbF4wSA62/dwJ6feuCsCQTRd8d0hwWQOgP58mZVsJoaUc7xJYn3UxC0NOIpCtoasPU/I6lRIm4XF3LzyQlpdbqP61TSmFsJGVGwD2C/hDHYJHrjg8ESgFF5NbDG1w== 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=OwbSgF0zQ6kcQMV4IJAB2dAsXSyIdeIWB7Femz6RPNU=; b=KCrVRM4G+KDj0RUWqySMeaRgZ2aMo0YlmEG1zZZUchxh8lv+/rbUU1FmkcY/P4GwG2v59vFgQalm1NyCpRo3dgwWTyTlA+MV7fEtM90Qar1DCuOM9yffBZdBd3JnuV5bPjtQuvRSDFU0pE1SM/YnnepAnjPCpGcIA0LNc9JVok3ZFMQ0rqt4FfAqxyzBHBMa8KjtFnlfLKudstJedi2w1rEN4TUiO7DyIsyhVpA/+ZKV/HJReews6iO5u0aTIHPxPwTukq1niucUi4rRrf8/4hXjJ+w1L7yvfayqfV2PZYPTaGLLpWjnWesnSTXCYAZJGdTOdOkwhDtT5LQ75b496w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB3841.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:a9::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Mon, 30 Mar 2026 22:11:27 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%2]) with mapi id 15.20.9745.022; Mon, 30 Mar 2026 22:11:27 +0000 From: Aaron Tomlin To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, mst@redhat.com Cc: atomlin@atomlin.com, aacraid@microsemi.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, liyihang9@h-partners.com, kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, shivasharan.srikanteshwara@broadcom.com, chandrakanth.patil@broadcom.com, sathya.prakash@broadcom.com, sreekanth.reddy@broadcom.com, suganath-prabu.subramani@broadcom.com, ranjan.kumar@broadcom.com, jinpu.wang@cloud.ionos.com, tglx@kernel.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, akpm@linux-foundation.org, maz@kernel.org, ruanjinjie@huawei.com, bigeasy@linutronix.de, yphbchou0911@gmail.com, wagi@kernel.org, frederic@kernel.org, longman@redhat.com, chenridong@huawei.com, hare@suse.de, kch@nvidia.com, ming.lei@redhat.com, steve@abita.co, sean@ashe.io, chjohnst@gmail.com, neelx@suse.com, mproche@gmail.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, megaraidlinux.pdl@broadcom.com, mpi3mr-linuxdrv.pdl@broadcom.com, MPT-FusionLinux.pdl@broadcom.com Subject: [PATCH v9 10/13] blk-mq: use hk cpus only when isolcpus=io_queue is enabled Date: Mon, 30 Mar 2026 18:10:44 -0400 Message-ID: <20260330221047.630206-11-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260330221047.630206-1-atomlin@atomlin.com> References: <20260330221047.630206-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0559.namprd03.prod.outlook.com (2603:10b6:408:138::24) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::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: CWLP123MB3523:EE_|CWLP123MB3841:EE_ X-MS-Office365-Filtering-Correlation-Id: 0decf02d-19b2-4fce-d164-08de8ea949e5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: rC610bBAju2OjvyBdD7t9K+UJXIcnSaaYHl7swlcEftWIG92MJgrAMk008n+dV3tN25wUwyxvaf/HRr5Y6WSIbh+TkPdkufdmIyubA1KF9rLJ4+VTOk+Sk+ZorCIts/lvCONimnBDV1f/2Zt8dcBVgzLHzk1i4/qz3EgiqKeBWohTM43+2H6+KAU5CuNcGvZwM5lEMVGh1b8ZVHRBDN3Vp5UpxgNhQAPZLF0Yg2COHk6qhl5a5acGeJPFKlmnt0a3TQ9LKlhzGBGkolZE/KVzARDrpmlnxNeJwIbwW4sLsVFDFrns1pCGb5f7U0Y+90rapDnemdDuWGF5xI4P+Vna8jkz+x9R9zmQFwkMH9x3k+ZbBkVU+l9KJA4EyBXFMSHCaVe9XhlJU/kR01a8Ah/ZcruS+xKOhqxpdGZmet2Mlir+nG69J2Qw/iX9aiVhgN+sUs7IMEB5gTZp4j852NvMoPrKo7+CquDdA8GDDDP8mgL+90fMEGe5IV6R5/F80XLMsiTNoZ3cn3NsKQTV+yAThoBAILeDpW4qfIu0lF44RAII29V1EJ4olrnAhXez+kDnqHAp+7pH2cIofjmzzD1vjIQMxofRBxA1IU/kFJL1Rkvi7rphsd9JprO2vH47bt/sPVLUJcipaA7X4GBAoGy1+/71f11d7RZ6RXatRiBx+qCGz/y641RY9b741vfpnTHbEHyd3JSCIX5iiswNmTIEXxfoVrDvQMtS74sUbV2KUM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2E97DfTE8DRg5RWYszNmt5/nTtxRnKHuSrhkg/Xgy6BpiZI1cZbr1oHBNgrM?= =?us-ascii?Q?t7SrrhpXdOx8LUE2JiLMMUVIlKz+FH8DrnGyTVDI2EGq9K0SgxaQw7laDvzp?= =?us-ascii?Q?65zXpZu620tKSVAvSWs3Qb7BHkXlpEmiR9epigAJwSRarqm07fvcfz+HNh+e?= =?us-ascii?Q?3Tc4q4spasVP8OvjZ6CL5/MjWjKkHjnejZ0XD3YGBCfJ1dpHZd/HD6stREbi?= =?us-ascii?Q?jl0I/QE/SEod6uSTsjvZtMob2UiMJaiPJWsDbnAGpd+syrrFFWqpiiExqbAT?= =?us-ascii?Q?yBX31lWvml/thvQzQbXoh3WfLVgTo/43Hqv120c9XHk1oJmPW855ZcOz0b5T?= =?us-ascii?Q?Y7RgOPLG/iw/4eg0AwvhFoaxk12oqd422YsyTyZi+za2z56rUK/yrOX90vnK?= =?us-ascii?Q?4ys0KMed3P8pwO7mm+ajwjin7FfLFRcGQOP2ypa1IvhdZq4B6OhJ2JbCDmi7?= =?us-ascii?Q?/CJ3V50eZA2eJt/qQdSmMAUlX8ugHsoeQw9+Rfh7R86rVn7Qf8aNRWaEUrRZ?= =?us-ascii?Q?ZaqHW1IEbEzwJIbx9eTS1U1VIEf3A16YCY/Z+LwKmRt6Y5Kme4ToK6AP9KXB?= =?us-ascii?Q?aFjvPXBNr7HkvCfOZQXP9G+R77m/l8e6L8bfwEtzcEdYU7RLAmOI6tppm/id?= =?us-ascii?Q?Ubo2DRuAJvyh7tYTxUfpgN9QEq0ff6lOP3bQvLBmJck9HqWt8WcznIPWV+3G?= =?us-ascii?Q?t4EV+t7Tkx7D+s8EtRnIaP9yn7r6Pgir15aRnyidHlC/u9VSF2/tqiM46qD2?= =?us-ascii?Q?KXNCcrFXyoIvg12bM6wZkmyPqejAE9p3HdFVkKISmr5JFSvY+MHyRDDdwLin?= =?us-ascii?Q?HKz/7AQeloECLX1E/tvSzJpkETVMckRlTsIOrGFVbWNIBmFd850gKNyms9zK?= =?us-ascii?Q?u+f+NBxXOsdcjnAQFXTwGn/FwLnsIxwkaTlWa6BHSRPMzvtm6EFAvxzc0p9b?= =?us-ascii?Q?O0xpYR6Xv7iWRr4lewUgxK0uIE+t1//WYugjWn9s8Htqb+7H6PT4hkXpZVUi?= =?us-ascii?Q?i3YcTGChwmPrb74dpd315ouwKbVg1wc/cz90LyOO/s5CjQC5IgZauwDZfY60?= =?us-ascii?Q?vwvKK2zpLgJHccAhBwa739uN45zDOD8fF1t0MCQ4brBNudXTIIgxTeL4PV1y?= =?us-ascii?Q?DODmx/pplpN4n3kY5/fhUSK8hCL6lRYNOzRoxx66daicKrly3a0BSVwaDFmx?= =?us-ascii?Q?3taH5Vzfxq9UW9sCT9Jn7LMa+DTgulTNOSjr1a9QQvZ7vcq8c+mBzmnHcxpF?= =?us-ascii?Q?6Y2NvRk936XOFjJXtxXpnUq7N1Z0sCd77NfYVO2+NNBhbD2zlnQ0MkQbp6AX?= =?us-ascii?Q?bvuldRliMGKHp5tdDQ2CReAywEyaQzEX8dXav0pARltTZtmCjtbTV75ej+0f?= =?us-ascii?Q?23OvmOyP77UNGUiKQ4ChaTC/8wH6QmREuaxasxjpcV/VmNlbaJ9ul5lQGV//?= =?us-ascii?Q?7gqtFKfTf7nZ/oPHzaIysebPbLrC2eVvwBC4Wufdlgvi54CbX7HE9htr2n74?= =?us-ascii?Q?UHRZ/d/ziZHsMAh1Sf5la0hNon1sIZe2LYxcXbqBruGyBvRMJf4D8+E/qpwM?= =?us-ascii?Q?qnrreKUIg1TbGu1LZOgzUnFu091uhNCm7uNFLU1XwycRKLx+Du8/eTIzUOdb?= =?us-ascii?Q?2iSRHl555kUEVvMU0mVGc+Hvn0ndnP7QczZkftM3lGYz2QiDrE9vmxCp0u7t?= =?us-ascii?Q?jMPk/4PHji/E30uEEs1UamkVz0u54axA9OkTI6JRuh3zNIui4AhIEf79fgAu?= =?us-ascii?Q?4Ppcpds00w=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0decf02d-19b2-4fce-d164-08de8ea949e5 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2026 22:11:27.5338 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 8n/Fr8AiPEAR9UvCUGQ3XPEPgu+T2tIYrLtHxCi7fOZVSvRF2IX3MPNOqhBE2DC8Pz+AzHfg8C8jyBiTB/YPtw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB3841 Content-Type: text/plain; charset="utf-8" From: Daniel Wagner Extend the capabilities of the generic CPU to hardware queue (hctx) mapping code, so it maps houskeeping CPUs and isolated CPUs to the hardware queues evenly. A hctx is only operational when there is at least one online housekeeping CPU assigned (aka active_hctx). Thus, check the final mapping that there is no hctx which has only offline housekeeing CPU and online isolated CPUs. Example mapping result: 16 online CPUs isolcpus=3Dio_queue,2-3,6-7,12-13 Queue mapping: hctx0: default 0 2 hctx1: default 1 3 hctx2: default 4 6 hctx3: default 5 7 hctx4: default 8 12 hctx5: default 9 13 hctx6: default 10 hctx7: default 11 hctx8: default 14 hctx9: default 15 IRQ mapping: irq 42 affinity 0 effective 0 nvme0q0 irq 43 affinity 0 effective 0 nvme0q1 irq 44 affinity 1 effective 1 nvme0q2 irq 45 affinity 4 effective 4 nvme0q3 irq 46 affinity 5 effective 5 nvme0q4 irq 47 affinity 8 effective 8 nvme0q5 irq 48 affinity 9 effective 9 nvme0q6 irq 49 affinity 10 effective 10 nvme0q7 irq 50 affinity 11 effective 11 nvme0q8 irq 51 affinity 14 effective 14 nvme0q9 irq 52 affinity 15 effective 15 nvme0q10 A corner case is when the number of online CPUs and present CPUs differ and the driver asks for less queues than online CPUs, e.g. 8 online CPUs, 16 possible CPUs isolcpus=3Dio_queue,2-3,6-7,12-13 virtio_blk.num_request_queues=3D2 Queue mapping: hctx0: default 0 1 2 3 4 5 6 7 8 12 13 hctx1: default 9 10 11 14 15 IRQ mapping irq 27 affinity 0 effective 0 virtio0-config irq 28 affinity 0-1,4-5,8 effective 5 virtio0-req.0 irq 29 affinity 9-11,14-15 effective 0 virtio0-req.1 Noteworthy is that for the normal/default configuration (!isoclpus) the mapping will change for systems which have non hyperthreading CPUs. The main assignment loop will completely rely that group_mask_cpus_evenly to do the right thing. The old code would distribute the CPUs linearly over the hardware context: queue mapping for /dev/nvme0n1 hctx0: default 0 8 hctx1: default 1 9 hctx2: default 2 10 hctx3: default 3 11 hctx4: default 4 12 hctx5: default 5 13 hctx6: default 6 14 hctx7: default 7 15 The assign each hardware context the map generated by the group_mask_cpus_evenly function: queue mapping for /dev/nvme0n1 hctx0: default 0 1 hctx1: default 2 3 hctx2: default 4 5 hctx3: default 6 7 hctx4: default 8 9 hctx5: default 10 11 hctx6: default 12 13 hctx7: default 14 15 In case of hyperthreading CPUs, the resulting map stays the same. Signed-off-by: Daniel Wagner --- block/blk-mq-cpumap.c | 177 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 158 insertions(+), 19 deletions(-) diff --git a/block/blk-mq-cpumap.c b/block/blk-mq-cpumap.c index 8244ecf87835..3b4fa3b291c9 100644 --- a/block/blk-mq-cpumap.c +++ b/block/blk-mq-cpumap.c @@ -22,7 +22,18 @@ static unsigned int blk_mq_num_queues(const struct cpuma= sk *mask, { unsigned int num; =20 - num =3D cpumask_weight(mask); + if (housekeeping_enabled(HK_TYPE_IO_QUEUE)) { + const struct cpumask *hk_mask; + struct cpumask avail_mask; + + hk_mask =3D housekeeping_cpumask(HK_TYPE_IO_QUEUE); + cpumask_and(&avail_mask, mask, hk_mask); + + num =3D cpumask_weight(&avail_mask); + } else { + num =3D cpumask_weight(mask); + } + return min_not_zero(num, max_queues); } =20 @@ -31,9 +42,13 @@ static unsigned int blk_mq_num_queues(const struct cpuma= sk *mask, * * Returns an affinity mask that represents the queue-to-CPU mapping * requested by the block layer based on possible CPUs. + * This helper takes isolcpus settings into account. */ const struct cpumask *blk_mq_possible_queue_affinity(void) { + if (housekeeping_enabled(HK_TYPE_IO_QUEUE)) + return housekeeping_cpumask(HK_TYPE_IO_QUEUE); + return cpu_possible_mask; } EXPORT_SYMBOL_GPL(blk_mq_possible_queue_affinity); @@ -46,6 +61,14 @@ EXPORT_SYMBOL_GPL(blk_mq_possible_queue_affinity); */ const struct cpumask *blk_mq_online_queue_affinity(void) { + /* + * Return the stable housekeeping mask if enabled. Callers (e.g., + * the IRQ affinity core) are responsible for safely intersecting + * this with a local snapshot of the online mask. + */ + if (housekeeping_enabled(HK_TYPE_IO_QUEUE)) + return housekeeping_cpumask(HK_TYPE_IO_QUEUE); + return cpu_online_mask; } EXPORT_SYMBOL_GPL(blk_mq_online_queue_affinity); @@ -57,7 +80,8 @@ EXPORT_SYMBOL_GPL(blk_mq_online_queue_affinity); * ignored. * * Calculates the number of queues to be used for a multiqueue - * device based on the number of possible CPUs. + * device based on the number of possible CPUs. This helper + * takes isolcpus settings into account. */ unsigned int blk_mq_num_possible_queues(unsigned int max_queues) { @@ -72,7 +96,8 @@ EXPORT_SYMBOL_GPL(blk_mq_num_possible_queues); * ignored. * * Calculates the number of queues to be used for a multiqueue - * device based on the number of online CPUs. + * device based on the number of online CPUs. This helper + * takes isolcpus settings into account. */ unsigned int blk_mq_num_online_queues(unsigned int max_queues) { @@ -80,23 +105,104 @@ unsigned int blk_mq_num_online_queues(unsigned int ma= x_queues) } EXPORT_SYMBOL_GPL(blk_mq_num_online_queues); =20 +static bool blk_mq_validate(struct blk_mq_queue_map *qmap, + const struct cpumask *active_hctx) +{ + /* + * Verify if the mapping is usable when housekeeping + * configuration is enabled + */ + + for (int queue =3D 0; queue < qmap->nr_queues; queue++) { + int cpu; + + if (cpumask_test_cpu(queue, active_hctx)) { + /* + * This htcx has at least one online CPU thus it + * is able to serve any assigned isolated CPU. + */ + continue; + } + + /* + * There is no housekeeping online CPU for this hctx, all + * good as long as all non houskeeping CPUs are also + * offline. + */ + for_each_online_cpu(cpu) { + if (qmap->mq_map[cpu] !=3D queue) + continue; + + pr_warn("Unable to create a usable CPU-to-queue mapping with the given = constraints\n"); + return false; + } + } + + return true; +} + +static void blk_mq_map_fallback(struct blk_mq_queue_map *qmap) +{ + unsigned int cpu; + + /* + * Map all CPUs to the first hctx to ensure at least one online + * CPU is serving it. + */ + for_each_possible_cpu(cpu) + qmap->mq_map[cpu] =3D 0; +} + void blk_mq_map_queues(struct blk_mq_queue_map *qmap) { - const struct cpumask *masks; + struct cpumask *masks __free(kfree) =3D NULL; + const struct cpumask *constraint; unsigned int queue, cpu, nr_masks; + cpumask_var_t active_hctx; =20 - masks =3D group_cpus_evenly(qmap->nr_queues, &nr_masks); - if (!masks) { - for_each_possible_cpu(cpu) - qmap->mq_map[cpu] =3D qmap->queue_offset; - return; - } + if (!zalloc_cpumask_var(&active_hctx, GFP_KERNEL)) + goto fallback; + + if (housekeeping_enabled(HK_TYPE_IO_QUEUE)) + constraint =3D housekeeping_cpumask(HK_TYPE_IO_QUEUE); + else + constraint =3D cpu_possible_mask; + + /* Map CPUs to the hardware contexts (hctx) */ + masks =3D group_mask_cpus_evenly(qmap->nr_queues, constraint, &nr_masks); + if (!masks) + goto free_fallback; =20 for (queue =3D 0; queue < qmap->nr_queues; queue++) { - for_each_cpu(cpu, &masks[queue % nr_masks]) - qmap->mq_map[cpu] =3D qmap->queue_offset + queue; + unsigned int idx =3D (qmap->queue_offset + queue) % nr_masks; + + for_each_cpu(cpu, &masks[idx]) { + qmap->mq_map[cpu] =3D idx; + + if (cpu_online(cpu)) + cpumask_set_cpu(qmap->mq_map[cpu], active_hctx); + } + } + + /* Map any unassigned CPU evenly to the hardware contexts (hctx) */ + queue =3D cpumask_first(active_hctx); + for_each_cpu_andnot(cpu, cpu_possible_mask, constraint) { + qmap->mq_map[cpu] =3D (qmap->queue_offset + queue) % nr_masks; + queue =3D cpumask_next_wrap(queue, active_hctx); } - kfree(masks); + + if (!blk_mq_validate(qmap, active_hctx)) + goto free_fallback; + + free_cpumask_var(active_hctx); + + return; + +free_fallback: + free_cpumask_var(active_hctx); + +fallback: + blk_mq_map_fallback(qmap); } EXPORT_SYMBOL_GPL(blk_mq_map_queues); =20 @@ -133,24 +239,57 @@ void blk_mq_map_hw_queues(struct blk_mq_queue_map *qm= ap, struct device *dev, unsigned int offset) =20 { - const struct cpumask *mask; + cpumask_var_t active_hctx, mask; unsigned int queue, cpu; =20 if (!dev->bus->irq_get_affinity) goto fallback; =20 + if (!zalloc_cpumask_var(&active_hctx, GFP_KERNEL)) + goto fallback; + + if (!zalloc_cpumask_var(&mask, GFP_KERNEL)) { + free_cpumask_var(active_hctx); + goto fallback; + } + + /* Map CPUs to the hardware contexts (hctx) */ for (queue =3D 0; queue < qmap->nr_queues; queue++) { - mask =3D dev->bus->irq_get_affinity(dev, queue + offset); - if (!mask) - goto fallback; + const struct cpumask *affinity_mask; + + affinity_mask =3D dev->bus->irq_get_affinity(dev, offset + queue); + if (!affinity_mask) + goto free_fallback; =20 - for_each_cpu(cpu, mask) + for_each_cpu(cpu, affinity_mask) { qmap->mq_map[cpu] =3D qmap->queue_offset + queue; + + cpumask_set_cpu(cpu, mask); + if (cpu_online(cpu)) + cpumask_set_cpu(qmap->mq_map[cpu], active_hctx); + } } =20 + /* Map any unassigned CPU evenly to the hardware contexts (hctx) */ + queue =3D cpumask_first(active_hctx); + for_each_cpu_andnot(cpu, cpu_possible_mask, mask) { + qmap->mq_map[cpu] =3D qmap->queue_offset + queue; + queue =3D cpumask_next_wrap(queue, active_hctx); + } + + if (!blk_mq_validate(qmap, active_hctx)) + goto free_fallback; + + free_cpumask_var(active_hctx); + free_cpumask_var(mask); + return; =20 +free_fallback: + free_cpumask_var(active_hctx); + free_cpumask_var(mask); + fallback: - blk_mq_map_queues(qmap); + blk_mq_map_fallback(qmap); } EXPORT_SYMBOL_GPL(blk_mq_map_hw_queues); --=20 2.51.0 From nobody Wed Apr 1 09:46:40 2026 Received: from CWXP265CU009.outbound.protection.outlook.com (mail-ukwestazon11021083.outbound.protection.outlook.com [52.101.100.83]) (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 4BD993D75A9; Mon, 30 Mar 2026 22:11:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.100.83 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908694; cv=fail; b=hzelalBGW+te8JtoU0MpbO6A3Z3AsUlB2TMrhbE03p+db/cswDhyYWW28SwYZPZG3fHxFzM2NrmfCfYhKqp/X9QXqsa/SAI+GRWDe8H6eOKPp/mW3YN7b9R1C922k8HD/YuauWnmh9tY8zYy0A8+0wjHaDsmk/MmZW3ocKdI9TY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908694; c=relaxed/simple; bh=U3W79bi5dYsroDS3Fs8GXUtdvZCER8T6HS2U+x+MDbM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Y6mGl3FdB2nBUjmDSq6WsBJiSIyw90VjzJU4+mIL+pPDz++T8lKoDXhEBcitxEOWdUpmeGrNLqOaUXeeMW/+NdNpKKGAplVVJi6FYNVzqeNYrj6UcWI4c48JV8asvYocLELmDepq+rluStD5P273A0O+GP+DRI8/NgYE/6kS83Y= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.100.83 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GLjNOLm59P7PPPGiJUOFLxxeeZXcQ6ViqbFwLmNgGvhuvZwin4YSid4fMsYXjH2S5rsgCVE5lFWFlK1LAv99bHygjo0KWfe8gBKC6nYOHLW5Zze9B8ir8N6ZMPCArXxew66g7Rfzl7f4oVwIfQSu13MT+diIMBjDMAUmxSe5UGyraeG6gd7qLoJnyizJTwhZZtjhhjTRqs0MPeV9lPr4WWgeJ+/AymHNb3CC90DkgmoT0f5cuZkejp7MFc3hLrY9SPmkkB2IljrzMgBBghfNgMR8ikNShaswTZ922I4CIn2UMBX5d31dhO6IPe1jkN3ta9GednK5KhgoA0YkcpiubQ== 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=Fk8sHS9gyZc49MOAiv7NA/AEJUmj+UIECf/52br9crs=; b=g/YWqxXryrDwHlBjTFT4bAqhDdup3i6eQmm4v0P0uKnuX/I4YbYd0Yukz0EW5lKLBUpL+L1NRa481TouBneOwRDSKBQEmZ4vlUe+H2oTw/0ztqthgYJVrkZ9/L0MpyzSIPNcYq5pwpARybhjEe6nI/SPO6VkTUFhlrlbNJR+ICDKPQgqQPMm9Kgqi0nVP/hhBI/m0OiNI87Oyl6ua2G2BTclJBAQDhr24Wp2cS8DWKCbtKve9KSLs3JPCLYY1wK3dvQ7DFfyJAm8nbjVYeSc3seGfcIQ2TI353D98eWfmP9gYv7Ce9KP6WrxJJoFqIft1jzPMZJKA7SmHGEmNe4y3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB3841.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:a9::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Mon, 30 Mar 2026 22:11:31 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%2]) with mapi id 15.20.9745.022; Mon, 30 Mar 2026 22:11:31 +0000 From: Aaron Tomlin To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, mst@redhat.com Cc: atomlin@atomlin.com, aacraid@microsemi.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, liyihang9@h-partners.com, kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, shivasharan.srikanteshwara@broadcom.com, chandrakanth.patil@broadcom.com, sathya.prakash@broadcom.com, sreekanth.reddy@broadcom.com, suganath-prabu.subramani@broadcom.com, ranjan.kumar@broadcom.com, jinpu.wang@cloud.ionos.com, tglx@kernel.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, akpm@linux-foundation.org, maz@kernel.org, ruanjinjie@huawei.com, bigeasy@linutronix.de, yphbchou0911@gmail.com, wagi@kernel.org, frederic@kernel.org, longman@redhat.com, chenridong@huawei.com, hare@suse.de, kch@nvidia.com, ming.lei@redhat.com, steve@abita.co, sean@ashe.io, chjohnst@gmail.com, neelx@suse.com, mproche@gmail.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, megaraidlinux.pdl@broadcom.com, mpi3mr-linuxdrv.pdl@broadcom.com, MPT-FusionLinux.pdl@broadcom.com Subject: [PATCH v9 11/13] blk-mq: prevent offlining hk CPUs with associated online isolated CPUs Date: Mon, 30 Mar 2026 18:10:45 -0400 Message-ID: <20260330221047.630206-12-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260330221047.630206-1-atomlin@atomlin.com> References: <20260330221047.630206-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN1PR12CA0023.namprd12.prod.outlook.com (2603:10b6:408:e1::28) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::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: CWLP123MB3523:EE_|CWLP123MB3841:EE_ X-MS-Office365-Filtering-Correlation-Id: 944e7599-648b-451b-f31c-08de8ea94c01 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: vmZZ9CzPU3U9dFEwvx4lIaXSc/mx76H0MYUOwXZjA0GLxG1WiGhvjSiWovLKlmCQobIOop1xwYtUEKrUtCkoIA5ioiQVs/a3TZCjdHftKrOLWqG7SNb+5CMCFdCxfDbj8xEDlIhfO6xpQOjZSCvDo3aR1NsvIEYtPFX2sdioSElRAze8VCbFfNRH6W3ncwscXFT/ND/01aAmhcbFxi9jKXOBXASSGOczL9jPYP7uhxQV3muEULW4KUta4CREJqksmo/kX7PmCjlMyX6bxuGg2Ze1J25Kl06lLB3F6+UU1hP0FnHMX9RmWkqZxxlqvGs6f4hDqF4zqP0PeWASM+p1Nrouoa/3R9qANFBA2j2mIkivz79FadQlL7fpZYb/eJktBzmaTrzzir/y0E/N2lvTHmvsqsXOVpJJSCFf2weaDO2PG4dzU4GJji5v3+NYAAlpcjGhOPsP9C8hAIxgYH+Nj6zucraxhRzDXliytM/UJBGnL4M8EkiEV/FOqkbkZCeKDX7tqzKM8xQ1fVVEDtJckRXOXymDtM8C/nFn1+zpH/ZRX0wSpjFKuPDnpBlKP4w7DelyldcoIXkWbz0pHrtdW+5ANMrBgqiDpZnkKkWu3DtrEdKWO8XvQ9sZQbh2lrsalszA52Rm0fwlNBP9n1DfG2oaMlkBKoPzXW/6zUH4J90hNx1Rriz/4rZ+u87xSzYztHSy4FRzkgGwoJsLh4uqFB8e3+hALLGQHxAyPmwQQ9o= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QImR91OvfeTKfacL14YPWUJSVPHil/Nf8RM6cp3PpD1fYoBSSwibIr2iRUWn?= =?us-ascii?Q?B+RwhjLViL2TFTNFbfuigi/BHQsDbGUMlwWVhrT3POr0I1opzD2lxPzb3YY5?= =?us-ascii?Q?maLWEM2psjbCCcWgzv81JG979wvuxkBTs5I/Os6rjvKx4pC6ZDtgcWVnX7y8?= =?us-ascii?Q?npI6BLp7KS9otGduDp+nPKr4fgpCII8RJWc5P90revZMV+syZ+rDl8TWKiK/?= =?us-ascii?Q?ek25Xp1Llm2/EpUBugbQwfqQyN0UI61idVLBbbrn4oXqaZ6uSkt/xcyDOtm6?= =?us-ascii?Q?vYvY2LizD4WbOccxyrU4LREWqxnhCPT6HHlWco0hHHsTHiDeu0WfunKwh34W?= =?us-ascii?Q?SVrj0NsIcdrQoKcClNhOoOd80NrrG+i4wzhsQM1eA8uc+5JsqrczBWC/jPqc?= =?us-ascii?Q?ncMq3Bk7bQHFGkJFTBoe/LMGLV2/9Q98yTYpdCXRuNcC1i68Gtk5WOhpOHOu?= =?us-ascii?Q?dlI7qjxT8s35FtupNVKxfZ3iUl4KQot5N4rBrzfQx8TukESz+j4LxO3/a8vk?= =?us-ascii?Q?vzErZnz7a1K9Qyc9VtlD0+TvNqa1t5q5Me8Liopz1Knc9mZFd4g6ZE9P+RFQ?= =?us-ascii?Q?HVvyIktlrdEaFHHZo3mn3GrJpkxcanMNdaTdGpUEME5Blw9ayntoCJJ0eMO6?= =?us-ascii?Q?jw9X+6PeKOdRKHXH8Zt9/Hfgh8870mAOzjYXHijJPuvRDjMltvMf855T4LIt?= =?us-ascii?Q?gr8lsPia5TrXH+V7NJstx+1bEvpyOfYTuETuaLpDZrLLFIC6mdu6knUgJWsP?= =?us-ascii?Q?wS4RcPmUsgmEkJ0YFIxd1It76NN8/pN4r9rKGgc5/wsm8KSJ8TMnjbpiJ95b?= =?us-ascii?Q?LdLy6MrUr8oeHPKsi5LZh9UOkyZUVPv5sP8w3rQFZXnCIPA7qWiC76jmbpWb?= =?us-ascii?Q?Dgu6BgM5iCdHg8u3soI9nQsSC63jfrD5Q3gMs9BN6hj/c6DjvGKYRY0QJcEA?= =?us-ascii?Q?lp4ec8zZ+goAxxQaSE1NLqVxvUkYdnUPD8Q9551dp5buU8JBvbEf871RMU30?= =?us-ascii?Q?0ZALYSZ4JIpMoa8XYDI5CJwcFC00G0TVy4/BXg3pcKZ5QrfZkpJszZJyKy5m?= =?us-ascii?Q?Vi8grnnC9oD7cROipEfddLP/dBDzjLmiGStEowUTUAjZcpmSP5CXsKiigftS?= =?us-ascii?Q?iK5naMossBGiA8kDFgxwdyVBG4GREwZ1/ectFJrZsDZeeqytOCL9I9s/eJlZ?= =?us-ascii?Q?I6MJ23d9WqgsiIdnt9I5F4Dk2GEVlo7+BDsp/8aOn6RTnbPcoTd3gf1Xu7Ea?= =?us-ascii?Q?PvoZ27kUdvoeQFkmU0iVYZUhh5+VMspDq4IQWUzFvGvcIKnb/efMMUNYi7wm?= =?us-ascii?Q?Cutw/XVSDvir4FZ2mHfDw6cl4fJNSnuV7Pl0htRfj1AecNi2UqehbNDTUjfi?= =?us-ascii?Q?jD6DxeErKycANGZiebnqT+QI9nriaD2nyXZWhNCd7ZRqygYI3Zwj0S9Gk9Cu?= =?us-ascii?Q?DdroW4MkRoEVeZhfsrR1cbx0Gax/54nhA0ZqjThSh4CLEjcMQx25h2Q88Nd5?= =?us-ascii?Q?+WXfPqYZZ7XUsshjBZ7abLNDGS+88eUrizg44Lds3bSjoqTbofTBza5xeM4V?= =?us-ascii?Q?xJtCV5x0MNgyc3iBtTUDGsov29cf39jWYWN6j3cQ4KlNWOXTVFNitgzl4SIT?= =?us-ascii?Q?rp9Um3MJWeYKfiGepO+8p7z//S9TjJR3au2Cc+WzenSKQWIvxbi8Ufw33nFk?= =?us-ascii?Q?85Boa6d/FCeGRtH5kaD6wUPWQjvB2jmZau9+z/3PUKeYRx9xA2oAKz43yJQc?= =?us-ascii?Q?OkRNZW4ktA=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: 944e7599-648b-451b-f31c-08de8ea94c01 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2026 22:11:31.0722 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: VUha+2Tk0lruzh1sfvTpDFujVOS3xowAZz6qT9y3LUIsa+wevTFNDJipEzlutQai/c6tRChKGIpm6X0yPt1+uA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB3841 Content-Type: text/plain; charset="utf-8" From: Daniel Wagner When isolcpus=3Dio_queue is enabled, and the last housekeeping CPU for a given hctx goes offline, there would be no CPU left to handle I/O. To prevent I/O stalls, prevent offlining housekeeping CPUs that are still serving isolated CPUs. When isolcpus=3Dio_queue is enabled and the last housekeeping CPU for a given hctx goes offline, no CPU would be left to handle I/O. To prevent I/O stalls, disallow offlining housekeeping CPUs that are still serving isolated CPUs. Reviewed-by: Aaron Tomlin Reviewed-by: Hannes Reinecke Signed-off-by: Daniel Wagner --- block/blk-mq.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/block/blk-mq.c b/block/blk-mq.c index 3da2215b2912..8671f2170880 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -3699,6 +3699,43 @@ static bool blk_mq_hctx_has_requests(struct blk_mq_h= w_ctx *hctx) return data.has_rq; } =20 +static bool blk_mq_hctx_can_offline_hk_cpu(struct blk_mq_hw_ctx *hctx, + unsigned int this_cpu) +{ + const struct cpumask *hk_mask =3D housekeeping_cpumask(HK_TYPE_IO_QUEUE); + + for (int i =3D 0; i < hctx->nr_ctx; i++) { + struct blk_mq_ctx *ctx =3D hctx->ctxs[i]; + + if (ctx->cpu =3D=3D this_cpu) + continue; + + /* + * Check if this context has at least one online + * housekeeping CPU; in this case the hardware context is + * usable. + */ + if (cpumask_test_cpu(ctx->cpu, hk_mask) && + cpu_online(ctx->cpu)) + break; + + /* + * The context doesn't have any online housekeeping CPUs, + * but there might be an online isolated CPU mapped to + * it. + */ + if (cpu_is_offline(ctx->cpu)) + continue; + + pr_warn("%s: trying to offline hctx%d but there is still an online isolc= pu CPU %d mapped to it\n", + hctx->queue->disk->disk_name, + hctx->queue_num, ctx->cpu); + return false; + } + + return true; +} + static bool blk_mq_hctx_has_online_cpu(struct blk_mq_hw_ctx *hctx, unsigned int this_cpu) { @@ -3731,6 +3768,11 @@ static int blk_mq_hctx_notify_offline(unsigned int c= pu, struct hlist_node *node) struct blk_mq_hw_ctx, cpuhp_online); int ret =3D 0; =20 + if (housekeeping_enabled(HK_TYPE_IO_QUEUE)) { + if (!blk_mq_hctx_can_offline_hk_cpu(hctx, cpu)) + return -EINVAL; + } + if (!hctx->nr_ctx || blk_mq_hctx_has_online_cpu(hctx, cpu)) return 0; =20 --=20 2.51.0 From nobody Wed Apr 1 09:46:40 2026 Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020078.outbound.protection.outlook.com [52.101.195.78]) (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 588D8395272; Mon, 30 Mar 2026 22:11:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908697; cv=fail; b=DmaTy1KGJpJgrhNEAxeBuxPNVQyFQ1NRx0JLxGCGfHHMbeKefTSJ/vCri/wI9EWngHmvJPoGPHGQWNWZJtG12sbxOoZ5RviJW9VlkGHjyDgAzvKR4LaSTC4iw7s/bMaFCz4Xt5oILoaXkyKPltjwmvxieuuvgO2fqBgLJCaYeOo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908697; c=relaxed/simple; bh=bYLvWjAfnilKYg3FMVEzPcdzlVT0TDhHJFmz2hWymZE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=qw7oLzfoJVB7GEkXgiJhdWp2P3h/6ctyxmRRpVJnWDuea2RaNkQ+Nb14IkxZZkx94oWjDSuND0/ezhg3yyX4KqXAN3jGA/KrmDjkQU2XgiEN9bqH758BIINwxYQTRjSxP225FSq6UIYs8r9ZLRG9pgRf35zZ2T9MbgXqvgGdsHw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.195.78 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XxSVMCfG10EYuZlDgk4i5BFczGMFOC9gAxpoer9B064TdZxAs/QK+J/7UrE+Pxne/zm4z0p4lvJ2MFTh4KFF60eWMSY6V0L4x67oSKh+5ILpetsGTT6w+Zkp5RxCdwWijBLelEIjS8GSwVW/wvGOF7vsmS8MBr/nbYrBwAqCSZtdSmssWRtLgyFHlMHTk+QRp/i3bRg5fbRqTytHy4a4PpqBMfBBtOYjqmTHDEMzbZ1/e6vgMBvHP7RTFkNabn2+6PD4YPCGF7/kGzrmQvmqag+Ogx61uamv62jom37fOTOEz6vrt7o3LW0yILfNXvYHAYec1yHoBWWXBnG3PA1hlA== 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=az4WgduGThZvY6Um24xQWuxzlC406KXWRiasoJJPX+I=; b=PFsPP89iuIeV4ciuhs8Ts5hC7C+z7q33bF7rqdj/+FyqQ4kxw9bpIu7p/bU5UWEd54RhlNT+dUhU16ojE84TCLMS0RwKEnIMPZr1R/Z9INROG8RjPXD7J5bk0OouqcHFQRoArwu7ziXR83MIzMVR8+iEWxkujyhdbAMOHIxSnMOJMv9WJ/txq7ox/GGxmy7IDNu4yaX/gBZKShDipzpvEOgaR8P3RSLyqiyRR5AtstnXxsVgp8va67fCB7SHq8Vs3i1G9qOGipMZ6c6yGV7Q0DjJNSfiGnjqAAh49S4IIBryrlE9sbLHxukbNCVNTPv0zO1PLhcH+IvfW3J3kaK/kQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB3841.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:a9::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Mon, 30 Mar 2026 22:11:34 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%2]) with mapi id 15.20.9745.022; Mon, 30 Mar 2026 22:11:34 +0000 From: Aaron Tomlin To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, mst@redhat.com Cc: atomlin@atomlin.com, aacraid@microsemi.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, liyihang9@h-partners.com, kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, shivasharan.srikanteshwara@broadcom.com, chandrakanth.patil@broadcom.com, sathya.prakash@broadcom.com, sreekanth.reddy@broadcom.com, suganath-prabu.subramani@broadcom.com, ranjan.kumar@broadcom.com, jinpu.wang@cloud.ionos.com, tglx@kernel.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, akpm@linux-foundation.org, maz@kernel.org, ruanjinjie@huawei.com, bigeasy@linutronix.de, yphbchou0911@gmail.com, wagi@kernel.org, frederic@kernel.org, longman@redhat.com, chenridong@huawei.com, hare@suse.de, kch@nvidia.com, ming.lei@redhat.com, steve@abita.co, sean@ashe.io, chjohnst@gmail.com, neelx@suse.com, mproche@gmail.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, megaraidlinux.pdl@broadcom.com, mpi3mr-linuxdrv.pdl@broadcom.com, MPT-FusionLinux.pdl@broadcom.com Subject: [PATCH v9 12/13] genirq/affinity: Restrict managed IRQ affinity to housekeeping CPUs Date: Mon, 30 Mar 2026 18:10:46 -0400 Message-ID: <20260330221047.630206-13-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260330221047.630206-1-atomlin@atomlin.com> References: <20260330221047.630206-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0877.namprd03.prod.outlook.com (2603:10b6:408:13c::12) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::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: CWLP123MB3523:EE_|CWLP123MB3841:EE_ X-MS-Office365-Filtering-Correlation-Id: fdbd9b2a-1f11-47dd-63dd-08de8ea94de9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: vap5EtSxdaDbd2QUZiGMqquDA3zdRQ7TQEZZZ1F1VoK6mgfGlrwzo3k6cPu2fmAM0u9PeSZQbe0eCORyKBe8Pyu0bhbI3waRipV59+TAcwFf4Po+3tAfgAMlVs69MFckddRp24kz3U2wg7wTpNK725AZpxYN3wTuiULTFE8nzNpSO/UEXRceouDlp97BVrDJVNIZaZSFgtc5p4833a9BqgWikz2N2r/o9nMa9+uyel4mP4ZHBfoCOIARUmJgZogkPb3w3RSbjrzWXQR370+RBg9rxW/kF5QvfM5eIak4DcpfCfQfatfgTlP/13r+KMv/i041Ke2RuXeQ/2lX34n69VwAubHChgWQT3295aiduswpCuVrtZgFCaf7xMMDV7qOBEI5EPU4lcizbA55IIqog7BkVp/YGcvMh0t/P4Y0+1cu7+vID09dxfLr/KTsyrQT0CddU1tsNOY5/5GAGk1AN6eqM0wWWKeL/C/1pAPX4SmkMk5+Tqb4H0/+sfXuGCYGBtyLEqrgoF1za2rEZq2kLEblghl/O9I9nS7pbkZJQCOy3NqQaFfYmpmnevtPZajkk90OhGt9giu0W7jnhrewaU9vdPRCt/f3G9XcbYq2HwuNfsOgnYhB/3YOC4FP8MYxUzcM3hVs/biSLeScQT3GjadkOpuyVBYtF7L7ytIg2aWn6+6bSrrY+Vhy20ftBPpTgWcAvgtYHEzRW2z176/6Peh26OrInXQST9dS/9ZLONk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?aonJGPgcORwr6+DsdPYV8B8MJphkSN6LCUBH/RwzCaDDSGOdWUm9jBFU7V9s?= =?us-ascii?Q?OeMjal2swdU6x2nV3znFWcYNpylB74keobZhcmdz86fUf/s8LKSW+MLpZOoZ?= =?us-ascii?Q?AGLS7+oCHlMNHbV6FiNTrJPJSoXageIOTRLUdnyOGez9X9YYHAM5GlRg4PDY?= =?us-ascii?Q?47Riv+NWejJLBO4l7RwL6+MpyCZUhQ/5P3zr+NPZwNRyuSTXo19uuKW5f0PF?= =?us-ascii?Q?8iUAvOMRzRzrAT60JgNyKtMWPHhHqF2iTMfqrZm6WCqT2HNfyOSQxRrFzgmz?= =?us-ascii?Q?PEQEORhy1cfUPyHx4v97DBcxw39veR6os4lKbTLk1EMRLSdFskTajO1jK9+0?= =?us-ascii?Q?l61ZJBtZCbS60f8FjpyybtZxw0RH0CGZUHcXuwUJJa8jxx74ZxDlGh2ASlV6?= =?us-ascii?Q?iIdyphyeQJX7Ipr4z1figM6APyXFnd16AoVN3z5xYnugIk2HWDtzuPu2Qt5d?= =?us-ascii?Q?C9knUBK8VuNGAZ9xPr3XgnBmRRr/9ZD6fqXwWbVW5COdq/PZojP4ksG2tmYk?= =?us-ascii?Q?yhw7LzKJ+f/4jkcG97tagQZKfH1c0FJba5tkZy27QYRumazCYlRnX+nYOxmr?= =?us-ascii?Q?XhamJHsdQLHA5TrgRTLpZ4bLRTWseITrsRTsg+oflsuxVDIM9s9oEMNnhTTI?= =?us-ascii?Q?cPRSa1AuUBCsp+yccEjEA68tGTO2mbeqQ/wktkgIA4vyLbwAZGKPksg+hVjf?= =?us-ascii?Q?jNVC3zoQL4kY/r4+hrid0WvrdQNejCz1ojg/AstdTO6AA0wVt1vs/Q7t1dyz?= =?us-ascii?Q?Qt8DOHXi1aZwjAXg08gNl0+gLu37JRtJzQ4KRqqzBuNw+ZoQ3Wae1yl6iJ2+?= =?us-ascii?Q?jO24lFJmwO2WaF7b+xufO4zexK1ZiGyVqXqOmKNVvwaioeD+gPUu7yAvQbck?= =?us-ascii?Q?0fd+yVehigI9AbFoe+KD1XI6d1/2A0kYSx0QOF/3SAmG4Fimum6vSJnI/JOd?= =?us-ascii?Q?wOY7hNuqpLThDKfRWIteYMyI7uJV+PTd9LElbNie5wHgVd4uZY5dVf+m1Z+A?= =?us-ascii?Q?+iRXMD81wYyAVtxtTxmfc2EDlhmBTTRAe5W4hiEo4R11K1UrynJ3yWrFt9T9?= =?us-ascii?Q?S3UFPYn/LVLv3YMt2u6CJO01HCS4F9yzkoxawgZ8/LU9ADrZmdW0eQU/Ti0a?= =?us-ascii?Q?AotdzZ8Dd4BggqaWX8VCKpvmyH+bVvEhBMSDOxiLxXbcDC3JTrfDMQvijDu4?= =?us-ascii?Q?01MRUpTi3Jdef66kxYvHH+XXwpNQ+dmX1yQfoFFTxHBQI96wNVHC8+1uZ7eb?= =?us-ascii?Q?jTCbHnBgYAx28RpGgXlKtSTTpBPpe9ibDDk5nRtFwKCVfvP9QDVWTAWk9j5U?= =?us-ascii?Q?7I8yiyZbSF47tNQ1xikuk388O6aNGXY7TNsYw+yQ+kA8Z0Rx1Ae/tZufFBWM?= =?us-ascii?Q?sGJr+h1NMYkQ1LTv5p0BT8OFpNbcxIqixu1Dkew1KJtF0cB119aaPXFNa51l?= =?us-ascii?Q?DLX9Tl0isoWL2YZdFR0Bd+da8ILhazEqYnKw34BdUbdSwU3Yt5YYOJyfbg1g?= =?us-ascii?Q?a1dg4hYxl81XbFAvhVFu7N4iF19VtGx3l39NIvnwviM1de74NJwHFKJBIcij?= =?us-ascii?Q?of2mkb/S/pu8qDVdUINFux0poj+9v1sXZtcuIfUh7MhNnGiEK7I6ixhfhWQc?= =?us-ascii?Q?AAj00JPgsS1d7SxW7WvXrbr0c0tpS9CQ83xo0iTvGXLx+oioeAc9xluz4UWp?= =?us-ascii?Q?ELA/da2CfIkVALoAR90eqsdDDRDVFpb/gj/v5W4OlJg6pLxFa+WQGfHWMuVw?= =?us-ascii?Q?5YHtYZe9hw=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: fdbd9b2a-1f11-47dd-63dd-08de8ea94de9 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2026 22:11:34.2117 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Xqt6tdqpedFRwgmnzXRGCJgNAgtxV0/7P/of9kFqgpwxxHquR1iOgoU/aaI43/NozIsRcgHo0EOdqchJ6EwDcA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB3841 Content-Type: text/plain; charset="utf-8" At present, the managed interrupt spreading algorithm distributes vectors across all available CPUs within a given node or system. On systems employing CPU isolation (e.g., "isolcpus=3Dio_queue"), this behaviour defeats the primary purpose of isolation by routing hardware interrupts (such as NVMe completion queues) directly to isolated cores. Update irq_create_affinity_masks() to respect the housekeeping CPU mask. Introduce irq_spread_hk_filter() to intersect the natively calculated affinity mask with the HK_TYPE_IO_QUEUE mask, thereby keeping managed interrupts off isolated CPUs. To ensure strict isolation whilst guaranteeing a valid routing destination: 1. Fallback mechanism: Should the initial spreading logic assign a vector exclusively to isolated CPUs (resulting in an empty intersection), the filter safely falls back to the system's online housekeeping CPUs. 2. Hotplug safety: The fallback utilises data_race(cpu_online_mask) instead of allocating a local cpumask snapshot. This circumvents CONFIG_CPUMASK_OFFSTACK stack bloat hazards on high-core-count systems. Furthermore, it prevents deadlocks with concurrent CPU hotplug operations (e.g., during storage driver error recovery) by eliminating the need to hold the CPU hotplug read lock. 3. Fast-path optimisation: The filtering logic is conditionally executed only if housekeeping is enabled, thereby ensuring zero overhead for standard configurations. Signed-off-by: Aaron Tomlin --- kernel/irq/affinity.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/kernel/irq/affinity.c b/kernel/irq/affinity.c index 076a5ef1e306..dd9e7f5fbdec 100644 --- a/kernel/irq/affinity.c +++ b/kernel/irq/affinity.c @@ -8,6 +8,24 @@ #include #include #include +#include + +/** + * irq_spread_hk_filter - Restrict an interrupt affinity mask to housekeep= ing CPUs + * @mask: The interrupt affinity mask to filter (in/out) + * @hk_mask: The system's housekeeping CPU mask + * + * Intersects @mask with @hk_mask to keep interrupts off isolated CPUs. + * If this intersection is empty (meaning all targeted CPUs were isolated), + * it falls back to the online housekeeping CPUs to guarantee a valid + * routing destination. + */ +static void irq_spread_hk_filter(struct cpumask *mask, + const struct cpumask *hk_mask) +{ + if (!cpumask_and(mask, mask, hk_mask)) + cpumask_and(mask, hk_mask, data_race(cpu_online_mask)); +} =20 static void default_calc_sets(struct irq_affinity *affd, unsigned int affv= ecs) { @@ -27,6 +45,8 @@ irq_create_affinity_masks(unsigned int nvecs, struct irq_= affinity *affd) { unsigned int affvecs, curvec, usedvecs, i; struct irq_affinity_desc *masks =3D NULL; + const struct cpumask *hk_mask =3D housekeeping_cpumask(HK_TYPE_IO_QUEUE); + bool hk_enabled =3D housekeeping_enabled(HK_TYPE_IO_QUEUE); =20 /* * Determine the number of vectors which need interrupt affinities @@ -83,8 +103,12 @@ irq_create_affinity_masks(unsigned int nvecs, struct ir= q_affinity *affd) return NULL; } =20 - for (int j =3D 0; j < nr_masks; j++) + for (int j =3D 0; j < nr_masks; j++) { cpumask_copy(&masks[curvec + j].mask, &result[j]); + if (hk_enabled) + irq_spread_hk_filter(&masks[curvec + j].mask, + hk_mask); + } kfree(result); =20 curvec +=3D nr_masks; --=20 2.51.0 From nobody Wed Apr 1 09:46:40 2026 Received: from LO3P265CU004.outbound.protection.outlook.com (mail-uksouthazon11020102.outbound.protection.outlook.com [52.101.196.102]) (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 CB37A3A640F; Mon, 30 Mar 2026 22:11:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.196.102 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908701; cv=fail; b=bbv6aa6aRmTjfppy+MHmdhc9m2+UY3BPREMCNGD9LCDNP6nSKiy0Ud3zKf1vsHRqGYkpn+deCUoFqPR6XxOnBP9tX39PdNr/aVpBu1avvUrjY0CDpXkRTAxnX2kuy71+00xZ2KrPUOZkh2dBcWEuFVPc3t0lM8GeMww2Ov0hO+s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774908701; c=relaxed/simple; bh=ogEeDzV+LVEZHZ1eRbPOXXTGYSqG5oysG7Z3ejObpe4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Z/8xd3CiiDMQP4gnbhygo2+dzXbqJ1f9NKWa6PlQjZ8jSM5bSn4Ed0MQT9CubsnYahQ1zWmX6A3mHzAx+4mJJAk/u/0cUOvFvKp7Bc+PL9Kvz5l3ZS0y/zOIjhXzaUevsdLqzOWZUHpwbcOmDdfMvrHQ8geW3w8DXSzKMKnGxzE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.196.102 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BEopKRXQSLCJwv0eI/tIA0MJyPdofTMO/9Xt2/Ur7D61BD09kquidsiDJ+0kO4urT8BjNoLvIpX/9TTWEox8yjBPwfFQ0xHv29Cb0qB1aiLcYOTNw/r+NcgdxlWsVW+3eDOWpzLpp5owxf7A6hkfbHtrds15UyS3WxR3gt71yxHr2+COk2DD/YPIT7m9s2fXVFvpg/jnXLAHTLXVOk53fWYXeoJIRA/inrCSl7f7so8mRi9IMorU2iWf5LVUAniyjhpAHtxnp+RXToVYNcDbDfwpPL44fRs8S5i9EtXDmVKpmBkYBPzEC1ur9ra8fJ9WmqzzeyQIZoPbcW+sYDGHLA== 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=rmWC6QGOVxeNPUHeGnXrU3BrxZ8azJrRPagwYTbPgrs=; b=sYcMIiElMwh5Oa5A0SFEZteKwZ1+7NlRTcMczKGW9m9NryCQjMa8VXToJDZqfYbwKwSxqoG9uDfgouOQrrP65pnF9C/Zf2P7qFvf1qnIk/JVmSknSvGyybmxTByqdyPdkRA7PTDBiw8413mQyrWeZxXNkE8/ll8L7gDd/pOZhhI8Y/GE5aMDhxCZ4gflUSjBVsxJ/KHmaBsifjGIw3w9nXLdYbXVARAgZId+LVykeXeu1sm6Ahms9tMqFylrEogYOYC3uqpH6mfHJ+LYvmis4GN+CDloj8ghpxXPCHtc+k7XmaWoHCf4Fi7PabV+pf4soj4Ici+U4OlAqWSyAdznNQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com; dkim=pass header.d=atomlin.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=atomlin.com; Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10) by CWLP123MB3841.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:a9::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.28; Mon, 30 Mar 2026 22:11:37 +0000 Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM ([fe80::de8e:2e4f:6c6:f3bf%2]) with mapi id 15.20.9745.022; Mon, 30 Mar 2026 22:11:37 +0000 From: Aaron Tomlin To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, mst@redhat.com Cc: atomlin@atomlin.com, aacraid@microsemi.com, James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, liyihang9@h-partners.com, kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, shivasharan.srikanteshwara@broadcom.com, chandrakanth.patil@broadcom.com, sathya.prakash@broadcom.com, sreekanth.reddy@broadcom.com, suganath-prabu.subramani@broadcom.com, ranjan.kumar@broadcom.com, jinpu.wang@cloud.ionos.com, tglx@kernel.org, mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com, vincent.guittot@linaro.org, akpm@linux-foundation.org, maz@kernel.org, ruanjinjie@huawei.com, bigeasy@linutronix.de, yphbchou0911@gmail.com, wagi@kernel.org, frederic@kernel.org, longman@redhat.com, chenridong@huawei.com, hare@suse.de, kch@nvidia.com, ming.lei@redhat.com, steve@abita.co, sean@ashe.io, chjohnst@gmail.com, neelx@suse.com, mproche@gmail.com, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux.dev, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, megaraidlinux.pdl@broadcom.com, mpi3mr-linuxdrv.pdl@broadcom.com, MPT-FusionLinux.pdl@broadcom.com Subject: [PATCH v9 13/13] docs: add io_queue flag to isolcpus Date: Mon, 30 Mar 2026 18:10:47 -0400 Message-ID: <20260330221047.630206-14-atomlin@atomlin.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260330221047.630206-1-atomlin@atomlin.com> References: <20260330221047.630206-1-atomlin@atomlin.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9P220CA0001.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:13e::6) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::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: CWLP123MB3523:EE_|CWLP123MB3841:EE_ X-MS-Office365-Filtering-Correlation-Id: d3c8f54e-d209-4090-b5ee-08de8ea94fe5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: bwOevYgtoZK271KtY0FnpSfJoISBBhsDcJqda2ivxq1jxoorirNxbxLy1Mt+l13EGlhnVgl9PL2bvmGnz+B3anBTvFi+JkQTKEDibx0MfLw9dASDzCU25l+2UfqRACoqfZYeJZnhSdlJ+JQZ2B0dyRa4bbbuI017Y7GhfeT/879x81RZinIbWnNRfzEnIlSfcov/b/mPUaVi5iQVWoQH2bU7g/lY/pgVVK7Pl6yaAvIBX0UVZ24k8wfMiwdNHjTlFnuUEcpnKCttiAS82Yc35kKvtnMMNyffrilgjT+Qji3nRzJSW30bLmWWpEQGj5y3ZQ3bkWWxZV3a+m6zuAaOwJHde70Zc1Qi5YyHN90iI7q9qI01EzpiduogZKQkUTbfqtYsLyqLGJQJsjmtwujj2a7U3iE+JO+VuTnOUj5zf0pVBAfKUDLpg61RTyDOzLYWseJFwvGIs3FtBOOLqc7WG/hHPDPXgyymHbkFF/w0hbVaCimLsrLtCL0cR0bsRWp1x6QKCosYVD9ih9DP04eMVVaAu+YfySDRcR1zIALW8Z21m/zehdGNYhjVQgN3GS4qKoO9NYE+lHYAVyFylTyl4O/ocejUkkwO5p+6dtJkaqM+K4YrBKEkXX38Ak3Vm2qKWGDvUTGEthui8B/dYyKKD+dr8T4bGTqNEd/UaTjJxlTf+IKM5xb2eO/yWV5bQruThXqhQyHSuDwtz290k+lgFYZTUXifcGv7DiM+unMKJWE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Z/G0RWZ7vb/zrDN+23KOagkHa0wApItIz6l9pa5q1OcMnpPDFd6ASLpHsIpY?= =?us-ascii?Q?XvIDoAFvAPZDMVXSe5IB/mt4epWiYDSaIH0po7yq4K5eljL+4CFf/9w+GxgM?= =?us-ascii?Q?Ek0dWNFPXxffHJSuuQJ4dUKbf0gYhQ0Llys5LciK2fDreKaTaCDKeRuSpNhE?= =?us-ascii?Q?0R+OqNkwVmEEx0nc7h45JtUnIinADTRW0zuvcZj6dBXljvNGTb2sltGj13zX?= =?us-ascii?Q?p7cWMFgi+M3ndaocB70fy0hDS30tBcCEkBZsuA73d2UP0QpnL8WvHeNQpdbn?= =?us-ascii?Q?5uU7NoMQmMy/Gj1u4xZXpC1M25iLobzrcKo17DSuvYrAYqi01ibSai+TXWf0?= =?us-ascii?Q?BUiVsi2LDpOFNiWsThuraGu7N4wyWUic/REzwFK+DuHwUf8YZcB2gBPLDhjr?= =?us-ascii?Q?Q/jVI9XY+sDnQ1zrZnTV3WVIHwqA0kvsfoPdjlEQL2UAZY/pU4xItt34x6yt?= =?us-ascii?Q?aW8LUdJvM/xeHsGKzF0txPUNHRiYbypiyFofeVoRzEHCDpaSwGX7rOT+ISFu?= =?us-ascii?Q?JJi+ulETamZqLBgRIgoOD+8G0GEDZLG9LZKN+x+FsJInRLcRaS+Ano7bKoEN?= =?us-ascii?Q?yk6PL1U08TlRyBJAXhNVf/7ywrWASIvIanbJqe6ht3u0upFeneBJnc5s6mkX?= =?us-ascii?Q?FVwdjhaaht0h8zuDY+/mBy47SkuHgax4TN6l3lSj2D6gvw8A5DDmgntte1vx?= =?us-ascii?Q?Sw+r7T2aVgPfJzFaRJ22OzHzFy4t1TDxBVQShmU/XUlvmXAIVXXPObXzzvzG?= =?us-ascii?Q?ZWlDkfnpuGNBnwMB60G9AoV0GJj9h3VmmwPcidjFVea0ksq8vJ3fZwkPqnVa?= =?us-ascii?Q?D3i2SvF5sOc3Slata68fhgrUAiDT7KZDFkke/O1tHYyfz8d1rJc0OzPd34lS?= =?us-ascii?Q?6SeDIPbeEuMWNpXre9zm+vKU3CyrGLY19tlHPilOZ+jIAplQJWmBaIzZm8z8?= =?us-ascii?Q?YyTwHiQohx5/DpHV7PqmcXodiOIwo7u5VgtZ4FZm+Oi8RNRa4scTdpZOaIZc?= =?us-ascii?Q?1BsC0exVGOmYCJPLdUm1Iwj/y16Js8hVFiKn28zkWk7b4f3QDrF8Ows3SD58?= =?us-ascii?Q?SRpuVhUexRKtNW7Y71RPPEUARvTfhgiLWoU/jB9bcMv9v9yICiw82C7I+/ft?= =?us-ascii?Q?e18BV7YtOzNqMJr+PDpjCLNi44+tomBAr/+bJO9NTIM6Widep9dcH8qq8bEZ?= =?us-ascii?Q?x5sxyctvkvym8FhbraWZLz+rI2hCofSAJr9QsMLi8fN5hwyfr+Xlsda5n05u?= =?us-ascii?Q?Vi697AcKFTSTbzW4tSdSZYSRRl6EAnLCxDiYDewYxrNl5+OYbpze+4OhQHuL?= =?us-ascii?Q?hxYuZ7ziBaOUUt1eA7MHE0ipSPNk7LxkfyQK5O3UUA5eoXjaxYIJXUHe2+ze?= =?us-ascii?Q?Au7pRHEwnXliEJ/LX6GDhMZA8KhqHuPViFRNWOvaQpIyEc/tjO0yqOUNL9ke?= =?us-ascii?Q?8EXglu83Sc9nNzHuPp+YYN/OHP7KJsYXlTmj7SGEP9gPb1z5afY2GoHS/jCn?= =?us-ascii?Q?NVrAnoyvgIeT6Z5JWM6OVl/uR4mLQyONKX3rmjAus5M+945U9Si+kcmIpnVr?= =?us-ascii?Q?lircV6SndZNrIYcvggWOAHRRpRtQP7JXRLyNnkiBTIshYLrPlkHIPSc+kIqG?= =?us-ascii?Q?WwqJ+hKZPrWumSAbyV5RW275BuTQO9qgjQI5A09RAXeyQ9dt6C8A/pFUFv6l?= =?us-ascii?Q?qX5ILuTY4VgycEmLQswRIW+qiVrumMwDAsuUy/z/uj6QdnjjYtueDiP4QDco?= =?us-ascii?Q?pdf7+FmFeg=3D=3D?= X-OriginatorOrg: atomlin.com X-MS-Exchange-CrossTenant-Network-Message-Id: d3c8f54e-d209-4090-b5ee-08de8ea94fe5 X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2026 22:11:37.5134 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: qlXPCWfJOEsyyRfj5yD41KgKISdUNf7WHxsLudLFXFw9vQ8rc/SZHOUe/N5N9Z9z3ewIllGhH/YHvUw/QiCJwA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP123MB3841 Content-Type: text/plain; charset="utf-8" From: Daniel Wagner The io_queue flag informs multiqueue device drivers where to place hardware queues. Document this new flag in the isolcpus command-line argument description. Reviewed-by: Aaron Tomlin Reviewed-by: Hannes Reinecke Signed-off-by: Daniel Wagner --- .../admin-guide/kernel-parameters.txt | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentatio= n/admin-guide/kernel-parameters.txt index 03a550630644..9ed7c3ecd158 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -2816,7 +2816,6 @@ Kernel parameters "number of CPUs in system - 1". =20 managed_irq - Isolate from being targeted by managed interrupts which have an interrupt mask containing isolated CPUs. The affinity of managed interrupts is @@ -2839,6 +2838,27 @@ Kernel parameters housekeeping CPUs has no influence on those queues. =20 + io_queue + Isolate from I/O queue work caused by multiqueue + device drivers. Restrict the placement of + queues to housekeeping CPUs only, ensuring that + all I/O work is processed by a housekeeping CPU. + + The io_queue configuration takes precedence + over managed_irq. When io_queue is used, + managed_irq placement constrains have no + effect. + + Note: Offlining housekeeping CPUS which serve + isolated CPUs will be rejected. Isolated CPUs + need to be offlined before offlining the + housekeeping CPUs. + + Note: When an isolated CPU issues an I/O request, + it is forwarded to a housekeeping CPU. This will + trigger a software interrupt on the completion + path. + The format of is described above. =20 iucv=3D [HW,NET] --=20 2.51.0