|
74 | 74 | * into another macro at the usage site for good reasons, then please
|
75 | 75 | * start this local macro with X86_MATCH to allow easy grepping.
|
76 | 76 | */
|
77 |
| -#define X86_MATCH_CPU(_vendor, _family, _model, _steppings, _feature, _data) { \ |
| 77 | +#define X86_MATCH_CPU(_vendor, _family, _model, _steppings, _feature, _type, _data) { \ |
78 | 78 | .vendor = _vendor, \
|
79 | 79 | .family = _family, \
|
80 | 80 | .model = _model, \
|
81 | 81 | .steppings = _steppings, \
|
82 | 82 | .feature = _feature, \
|
83 | 83 | .flags = X86_CPU_ID_FLAG_ENTRY_VALID, \
|
| 84 | + .type = _type, \ |
84 | 85 | .driver_data = (unsigned long) _data \
|
85 | 86 | }
|
86 | 87 |
|
|
96 | 97 | */
|
97 | 98 | #define X86_MATCH_VENDOR_FAM_FEATURE(vendor, family, feature, data) \
|
98 | 99 | X86_MATCH_CPU(X86_VENDOR_##vendor, family, X86_MODEL_ANY, \
|
99 |
| - X86_STEPPING_ANY, feature, data) |
| 100 | + X86_STEPPING_ANY, feature, X86_CPU_TYPE_ANY, data) |
100 | 101 |
|
101 | 102 | /**
|
102 | 103 | * X86_MATCH_VENDOR_FEATURE - Macro for matching vendor and CPU feature
|
|
109 | 110 | */
|
110 | 111 | #define X86_MATCH_VENDOR_FEATURE(vendor, feature, data) \
|
111 | 112 | X86_MATCH_CPU(X86_VENDOR_##vendor, X86_FAMILY_ANY, X86_MODEL_ANY, \
|
112 |
| - X86_STEPPING_ANY, feature, data) |
| 113 | + X86_STEPPING_ANY, feature, X86_CPU_TYPE_ANY, data) |
113 | 114 |
|
114 | 115 | /**
|
115 | 116 | * X86_MATCH_FEATURE - Macro for matching a CPU feature
|
|
120 | 121 | */
|
121 | 122 | #define X86_MATCH_FEATURE(feature, data) \
|
122 | 123 | X86_MATCH_CPU(X86_VENDOR_ANY, X86_FAMILY_ANY, X86_MODEL_ANY, \
|
123 |
| - X86_STEPPING_ANY, feature, data) |
| 124 | + X86_STEPPING_ANY, feature, X86_CPU_TYPE_ANY, data) |
124 | 125 |
|
125 | 126 | /**
|
126 | 127 | * X86_MATCH_VENDOR_FAM_MODEL - Match vendor, family and model
|
|
134 | 135 | */
|
135 | 136 | #define X86_MATCH_VENDOR_FAM_MODEL(vendor, family, model, data) \
|
136 | 137 | X86_MATCH_CPU(X86_VENDOR_##vendor, family, model, X86_STEPPING_ANY, \
|
137 |
| - X86_FEATURE_ANY, data) |
| 138 | + X86_FEATURE_ANY, X86_CPU_TYPE_ANY, data) |
138 | 139 |
|
139 | 140 | /**
|
140 | 141 | * X86_MATCH_VENDOR_FAM - Match vendor and family
|
|
147 | 148 | */
|
148 | 149 | #define X86_MATCH_VENDOR_FAM(vendor, family, data) \
|
149 | 150 | X86_MATCH_CPU(X86_VENDOR_##vendor, family, X86_MODEL_ANY, \
|
150 |
| - X86_STEPPING_ANY, X86_FEATURE_ANY, data) |
| 151 | + X86_STEPPING_ANY, X86_FEATURE_ANY, X86_CPU_TYPE_ANY, data) |
151 | 152 |
|
152 | 153 | /**
|
153 | 154 | * X86_MATCH_INTEL_FAM6_MODEL - Match vendor INTEL, family 6 and model
|
|
178 | 179 | */
|
179 | 180 | #define X86_MATCH_VFM(vfm, data) \
|
180 | 181 | X86_MATCH_CPU(VFM_VENDOR(vfm), VFM_FAMILY(vfm), VFM_MODEL(vfm), \
|
181 |
| - X86_STEPPING_ANY, X86_FEATURE_ANY, data) |
| 182 | + X86_STEPPING_ANY, X86_FEATURE_ANY, X86_CPU_TYPE_ANY, data) |
182 | 183 |
|
183 | 184 | #define __X86_STEPPINGS(mins, maxs) GENMASK(maxs, mins)
|
184 | 185 | /**
|
|
193 | 194 | */
|
194 | 195 | #define X86_MATCH_VFM_STEPS(vfm, min_step, max_step, data) \
|
195 | 196 | X86_MATCH_CPU(VFM_VENDOR(vfm), VFM_FAMILY(vfm), VFM_MODEL(vfm), \
|
196 |
| - __X86_STEPPINGS(min_step, max_step), X86_FEATURE_ANY, data) |
| 197 | + __X86_STEPPINGS(min_step, max_step), X86_FEATURE_ANY, \ |
| 198 | + X86_CPU_TYPE_ANY, data) |
197 | 199 |
|
198 | 200 | /**
|
199 | 201 | * X86_MATCH_VFM_FEATURE - Match encoded vendor/family/model/feature
|
|
205 | 207 | */
|
206 | 208 | #define X86_MATCH_VFM_FEATURE(vfm, feature, data) \
|
207 | 209 | X86_MATCH_CPU(VFM_VENDOR(vfm), VFM_FAMILY(vfm), VFM_MODEL(vfm), \
|
208 |
| - X86_STEPPING_ANY, feature, data) |
| 210 | + X86_STEPPING_ANY, feature, X86_CPU_TYPE_ANY, data) |
| 211 | + |
| 212 | +/** |
| 213 | + * X86_MATCH_VFM_CPU_TYPE - Match encoded vendor/family/model/type |
| 214 | + * @vfm: Encoded 8-bits each for vendor, family, model |
| 215 | + * @type: CPU type e.g. P-core, E-core |
| 216 | + * @data: Driver specific data or NULL. The internal storage |
| 217 | + * format is unsigned long. The supplied value, pointer |
| 218 | + * etc. is cast to unsigned long internally. |
| 219 | + */ |
| 220 | +#define X86_MATCH_VFM_CPU_TYPE(vfm, type, data) \ |
| 221 | + X86_MATCH_CPU(VFM_VENDOR(vfm), VFM_FAMILY(vfm), VFM_MODEL(vfm), \ |
| 222 | + X86_STEPPING_ANY, X86_FEATURE_ANY, type, data) |
209 | 223 |
|
210 | 224 | /*
|
211 | 225 | * Match specific microcode revisions.
|
|
0 commit comments