From nobody Sun Feb 8 04:34:39 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (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 721063101C6 for ; Fri, 6 Feb 2026 23:14:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770419681; cv=none; b=TJrwg64ZFtr1bzPAZKQLxoqAJ07kejWCFfg8w7OGSC+00mM9gd68e025nWG5HlUjfRmZVQdyZYL8hN2Il8ERaE16wOqIjN7upfl22hVl0p9C8BC4DyrY26inq5YOS1RImN7+6Y9q3e472mDUIJWCffMF2Rg4nPUOMoY+GLX108Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770419681; c=relaxed/simple; bh=IS8TW44iEpHpuM+JgIMeJqcPNWQEOXSmBw95MaDb2H0=; h=Subject:To:Cc:From:Date:References:In-Reply-To:Message-Id; b=q0bVqsKMPzSxxfMWO0F9DgBJE7n/VTJQLqOxKuhS/3VjyxUNVlX0DnscmslNH2dkxyzmDZQ7HPu1v4SuJkQFz/BR8d9T4PX2POgTCTA8iRnfz5nvRjud1UPVl5Z7bEeBilDLhmaW0BPYNF6TO8fRvPBBBh2sNHgE4zpfypUjXlk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=BCyMFMXX; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="BCyMFMXX" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1770419681; x=1801955681; h=subject:to:cc:from:date:references:in-reply-to: message-id; bh=IS8TW44iEpHpuM+JgIMeJqcPNWQEOXSmBw95MaDb2H0=; b=BCyMFMXXo9arpYzeNPm0ADhAvBfXo3yX+E4y4U5OoIB9dmGlIT3VwpJ9 kg/P/92V26pCnNMVhII2rZ2AaPNonPiq1WLf7OZZi9zigVqdZFDqXeKdP JROvTs1u0Y3ZcZchDYjglB1Nje/YvKkggwtDkSsU5NEya9On5uWTBDZdE tELg7M73CfWUUQAM9HLdVSOz8NHjCRwt9MdmqsGGtjlWsOJ93LpKaKgum iDsIcRbQyg9PmQ0CKwcvUl+2t2JOa+1hNBJhzNLPsVq6QLiVwYkKArIT+ IN9jDnbpGJKyCF1zWGe7XSWW21nG3kBIZym4X854k98pcFBfQarjwQDX+ g==; X-CSE-ConnectionGUID: 6e4r6wlKSBChdwpi4DaNWQ== X-CSE-MsgGUID: /Lf5rRgOSeuC/nF4V/RPrg== X-IronPort-AV: E=McAfee;i="6800,10657,11693"; a="74232684" X-IronPort-AV: E=Sophos;i="6.21,277,1763452800"; d="scan'208";a="74232684" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Feb 2026 15:14:41 -0800 X-CSE-ConnectionGUID: T+DC0UWKTYW8zM/kKuxqFA== X-CSE-MsgGUID: ZFrRe41DTnONa0Ilz036cA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,277,1763452800"; d="scan'208";a="210851511" Received: from davehans-spike.ostc.intel.com (HELO localhost.localdomain) ([10.165.164.11]) by fmviesa008.fm.intel.com with ESMTP; 06 Feb 2026 15:14:41 -0800 Subject: [PATCH 1/6] x86/cpu: Break Vendor/Family/Model macros into separate header To: linux-kernel@vger.kernel.org Cc: sohil.mehta@intel.com, zhao1.liu@intel.com, Dave Hansen , Borislav Petkov , "H. Peter Anvin" , Ingo Molnar , Jon Kohler , Pawan Gupta , "Peter Zijlstra (Intel)" , Thomas Gleixner , Tony Luck , x86@kernel.org From: Dave Hansen Date: Fri, 06 Feb 2026 15:14:40 -0800 References: <20260206231438.720FF4E3@davehans-spike.ostc.intel.com> In-Reply-To: <20260206231438.720FF4E3@davehans-spike.ostc.intel.com> Message-Id: <20260206231440.C35AD1C5@davehans-spike.ostc.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Dave Hansen The intel-family.h header uses Vendor/Family/Model macros but it does not #include the header where they are defined. If that header is included, the build blows up in #include hell. Luckily, these macros are completely independent and do not themselves have any dependencies on other code. Break the VFM_*() macros out into their own header. Note that the new header is in asm-generic. Believe it or not, the intel-family.h header is included from a driver in arch-generic code: #include "../../arch/x86/include/asm/intel-family.h" Putting the header in generic code will move in the right direction of reducing the amount of code that the "peci" driver needs to copy. Signed-off-by: Dave Hansen Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Dave Hansen Cc: "H. Peter Anvin" Cc: Tony Luck Cc: Pawan Gupta Cc: "Peter Zijlstra (Intel)" Cc: x86@kernel.org Cc: Jon Kohler --- b/arch/x86/include/asm/cpu_device_id.h | 33 ---------------------------- b/include/asm-generic/x86-vfm.h | 38 ++++++++++++++++++++++++++++= +++++ 2 files changed, 39 insertions(+), 32 deletions(-) diff -puN arch/x86/include/asm/cpu_device_id.h~x86-vfm_h arch/x86/include/a= sm/cpu_device_id.h --- a/arch/x86/include/asm/cpu_device_id.h~x86-vfm_h 2026-02-06 15:14:21.84= 8731168 -0800 +++ b/arch/x86/include/asm/cpu_device_id.h 2026-02-06 15:14:21.851731274 -0= 800 @@ -2,38 +2,7 @@ #ifndef _ASM_X86_CPU_DEVICE_ID #define _ASM_X86_CPU_DEVICE_ID =20 -/* - * Can't use because it generates expressions that - * cannot be used in structure initializers. Bitfield construction - * here must match the union in struct cpuinfo_86: - * union { - * struct { - * __u8 x86_model; - * __u8 x86; - * __u8 x86_vendor; - * __u8 x86_reserved; - * }; - * __u32 x86_vfm; - * }; - */ -#define VFM_MODEL_BIT 0 -#define VFM_FAMILY_BIT 8 -#define VFM_VENDOR_BIT 16 -#define VFM_RSVD_BIT 24 - -#define VFM_MODEL_MASK GENMASK(VFM_FAMILY_BIT - 1, VFM_MODEL_BIT) -#define VFM_FAMILY_MASK GENMASK(VFM_VENDOR_BIT - 1, VFM_FAMILY_BIT) -#define VFM_VENDOR_MASK GENMASK(VFM_RSVD_BIT - 1, VFM_VENDOR_BIT) - -#define VFM_MODEL(vfm) (((vfm) & VFM_MODEL_MASK) >> VFM_MODEL_BIT) -#define VFM_FAMILY(vfm) (((vfm) & VFM_FAMILY_MASK) >> VFM_FAMILY_BIT) -#define VFM_VENDOR(vfm) (((vfm) & VFM_VENDOR_MASK) >> VFM_VENDOR_BIT) - -#define VFM_MAKE(_vendor, _family, _model) ( \ - ((_model) << VFM_MODEL_BIT) | \ - ((_family) << VFM_FAMILY_BIT) | \ - ((_vendor) << VFM_VENDOR_BIT) \ -) +#include =20 /* * Declare drivers belonging to specific x86 CPUs diff -puN /dev/null include/asm-generic/x86-vfm.h --- /dev/null 2026-01-31 18:22:27.334169132 -0800 +++ b/include/asm-generic/x86-vfm.h 2026-02-06 15:14:21.851731274 -0800 @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_GENERIC_X86_VFM +#define _ASM_GENERIC_X86_VFM + +/* + * Can't use because it generates expressions that + * cannot be used in structure initializers. Bitfield construction + * here must match the union in struct cpuinfo_86: + * union { + * struct { + * __u8 x86_model; + * __u8 x86; + * __u8 x86_vendor; + * __u8 x86_reserved; + * }; + * __u32 x86_vfm; + * }; + */ +#define VFM_MODEL_BIT 0 +#define VFM_FAMILY_BIT 8 +#define VFM_VENDOR_BIT 16 +#define VFM_RSVD_BIT 24 + +#define VFM_MODEL_MASK GENMASK(VFM_FAMILY_BIT - 1, VFM_MODEL_BIT) +#define VFM_FAMILY_MASK GENMASK(VFM_VENDOR_BIT - 1, VFM_FAMILY_BIT) +#define VFM_VENDOR_MASK GENMASK(VFM_RSVD_BIT - 1, VFM_VENDOR_BIT) + +#define VFM_MODEL(vfm) (((vfm) & VFM_MODEL_MASK) >> VFM_MODEL_BIT) +#define VFM_FAMILY(vfm) (((vfm) & VFM_FAMILY_MASK) >> VFM_FAMILY_BIT) +#define VFM_VENDOR(vfm) (((vfm) & VFM_VENDOR_MASK) >> VFM_VENDOR_BIT) + +#define VFM_MAKE(_vendor, _family, _model) ( \ + ((_model) << VFM_MODEL_BIT) | \ + ((_family) << VFM_FAMILY_BIT) | \ + ((_vendor) << VFM_VENDOR_BIT) \ +) + +#endif /* _ASM_GENERIC_X86_VFM */ _ From nobody Sun Feb 8 04:34:39 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (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 2A03031327D for ; Fri, 6 Feb 2026 23:14:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770419683; cv=none; b=Bw3SxEw3SBOhc/0cL1NabPHJZ34WArrddAQ+kgW1vcVLY1YJWP/RXXuvi8rWU7JQY41ZLs+kT2fswjdP3R3076xs7MgmaluXVek+RGvWClR9knZs8E9Rfuu8yj+A6+fjufXlYyRKjgfE9ZlmK6f9+PW0SnY1YAVEgORfcYXgI4I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770419683; c=relaxed/simple; bh=x0xIWZRJLBcc9/ptrzIGxIcxuS1gtUFFRoiQFSuhvvo=; h=Subject:To:Cc:From:Date:References:In-Reply-To:Message-Id; b=IeRLIaxhhMAHgVdnqRT4zNl3ojboZ4QF+5JcX+N65ErpHSgIpbWg207+bMZg61ONQxJObQl11RNw7ycHV0Edk91XskVyibz8aOdPKBTUjWr+i8sEEVmKERN1sgMDwZRb5rXaft5T30DXGqhokxQ0m1kkHJ8narR3faiZwaS9aGE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=ibSbyyG9; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="ibSbyyG9" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1770419683; x=1801955683; h=subject:to:cc:from:date:references:in-reply-to: message-id; bh=x0xIWZRJLBcc9/ptrzIGxIcxuS1gtUFFRoiQFSuhvvo=; b=ibSbyyG9fCDHHvYIDixnRJ+kq3xvJVy48776M/auTWfr56tq/TX24TWC n82aYDvD8wDx2iycQA0jLrO/Qb9A24yupnW9/8GMGW7Rrk2oHbsN7slJV JCG4rt7leHocvGW0G5LTf9+GsNGyQQDHDA+UXjNLkFQuRoF1x53qGh3og tG8dezybTM79wvc84QZzv1rbQ5JEpNAlRsceic4OfzOy60XMfGmzbu+yu EXtxaU1iOS3kcLd4nIswjIoaklVz1857kjGZd2o/Ehmo2isSzehLPyU7K 3tn2cNYHNG5u5s75gPcayK5MCrEf4yKuu/hz4US7fQfE9XGy6JOvP/GyI g==; X-CSE-ConnectionGUID: JlNER1n2S9OFVAxRud89iw== X-CSE-MsgGUID: 0asp/vLFSM+Dj/7NjXvFqQ== X-IronPort-AV: E=McAfee;i="6800,10657,11693"; a="74232691" X-IronPort-AV: E=Sophos;i="6.21,277,1763452800"; d="scan'208";a="74232691" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Feb 2026 15:14:43 -0800 X-CSE-ConnectionGUID: pU+fNr62Te26vCCX6+LscQ== X-CSE-MsgGUID: nxcTTr+DTY+tZ/SXEACWVQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,277,1763452800"; d="scan'208";a="210851516" Received: from davehans-spike.ostc.intel.com (HELO localhost.localdomain) ([10.165.164.11]) by fmviesa008.fm.intel.com with ESMTP; 06 Feb 2026 15:14:42 -0800 Subject: [PATCH 2/6] x86/cpu: Add missing #include To: linux-kernel@vger.kernel.org Cc: sohil.mehta@intel.com, zhao1.liu@intel.com, Dave Hansen , Borislav Petkov , "H. Peter Anvin" , Ingo Molnar , Jon Kohler , Pawan Gupta , "Peter Zijlstra (Intel)" , Thomas Gleixner , Tony Luck , x86@kernel.org From: Dave Hansen Date: Fri, 06 Feb 2026 15:14:42 -0800 References: <20260206231438.720FF4E3@davehans-spike.ostc.intel.com> In-Reply-To: <20260206231438.720FF4E3@davehans-spike.ostc.intel.com> Message-Id: <20260206231442.89987471@davehans-spike.ostc.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Dave Hansen The intel-family.h header uses Vendor/Family/Model macros but it does not #include the header where they are defined. It must be depending on implicit includes. Include the required header explicitly. Note that having this code in an explicitly #include'd header, non-x86 header means that the PECI code can zap its copy. Do that as well. Signed-off-by: Dave Hansen Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Dave Hansen Cc: "H. Peter Anvin" Cc: Tony Luck Cc: Pawan Gupta Cc: "Peter Zijlstra (Intel)" Cc: x86@kernel.org Cc: Jon Kohler --- b/arch/x86/include/asm/intel-family.h | 7 +++++++ b/include/linux/peci-cpu.h | 20 -------------------- 2 files changed, 7 insertions(+), 20 deletions(-) diff -puN arch/x86/include/asm/intel-family.h~fam-missing-include arch/x86/= include/asm/intel-family.h --- a/arch/x86/include/asm/intel-family.h~fam-missing-include 2026-02-06 15= :14:22.380749864 -0800 +++ b/arch/x86/include/asm/intel-family.h 2026-02-06 15:14:22.387750111 -08= 00 @@ -3,6 +3,13 @@ #define _ASM_X86_INTEL_FAMILY_H =20 /* + * Note: despite being in arch/x86, the PECI driver(s) use + * this header in arch-independent drivers. Do not use + * any x86-specific headers here: + */ +#include + +/* * "Big Core" Processors (Branded as Core, Xeon, etc...) * * While adding a new CPUID for a new microarchitecture, add a new diff -puN include/linux/peci-cpu.h~fam-missing-include include/linux/peci-c= pu.h --- a/include/linux/peci-cpu.h~fam-missing-include 2026-02-06 15:14:22.3837= 49970 -0800 +++ b/include/linux/peci-cpu.h 2026-02-06 15:14:22.387750111 -0800 @@ -8,26 +8,6 @@ =20 /* Copied from x86 */ #define X86_VENDOR_INTEL 0 - -/* Copied from x86 */ -#define VFM_MODEL_BIT 0 -#define VFM_FAMILY_BIT 8 -#define VFM_VENDOR_BIT 16 -#define VFM_RSVD_BIT 24 - -#define VFM_MODEL_MASK GENMASK(VFM_FAMILY_BIT - 1, VFM_MODEL_BIT) -#define VFM_FAMILY_MASK GENMASK(VFM_VENDOR_BIT - 1, VFM_FAMILY_BIT) -#define VFM_VENDOR_MASK GENMASK(VFM_RSVD_BIT - 1, VFM_VENDOR_BIT) - -#define VFM_MODEL(vfm) (((vfm) & VFM_MODEL_MASK) >> VFM_MODEL_BIT) -#define VFM_FAMILY(vfm) (((vfm) & VFM_FAMILY_MASK) >> VFM_FAMILY_BIT) -#define VFM_VENDOR(vfm) (((vfm) & VFM_VENDOR_MASK) >> VFM_VENDOR_BIT) - -#define VFM_MAKE(_vendor, _family, _model) ( \ - ((_model) << VFM_MODEL_BIT) | \ - ((_family) << VFM_FAMILY_BIT) | \ - ((_vendor) << VFM_VENDOR_BIT) \ -) /* End of copied code */ =20 #include "../../arch/x86/include/asm/intel-family.h" _ From nobody Sun Feb 8 04:34:39 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (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 DA7C430F803 for ; Fri, 6 Feb 2026 23:14:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770419685; cv=none; b=BfBi7whnzTXzJq3KAM1b7r1kYZuZ9qcPa7FZF5YJJP8JtVlPSAVfv4U8KKIm/u7mS2xXJxMuETeaekisHj121LnzkK0xfsGqMkUkPqri7uRBToqx/C2CqUkaC/6WkJABwQ0W8kK+CMrvaZ/ubUUWV8wYLQtGm7D8NaMQqZUR6/o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770419685; c=relaxed/simple; bh=VK0Ck29wdOWRaEnKwH6fSaxeq1lBqpZDmM3vN1CaVjs=; h=Subject:To:Cc:From:Date:References:In-Reply-To:Message-Id; b=WniTqK16RkeKWDFkg5BgVH7POv9Rv4XjCoNtGXbfYafWVTCjHVvG5+hFZJ67hDy+q0fC+AmyYbP2oAprNhV5S15SNuz/VpPgWGVhMmei7NY0MP+QK3S1Frjj16QlQC2n8OVXSKPsX/BVpjMfGvbLblNoYeW6EliBG7smQDVx13c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=ZFB6u2eF; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="ZFB6u2eF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1770419685; x=1801955685; h=subject:to:cc:from:date:references:in-reply-to: message-id; bh=VK0Ck29wdOWRaEnKwH6fSaxeq1lBqpZDmM3vN1CaVjs=; b=ZFB6u2eFeEbU2JVXYiYason5f+xqP3gGytjw+C8eKuPk0KUNNuhaMYdi 7Eh0aP31noMDT74HYjrqWeEdQn5RXmkAW+p/PlsGTnEy46KZ+wnWu9PfI /FR68PnAi5XwCn/yRxeLOgb46r6UVXw6VmOLEuTX9t5VSkocnUe+RUwXI ENXQ+bpeoHyesSx1pqoKcEIQDmqrXWhINDuLrZkJLqD+0y7aHGdZHmFea aslRyNWA0reWpkyd3ngAQDNAqQy5h5r2yIbGa0ZWNcvERGGuju6wsryt/ 6wZ2NEZNs9QFDdZeij+z36irLDMhoG5M8DiIRZGMvyz0h7znyIUJ93xpf g==; X-CSE-ConnectionGUID: uY4zsngaQ16BK0XQ7BJP1Q== X-CSE-MsgGUID: 1ATEclAzQaCPM3P0Y9ITdQ== X-IronPort-AV: E=McAfee;i="6800,10657,11693"; a="74232698" X-IronPort-AV: E=Sophos;i="6.21,277,1763452800"; d="scan'208";a="74232698" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Feb 2026 15:14:45 -0800 X-CSE-ConnectionGUID: 1GaLcW04TO+6c60FNyU28Q== X-CSE-MsgGUID: kW+VIc9yRkqSesBF9Kl6BQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,277,1763452800"; d="scan'208";a="210851519" Received: from davehans-spike.ostc.intel.com (HELO localhost.localdomain) ([10.165.164.11]) by fmviesa008.fm.intel.com with ESMTP; 06 Feb 2026 15:14:44 -0800 Subject: [PATCH 3/6] x86/microcode: Refactor platform ID enumeration into a helper To: linux-kernel@vger.kernel.org Cc: sohil.mehta@intel.com, zhao1.liu@intel.com, Dave Hansen , Borislav Petkov , "H. Peter Anvin" , Ingo Molnar , Jon Kohler , Pawan Gupta , "Peter Zijlstra (Intel)" , Thomas Gleixner , Tony Luck , x86@kernel.org From: Dave Hansen Date: Fri, 06 Feb 2026 15:14:44 -0800 References: <20260206231438.720FF4E3@davehans-spike.ostc.intel.com> In-Reply-To: <20260206231438.720FF4E3@davehans-spike.ostc.intel.com> Message-Id: <20260206231444.8D057E6D@davehans-spike.ostc.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Dave Hansen The only code that cares about the platform ID is the microcode update code itself. To facilitate storing the platform ID in a more generic place and using it outside of the microcode update itself, put the enumeration into a helper function in a header. Mirror intel_get_microcode_revision()'s naming and location. But, moving away from intel_collect_cpu_info() means that the model and family information in CPUID is not readily available. Just call CPUID again. Note that the microcode header is a mask of supported platform IDs. Only stick the ID part in the helper. Leave the 1< Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Dave Hansen Cc: "H. Peter Anvin" Cc: Tony Luck Cc: Pawan Gupta Cc: "Peter Zijlstra (Intel)" Cc: x86@kernel.org Cc: Jon Kohler --- b/arch/x86/include/asm/microcode.h | 32 +++++++++++++++++++++++++++= +++++ b/arch/x86/kernel/cpu/microcode/intel.c | 10 +--------- 2 files changed, 33 insertions(+), 9 deletions(-) diff -puN arch/x86/include/asm/microcode.h~refactor-get-processor-flags arc= h/x86/include/asm/microcode.h --- a/arch/x86/include/asm/microcode.h~refactor-get-processor-flags 2026-02= -06 15:14:22.932769264 -0800 +++ b/arch/x86/include/asm/microcode.h 2026-02-06 15:14:22.989771267 -0800 @@ -2,6 +2,8 @@ #ifndef _ASM_X86_MICROCODE_H #define _ASM_X86_MICROCODE_H =20 +#include +#include #include =20 struct cpu_signature { @@ -75,6 +77,36 @@ static inline u32 intel_get_microcode_re =20 return rev; } + +/* + * Use CPUID to generate a "vfm" value. Useful + * before 'cpuinfo_x86' structures are populated. + */ +static inline u32 intel_cpuid_vfm(void) +{ + u32 eax =3D cpuid_eax(1); + u32 fam =3D x86_family(eax); + u32 model =3D x86_model(eax); + + return IFM(fam, model); +} + +static inline u32 intel_get_platform_id(void) +{ + unsigned int val[2]; + + /* + * This can be called early. Use CPUID directly to + * generate the VFM value for this CPU. + */ + if (intel_cpuid_vfm() < INTEL_PENTIUM_III_DESCHUTES) + return 0; + + /* get processor flags from MSR 0x17 */ + native_rdmsr(MSR_IA32_PLATFORM_ID, val[0], val[1]); + + return (val[1] >> 18) & 7; +} #endif /* !CONFIG_CPU_SUP_INTEL */ =20 bool microcode_nmi_handler(void); diff -puN arch/x86/kernel/cpu/microcode/intel.c~refactor-get-processor-flag= s arch/x86/kernel/cpu/microcode/intel.c --- a/arch/x86/kernel/cpu/microcode/intel.c~refactor-get-processor-flags 20= 26-02-06 15:14:22.987771197 -0800 +++ b/arch/x86/kernel/cpu/microcode/intel.c 2026-02-06 15:14:22.989771267 -= 0800 @@ -123,16 +123,8 @@ static inline unsigned int exttable_size void intel_collect_cpu_info(struct cpu_signature *sig) { sig->sig =3D cpuid_eax(1); - sig->pf =3D 0; sig->rev =3D intel_get_microcode_revision(); - - if (IFM(x86_family(sig->sig), x86_model(sig->sig)) >=3D INTEL_PENTIUM_III= _DESCHUTES) { - unsigned int val[2]; - - /* get processor flags from MSR 0x17 */ - native_rdmsr(MSR_IA32_PLATFORM_ID, val[0], val[1]); - sig->pf =3D 1 << ((val[1] >> 18) & 7); - } + sig->pf =3D 1 << intel_get_platform_id(); } EXPORT_SYMBOL_GPL(intel_collect_cpu_info); =20 _ From nobody Sun Feb 8 04:34:39 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (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 AA7CE31327D for ; Fri, 6 Feb 2026 23:14:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770419686; cv=none; b=B5e7ZhzKEKxTe0qf1lqFb/x0CRv8syk3lrzlf/62jy2FTQg60IZUm/UnHgcEQsNX4SDgY/hEe6A91C5mrWXADdDmCNsnf9Qj/BA/wpDDGJ352WLdzE1dQUVTrbUst+cWZjO+VrF2BIH304q3dTHGSGldaTQYAq3xUMlBAu9Lzko= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770419686; c=relaxed/simple; bh=urUFSF3dVgkSKy3H7ccPkgVi9Omn9FQ3Nv85PTissdI=; h=Subject:To:Cc:From:Date:References:In-Reply-To:Message-Id; b=afON/QiL2BcjxTGunQzqv01C2KZkXMEkJQzEP7QYqz4ss+jne36GwEngYWGvlIv4U40sTGZgZDhIO83U5I8t4sXLD08JZNP2t8sAKw+UYMZ4L4gkCoZNDt5p0joNik7GyjD3CdCFSiHMBONubViuWp8DIhHapcsnvKAmQ9cw8f4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=dBs9/HxF; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="dBs9/HxF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1770419687; x=1801955687; h=subject:to:cc:from:date:references:in-reply-to: message-id; bh=urUFSF3dVgkSKy3H7ccPkgVi9Omn9FQ3Nv85PTissdI=; b=dBs9/HxFhMdNcPbohk+7oVIVE40Ln0erwYptBrHUfKwZHaGIOW4c8wxF 2el7PVZTGnYhHPusav3MF2xYucdNSs4sPGZn838md2m0xcRFjojSYV7OE CUT4dyStqLKLmldiVT1bWTy8hvBIZ+FO9do9UBBBPekXJeo25FfXpvCTZ BQ7kIbNbb2/mf8l7xK0DIPIBLRlzmWc5uvH1WPixaVSaqoIQRFtdcpQqV muMCIollM85ofoaqN8xeXuTCzS/wMd7Tk68D4BVvjQMSBnq3EFO7DuYXh L1siNV5FC7k0r9zkkOMxbAECmnRFgYo1XqQU0QScyuknxfenCrCCIng9P w==; X-CSE-ConnectionGUID: gV2KOPnKSTaySSaPjYQZbw== X-CSE-MsgGUID: 2k/l/Qp4Sd6GCaWZM6y2Mw== X-IronPort-AV: E=McAfee;i="6800,10657,11693"; a="74232706" X-IronPort-AV: E=Sophos;i="6.21,277,1763452800"; d="scan'208";a="74232706" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Feb 2026 15:14:46 -0800 X-CSE-ConnectionGUID: ZT0nL+3HT1u9PmGK4ImQ5g== X-CSE-MsgGUID: d5KnKFdRQbGkSNq13vu5Zw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,277,1763452800"; d="scan'208";a="210851525" Received: from davehans-spike.ostc.intel.com (HELO localhost.localdomain) ([10.165.164.11]) by fmviesa008.fm.intel.com with ESMTP; 06 Feb 2026 15:14:46 -0800 Subject: [PATCH 4/6] x86/cpu: Add platform ID to CPU info structure To: linux-kernel@vger.kernel.org Cc: sohil.mehta@intel.com, zhao1.liu@intel.com, Dave Hansen , Borislav Petkov , "H. Peter Anvin" , Ingo Molnar , Jon Kohler , Pawan Gupta , "Peter Zijlstra (Intel)" , Thomas Gleixner , Tony Luck , x86@kernel.org From: Dave Hansen Date: Fri, 06 Feb 2026 15:14:45 -0800 References: <20260206231438.720FF4E3@davehans-spike.ostc.intel.com> In-Reply-To: <20260206231438.720FF4E3@davehans-spike.ostc.intel.com> Message-Id: <20260206231445.2D569730@davehans-spike.ostc.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Dave Hansen The end goal here is to be able to do x86_match_cpu() and match on a specific platform ID. While it would be possible to stash this ID off somewhere or read it dynamically, that approaches would not be consistent with the other fields which can be matched. Read the platform ID and store it in cpuinfo_x86->x86_platform_id. There are lots of sites to set this new field. Place it near the place c->microcode is established since the platform ID is so closely intertwined with microcode updates. Note: This should not grow the size of 'struct cpuinfo_x86' in practice since the u8 fits next to another u8 in the structure. Signed-off-by: Dave Hansen Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Dave Hansen Cc: "H. Peter Anvin" Cc: Tony Luck Cc: Pawan Gupta Cc: "Peter Zijlstra (Intel)" Cc: x86@kernel.org Cc: Jon Kohler --- b/arch/x86/include/asm/processor.h | 2 ++ b/arch/x86/kernel/cpu/common.c | 4 +++- b/arch/x86/kernel/cpu/intel.c | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff -puN arch/x86/include/asm/processor.h~cpu-x86_stepping arch/x86/includ= e/asm/processor.h --- a/arch/x86/include/asm/processor.h~cpu-x86_stepping 2026-02-06 15:14:23= .528790212 -0800 +++ b/arch/x86/include/asm/processor.h 2026-02-06 15:14:23.567791582 -0800 @@ -140,6 +140,8 @@ struct cpuinfo_x86 { __u32 x86_vfm; }; __u8 x86_stepping; + /* Intel-only. 3 bits: */ + __u8 x86_platform_id; #ifdef CONFIG_X86_64 /* Number of 4K pages in DTLB/ITLB combined(in pages): */ int x86_tlbsize; diff -puN arch/x86/kernel/cpu/common.c~cpu-x86_stepping arch/x86/kernel/cpu= /common.c --- a/arch/x86/kernel/cpu/common.c~cpu-x86_stepping 2026-02-06 15:14:23.552= 791055 -0800 +++ b/arch/x86/kernel/cpu/common.c 2026-02-06 15:14:23.568791618 -0800 @@ -1981,7 +1981,9 @@ static void identify_cpu(struct cpuinfo_ c->loops_per_jiffy =3D loops_per_jiffy; c->x86_cache_size =3D 0; c->x86_vendor =3D X86_VENDOR_UNKNOWN; - c->x86_model =3D c->x86_stepping =3D 0; /* So far unknown... */ + c->x86_model =3D 0; + c->x86_stepping =3D 0; + c->x86_platform_id =3D 0; c->x86_vendor_id[0] =3D '\0'; /* Unset */ c->x86_model_id[0] =3D '\0'; /* Unset */ #ifdef CONFIG_X86_64 diff -puN arch/x86/kernel/cpu/intel.c~cpu-x86_stepping arch/x86/kernel/cpu/= intel.c --- a/arch/x86/kernel/cpu/intel.c~cpu-x86_stepping 2026-02-06 15:14:23.5647= 91477 -0800 +++ b/arch/x86/kernel/cpu/intel.c 2026-02-06 15:14:23.568791618 -0800 @@ -205,6 +205,7 @@ static void early_init_intel(struct cpui =20 if (c->x86 >=3D 6 && !cpu_has(c, X86_FEATURE_IA64)) c->microcode =3D intel_get_microcode_revision(); + c->x86_platform_id =3D intel_get_platform_id(); =20 /* Now if any of them are set, check the blacklist and clear the lot */ if ((cpu_has(c, X86_FEATURE_SPEC_CTRL) || _ From nobody Sun Feb 8 04:34:39 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (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 8FEC9314D2B for ; Fri, 6 Feb 2026 23:14:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770419688; cv=none; b=lQlyI76gKKkLznFF9ZcnpIJ1GEHkbOBFQsye2Zez5XHGjwaWfVHk9s2mgMO6LIaDkRJeV2zkUWSEtZ3hehuohqZkveE1y8eZzT+DU4ibJs5H8NkvKxjxscaWQOwosJgxvLfDIDqRAHrcUUslN/ZlN4lcZDBygVwLH+47JH7Mp/g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770419688; c=relaxed/simple; bh=R5dCWQZ1W3SOd7VJK5ms7Ud6cikz69g3LGl2Gaohv/o=; h=Subject:To:Cc:From:Date:References:In-Reply-To:Message-Id; b=PRtTHa1EiO3fZzW2eXwM5rmjqoKSjIinBlO7NA5fHZqOvMhNNymeaboJXCb0Kc37Bf/W22hlAjBKw4S5QoBiXP9QNrrWN09XpfnC0CvMoMBnNGw55k29X7lLnQr6pi8mStHNEF92A+3KvGdsVCVUZltxUxcFiSJWVGzN9NfrL5Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=ndq3SCcU; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="ndq3SCcU" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1770419688; x=1801955688; h=subject:to:cc:from:date:references:in-reply-to: message-id; bh=R5dCWQZ1W3SOd7VJK5ms7Ud6cikz69g3LGl2Gaohv/o=; b=ndq3SCcUUCCE8HppcqZKuKjx4LlzlKXfkhVxZqogyNEKTbjRTSa5ArQZ h5swbmFsVoJ3qNAJInHi4vA0KEdxqhZGigMj0MYNnpFmBjqtCxzpdCFaF Zm4OciAI/CRxiivtXL45P14fpuBiEi6GUOT8Apn95v9Q8PJLXw/rjDtBa lhmtVCDGIPbG09o0R0IkIPmNGcJmeCsB2MZCtbiohZ0MHeXx8ummVYgyK CUnR9YFeBf439oCadEhQwmEJ3fz1zNh/ZtgOu4cgTpkwi1JkWr7ttoUGP 9CvrzQfkbbr7t0+u7XD/CyyTrTEbcZHu/aeKt8F4IQDUyP4+1WAYE6jTm Q==; X-CSE-ConnectionGUID: 2lvXw5INTEOYxFjQ/gXFKQ== X-CSE-MsgGUID: nJCJzPHcS5u74gYnrpn48Q== X-IronPort-AV: E=McAfee;i="6800,10657,11693"; a="74232717" X-IronPort-AV: E=Sophos;i="6.21,277,1763452800"; d="scan'208";a="74232717" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Feb 2026 15:14:48 -0800 X-CSE-ConnectionGUID: 5sNpy8DZTLGZWp6+eSnRBQ== X-CSE-MsgGUID: HYCJavsQQiarGBg0ATYXCg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,277,1763452800"; d="scan'208";a="210851533" Received: from davehans-spike.ostc.intel.com (HELO localhost.localdomain) ([10.165.164.11]) by fmviesa008.fm.intel.com with ESMTP; 06 Feb 2026 15:14:48 -0800 Subject: [PATCH 5/6] x86/cpu: Add platform ID to CPU matching structure To: linux-kernel@vger.kernel.org Cc: sohil.mehta@intel.com, zhao1.liu@intel.com, Dave Hansen , Borislav Petkov , "H. Peter Anvin" , Ingo Molnar , Jon Kohler , Pawan Gupta , "Peter Zijlstra (Intel)" , Thomas Gleixner , Tony Luck , x86@kernel.org From: Dave Hansen Date: Fri, 06 Feb 2026 15:14:47 -0800 References: <20260206231438.720FF4E3@davehans-spike.ostc.intel.com> In-Reply-To: <20260206231438.720FF4E3@davehans-spike.ostc.intel.com> Message-Id: <20260206231447.A708BA3D@davehans-spike.ostc.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Dave Hansen The existing x86_match_cpu() infrastructure can be used to match a bunch of attributes of a CPU: vendor, family, model, steppings and CPU features. But, there's one more attribute that's missing and unable to be matched against: the platform ID, enumerated on Intel CPUs in MSR_IA32_PLATFORM_ID. It is a little more obscure and is only queried during microcode loading. This is because Intel sometimes has CPUs with identical family/model/stepping but which need different microcode. These CPUs are differentiated with the platform ID. Add a field in 'struct x86_cpu_id' for the platform ID. Similar to the stepping field, make the new field a mask of platform IDs. Some examples: 0x01: matches only platform ID 0x0 0x02: matches only platform ID 0x1 0x03: matches platform IDs 0x0 or 0x1 0x80: matches only platform ID 0x7 0xff: matches all 8 possible platform IDs Since the mask is only a byte wide, it nestles in next to another u8 and does not even increase the size of 'struct x86_cpu_id'. Reserve the all 0's value as the wildcard (X86_PLATFORM_ANY). This avoids forcing changes changes to existing 'struct x86_cpu_id' users. They can just continue to fill the field with 0's and their matching will work exactly as before. Note: If someone is ever looking for space in 'struct x86_cpu_id', this new field could probably get stuck over in ->driver_data for the one user that there is. Signed-off-by: Dave Hansen Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Dave Hansen Cc: "H. Peter Anvin" Cc: Tony Luck Cc: Pawan Gupta Cc: "Peter Zijlstra (Intel)" Cc: x86@kernel.org Cc: Jon Kohler --- b/arch/x86/kernel/cpu/match.c | 3 +++ b/include/linux/mod_devicetable.h | 2 ++ 2 files changed, 5 insertions(+) diff -puN arch/x86/kernel/cpu/match.c~platform-match arch/x86/kernel/cpu/ma= tch.c --- a/arch/x86/kernel/cpu/match.c~platform-match 2026-02-06 15:14:24.127811= 266 -0800 +++ b/arch/x86/kernel/cpu/match.c 2026-02-06 15:14:24.137811618 -0800 @@ -76,6 +76,9 @@ const struct x86_cpu_id *x86_match_cpu(c if (m->steppings !=3D X86_STEPPING_ANY && !(BIT(c->x86_stepping) & m->steppings)) continue; + if (m->platform_mask !=3D X86_PLATFORM_ANY && + !(BIT(c->x86_platform_id) & m->platform_mask)) + continue; if (m->feature !=3D X86_FEATURE_ANY && !cpu_has(c, m->feature)) continue; if (!x86_match_vendor_cpu_type(c, m)) diff -puN include/linux/mod_devicetable.h~platform-match include/linux/mod_= devicetable.h --- a/include/linux/mod_devicetable.h~platform-match 2026-02-06 15:14:24.13= 4811512 -0800 +++ b/include/linux/mod_devicetable.h 2026-02-06 15:14:24.137811618 -0800 @@ -692,6 +692,7 @@ struct x86_cpu_id { __u16 feature; /* bit index */ /* Solely for kernel-internal use: DO NOT EXPORT to userspace! */ __u16 flags; + __u8 platform_mask; __u8 type; kernel_ulong_t driver_data; }; @@ -703,6 +704,7 @@ struct x86_cpu_id { #define X86_STEPPING_ANY 0 #define X86_STEP_MIN 0 #define X86_STEP_MAX 0xf +#define X86_PLATFORM_ANY 0x0 #define X86_FEATURE_ANY 0 /* Same as FPU, you can't test for that */ #define X86_CPU_TYPE_ANY 0 =20 _ From nobody Sun Feb 8 04:34:39 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) (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 A7755315D57 for ; Fri, 6 Feb 2026 23:14:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.13 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770419690; cv=none; b=aTNi8gHh8F1NO+6aCheLkh+A9zmcbYzkCFt8dH+waZ396jmPYEt0Wg+caU7ngRW31BIVkpBxhKtAvdnG9i7r7M0syA2jHVXAF50Dl+WD8WorzZThL1hCTXAfN8ftF1e9oKwdZ8nDDCtF/AjFAuPe88km6ShUCEV+yY6XYJfeu7g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770419690; c=relaxed/simple; bh=StPnTmsGscqfjN2afbONkQZWgCWmhKI6Nf88kD1YCrg=; h=Subject:To:Cc:From:Date:References:In-Reply-To:Message-Id; b=fLDs6Vr3c4mM298Yz1wV6sUg1UQPyVjf/36Arfyd6Mt5cg1YrJXNlVYHsfXk7gT2Z5Ta9qKa3o3ulFcCqQcVHkJ4+lJS6O1IUiA+331shRgAZeQq0I3z1QK9ZKV3WqTpOPbu8hXlb3urHCWs0vau/Wngu3E8oKdKbjuQ3mxKdmM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=SbCYauYS; arc=none smtp.client-ip=192.198.163.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="SbCYauYS" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1770419691; x=1801955691; h=subject:to:cc:from:date:references:in-reply-to: message-id; bh=StPnTmsGscqfjN2afbONkQZWgCWmhKI6Nf88kD1YCrg=; b=SbCYauYSTFciLyQgBeNWlT37jR3kjCRXQwxZ6bo9Ayg81Ham31Wl1bJT eAGbdAuVb+O78ay9DKTUb/Jm7SSZSYmaNQ0OYo3YY1XK22Agp5Lq455iw lAJkhGXdpy70ImPX8MabnUwSPR6BrgTojJszRp0Ddd5wb/YZO8bWVx5UT sdBZiA+2ufX5xmkTsTrImOnf2AAtXk46BGOITxb4fZnqsdHvL0YuXXvto /9Reru7dE3Crl07HFjvPJytupAkL56IhRZ+/Mg7b1xGJs4kiSwJ0mSDJp c/hLW7Z47opQwFGxhpCkiVZwKErEjrRetnfNLFsIKwKO0MNkP++gwP6RP w==; X-CSE-ConnectionGUID: W6n53D81Td29OkxJfnmCaw== X-CSE-MsgGUID: 4bDXBVixSxK9ieu0CKuu8g== X-IronPort-AV: E=McAfee;i="6800,10657,11693"; a="74232726" X-IronPort-AV: E=Sophos;i="6.21,277,1763452800"; d="scan'208";a="74232726" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Feb 2026 15:14:50 -0800 X-CSE-ConnectionGUID: aqPV5sJhROWBEFB4811q2Q== X-CSE-MsgGUID: 0uFi3j/HRCaiJKmEIcxOPg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,277,1763452800"; d="scan'208";a="210851541" Received: from davehans-spike.ostc.intel.com (HELO localhost.localdomain) ([10.165.164.11]) by fmviesa008.fm.intel.com with ESMTP; 06 Feb 2026 15:14:50 -0800 Subject: [PATCH 6/6] x86/microcode: Add platform mask to Intel microcode "old" list To: linux-kernel@vger.kernel.org Cc: sohil.mehta@intel.com, zhao1.liu@intel.com, Dave Hansen , Borislav Petkov , "H. Peter Anvin" , Ingo Molnar , Jon Kohler , Pawan Gupta , "Peter Zijlstra (Intel)" , Thomas Gleixner , Tony Luck , x86@kernel.org From: Dave Hansen Date: Fri, 06 Feb 2026 15:14:49 -0800 References: <20260206231438.720FF4E3@davehans-spike.ostc.intel.com> In-Reply-To: <20260206231438.720FF4E3@davehans-spike.ostc.intel.com> Message-Id: <20260206231449.A741C736@davehans-spike.ostc.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Dave Hansen Intel sometimes has CPUs with identical family/model/stepping but which need different microcode. These CPUs are differentiated with the platform ID. The Intel "microcode-20250512" release was used to generate the existing contents of intel-ucode-defs.h. Use that same release and add the platform mask to the definitions. This makes the list a few entries longer. For example for the ancient Pentium III there are two CPUs that differ only in their platform and have two different microcode versions: { ..., .model =3D 0x05, .steppings =3D 0x0001, .platform_mask =3D 0x01, .d= river_data =3D 0x40 }, { ..., .model =3D 0x05, .steppings =3D 0x0001, .platform_mask =3D 0x08, .d= river_data =3D 0x45 }, These CPUs previously shared a definition. Another example is the state-of-the-art Granite Rapids: { ..., .model =3D 0xad, .steppings =3D 0x0002, .platform_mask =3D 0x20, .= driver_data =3D 0xa0000d1 }, { ..., .model =3D 0xad, .steppings =3D 0x0002, .platform_mask =3D 0x95, .= driver_data =3D 0x10003a2 }, As you can see, this differentiation with platform ID has been necessary for a long time and is still relevant today. Without the platform matching, the old microcode table is incomplete. For instance, it might lead someone with a Pentium III, platform 0x0, and microcode 0x40 to think that they should have microcode 0x45, which is really only for platform 0x4 (.platform_mask=3D=3D0x08). In practice, this meant that folks with fully updated microcode were seeing "Vulnerable" in the "old_microcode" file. 1. https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files Signed-off-by: Dave Hansen Reported-by: Jon Kohler Fixes: 4e2c719782a8 ("x86/cpu: Help users notice when running old Intel mic= rocode") Tested-by: Zhao Liu Link: https://lore.kernel.org/all/3ECBB974-C6F0-47A7-94B6-3646347F1CC2@nuta= nix.com/ Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Dave Hansen Cc: "H. Peter Anvin" Cc: Tony Luck Cc: Pawan Gupta Cc: "Peter Zijlstra (Intel)" Cc: x86@kernel.org --- b/arch/x86/kernel/cpu/microcode/intel-ucode-defs.h | 398 ++++++++++++----= ----- 1 file changed, 238 insertions(+), 160 deletions(-) diff -puN arch/x86/kernel/cpu/microcode/intel-ucode-defs.h~add-platform-to-= defs arch/x86/kernel/cpu/microcode/intel-ucode-defs.h --- a/arch/x86/kernel/cpu/microcode/intel-ucode-defs.h~add-platform-to-defs= 2026-02-06 15:14:24.695831233 -0800 +++ b/arch/x86/kernel/cpu/microcode/intel-ucode-defs.h 2026-02-06 15:14:24.= 699831374 -0800 @@ -1,160 +1,238 @@ -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x03, .steppings =3D 0x0004, .driver_data =3D 0x= 2 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0001, .driver_data =3D 0x= 45 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0002, .driver_data =3D 0x= 40 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0004, .driver_data =3D 0x= 2c }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0008, .driver_data =3D 0x= 10 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x06, .steppings =3D 0x0001, .driver_data =3D 0x= a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x06, .steppings =3D 0x0020, .driver_data =3D 0x= 3 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x06, .steppings =3D 0x0400, .driver_data =3D 0x= d }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x06, .steppings =3D 0x2000, .driver_data =3D 0x= 7 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x07, .steppings =3D 0x0002, .driver_data =3D 0x= 14 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x07, .steppings =3D 0x0004, .driver_data =3D 0x= 38 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x07, .steppings =3D 0x0008, .driver_data =3D 0x= 2e }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0002, .driver_data =3D 0x= 11 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0008, .driver_data =3D 0x= 8 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0040, .driver_data =3D 0x= c }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0400, .driver_data =3D 0x= 5 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x09, .steppings =3D 0x0020, .driver_data =3D 0x= 47 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0a, .steppings =3D 0x0001, .driver_data =3D 0x= 3 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0a, .steppings =3D 0x0002, .driver_data =3D 0x= 1 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0b, .steppings =3D 0x0002, .driver_data =3D 0x= 1d }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0b, .steppings =3D 0x0010, .driver_data =3D 0x= 2 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0d, .steppings =3D 0x0040, .driver_data =3D 0x= 18 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0e, .steppings =3D 0x0100, .driver_data =3D 0x= 39 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0e, .steppings =3D 0x1000, .driver_data =3D 0x= 59 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0004, .driver_data =3D 0x= 5d }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0040, .driver_data =3D 0x= d2 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0080, .driver_data =3D 0x= 6b }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0400, .driver_data =3D 0x= 95 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0800, .driver_data =3D 0x= bc }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x2000, .driver_data =3D 0x= a4 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x16, .steppings =3D 0x0002, .driver_data =3D 0x= 44 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x17, .steppings =3D 0x0040, .driver_data =3D 0x= 60f }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x17, .steppings =3D 0x0080, .driver_data =3D 0x= 70a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x17, .steppings =3D 0x0400, .driver_data =3D 0x= a0b }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1a, .steppings =3D 0x0010, .driver_data =3D 0x= 12 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1a, .steppings =3D 0x0020, .driver_data =3D 0x= 1d }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1c, .steppings =3D 0x0004, .driver_data =3D 0x= 219 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1c, .steppings =3D 0x0400, .driver_data =3D 0x= 107 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1d, .steppings =3D 0x0002, .driver_data =3D 0x= 29 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1e, .steppings =3D 0x0020, .driver_data =3D 0x= a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x25, .steppings =3D 0x0004, .driver_data =3D 0x= 11 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x25, .steppings =3D 0x0020, .driver_data =3D 0x= 7 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x26, .steppings =3D 0x0002, .driver_data =3D 0x= 105 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x2a, .steppings =3D 0x0080, .driver_data =3D 0x= 2f }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x2c, .steppings =3D 0x0004, .driver_data =3D 0x= 1f }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x2d, .steppings =3D 0x0040, .driver_data =3D 0x= 621 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x2d, .steppings =3D 0x0080, .driver_data =3D 0x= 71a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x2e, .steppings =3D 0x0040, .driver_data =3D 0x= d }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x2f, .steppings =3D 0x0004, .driver_data =3D 0x= 3b }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x37, .steppings =3D 0x0100, .driver_data =3D 0x= 838 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x37, .steppings =3D 0x0200, .driver_data =3D 0x= 90d }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3a, .steppings =3D 0x0200, .driver_data =3D 0x= 21 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3c, .steppings =3D 0x0008, .driver_data =3D 0x= 28 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3d, .steppings =3D 0x0010, .driver_data =3D 0x= 2f }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3e, .steppings =3D 0x0010, .driver_data =3D 0x= 42e }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3e, .steppings =3D 0x0040, .driver_data =3D 0x= 600 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3e, .steppings =3D 0x0080, .driver_data =3D 0x= 715 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3f, .steppings =3D 0x0004, .driver_data =3D 0x= 49 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3f, .steppings =3D 0x0010, .driver_data =3D 0x= 1a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x45, .steppings =3D 0x0002, .driver_data =3D 0x= 26 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x46, .steppings =3D 0x0002, .driver_data =3D 0x= 1c }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x47, .steppings =3D 0x0002, .driver_data =3D 0x= 22 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x4c, .steppings =3D 0x0008, .driver_data =3D 0x= 368 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x4c, .steppings =3D 0x0010, .driver_data =3D 0x= 411 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x4d, .steppings =3D 0x0100, .driver_data =3D 0x= 12d }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x4e, .steppings =3D 0x0008, .driver_data =3D 0x= f0 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x55, .steppings =3D 0x0008, .driver_data =3D 0x= 1000191 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x55, .steppings =3D 0x0010, .driver_data =3D 0x= 2007006 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x55, .steppings =3D 0x0020, .driver_data =3D 0x= 3000010 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x55, .steppings =3D 0x0080, .driver_data =3D 0x= 5003901 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x55, .steppings =3D 0x0800, .driver_data =3D 0x= 7002b01 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x56, .steppings =3D 0x0004, .driver_data =3D 0x= 1c }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x56, .steppings =3D 0x0008, .driver_data =3D 0x= 700001c }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x56, .steppings =3D 0x0010, .driver_data =3D 0x= f00001a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x56, .steppings =3D 0x0020, .driver_data =3D 0x= e000015 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x5c, .steppings =3D 0x0004, .driver_data =3D 0x= 14 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x5c, .steppings =3D 0x0200, .driver_data =3D 0x= 48 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x5c, .steppings =3D 0x0400, .driver_data =3D 0x= 28 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x5e, .steppings =3D 0x0008, .driver_data =3D 0x= f0 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x5f, .steppings =3D 0x0002, .driver_data =3D 0x= 3e }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x66, .steppings =3D 0x0008, .driver_data =3D 0x= 2a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x6a, .steppings =3D 0x0020, .driver_data =3D 0x= c0002f0 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x6a, .steppings =3D 0x0040, .driver_data =3D 0x= d000404 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x6c, .steppings =3D 0x0002, .driver_data =3D 0x= 10002d0 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x7a, .steppings =3D 0x0002, .driver_data =3D 0x= 42 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x7a, .steppings =3D 0x0100, .driver_data =3D 0x= 26 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x7e, .steppings =3D 0x0020, .driver_data =3D 0x= ca }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8a, .steppings =3D 0x0002, .driver_data =3D 0x= 33 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8c, .steppings =3D 0x0002, .driver_data =3D 0x= bc }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8c, .steppings =3D 0x0004, .driver_data =3D 0x= 3c }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8d, .steppings =3D 0x0002, .driver_data =3D 0x= 56 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8e, .steppings =3D 0x0200, .driver_data =3D 0x= f6 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8e, .steppings =3D 0x0400, .driver_data =3D 0x= f6 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8e, .steppings =3D 0x0800, .driver_data =3D 0x= f6 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8e, .steppings =3D 0x1000, .driver_data =3D 0x= 100 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8f, .steppings =3D 0x0010, .driver_data =3D 0x= 2c0003f7 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8f, .steppings =3D 0x0020, .driver_data =3D 0x= 2c0003f7 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8f, .steppings =3D 0x0040, .driver_data =3D 0x= 2c0003f7 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8f, .steppings =3D 0x0080, .driver_data =3D 0x= 2b000639 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8f, .steppings =3D 0x0100, .driver_data =3D 0x= 2c0003f7 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x96, .steppings =3D 0x0002, .driver_data =3D 0x= 1a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x97, .steppings =3D 0x0004, .driver_data =3D 0x= 3a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x97, .steppings =3D 0x0020, .driver_data =3D 0x= 3a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9a, .steppings =3D 0x0008, .driver_data =3D 0x= 437 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9a, .steppings =3D 0x0010, .driver_data =3D 0x= 437 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9c, .steppings =3D 0x0001, .driver_data =3D 0x= 24000026 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9e, .steppings =3D 0x0200, .driver_data =3D 0x= f8 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9e, .steppings =3D 0x0400, .driver_data =3D 0x= fa }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9e, .steppings =3D 0x0800, .driver_data =3D 0x= f6 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9e, .steppings =3D 0x1000, .driver_data =3D 0x= f8 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9e, .steppings =3D 0x2000, .driver_data =3D 0x= 104 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xa5, .steppings =3D 0x0004, .driver_data =3D 0x= 100 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xa5, .steppings =3D 0x0008, .driver_data =3D 0x= 100 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xa5, .steppings =3D 0x0020, .driver_data =3D 0x= 100 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xa6, .steppings =3D 0x0001, .driver_data =3D 0x= 102 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xa6, .steppings =3D 0x0002, .driver_data =3D 0x= 100 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xa7, .steppings =3D 0x0002, .driver_data =3D 0x= 64 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xaa, .steppings =3D 0x0010, .driver_data =3D 0x= 24 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xad, .steppings =3D 0x0002, .driver_data =3D 0x= a0000d1 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xaf, .steppings =3D 0x0008, .driver_data =3D 0x= 3000341 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xb5, .steppings =3D 0x0001, .driver_data =3D 0x= a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xb7, .steppings =3D 0x0002, .driver_data =3D 0x= 12f }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xb7, .steppings =3D 0x0010, .driver_data =3D 0x= 12f }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xba, .steppings =3D 0x0004, .driver_data =3D 0x= 4128 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xba, .steppings =3D 0x0008, .driver_data =3D 0x= 4128 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xba, .steppings =3D 0x0100, .driver_data =3D 0x= 4128 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xbd, .steppings =3D 0x0002, .driver_data =3D 0x= 11f }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xbe, .steppings =3D 0x0001, .driver_data =3D 0x= 1d }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xbf, .steppings =3D 0x0004, .driver_data =3D 0x= 3a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xbf, .steppings =3D 0x0020, .driver_data =3D 0x= 3a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xbf, .steppings =3D 0x0040, .driver_data =3D 0x= 3a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xbf, .steppings =3D 0x0080, .driver_data =3D 0x= 3a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xc5, .steppings =3D 0x0004, .driver_data =3D 0x= 118 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xc6, .steppings =3D 0x0004, .driver_data =3D 0x= 118 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xc6, .steppings =3D 0x0010, .driver_data =3D 0x= 118 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xca, .steppings =3D 0x0004, .driver_data =3D 0x= 118 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xcf, .steppings =3D 0x0002, .driver_data =3D 0x= 210002a9 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xcf, .steppings =3D 0x0004, .driver_data =3D 0x= 210002a9 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x00, .steppings =3D 0x0080, .driver_data =3D 0x= 12 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x00, .steppings =3D 0x0400, .driver_data =3D 0x= 15 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x01, .steppings =3D 0x0004, .driver_data =3D 0x= 2e }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0010, .driver_data =3D 0x= 21 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0020, .driver_data =3D 0x= 2c }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0040, .driver_data =3D 0x= 10 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0080, .driver_data =3D 0x= 39 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0200, .driver_data =3D 0x= 2f }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x03, .steppings =3D 0x0004, .driver_data =3D 0x= a }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x03, .steppings =3D 0x0008, .driver_data =3D 0x= c }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x03, .steppings =3D 0x0010, .driver_data =3D 0x= 17 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0002, .driver_data =3D 0x= 17 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0008, .driver_data =3D 0x= 5 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0010, .driver_data =3D 0x= 6 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0080, .driver_data =3D 0x= 3 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0100, .driver_data =3D 0x= e }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0200, .driver_data =3D 0x= 3 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0400, .driver_data =3D 0x= 4 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x06, .steppings =3D 0x0004, .driver_data =3D 0x= f }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x06, .steppings =3D 0x0010, .driver_data =3D 0x= 4 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x06, .steppings =3D 0x0020, .driver_data =3D 0x= 8 }, -{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x06, .steppings =3D 0x0100, .driver_data =3D 0x= 9 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x03, .steppings =3D 0x0004, .platform_mask =3D = 0x00, .driver_data =3D 0x2 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0001, .platform_mask =3D = 0x01, .driver_data =3D 0x40 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0001, .platform_mask =3D = 0x02, .driver_data =3D 0x41 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0001, .platform_mask =3D = 0x08, .driver_data =3D 0x45 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0002, .platform_mask =3D = 0x01, .driver_data =3D 0x40 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0004, .platform_mask =3D = 0x01, .driver_data =3D 0x2a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0004, .platform_mask =3D = 0x02, .driver_data =3D 0x2c }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0004, .platform_mask =3D = 0x04, .driver_data =3D 0x2b }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0008, .platform_mask =3D = 0x01, .driver_data =3D 0x10 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0008, .platform_mask =3D = 0x02, .driver_data =3D 0xc }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0008, .platform_mask =3D = 0x04, .driver_data =3D 0xb }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x05, .steppings =3D 0x0008, .platform_mask =3D = 0x08, .driver_data =3D 0xd }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x06, .steppings =3D 0x0001, .platform_mask =3D = 0x01, .driver_data =3D 0xa }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x06, .steppings =3D 0x0020, .platform_mask =3D = 0x10, .driver_data =3D 0x3 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x06, .steppings =3D 0x0400, .platform_mask =3D = 0x02, .driver_data =3D 0xc }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x06, .steppings =3D 0x0400, .platform_mask =3D = 0x08, .driver_data =3D 0xd }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x06, .steppings =3D 0x0400, .platform_mask =3D = 0x20, .driver_data =3D 0xb }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x06, .steppings =3D 0x2000, .platform_mask =3D = 0x02, .driver_data =3D 0x5 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x06, .steppings =3D 0x2000, .platform_mask =3D = 0x08, .driver_data =3D 0x6 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x06, .steppings =3D 0x2000, .platform_mask =3D = 0x20, .driver_data =3D 0x7 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x07, .steppings =3D 0x0002, .platform_mask =3D = 0x04, .driver_data =3D 0x14 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x07, .steppings =3D 0x0004, .platform_mask =3D = 0x04, .driver_data =3D 0x38 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x07, .steppings =3D 0x0008, .platform_mask =3D = 0x04, .driver_data =3D 0x2e }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0002, .platform_mask =3D = 0x01, .driver_data =3D 0xd }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0002, .platform_mask =3D = 0x04, .driver_data =3D 0x10 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0002, .platform_mask =3D = 0x08, .driver_data =3D 0xf }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0002, .platform_mask =3D = 0x10, .driver_data =3D 0x11 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0002, .platform_mask =3D = 0x20, .driver_data =3D 0xe }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0008, .platform_mask =3D = 0x08, .driver_data =3D 0x8 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0008, .platform_mask =3D = 0x20, .driver_data =3D 0x7 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0040, .platform_mask =3D = 0x01, .driver_data =3D 0x7 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0040, .platform_mask =3D = 0x02, .driver_data =3D 0xa }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0040, .platform_mask =3D = 0x04, .driver_data =3D 0x2 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0040, .platform_mask =3D = 0x10, .driver_data =3D 0x8 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0040, .platform_mask =3D = 0x80, .driver_data =3D 0xc }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0400, .platform_mask =3D = 0x10, .driver_data =3D 0x1 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0400, .platform_mask =3D = 0x20, .driver_data =3D 0x4 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x08, .steppings =3D 0x0400, .platform_mask =3D = 0x80, .driver_data =3D 0x5 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x09, .steppings =3D 0x0020, .platform_mask =3D = 0x10, .driver_data =3D 0x7 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x09, .steppings =3D 0x0020, .platform_mask =3D = 0x20, .driver_data =3D 0x7 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x09, .steppings =3D 0x0020, .platform_mask =3D = 0x80, .driver_data =3D 0x47 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0a, .steppings =3D 0x0001, .platform_mask =3D = 0x04, .driver_data =3D 0x3 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0a, .steppings =3D 0x0002, .platform_mask =3D = 0x04, .driver_data =3D 0x1 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0b, .steppings =3D 0x0002, .platform_mask =3D = 0x10, .driver_data =3D 0x1c }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0b, .steppings =3D 0x0002, .platform_mask =3D = 0x20, .driver_data =3D 0x1d }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0b, .steppings =3D 0x0010, .platform_mask =3D = 0x10, .driver_data =3D 0x1 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0b, .steppings =3D 0x0010, .platform_mask =3D = 0x20, .driver_data =3D 0x2 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0d, .steppings =3D 0x0040, .platform_mask =3D = 0x20, .driver_data =3D 0x18 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0e, .steppings =3D 0x0100, .platform_mask =3D = 0x20, .driver_data =3D 0x39 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0e, .steppings =3D 0x1000, .platform_mask =3D = 0x20, .driver_data =3D 0x54 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0e, .steppings =3D 0x1000, .platform_mask =3D = 0x80, .driver_data =3D 0x59 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0004, .platform_mask =3D = 0x01, .driver_data =3D 0x5d }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0004, .platform_mask =3D = 0x20, .driver_data =3D 0x5c }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0040, .platform_mask =3D = 0x01, .driver_data =3D 0xd0 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0040, .platform_mask =3D = 0x04, .driver_data =3D 0xd2 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0040, .platform_mask =3D = 0x20, .driver_data =3D 0xd1 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0080, .platform_mask =3D = 0x10, .driver_data =3D 0x6a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0080, .platform_mask =3D = 0x40, .driver_data =3D 0x6b }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0400, .platform_mask =3D = 0x80, .driver_data =3D 0x95 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0800, .platform_mask =3D = 0x01, .driver_data =3D 0xba }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0800, .platform_mask =3D = 0x04, .driver_data =3D 0xbc }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0800, .platform_mask =3D = 0x08, .driver_data =3D 0xbb }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0800, .platform_mask =3D = 0x10, .driver_data =3D 0xba }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0800, .platform_mask =3D = 0x20, .driver_data =3D 0xba }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0800, .platform_mask =3D = 0x40, .driver_data =3D 0xbc }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x0800, .platform_mask =3D = 0x80, .driver_data =3D 0xba }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x2000, .platform_mask =3D = 0x01, .driver_data =3D 0xa4 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x2000, .platform_mask =3D = 0x20, .driver_data =3D 0xa4 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x0f, .steppings =3D 0x2000, .platform_mask =3D = 0x80, .driver_data =3D 0xa4 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x16, .steppings =3D 0x0002, .platform_mask =3D = 0x01, .driver_data =3D 0x43 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x16, .steppings =3D 0x0002, .platform_mask =3D = 0x02, .driver_data =3D 0x42 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x16, .steppings =3D 0x0002, .platform_mask =3D = 0x80, .driver_data =3D 0x44 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x17, .steppings =3D 0x0040, .platform_mask =3D = 0x01, .driver_data =3D 0x60f }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x17, .steppings =3D 0x0040, .platform_mask =3D = 0x04, .driver_data =3D 0x60f }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x17, .steppings =3D 0x0040, .platform_mask =3D = 0x10, .driver_data =3D 0x60f }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x17, .steppings =3D 0x0040, .platform_mask =3D = 0x40, .driver_data =3D 0x60f }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x17, .steppings =3D 0x0040, .platform_mask =3D = 0x80, .driver_data =3D 0x60f }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x17, .steppings =3D 0x0080, .platform_mask =3D = 0x10, .driver_data =3D 0x70a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x17, .steppings =3D 0x0400, .platform_mask =3D = 0x11, .driver_data =3D 0xa0b }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x17, .steppings =3D 0x0400, .platform_mask =3D = 0x44, .driver_data =3D 0xa0b }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x17, .steppings =3D 0x0400, .platform_mask =3D = 0xa0, .driver_data =3D 0xa0b }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1a, .steppings =3D 0x0010, .platform_mask =3D = 0x03, .driver_data =3D 0x12 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1a, .steppings =3D 0x0020, .platform_mask =3D = 0x03, .driver_data =3D 0x1d }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1c, .steppings =3D 0x0004, .platform_mask =3D = 0x01, .driver_data =3D 0x217 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1c, .steppings =3D 0x0004, .platform_mask =3D = 0x04, .driver_data =3D 0x218 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1c, .steppings =3D 0x0004, .platform_mask =3D = 0x08, .driver_data =3D 0x219 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1c, .steppings =3D 0x0400, .platform_mask =3D = 0x01, .driver_data =3D 0x107 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1c, .steppings =3D 0x0400, .platform_mask =3D = 0x04, .driver_data =3D 0x107 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1c, .steppings =3D 0x0400, .platform_mask =3D = 0x08, .driver_data =3D 0x107 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1c, .steppings =3D 0x0400, .platform_mask =3D = 0x10, .driver_data =3D 0x107 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1d, .steppings =3D 0x0002, .platform_mask =3D = 0x08, .driver_data =3D 0x29 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x1e, .steppings =3D 0x0020, .platform_mask =3D = 0x13, .driver_data =3D 0xa }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x25, .steppings =3D 0x0004, .platform_mask =3D = 0x12, .driver_data =3D 0x11 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x25, .steppings =3D 0x0020, .platform_mask =3D = 0x92, .driver_data =3D 0x7 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x26, .steppings =3D 0x0002, .platform_mask =3D = 0x01, .driver_data =3D 0x104 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x26, .steppings =3D 0x0002, .platform_mask =3D = 0x02, .driver_data =3D 0x105 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x2a, .steppings =3D 0x0080, .platform_mask =3D = 0x12, .driver_data =3D 0x2f }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x2c, .steppings =3D 0x0004, .platform_mask =3D = 0x03, .driver_data =3D 0x1f }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x2d, .steppings =3D 0x0040, .platform_mask =3D = 0x6d, .driver_data =3D 0x621 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x2d, .steppings =3D 0x0080, .platform_mask =3D = 0x6d, .driver_data =3D 0x71a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x2e, .steppings =3D 0x0040, .platform_mask =3D = 0x04, .driver_data =3D 0xd }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x2f, .steppings =3D 0x0004, .platform_mask =3D = 0x05, .driver_data =3D 0x3b }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x37, .steppings =3D 0x0100, .platform_mask =3D = 0x02, .driver_data =3D 0x838 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x37, .steppings =3D 0x0100, .platform_mask =3D = 0x0c, .driver_data =3D 0x838 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x37, .steppings =3D 0x0200, .platform_mask =3D = 0x0f, .driver_data =3D 0x90d }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3a, .steppings =3D 0x0200, .platform_mask =3D = 0x12, .driver_data =3D 0x21 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3c, .steppings =3D 0x0008, .platform_mask =3D = 0x32, .driver_data =3D 0x28 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3d, .steppings =3D 0x0010, .platform_mask =3D = 0xc0, .driver_data =3D 0x2f }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3e, .steppings =3D 0x0010, .platform_mask =3D = 0xed, .driver_data =3D 0x42e }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3e, .steppings =3D 0x0040, .platform_mask =3D = 0xed, .driver_data =3D 0x600 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3e, .steppings =3D 0x0080, .platform_mask =3D = 0xed, .driver_data =3D 0x715 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3f, .steppings =3D 0x0004, .platform_mask =3D = 0x6f, .driver_data =3D 0x49 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x3f, .steppings =3D 0x0010, .platform_mask =3D = 0x80, .driver_data =3D 0x1a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x45, .steppings =3D 0x0002, .platform_mask =3D = 0x72, .driver_data =3D 0x26 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x46, .steppings =3D 0x0002, .platform_mask =3D = 0x32, .driver_data =3D 0x1c }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x47, .steppings =3D 0x0002, .platform_mask =3D = 0x22, .driver_data =3D 0x22 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x4c, .steppings =3D 0x0008, .platform_mask =3D = 0x01, .driver_data =3D 0x368 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x4c, .steppings =3D 0x0010, .platform_mask =3D = 0x01, .driver_data =3D 0x411 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x4d, .steppings =3D 0x0100, .platform_mask =3D = 0x01, .driver_data =3D 0x12d }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x4e, .steppings =3D 0x0008, .platform_mask =3D = 0xc0, .driver_data =3D 0xf0 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x55, .steppings =3D 0x0008, .platform_mask =3D = 0x97, .driver_data =3D 0x1000191 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x55, .steppings =3D 0x0010, .platform_mask =3D = 0xb7, .driver_data =3D 0x2007006 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x55, .steppings =3D 0x0020, .platform_mask =3D = 0xb7, .driver_data =3D 0x3000010 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x55, .steppings =3D 0x0080, .platform_mask =3D = 0xbf, .driver_data =3D 0x5003901 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x55, .steppings =3D 0x0800, .platform_mask =3D = 0xbf, .driver_data =3D 0x7002b01 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x56, .steppings =3D 0x0004, .platform_mask =3D = 0x10, .driver_data =3D 0x1c }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x56, .steppings =3D 0x0008, .platform_mask =3D = 0x10, .driver_data =3D 0x700001c }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x56, .steppings =3D 0x0010, .platform_mask =3D = 0x10, .driver_data =3D 0xf00001a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x56, .steppings =3D 0x0020, .platform_mask =3D = 0x10, .driver_data =3D 0xe000015 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x5c, .steppings =3D 0x0004, .platform_mask =3D = 0x01, .driver_data =3D 0x14 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x5c, .steppings =3D 0x0200, .platform_mask =3D = 0x03, .driver_data =3D 0x48 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x5c, .steppings =3D 0x0400, .platform_mask =3D = 0x03, .driver_data =3D 0x28 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x5e, .steppings =3D 0x0008, .platform_mask =3D = 0x36, .driver_data =3D 0xf0 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x5f, .steppings =3D 0x0002, .platform_mask =3D = 0x01, .driver_data =3D 0x3e }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x66, .steppings =3D 0x0008, .platform_mask =3D = 0x80, .driver_data =3D 0x2a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x6a, .steppings =3D 0x0020, .platform_mask =3D = 0x87, .driver_data =3D 0xc0002f0 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x6a, .steppings =3D 0x0040, .platform_mask =3D = 0x87, .driver_data =3D 0xd000404 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x6c, .steppings =3D 0x0002, .platform_mask =3D = 0x10, .driver_data =3D 0x10002d0 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x7a, .steppings =3D 0x0002, .platform_mask =3D = 0x01, .driver_data =3D 0x42 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x7a, .steppings =3D 0x0100, .platform_mask =3D = 0x01, .driver_data =3D 0x26 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x7e, .steppings =3D 0x0020, .platform_mask =3D = 0x80, .driver_data =3D 0xca }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8a, .steppings =3D 0x0002, .platform_mask =3D = 0x10, .driver_data =3D 0x33 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8c, .steppings =3D 0x0002, .platform_mask =3D = 0x80, .driver_data =3D 0xbc }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8c, .steppings =3D 0x0004, .platform_mask =3D = 0xc2, .driver_data =3D 0x3c }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8d, .steppings =3D 0x0002, .platform_mask =3D = 0xc2, .driver_data =3D 0x56 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8e, .steppings =3D 0x0200, .platform_mask =3D = 0x10, .driver_data =3D 0xf6 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8e, .steppings =3D 0x0200, .platform_mask =3D = 0xc0, .driver_data =3D 0xf6 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8e, .steppings =3D 0x0400, .platform_mask =3D = 0xc0, .driver_data =3D 0xf6 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8e, .steppings =3D 0x0800, .platform_mask =3D = 0xd0, .driver_data =3D 0xf6 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8e, .steppings =3D 0x1000, .platform_mask =3D = 0x94, .driver_data =3D 0x100 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8f, .steppings =3D 0x0010, .platform_mask =3D = 0x10, .driver_data =3D 0x2c0003f7 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8f, .steppings =3D 0x0010, .platform_mask =3D = 0x87, .driver_data =3D 0x2b000639 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8f, .steppings =3D 0x0020, .platform_mask =3D = 0x10, .driver_data =3D 0x2c0003f7 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8f, .steppings =3D 0x0020, .platform_mask =3D = 0x87, .driver_data =3D 0x2b000639 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8f, .steppings =3D 0x0040, .platform_mask =3D = 0x10, .driver_data =3D 0x2c0003f7 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8f, .steppings =3D 0x0040, .platform_mask =3D = 0x87, .driver_data =3D 0x2b000639 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8f, .steppings =3D 0x0080, .platform_mask =3D = 0x87, .driver_data =3D 0x2b000639 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8f, .steppings =3D 0x0100, .platform_mask =3D = 0x10, .driver_data =3D 0x2c0003f7 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x8f, .steppings =3D 0x0100, .platform_mask =3D = 0x87, .driver_data =3D 0x2b000639 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x96, .steppings =3D 0x0002, .platform_mask =3D = 0x01, .driver_data =3D 0x1a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x97, .steppings =3D 0x0004, .platform_mask =3D = 0x07, .driver_data =3D 0x3a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x97, .steppings =3D 0x0020, .platform_mask =3D = 0x07, .driver_data =3D 0x3a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9a, .steppings =3D 0x0008, .platform_mask =3D = 0x80, .driver_data =3D 0x437 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9a, .steppings =3D 0x0010, .platform_mask =3D = 0x40, .driver_data =3D 0xa }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9a, .steppings =3D 0x0010, .platform_mask =3D = 0x80, .driver_data =3D 0x437 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9c, .steppings =3D 0x0001, .platform_mask =3D = 0x01, .driver_data =3D 0x24000026 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9e, .steppings =3D 0x0200, .platform_mask =3D = 0x2a, .driver_data =3D 0xf8 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9e, .steppings =3D 0x0400, .platform_mask =3D = 0x22, .driver_data =3D 0xfa }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9e, .steppings =3D 0x0800, .platform_mask =3D = 0x02, .driver_data =3D 0xf6 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9e, .steppings =3D 0x1000, .platform_mask =3D = 0x22, .driver_data =3D 0xf8 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0x9e, .steppings =3D 0x2000, .platform_mask =3D = 0x22, .driver_data =3D 0x104 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xa5, .steppings =3D 0x0004, .platform_mask =3D = 0x20, .driver_data =3D 0x100 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xa5, .steppings =3D 0x0008, .platform_mask =3D = 0x22, .driver_data =3D 0x100 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xa5, .steppings =3D 0x0020, .platform_mask =3D = 0x22, .driver_data =3D 0x100 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xa6, .steppings =3D 0x0001, .platform_mask =3D = 0x80, .driver_data =3D 0x102 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xa6, .steppings =3D 0x0002, .platform_mask =3D = 0x80, .driver_data =3D 0x100 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xa7, .steppings =3D 0x0002, .platform_mask =3D = 0x02, .driver_data =3D 0x64 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xaa, .steppings =3D 0x0010, .platform_mask =3D = 0xe6, .driver_data =3D 0x24 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xad, .steppings =3D 0x0002, .platform_mask =3D = 0x20, .driver_data =3D 0xa0000d1 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xad, .steppings =3D 0x0002, .platform_mask =3D = 0x95, .driver_data =3D 0x10003a2 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xaf, .steppings =3D 0x0008, .platform_mask =3D = 0x01, .driver_data =3D 0x3000341 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xb5, .steppings =3D 0x0001, .platform_mask =3D = 0x80, .driver_data =3D 0xa }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xb7, .steppings =3D 0x0002, .platform_mask =3D = 0x32, .driver_data =3D 0x12f }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xb7, .steppings =3D 0x0010, .platform_mask =3D = 0x32, .driver_data =3D 0x12f }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xba, .steppings =3D 0x0004, .platform_mask =3D = 0xe0, .driver_data =3D 0x4128 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xba, .steppings =3D 0x0008, .platform_mask =3D = 0xe0, .driver_data =3D 0x4128 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xba, .steppings =3D 0x0100, .platform_mask =3D = 0xe0, .driver_data =3D 0x4128 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xbd, .steppings =3D 0x0002, .platform_mask =3D = 0x80, .driver_data =3D 0x11f }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xbe, .steppings =3D 0x0001, .platform_mask =3D = 0x19, .driver_data =3D 0x1d }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xbf, .steppings =3D 0x0004, .platform_mask =3D = 0x07, .driver_data =3D 0x3a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xbf, .steppings =3D 0x0020, .platform_mask =3D = 0x07, .driver_data =3D 0x3a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xbf, .steppings =3D 0x0040, .platform_mask =3D = 0x07, .driver_data =3D 0x3a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xbf, .steppings =3D 0x0080, .platform_mask =3D = 0x07, .driver_data =3D 0x3a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xc5, .steppings =3D 0x0004, .platform_mask =3D = 0x82, .driver_data =3D 0x118 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xc6, .steppings =3D 0x0004, .platform_mask =3D = 0x82, .driver_data =3D 0x118 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xc6, .steppings =3D 0x0010, .platform_mask =3D = 0x82, .driver_data =3D 0x118 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xca, .steppings =3D 0x0004, .platform_mask =3D = 0x82, .driver_data =3D 0x118 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xcf, .steppings =3D 0x0002, .platform_mask =3D = 0x87, .driver_data =3D 0x210002a9 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0x6, .model =3D 0xcf, .steppings =3D 0x0004, .platform_mask =3D = 0x87, .driver_data =3D 0x210002a9 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x00, .steppings =3D 0x0080, .platform_mask =3D = 0x01, .driver_data =3D 0x12 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x00, .steppings =3D 0x0080, .platform_mask =3D = 0x02, .driver_data =3D 0x8 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x00, .steppings =3D 0x0400, .platform_mask =3D = 0x01, .driver_data =3D 0x13 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x00, .steppings =3D 0x0400, .platform_mask =3D = 0x02, .driver_data =3D 0x15 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x00, .steppings =3D 0x0400, .platform_mask =3D = 0x04, .driver_data =3D 0x14 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x01, .steppings =3D 0x0004, .platform_mask =3D = 0x04, .driver_data =3D 0x2e }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0010, .platform_mask =3D = 0x02, .driver_data =3D 0x1f }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0010, .platform_mask =3D = 0x04, .driver_data =3D 0x1e }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0010, .platform_mask =3D = 0x10, .driver_data =3D 0x21 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0020, .platform_mask =3D = 0x01, .driver_data =3D 0x29 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0020, .platform_mask =3D = 0x02, .driver_data =3D 0x2a }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0020, .platform_mask =3D = 0x04, .driver_data =3D 0x2b }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0020, .platform_mask =3D = 0x10, .driver_data =3D 0x2c }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0040, .platform_mask =3D = 0x02, .driver_data =3D 0x10 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0080, .platform_mask =3D = 0x02, .driver_data =3D 0x38 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0080, .platform_mask =3D = 0x04, .driver_data =3D 0x37 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0080, .platform_mask =3D = 0x08, .driver_data =3D 0x39 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0200, .platform_mask =3D = 0x02, .driver_data =3D 0x2d }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0200, .platform_mask =3D = 0x04, .driver_data =3D 0x2e }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x02, .steppings =3D 0x0200, .platform_mask =3D = 0x08, .driver_data =3D 0x2f }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x03, .steppings =3D 0x0004, .platform_mask =3D = 0x0d, .driver_data =3D 0xa }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x03, .steppings =3D 0x0008, .platform_mask =3D = 0x0d, .driver_data =3D 0xc }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x03, .steppings =3D 0x0010, .platform_mask =3D = 0x1d, .driver_data =3D 0x17 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0002, .platform_mask =3D = 0x02, .driver_data =3D 0x16 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0002, .platform_mask =3D = 0xbd, .driver_data =3D 0x17 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0008, .platform_mask =3D = 0x9d, .driver_data =3D 0x5 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0010, .platform_mask =3D = 0x9d, .driver_data =3D 0x6 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0080, .platform_mask =3D = 0x9d, .driver_data =3D 0x3 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0100, .platform_mask =3D = 0x01, .driver_data =3D 0xc }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0100, .platform_mask =3D = 0x02, .driver_data =3D 0xe }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0100, .platform_mask =3D = 0x5f, .driver_data =3D 0x7 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0200, .platform_mask =3D = 0xbd, .driver_data =3D 0x3 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0400, .platform_mask =3D = 0x5c, .driver_data =3D 0x4 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x04, .steppings =3D 0x0400, .platform_mask =3D = 0x5d, .driver_data =3D 0x2 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x06, .steppings =3D 0x0004, .platform_mask =3D = 0x04, .driver_data =3D 0xf }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x06, .steppings =3D 0x0010, .platform_mask =3D = 0x01, .driver_data =3D 0x2 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x06, .steppings =3D 0x0010, .platform_mask =3D = 0x34, .driver_data =3D 0x4 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x06, .steppings =3D 0x0020, .platform_mask =3D = 0x01, .driver_data =3D 0x8 }, +{ .flags =3D X86_CPU_ID_FLAG_ENTRY_VALID, .vendor =3D X86_VENDOR_INTEL, .f= amily =3D 0xf, .model =3D 0x06, .steppings =3D 0x0100, .platform_mask =3D = 0x22, .driver_data =3D 0x9 }, _