|
57 | 57 | #define X86_CPU_ID_FLAG_ENTRY_VALID BIT(0) |
58 | 58 |
|
59 | 59 | /** |
60 | | - * X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE - Base macro for CPU matching |
| 60 | + * X86_MATCH_CPU - Base macro for CPU matching |
61 | 61 | * @_vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY |
62 | 62 | * The name is expanded to X86_VENDOR_@_vendor |
63 | 63 | * @_family: The family number or X86_FAMILY_ANY |
|
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_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(_vendor, _family, _model, \ |
78 | | - _steppings, _feature, _data) { \ |
79 | | - .vendor = X86_VENDOR_##_vendor, \ |
80 | | - .family = _family, \ |
81 | | - .model = _model, \ |
82 | | - .steppings = _steppings, \ |
83 | | - .feature = _feature, \ |
84 | | - .flags = X86_CPU_ID_FLAG_ENTRY_VALID, \ |
85 | | - .driver_data = (unsigned long) _data \ |
86 | | -} |
87 | | - |
88 | | -#define X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE(_vendor, _family, _model, \ |
89 | | - _steppings, _feature, _data) { \ |
| 77 | +#define X86_MATCH_CPU(_vendor, _family, _model, _steppings, _feature, _data) { \ |
90 | 78 | .vendor = _vendor, \ |
91 | 79 | .family = _family, \ |
92 | 80 | .model = _model, \ |
|
96 | 84 | .driver_data = (unsigned long) _data \ |
97 | 85 | } |
98 | 86 |
|
99 | | -/** |
100 | | - * X86_MATCH_VENDOR_FAM_MODEL_FEATURE - Macro for CPU matching |
101 | | - * @_vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY |
102 | | - * The name is expanded to X86_VENDOR_@_vendor |
103 | | - * @_family: The family number or X86_FAMILY_ANY |
104 | | - * @_model: The model number, model constant or X86_MODEL_ANY |
105 | | - * @_feature: A X86_FEATURE bit or X86_FEATURE_ANY |
106 | | - * @_data: Driver specific data or NULL. The internal storage |
107 | | - * format is unsigned long. The supplied value, pointer |
108 | | - * etc. is casted to unsigned long internally. |
109 | | - * |
110 | | - * The steppings arguments of X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE() is |
111 | | - * set to wildcards. |
112 | | - */ |
113 | | -#define X86_MATCH_VENDOR_FAM_MODEL_FEATURE(vendor, family, model, feature, data) \ |
114 | | - X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(vendor, family, model, \ |
115 | | - X86_STEPPING_ANY, feature, data) |
116 | | - |
117 | 87 | /** |
118 | 88 | * X86_MATCH_VENDOR_FAM_FEATURE - Macro for matching vendor, family and CPU feature |
119 | 89 | * @vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY |
|
123 | 93 | * @data: Driver specific data or NULL. The internal storage |
124 | 94 | * format is unsigned long. The supplied value, pointer |
125 | 95 | * etc. is casted to unsigned long internally. |
126 | | - * |
127 | | - * All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are |
128 | | - * set to wildcards. |
129 | 96 | */ |
130 | | -#define X86_MATCH_VENDOR_FAM_FEATURE(vendor, family, feature, data) \ |
131 | | - X86_MATCH_VENDOR_FAM_MODEL_FEATURE(vendor, family, \ |
132 | | - X86_MODEL_ANY, feature, data) |
| 97 | +#define X86_MATCH_VENDOR_FAM_FEATURE(vendor, family, feature, data) \ |
| 98 | + X86_MATCH_CPU(X86_VENDOR_##vendor, family, X86_MODEL_ANY, \ |
| 99 | + X86_STEPPING_ANY, feature, data) |
133 | 100 |
|
134 | 101 | /** |
135 | 102 | * X86_MATCH_VENDOR_FEATURE - Macro for matching vendor and CPU feature |
|
139 | 106 | * @data: Driver specific data or NULL. The internal storage |
140 | 107 | * format is unsigned long. The supplied value, pointer |
141 | 108 | * etc. is casted to unsigned long internally. |
142 | | - * |
143 | | - * All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are |
144 | | - * set to wildcards. |
145 | 109 | */ |
146 | | -#define X86_MATCH_VENDOR_FEATURE(vendor, feature, data) \ |
147 | | - X86_MATCH_VENDOR_FAM_FEATURE(vendor, X86_FAMILY_ANY, feature, data) |
| 110 | +#define X86_MATCH_VENDOR_FEATURE(vendor, feature, data) \ |
| 111 | + X86_MATCH_CPU(X86_VENDOR_##vendor, X86_FAMILY_ANY, X86_MODEL_ANY, \ |
| 112 | + X86_STEPPING_ANY, feature, data) |
148 | 113 |
|
149 | 114 | /** |
150 | 115 | * X86_MATCH_FEATURE - Macro for matching a CPU feature |
151 | 116 | * @feature: A X86_FEATURE bit |
152 | 117 | * @data: Driver specific data or NULL. The internal storage |
153 | 118 | * format is unsigned long. The supplied value, pointer |
154 | 119 | * etc. is casted to unsigned long internally. |
155 | | - * |
156 | | - * All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are |
157 | | - * set to wildcards. |
158 | 120 | */ |
159 | | -#define X86_MATCH_FEATURE(feature, data) \ |
160 | | - X86_MATCH_VENDOR_FEATURE(ANY, feature, data) |
| 121 | +#define X86_MATCH_FEATURE(feature, data) \ |
| 122 | + X86_MATCH_CPU(X86_VENDOR_ANY, X86_FAMILY_ANY, X86_MODEL_ANY, \ |
| 123 | + X86_STEPPING_ANY, feature, data) |
161 | 124 |
|
162 | 125 | /** |
163 | 126 | * X86_MATCH_VENDOR_FAM_MODEL - Match vendor, family and model |
|
168 | 131 | * @data: Driver specific data or NULL. The internal storage |
169 | 132 | * format is unsigned long. The supplied value, pointer |
170 | 133 | * etc. is casted to unsigned long internally. |
171 | | - * |
172 | | - * All other missing arguments of X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are |
173 | | - * set to wildcards. |
174 | 134 | */ |
175 | | -#define X86_MATCH_VENDOR_FAM_MODEL(vendor, family, model, data) \ |
176 | | - X86_MATCH_VENDOR_FAM_MODEL_FEATURE(vendor, family, model, \ |
177 | | - X86_FEATURE_ANY, data) |
| 135 | +#define X86_MATCH_VENDOR_FAM_MODEL(vendor, family, model, data) \ |
| 136 | + X86_MATCH_CPU(X86_VENDOR_##vendor, family, model, X86_STEPPING_ANY, \ |
| 137 | + X86_FEATURE_ANY, data) |
178 | 138 |
|
179 | 139 | /** |
180 | 140 | * X86_MATCH_VENDOR_FAM - Match vendor and family |
|
184 | 144 | * @data: Driver specific data or NULL. The internal storage |
185 | 145 | * format is unsigned long. The supplied value, pointer |
186 | 146 | * etc. is casted to unsigned long internally. |
187 | | - * |
188 | | - * All other missing arguments to X86_MATCH_VENDOR_FAM_MODEL_FEATURE() are |
189 | | - * set of wildcards. |
190 | 147 | */ |
191 | | -#define X86_MATCH_VENDOR_FAM(vendor, family, data) \ |
192 | | - X86_MATCH_VENDOR_FAM_MODEL(vendor, family, X86_MODEL_ANY, data) |
| 148 | +#define X86_MATCH_VENDOR_FAM(vendor, family, data) \ |
| 149 | + X86_MATCH_CPU(X86_VENDOR_##vendor, family, X86_MODEL_ANY, \ |
| 150 | + X86_STEPPING_ANY, X86_FEATURE_ANY, data) |
193 | 151 |
|
194 | 152 | /** |
195 | 153 | * X86_MATCH_VFM - Match encoded vendor/family/model |
196 | 154 | * @vfm: Encoded 8-bits each for vendor, family, model |
197 | 155 | * @data: Driver specific data or NULL. The internal storage |
198 | 156 | * format is unsigned long. The supplied value, pointer |
199 | 157 | * etc. is cast to unsigned long internally. |
200 | | - * |
201 | | - * Stepping and feature are set to wildcards |
202 | 158 | */ |
203 | | -#define X86_MATCH_VFM(vfm, data) \ |
204 | | - X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE( \ |
205 | | - VFM_VENDOR(vfm), \ |
206 | | - VFM_FAMILY(vfm), \ |
207 | | - VFM_MODEL(vfm), \ |
208 | | - X86_STEPPING_ANY, X86_FEATURE_ANY, data) |
| 159 | +#define X86_MATCH_VFM(vfm, data) \ |
| 160 | + X86_MATCH_CPU(VFM_VENDOR(vfm), VFM_FAMILY(vfm), VFM_MODEL(vfm), \ |
| 161 | + X86_STEPPING_ANY, X86_FEATURE_ANY, data) |
209 | 162 |
|
210 | 163 | #define __X86_STEPPINGS(mins, maxs) GENMASK(maxs, mins) |
211 | 164 | /** |
|
217 | 170 | * @data: Driver specific data or NULL. The internal storage |
218 | 171 | * format is unsigned long. The supplied value, pointer |
219 | 172 | * etc. is cast to unsigned long internally. |
220 | | - * |
221 | | - * feature is set to wildcard |
222 | 173 | */ |
223 | | -#define X86_MATCH_VFM_STEPS(vfm, min_step, max_step, data) \ |
224 | | - X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE( \ |
225 | | - VFM_VENDOR(vfm), \ |
226 | | - VFM_FAMILY(vfm), \ |
227 | | - VFM_MODEL(vfm), \ |
228 | | - __X86_STEPPINGS(min_step, max_step), \ |
229 | | - X86_FEATURE_ANY, data) |
| 174 | +#define X86_MATCH_VFM_STEPS(vfm, min_step, max_step, data) \ |
| 175 | + X86_MATCH_CPU(VFM_VENDOR(vfm), VFM_FAMILY(vfm), VFM_MODEL(vfm), \ |
| 176 | + __X86_STEPPINGS(min_step, max_step), X86_FEATURE_ANY, data) |
230 | 177 |
|
231 | 178 | /** |
232 | 179 | * X86_MATCH_VFM_FEATURE - Match encoded vendor/family/model/feature |
|
235 | 182 | * @data: Driver specific data or NULL. The internal storage |
236 | 183 | * format is unsigned long. The supplied value, pointer |
237 | 184 | * etc. is cast to unsigned long internally. |
238 | | - * |
239 | | - * Steppings is set to wildcard |
240 | 185 | */ |
241 | | -#define X86_MATCH_VFM_FEATURE(vfm, feature, data) \ |
242 | | - X86_MATCH_VENDORID_FAM_MODEL_STEPPINGS_FEATURE( \ |
243 | | - VFM_VENDOR(vfm), \ |
244 | | - VFM_FAMILY(vfm), \ |
245 | | - VFM_MODEL(vfm), \ |
246 | | - X86_STEPPING_ANY, feature, data) |
| 186 | +#define X86_MATCH_VFM_FEATURE(vfm, feature, data) \ |
| 187 | + X86_MATCH_CPU(VFM_VENDOR(vfm), VFM_FAMILY(vfm), VFM_MODEL(vfm), \ |
| 188 | + X86_STEPPING_ANY, feature, data) |
247 | 189 |
|
248 | 190 | /* |
249 | 191 | * Match specific microcode revisions. |
|
0 commit comments