From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.12]) (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 9061436C0DD for ; Tue, 10 Mar 2026 23:13:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.12 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773184414; cv=fail; b=qzMZ04zhibGVjLUl+Z2MxFAo1KGpaPs+jkx1wom3hHdHNxAFvN0WE/hoQO3i0AmiDZGs2Pv74LiXP+ok22l4ZcviVyAvUygQeTAbqYxyiTi5cnhIr97f2lQl5xdf4XGRRLS7E4ft2fszTF2xP9pTlzA6rzhVUSoBq+wd177NZe0= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773184414; c=relaxed/simple; bh=eRkJdBykBaRapIYf7nyGOqkKfAwPLIl1QncuaK0B3tE=; h=Message-ID:Date:Subject:To:CC:References:From:In-Reply-To: Content-Type:MIME-Version; b=f7iBrfdL7PcQvmMPJQABKbvRp1KkCSdjlWZRTb4pehaMsrKr4rXbSFSUKCwMeWPdBkPyeOcR4opjIIHOTikpj4d7SC/S6HzGQtIQLBXBr0c1bdyBKmz5G1SqNMmW1FqC4UIuPdaVdn+qndBLVSDSwkUwIunSebjtinNMKxjC75I= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=NadOK7wb; arc=fail smtp.client-ip=192.198.163.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="NadOK7wb" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1773184411; x=1804720411; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=eRkJdBykBaRapIYf7nyGOqkKfAwPLIl1QncuaK0B3tE=; b=NadOK7wbcBiWhmkFscH2CX139xP02Ds7fidL5j0i9h4Jceh327sb40KV 0Ye19uhAAJaaJO/aFGb7YN/hGB343P6cMJyRHsjbskXENTy0twiDMVoVd eM+HG49++oYpb24NBLlcWfsS0BZgHCS+y7vJzrqb1B9xFAMUwDl6NNcZf YUXxyKumkezXB98oCC03exzLNEdUj6cZKGjYTvo0Ub3WzcS3muksFND28 pOdLQSoPL5gmdoFFrCyTVxgCix2VBiBd6tpJSKD5sbWOGytanhgSTpjMe Lm8KEeADZaI0G5ttkPvG/t+MXL1K9z/6CWGwoPeVQq9LqF05zOylDe3jP Q==; X-CSE-ConnectionGUID: poNU7TzIRKGVg46z/KJ0lg== X-CSE-MsgGUID: 0FLrbZxcT4y0S7dwLGRZzQ== X-IronPort-AV: E=McAfee;i="6800,10657,11725"; a="78131574" X-IronPort-AV: E=Sophos;i="6.23,113,1770624000"; d="scan'208";a="78131574" Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by fmvoesa106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Mar 2026 16:13:31 -0700 X-CSE-ConnectionGUID: owg5tL1NTFyfsa3DwoEwbQ== X-CSE-MsgGUID: AlDRrsm8ThiQtwBELMEaPg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,113,1770624000"; d="scan'208";a="245942364" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by fmviesa001.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Mar 2026 16:13:31 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Tue, 10 Mar 2026 16:13:30 -0700 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37 via Frontend Transport; Tue, 10 Mar 2026 16:13:30 -0700 Received: from SN4PR2101CU001.outbound.protection.outlook.com (40.93.195.1) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Tue, 10 Mar 2026 16:13:29 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tdYiWe98QLB2iWtD4ahl8bA6wd82DzCGt4bzMzsAGUCoEwXOsfvEQByegOdP0hEG1N8Uen6gvMnXavGqI7aBY3QytbcylcIpfrFOwihLYa5j/4O+Z2vDZVb8pRVshXWXI0IQqP4OoDXj0mOiN7EpUgsF17p3gNoqivS/jr25LetVGLJhgTlOWoSMhFDXGlCQR+KTtg6dEvlVrGdW3v7gnaIlmQK3vAA2lBAHAz8v8L8wZzuvgp2qX0akEBagSJxjd9UF4ObxV5XJ6FLMcNqDKNx8F+G3idTf4lNOyiXIMJ7hIvrJ5JvZZ66wWYinTWfxHuGjdB/SS9NWlQyQriF2MQ== 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=NGimnjTbv/KYGFeTCbNTTmC3bP2Pn2WlS0Z3yE0lTRU=; b=tUad0tVuTv5daR2gC/rI594+Z8GS2jE6e0Rxo3IjlB44xopdU/ivTi02tsimjx4Rsp86oBk7ey7Xr7dtYaafWrt84eq+xwUHYTCMv2G5z8nhKHzJAQNXccBs6NMHs+zC6pBNnq9mVMEpeZEnYzsuH4CuS9bM2zva5uNq6RQyGMwXFIAGPVvb8jMa4FWMjqigRyuEJaRiTXm61h/lqRgYekkmQBOeIixYzA2ipornN4Ik9uPy2QP2/ZI+6kI3UMqm6HFeTLiE7worgVSl0BGfHLXMxsS9YOvP4d6dlwz40ntaZPfA9IxmBwkTRMy0sqx5/WroqraH1+ad6RiXagS+EA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DS0PR11MB7997.namprd11.prod.outlook.com (2603:10b6:8:125::14) by PH8PR11MB9533.namprd11.prod.outlook.com (2603:10b6:510:39f::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.11; Tue, 10 Mar 2026 23:13:27 +0000 Received: from DS0PR11MB7997.namprd11.prod.outlook.com ([fe80::24fa:827f:6c5b:6246]) by DS0PR11MB7997.namprd11.prod.outlook.com ([fe80::24fa:827f:6c5b:6246%4]) with mapi id 15.20.9700.010; Tue, 10 Mar 2026 23:13:27 +0000 Message-ID: <5fb77ae8-0536-4222-a19a-6f6c18a95690@intel.com> Date: Tue, 10 Mar 2026 16:13:25 -0700 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v9 3/3] x86/cpu: Do a sanity check on required feature bits Content-Language: en-US To: Maciej Wieczor-Retman , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , , "H. Peter Anvin" CC: Maciej Wieczor-Retman , References: <6e64ffe2aef6d87b0f43835b958566035f99865d.1773165421.git.m.wieczorretman@pm.me> From: Sohil Mehta In-Reply-To: <6e64ffe2aef6d87b0f43835b958566035f99865d.1773165421.git.m.wieczorretman@pm.me> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: BYAPR05CA0044.namprd05.prod.outlook.com (2603:10b6:a03:74::21) To DS0PR11MB7997.namprd11.prod.outlook.com (2603:10b6:8:125::14) 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: DS0PR11MB7997:EE_|PH8PR11MB9533:EE_ X-MS-Office365-Filtering-Correlation-Id: baae52fe-d213-46e8-dce5-08de7efaa2e1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: ZflmYuIrwU60qZa8jRlcPKw6IpUaG6/JYc85+3eg4DXMEaFphoZGJgfzCWqavmGakRMqTHhFlzZNM4P5xnvRvIGR8Mq1bZ41sJkBd0HxghvaKBVStUjPOAdeMd61lu+yUOjw533hm8NOD4rvmYby8xugUvOndm7tfTjZE7/HbPKO8XImbK8gNg8S+k2WORso2svfF67Yev/dy4XCgUtJwRo3PJ32a82g5BmyxAmL39VBcQ6u6tdWeTtU9mREW/6L3B45CG4QV6LtgsJF9K7I9y1obYdqF1uxCm1Q2Q0WksyCMxugiKP0aEFwSJOi0zcE3uG5bSS0LSafcaAqrMMPuEwn+wX3fmT33+/GTn4KBapsdIVcanfJehD/A6HNzNikuG2WoYSaIf5bJI3mb+19JTLkyqlLilrET6j0YX4sXB0zjXg3aqt0HHEb6AZDPQ5z+rQOOBaaWw15gldthoIWDT33RxNLBAImcUlj5fC9htkA9p8ivdrYOoFCT7vzUpENw5nfhd2BP4LHoKuZpGU9XGGnliUJFTq8t/Ye4uDjYVKYJl5ysVh4wjisA/6wxucsNV6zkXo4apYeH/p578RlpDuyMAHbFJkvXQIR/8taeKYTjWUannwY9ouGC+HNRmxNXmSXyQoLM6lGZM8aii/Mhog5d4hFqzudxuhgUOaBM1/cRcV+b7VjYl22Yr/kvkZxiteCI3UwkW5oSm9hW05kRd0ZUUJU6ciHpL12gCiNo1I= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB7997.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MGFSc2VsN1BNdXh2ZDB2Ymd3SzN6WDRFUXhBNHg3aWFWTVN6cklkQXZZY3Vs?= =?utf-8?B?NGx1R0hQaHVXbEVsWG1SNmhaMGY3WEdJejNWZXUrSXV5cGJxQ3R4c2M0Y0pL?= =?utf-8?B?N0phbkZwY0RPTnZBYzlpSldpZDlJQjdCTVRJNXk4WVlJOTVpTkhFTlNTQUtF?= =?utf-8?B?bFJyeU9laWtpUTUxRnZEUUxzTHBWQkRpVmphWkRQdyt2b0ZxZHAwc2pCOGNw?= =?utf-8?B?a2hZNURienVwUDhsL2ZzRjBjM01KSGgwdEFWSGVlSERCM2NHRlNLMnNuUThh?= =?utf-8?B?UEFQdlBGbnhQQS80VTE4cmNPYWdZaW55Uk0xNFRzMGhaWmNGbUhLd1Q3cWVn?= =?utf-8?B?aGlETXhkZFllYzZjb0FZWU8rZEhLbnlseGpYdnFDbzF0a0w5NnViYzN6NEVh?= =?utf-8?B?UFU2VjlJTktKbzBxV3p4V3hmc2gzUEtvNlhnR1FzRWRNK3FYdXp3b29CMUJh?= =?utf-8?B?SjVWMGxZb24zNHBHM0xFRTFQZWt6Z3JHWEk3SjlWcHIvODFlME8xTDdFTzlG?= =?utf-8?B?ZkNEZFg3VEJwWm53a3MxR1NHS042M3hWUkVqUHNEL0lMcXB5QW9zOGk3MmZv?= =?utf-8?B?aFM0aC8vQ2poL3ZoZlV6Q283NTYwQkZQeHo1ZHBtZVhablhEQ1VlajMySGV2?= =?utf-8?B?S0toSDU4SmVnQ1MxWjRIVmM1OTY0ZHd3MWIvMzJYdHBOUGMxUGZjYTdpVTZJ?= =?utf-8?B?aVZhbHlrcy9nUi9JNTQwaUVyRDI2cy9DZzRSMzI1S3F6d2kzdkJTVzIxQ3lo?= =?utf-8?B?WFpBMGpYVmN1ZmE3YkJZWWVoV1B0cDhtZlErZUVxNzZMRnJWN2VTdkhsR2pl?= =?utf-8?B?djIyeSt4a3JYYlI1Zm1HdXZ2SkZkNjRkYlhmZjJRcXFzNDdmZ3cra0pTU3hk?= =?utf-8?B?RCtaZEIzTm9uQU9QRlR4SDYrVGthRk9UejMyZ0lHWXYya0djVXBmNDdaM21F?= =?utf-8?B?eWI5aTNUVXE3WENidXVDTm9Ta04vdTdLdVlwclJFOSt4S2g0Y3VuLzhlSGJi?= =?utf-8?B?dXpXOW5QVlNSb3VwUVNUNjBZMjVyQldxMktjR0krSHgrTXUvR1I5ek9SUVBO?= =?utf-8?B?eE42NmExMllMaWI4OWhaN3ZDcFFiNE1SWXNvUGNld2o2Vmc5eVZBdU8xV0dG?= =?utf-8?B?NTdtVzVIalVscUZHMEZIdWNDQ0l5aGp3MjgrWWFicml4NzBQWGR0OWQyUmMz?= =?utf-8?B?Z044ZHY1WEkrbEV3L3VvWVkrbGpFbkdJSEwzUTVyZmtWck4ybml5Y3IzbVFw?= =?utf-8?B?a2tSR1R0L0t0dkxiS0JFcTl2WGVCNlNNSTYrVFFNdW14RjZham5qcXVBNy8w?= =?utf-8?B?MnQzYmhnaFU3WFA4czdob05sdkNJKy9FTDN1L1hmcXhWbSt0TUxhaWViUENh?= =?utf-8?B?c2lNazFyeFAzQzdzNDY3YTg3eW0zSUgvY1hnQ2F4T0s4Mk1rM1NwWEZyL3pu?= =?utf-8?B?ZDdneEY2amN1cGVpdk9ZY25xR1duaHJRZzQzMlNFY0ZFL0xiL1B1WE5FcFUz?= =?utf-8?B?WWQ1Y2NlSTNCWVhZdmZDbFQwTEhMQ0hiMVVZZXVEa0c5eG1GZ0g1RUpGQkdK?= =?utf-8?B?Ym9UaUlMSVJUY015ZzFESDRXenBzdnZGeFBBSWxmeGdjMnNpUk9Ba0hOMEp4?= =?utf-8?B?T2VRbGhJM1NBQ0U5OG9kWklBdGRiZndjdlJNUHdKS3AyOWZlV0MzRS9vK3hR?= =?utf-8?B?cjZmYUd6UjYrKzNmeHYwRnVkOVYvWGFSc1FVRTRnaW9VY3c5M244YUFZR1Vh?= =?utf-8?B?UzhZQmJOLzY3cGZ0dXVEb3pYejRmYnhhL3JJWHZnU0QyL0M1THRXSjJ5R3BF?= =?utf-8?B?Yy93KzAxYmN3WWMycmNDcU1OTTR5eFRJbkh0andLaFNvN3J2azJ0U0hhWFFU?= =?utf-8?B?bng4aFAxOTU3ckl1VGIvdmFSODA2dG5sWEV1bVhuOHZVZXo1RmNnbWpiL1Vz?= =?utf-8?B?SVRzak13dkpVRjZPNTBxTUFqeVh2a2paTmRNYVEvbjlLL0UvR3IxaEE4aHhJ?= =?utf-8?B?QkFJNVh1aHc5NDU1NUpqRGIzK1h2STJCUFd4Ym44cmZ5cGNVQzJRc3ZiZlkv?= =?utf-8?B?QUtVZ0J2OE5EMmZjM0dnSmlkMm9mb2xOVzEyUktWeGx6Z2ZCczNYRWpQZTVE?= =?utf-8?B?dC85ekpBYldXZ0FlQ1NTN040QmkvdFZ4UUZqeXgxa0Q5S0Voa0t6bHVZUXNZ?= =?utf-8?B?ZUUvMXpFTlZLV0pwOVRkbHpET0dGUzFZQWo2YkdoOENyUGgya2dNYmZtSVc1?= =?utf-8?B?VXlBMk4xMFhKVTEwWEI5YW1aeXFDNUFDODVPTHA0bG52UWJSUzNtcUpoM004?= =?utf-8?B?UjZqRkloa284VG9ZZUw2ekFwclExMWkyYU52K3ZydzJIR29OU0w5dz09?= X-Exchange-RoutingPolicyChecked: uO1LYC3TO5eZz0nPAYj5DmZOzdTWkuYc7gTQChRg4CaXZbxc9Y9Sgq5cNDJ7dkC9Z6HXqMmLTeqFUJ2Dj+AQeW2F4qc9byb6od4kEKm/NQAoJKUHTrdNhmh0AFmiy9EE9T/WIYzk639eP5tdIAnTq/OAvOc7J+Y35SjUJCYFqfIyiPu+kS7HhZBKTidG2rRL+YWamb1gAAvto59b9TJfVurdyq1Rnxd97GTN1pPWV7TVilZZJM8I6aAVRZF0LCnCSgJoI6dOL6dWk1xlNP5HBaqlq0a4ED7G7aRl0XZSJq+FWa99eZf/rWIbtI3ZJLGkDThSj6OdqMOJIozEmfZ+Ug== X-MS-Exchange-CrossTenant-Network-Message-Id: baae52fe-d213-46e8-dce5-08de7efaa2e1 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB7997.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2026 23:13:27.4230 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: j8j5Y7rvvN/zGmiJ0FV+DudAWYBhFnIXXBhox8ykgWsfNm59hU93ZzalZaIQ3SdGXi/xEGWVPtuwp9w+BkR9rw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR11MB9533 X-OriginatorOrg: intel.com On 3/10/2026 11:03 AM, Maciej Wieczor-Retman wrote: > From: Maciej Wieczor-Retman > > After CPU identification concludes, do a sanity check by comparing the > final x86_capability bitmask with the pre-defined required feature bits. > > Signed-off-by: Maciej Wieczor-Retman > Acked-by: H. Peter Anvin (Intel) > --- > diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c > index cfffbbda3d95..43ee2d55a708 100644 > --- a/arch/x86/kernel/cpu/common.c > +++ b/arch/x86/kernel/cpu/common.c > @@ -2003,6 +2003,34 @@ const char *x86_cap_name(unsigned int bit, char *buf) > return buf; > } > > +/* > + * As a sanity check compare the final x86_capability bitmask with the initial > + * predefined required feature bits. In case of a mismatch emit a warning with > + * all the missing feature names or X86_FEATURE_* numerals. > + */ I feel the second sentence is more appropriate as part of the commit message instead of a code comment. > +static void verify_required_features(const struct cpuinfo_x86 *c) > +{ > + u32 missing[NCAPINTS] = REQUIRED_MASK_INIT; > + char cap_buf[X86_CAP_BUF_SIZE]; > + unsigned int i; > + u32 error = 0; > + > + for (i = 0; i < NCAPINTS; i++) { > + missing[i] &= ~c->x86_capability[i]; > + error |= missing[i]; > + } > + > + if (!error) > + return; > + > + /* At least one required feature is missing */ > + pr_warn("cpu %d: missing required feature(s):", c->cpu_index); s/cpu/CPU I haven't seen cpu_index being used commonly. I don't know the nuance between that and smp_processor_id(). It's probably the same in this case. Also, it seems too noisy to print this for every CPU in a large core count system. But, pr_warn_once() won't work well with the pr_cont() implementation that you have. I don't have a better suggestion except for a static variable. Maybe someone else has a better idea.. My assumption is that typically we won't run into this on a production system. But, VMs could encounter this. So, I am not sure. > + for_each_set_bit(i, (unsigned long *)missing, NCAPINTS << 5) NCAPINTS * 32 is the common usage across arch/x86. > + pr_cont(" %s", x86_cap_name(i, cap_buf)); > + pr_cont("\n"); > + add_taint(TAINT_CPU_OUT_OF_SPEC, LOCKDEP_STILL_OK); > +} > + > /* > * This does the hard work of actually picking apart the CPU stuff... > */ > @@ -2132,6 +2160,8 @@ static void identify_cpu(struct cpuinfo_x86 *c) > mcheck_cpu_init(c); > > numa_add_cpu(smp_processor_id()); > + > + verify_required_features(c); > } > > /*