From nobody Mon Apr 13 02:02:08 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1773070558; cv=none; d=zohomail.com; s=zohoarc; b=e6uPwekR4ytI1CbRGfDkimZTfLieKiFDtKruJIc6+Vcma1VVQD0oYwt3FNoqJE0dzeHYRg9y/mWgepyf2+rKK2Lgwmb+tiCLeoz59PI9vguobWDfW33bo3DcVLfw2j1+z6LYvT0IdluB2RvhGVRg82X87sJL8KdE0B6kRbbw7Wk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773070558; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gN3OIK4zpzgpwDwkcYY8kl1S/ufLAnvzjD11ofjDojc=; b=cArR2gaqQ00lTcBI+KnDtpSgd+zlpowtHM7jWk/5mM53gnjzdSL94hn/uwYI2oSJa5xnnVHW5wq+VHmn5gaF7k4xn6LTyT+l0Spts0+seDYhCiCS61H+tTJ4uaYFkWjEjU/KkyJFpjzrS5s50dMEog7sNGdXwh7hQtYZxIcWY7o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1773070557990579.2993815241064; Mon, 9 Mar 2026 08:35:57 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1249565.1547036 (Exim 4.92) (envelope-from ) id 1vzcds-00011J-5c; Mon, 09 Mar 2026 15:35:36 +0000 Received: by outflank-mailman (output) from mailman id 1249565.1547036; Mon, 09 Mar 2026 15:35:36 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vzcds-00011C-2p; Mon, 09 Mar 2026 15:35:36 +0000 Received: by outflank-mailman (input) for mailman id 1249565; Mon, 09 Mar 2026 15:35:35 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vzcdr-000116-3Y for xen-devel@lists.xenproject.org; Mon, 09 Mar 2026 15:35:35 +0000 Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [2a00:1450:4864:20::42f]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 9c889f56-1bcd-11f1-b164-2bf370ae4941; Mon, 09 Mar 2026 16:35:33 +0100 (CET) Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-439c4a93841so4220712f8f.1 for ; Mon, 09 Mar 2026 08:35:33 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-439dae36785sm25279038f8f.27.2026.03.09.08.35.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 09 Mar 2026 08:35:32 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 9c889f56-1bcd-11f1-b164-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1773070533; x=1773675333; darn=lists.xenproject.org; h=content-transfer-encoding:autocrypt:content-language:cc:to:subject :from:user-agent:mime-version:date:message-id:from:to:cc:subject :date:message-id:reply-to; bh=gN3OIK4zpzgpwDwkcYY8kl1S/ufLAnvzjD11ofjDojc=; b=bNXOTkw0jIfWDdkUoVoQkOHwEZJ/1QuAr4OyjotoVKBw875Xy2XanLaQ3DR+Um6ceA yQEg0m2CXkmqeapaCRu96DSNhLhRP4U/ivwjGwnED8GiTyiYlXQHWb5CuLK7sK3EZmUu ES+hl4CHtTPYUJrxeDpESZLTbo/S/61Pwr1DEBgrytioRGfdmftUEscadPYQlFNRuK6w BCXv7jD+u3iJuxwdolKWARInNuOUYIP+eWETOVCN8zI4QfNPmWgZpaWn7DbxRMZ9Cw34 184p5CIDTrbR+JaTmPC7K6vQZWvIZWRB36vKTZM7CI3nPnNaZbwHQW7t1o+MGBGxY4HU xbdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773070533; x=1773675333; h=content-transfer-encoding:autocrypt:content-language:cc:to:subject :from:user-agent:mime-version:date:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=gN3OIK4zpzgpwDwkcYY8kl1S/ufLAnvzjD11ofjDojc=; b=Gaz0WkM73KtFolFcN0NZURTEJS/crANp2ah5cE2eEdiwGSFuPd6Tb3Wz+FQwZC4eM1 zNyMa44Uh6pRN5ACucvTeRTaCMuA+6US/X90C2mbEdDoj/07fnR8ylUqiGIIg1hdwPa1 Kk5VvM+nvUhcu+QH0IQDSWhpilo5Cg3KyQeiSlU52OqsPsjPLxA6UXJpt/AGEb1xk99L KPkwtDdMwadd9mer7JhUJGjgqV2vc9trt16GBGz99Oa2J1XCIMsP7V4av10pARz9QnHV 6NBoIkhkn9dAsDhOKVQhYB5mCmtbvlfFVjY/7pkbkOEkLjh1m8aYtqYOYzMCuFrs691p E3Ng== X-Gm-Message-State: AOJu0YyeerNzCaOuej+ieE7qk4ReW5QQu0V1v3CYjto6VO9F/IuoGkeV sNO7pULmAirwlaJmz4EgImlCKVb/7MiGzYswAYpB+9mqWG264Bq6s1L+6naDfivAASXYKkF8AGL /3Dg= X-Gm-Gg: ATEYQzwBmDPhJjGRjEJr6kp67WTxeeSEVjqESeQ/XGW34sCLB4IrMcp1FEKCrmLWvNo 9ZMsvD3B3G3fW2amqRsBVBVD49Q3+tCOPukuKG5ZOLRb5Mklds8meYrfVHv5kWUieWDfJA0VAvd O9xi3YekivWXaihrcUyUadNTsMc4B36o7q8PYR56BZgokt8QiBWL+mtvxneh3bXEYfWi1Ie49YR 39EiFuCHq4tCI6oe4OvUEZUeGn9teTrkROz7lgoZ/KG4DikqR8wsRgW0ApXuBI5T0YO9K3edXfw nkOxGmwI3/C8fCkR+K7HfjkonjfORnFTvJcc6ek+InoD370YTVnmeJ7Fw9k8Whf8jULaLatnjvJ xLvFkMCc8Hd22EMWySc7vUjcaNVBAzYyUKACHVYqay3PSNGQVtTWIIq5K0RgSi0N5R1NlKrCtrL 8eq/oLhD/aeSkU7GZ/rieqZC8FmuBWrjPqhEIdsnjDMg9Dkc2wPtLSMHdhRH0IrCXCrcqy9r7ij HPj8pE8KRGT2gXlLwSwFuci5w== X-Received: by 2002:a05:6000:1845:b0:439:b506:e430 with SMTP id ffacd0b85a97d-439da351debmr20253337f8f.17.1773070532813; Mon, 09 Mar 2026 08:35:32 -0700 (PDT) Message-ID: <29922662-8b95-4a69-9401-11480df59cdf@suse.com> Date: Mon, 9 Mar 2026 16:35:34 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Jan Beulich Subject: [PATCH v2] core-parking: shrink core_parking_cpunum[] To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Julien Grall , Stefano Stabellini , Anthony PERARD , Michal Orzel , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= Content-Language: en-US Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1773070559958154100 Content-Type: text/plain; charset="utf-8" This NR_CPUS-dimensioned array is likely unused on most installations. Therefore it is especially wasteful for it to consume more space than really needed. Allocate it dynamically ahead of registering the hooks. Further the array having all fields set to -1 is actually useless. Nothing relies on it, and core_parking_remove() doesn't restore the sentinel for vacated slots. Drop the initializers altogether, rather than replacing them. Also take the opportunity and update an adjacent variable's type, where a fixed-width type was pretty clearly inappropriate to use. Finally drop the redundant initializer from core_parking_init(). Signed-off-by: Jan Beulich Reviewed-by: Roger Pau Monn=C3=A9 --- I assume there is a reason this is acting (mostly) as a LIFO. Else a simple cpumask_t would suffice. num_possible_cpus() would be the more correct thing to use as array dimension, yet we don't maintain cpu_possible_map on x86. --- v2: Use dynamic allocation. --- a/xen/common/core_parking.c +++ b/xen/common/core_parking.c @@ -20,6 +20,7 @@ #include #include #include +#include =20 #include =20 @@ -27,8 +28,8 @@ #define CORE_PARKING_DECREMENT 2 =20 static DEFINE_SPINLOCK(accounting_lock); -static uint32_t cur_idle_nums; -static unsigned int core_parking_cpunum[NR_CPUS] =3D {[0 ... NR_CPUS-1] = =3D -1}; +static unsigned int cur_idle_nums; +static unsigned int *__ro_after_init core_parking_cpunum; =20 struct cp_policy { char name[30]; @@ -188,7 +189,7 @@ long cf_check core_parking_helper(void * return ret; =20 spin_lock(&accounting_lock); - BUG_ON(cur_idle_nums >=3D ARRAY_SIZE(core_parking_cpunum)); + BUG_ON(cur_idle_nums >=3D nr_cpu_ids); core_parking_cpunum[cur_idle_nums++] =3D cpu; spin_unlock(&accounting_lock); } @@ -263,9 +264,12 @@ static int __init register_core_parking_ =20 static int __init cf_check core_parking_init(void) { - int ret =3D 0; + int ret; =20 - if ( core_parking_controller =3D=3D PERFORMANCE_FIRST ) + core_parking_cpunum =3D xvzalloc_array(unsigned int, nr_cpu_ids); + if ( !core_parking_cpunum ) + ret =3D -ENOMEM; + else if ( core_parking_controller =3D=3D PERFORMANCE_FIRST ) ret =3D register_core_parking_policy(&performance_first); else ret =3D register_core_parking_policy(&power_first);