aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Jones <davej@redhat.com>2013-10-01 16:36:55 -0400
committerIngo Molnar <mingo@kernel.org>2013-10-02 02:02:24 -0400
commite56e57f6613d5ed5c3127419341d1aa989a11971 (patch)
treee20bd4ae1e2ad0e3c7fe09a6aae24f0ed08b2768
parentb5eafc6f07c95e9f3dd047e72737449cb03c9956 (diff)
x86/reboot: Sort reboot DMI quirks by vendor
Grouping them by vendor should make it easier to spot duplicates. Signed-off-by: Dave Jones <davej@fedoraproject.org> Link: http://lkml.kernel.org/r/20131001203655.GA10719@redhat.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--arch/x86/kernel/reboot.c260
1 files changed, 136 insertions, 124 deletions
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index d9333a404685..76925208f50b 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -136,236 +136,248 @@ static int __init set_kbd_reboot(const struct dmi_system_id *d)
136 * This is a single dmi_table handling all reboot quirks. 136 * This is a single dmi_table handling all reboot quirks.
137 */ 137 */
138static struct dmi_system_id __initdata reboot_dmi_table[] = { 138static struct dmi_system_id __initdata reboot_dmi_table[] = {
139 { /* Handle problems with rebooting on Dell E520's */ 139
140 .callback = set_bios_reboot, 140 /* Acer */
141 .ident = "Dell E520", 141 { /* Handle reboot issue on Acer Aspire one */
142 .callback = set_kbd_reboot,
143 .ident = "Acer Aspire One A110",
142 .matches = { 144 .matches = {
143 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 145 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
144 DMI_MATCH(DMI_PRODUCT_NAME, "Dell DM061"), 146 DMI_MATCH(DMI_PRODUCT_NAME, "AOA110"),
145 }, 147 },
146 }, 148 },
147 { /* Handle problems with rebooting on Dell 1300's */ 149
148 .callback = set_bios_reboot, 150 /* Apple */
149 .ident = "Dell PowerEdge 1300", 151 { /* Handle problems with rebooting on Apple MacBook5 */
152 .callback = set_pci_reboot,
153 .ident = "Apple MacBook5",
150 .matches = { 154 .matches = {
151 DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"), 155 DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
152 DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 1300/"), 156 DMI_MATCH(DMI_PRODUCT_NAME, "MacBook5"),
153 }, 157 },
154 }, 158 },
155 { /* Handle problems with rebooting on Dell 300's */ 159 { /* Handle problems with rebooting on Apple MacBookPro5 */
156 .callback = set_bios_reboot, 160 .callback = set_pci_reboot,
157 .ident = "Dell PowerEdge 300", 161 .ident = "Apple MacBookPro5",
158 .matches = { 162 .matches = {
159 DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"), 163 DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
160 DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 300/"), 164 DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5"),
161 }, 165 },
162 }, 166 },
163 { /* Handle problems with rebooting on Dell Optiplex 745's SFF */ 167 { /* Handle problems with rebooting on Apple Macmini3,1 */
164 .callback = set_bios_reboot, 168 .callback = set_pci_reboot,
165 .ident = "Dell OptiPlex 745", 169 .ident = "Apple Macmini3,1",
166 .matches = { 170 .matches = {
167 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 171 DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
168 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"), 172 DMI_MATCH(DMI_PRODUCT_NAME, "Macmini3,1"),
169 }, 173 },
170 }, 174 },
171 { /* Handle problems with rebooting on Dell Optiplex 745's DFF */ 175 { /* Handle problems with rebooting on the iMac9,1. */
172 .callback = set_bios_reboot, 176 .callback = set_pci_reboot,
173 .ident = "Dell OptiPlex 745", 177 .ident = "Apple iMac9,1",
174 .matches = { 178 .matches = {
175 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 179 DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
176 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"), 180 DMI_MATCH(DMI_PRODUCT_NAME, "iMac9,1"),
177 DMI_MATCH(DMI_BOARD_NAME, "0MM599"),
178 }, 181 },
179 }, 182 },
180 { /* Handle problems with rebooting on Dell Optiplex 745 with 0KW626 */ 183
184 /* ASUS */
185 { /* Handle problems with rebooting on ASUS P4S800 */
181 .callback = set_bios_reboot, 186 .callback = set_bios_reboot,
182 .ident = "Dell OptiPlex 745", 187 .ident = "ASUS P4S800",
183 .matches = { 188 .matches = {
184 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 189 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
185 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"), 190 DMI_MATCH(DMI_BOARD_NAME, "P4S800"),
186 DMI_MATCH(DMI_BOARD_NAME, "0KW626"),
187 }, 191 },
188 }, 192 },
189 { /* Handle problems with rebooting on Dell Optiplex 330 with 0KP561 */ 193
194 /* Dell */
195 { /* Handle problems with rebooting on Dell DXP061 */
190 .callback = set_bios_reboot, 196 .callback = set_bios_reboot,
191 .ident = "Dell OptiPlex 330", 197 .ident = "Dell DXP061",
192 .matches = { 198 .matches = {
193 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 199 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
194 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 330"), 200 DMI_MATCH(DMI_PRODUCT_NAME, "Dell DXP061"),
195 DMI_MATCH(DMI_BOARD_NAME, "0KP561"),
196 }, 201 },
197 }, 202 },
198 { /* Handle problems with rebooting on Dell Optiplex 360 with 0T656F */ 203 { /* Handle problems with rebooting on Dell E520's */
199 .callback = set_bios_reboot, 204 .callback = set_bios_reboot,
200 .ident = "Dell OptiPlex 360", 205 .ident = "Dell E520",
201 .matches = { 206 .matches = {
202 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 207 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
203 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 360"), 208 DMI_MATCH(DMI_PRODUCT_NAME, "Dell DM061"),
204 DMI_MATCH(DMI_BOARD_NAME, "0T656F"),
205 }, 209 },
206 }, 210 },
207 { /* Handle problems with rebooting on Dell OptiPlex 760 with 0G919G */ 211 { /* Handle problems with rebooting on the Latitude E5420. */
208 .callback = set_bios_reboot, 212 .callback = set_pci_reboot,
209 .ident = "Dell OptiPlex 760", 213 .ident = "Dell Latitude E5420",
210 .matches = { 214 .matches = {
211 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 215 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
212 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 760"), 216 DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E5420"),
213 DMI_MATCH(DMI_BOARD_NAME, "0G919G"),
214 }, 217 },
215 }, 218 },
216 { /* Handle problems with rebooting on Dell 2400's */ 219 { /* Handle problems with rebooting on the Latitude E6320. */
217 .callback = set_bios_reboot, 220 .callback = set_pci_reboot,
218 .ident = "Dell PowerEdge 2400", 221 .ident = "Dell Latitude E6320",
219 .matches = { 222 .matches = {
220 DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"), 223 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
221 DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 2400"), 224 DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6320"),
222 }, 225 },
223 }, 226 },
224 { /* Handle problems with rebooting on Dell T5400's */ 227 { /* Handle problems with rebooting on the Latitude E6420. */
225 .callback = set_bios_reboot, 228 .callback = set_pci_reboot,
226 .ident = "Dell Precision T5400", 229 .ident = "Dell Latitude E6420",
227 .matches = { 230 .matches = {
228 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 231 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
229 DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation T5400"), 232 DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6420"),
230 }, 233 },
231 }, 234 },
232 { /* Handle problems with rebooting on Dell T7400's */ 235 { /* Handle problems with rebooting on Dell Optiplex 330 with 0KP561 */
233 .callback = set_bios_reboot, 236 .callback = set_bios_reboot,
234 .ident = "Dell Precision T7400", 237 .ident = "Dell OptiPlex 330",
235 .matches = { 238 .matches = {
236 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 239 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
237 DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation T7400"), 240 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 330"),
241 DMI_MATCH(DMI_BOARD_NAME, "0KP561"),
238 }, 242 },
239 }, 243 },
240 { /* Handle problems with rebooting on HP laptops */ 244 { /* Handle problems with rebooting on Dell Optiplex 360 with 0T656F */
241 .callback = set_bios_reboot, 245 .callback = set_bios_reboot,
242 .ident = "HP Compaq Laptop", 246 .ident = "Dell OptiPlex 360",
243 .matches = { 247 .matches = {
244 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), 248 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
245 DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq"), 249 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 360"),
250 DMI_MATCH(DMI_BOARD_NAME, "0T656F"),
246 }, 251 },
247 }, 252 },
248 { /* Handle problems with rebooting on Dell XPS710 */ 253 { /* Handle problems with rebooting on Dell Optiplex 745's SFF */
249 .callback = set_bios_reboot, 254 .callback = set_bios_reboot,
250 .ident = "Dell XPS710", 255 .ident = "Dell OptiPlex 745",
251 .matches = { 256 .matches = {
252 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 257 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
253 DMI_MATCH(DMI_PRODUCT_NAME, "Dell XPS710"), 258 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"),
254 }, 259 },
255 }, 260 },
256 { /* Handle problems with rebooting on Dell DXP061 */ 261 { /* Handle problems with rebooting on Dell Optiplex 745's DFF */
257 .callback = set_bios_reboot, 262 .callback = set_bios_reboot,
258 .ident = "Dell DXP061", 263 .ident = "Dell OptiPlex 745",
259 .matches = { 264 .matches = {
260 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 265 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
261 DMI_MATCH(DMI_PRODUCT_NAME, "Dell DXP061"), 266 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"),
267 DMI_MATCH(DMI_BOARD_NAME, "0MM599"),
262 }, 268 },
263 }, 269 },
264 { /* Handle problems with rebooting on Sony VGN-Z540N */ 270 { /* Handle problems with rebooting on Dell Optiplex 745 with 0KW626 */
265 .callback = set_bios_reboot, 271 .callback = set_bios_reboot,
266 .ident = "Sony VGN-Z540N", 272 .ident = "Dell OptiPlex 745",
267 .matches = { 273 .matches = {
268 DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), 274 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
269 DMI_MATCH(DMI_PRODUCT_NAME, "VGN-Z540N"), 275 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"),
276 DMI_MATCH(DMI_BOARD_NAME, "0KW626"),
270 }, 277 },
271 }, 278 },
272 { /* Handle problems with rebooting on ASUS P4S800 */ 279 { /* Handle problems with rebooting on Dell OptiPlex 760 with 0G919G */
273 .callback = set_bios_reboot, 280 .callback = set_bios_reboot,
274 .ident = "ASUS P4S800", 281 .ident = "Dell OptiPlex 760",
275 .matches = { 282 .matches = {
276 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), 283 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
277 DMI_MATCH(DMI_BOARD_NAME, "P4S800"), 284 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 760"),
285 DMI_MATCH(DMI_BOARD_NAME, "0G919G"),
278 }, 286 },
279 }, 287 },
280 288 { /* Handle problems with rebooting on the OptiPlex 990. */
281 { /* Handle reboot issue on Acer Aspire one */ 289 .callback = set_pci_reboot,
282 .callback = set_kbd_reboot, 290 .ident = "Dell OptiPlex 990",
283 .ident = "Acer Aspire One A110",
284 .matches = { 291 .matches = {
285 DMI_MATCH(DMI_SYS_VENDOR, "Acer"), 292 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
286 DMI_MATCH(DMI_PRODUCT_NAME, "AOA110"), 293 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990"),
287 }, 294 },
288 }, 295 },
289 { /* Handle problems with rebooting on Apple MacBook5 */ 296 { /* Handle problems with rebooting on Dell 300's */
290 .callback = set_pci_reboot, 297 .callback = set_bios_reboot,
291 .ident = "Apple MacBook5", 298 .ident = "Dell PowerEdge 300",
292 .matches = { 299 .matches = {
293 DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), 300 DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
294 DMI_MATCH(DMI_PRODUCT_NAME, "MacBook5"), 301 DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 300/"),
295 }, 302 },
296 }, 303 },
297 { /* Handle problems with rebooting on Apple MacBookPro5 */ 304 { /* Handle problems with rebooting on Dell 1300's */
298 .callback = set_pci_reboot, 305 .callback = set_bios_reboot,
299 .ident = "Apple MacBookPro5", 306 .ident = "Dell PowerEdge 1300",
300 .matches = { 307 .matches = {
301 DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), 308 DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
302 DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro5"), 309 DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 1300/"),
303 }, 310 },
304 }, 311 },
305 { /* Handle problems with rebooting on Apple Macmini3,1 */ 312 { /* Handle problems with rebooting on Dell 2400's */
306 .callback = set_pci_reboot, 313 .callback = set_bios_reboot,
307 .ident = "Apple Macmini3,1", 314 .ident = "Dell PowerEdge 2400",
308 .matches = { 315 .matches = {
309 DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), 316 DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
310 DMI_MATCH(DMI_PRODUCT_NAME, "Macmini3,1"), 317 DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 2400"),
311 }, 318 },
312 }, 319 },
313 { /* Handle problems with rebooting on the iMac9,1. */ 320 { /* Handle problems with rebooting on the Dell PowerEdge C6100. */
314 .callback = set_pci_reboot, 321 .callback = set_pci_reboot,
315 .ident = "Apple iMac9,1", 322 .ident = "Dell PowerEdge C6100",
316 .matches = { 323 .matches = {
317 DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), 324 DMI_MATCH(DMI_SYS_VENDOR, "Dell"),
318 DMI_MATCH(DMI_PRODUCT_NAME, "iMac9,1"), 325 DMI_MATCH(DMI_PRODUCT_NAME, "C6100"),
319 }, 326 },
320 }, 327 },
321 { /* Handle problems with rebooting on the Latitude E6320. */ 328 { /* Handle problems with rebooting on the Precision M6600. */
322 .callback = set_pci_reboot, 329 .callback = set_pci_reboot,
323 .ident = "Dell Latitude E6320", 330 .ident = "Dell Precision M6600",
324 .matches = { 331 .matches = {
325 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 332 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
326 DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6320"), 333 DMI_MATCH(DMI_PRODUCT_NAME, "Precision M6600"),
327 }, 334 },
328 }, 335 },
329 { /* Handle problems with rebooting on the Latitude E5420. */ 336 { /* Handle problems with rebooting on Dell T5400's */
330 .callback = set_pci_reboot, 337 .callback = set_bios_reboot,
331 .ident = "Dell Latitude E5420", 338 .ident = "Dell Precision T5400",
332 .matches = { 339 .matches = {
333 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 340 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
334 DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E5420"), 341 DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation T5400"),
335 }, 342 },
336 }, 343 },
337 { /* Handle problems with rebooting on the Latitude E6420. */ 344 { /* Handle problems with rebooting on Dell T7400's */
338 .callback = set_pci_reboot, 345 .callback = set_bios_reboot,
339 .ident = "Dell Latitude E6420", 346 .ident = "Dell Precision T7400",
340 .matches = { 347 .matches = {
341 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 348 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
342 DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6420"), 349 DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation T7400"),
343 }, 350 },
344 }, 351 },
345 { /* Handle problems with rebooting on the OptiPlex 990. */ 352 { /* Handle problems with rebooting on Dell XPS710 */
346 .callback = set_pci_reboot, 353 .callback = set_bios_reboot,
347 .ident = "Dell OptiPlex 990", 354 .ident = "Dell XPS710",
348 .matches = { 355 .matches = {
349 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 356 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
350 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 990"), 357 DMI_MATCH(DMI_PRODUCT_NAME, "Dell XPS710"),
351 }, 358 },
352 }, 359 },
353 { /* Handle problems with rebooting on the Precision M6600. */ 360
354 .callback = set_pci_reboot, 361 /* Hewlett-Packard */
355 .ident = "Dell Precision M6600", 362 { /* Handle problems with rebooting on HP laptops */
363 .callback = set_bios_reboot,
364 .ident = "HP Compaq Laptop",
356 .matches = { 365 .matches = {
357 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 366 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
358 DMI_MATCH(DMI_PRODUCT_NAME, "Precision M6600"), 367 DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq"),
359 }, 368 },
360 }, 369 },
361 { /* Handle problems with rebooting on the Dell PowerEdge C6100. */ 370
362 .callback = set_pci_reboot, 371 /* Sony */
363 .ident = "Dell PowerEdge C6100", 372 { /* Handle problems with rebooting on Sony VGN-Z540N */
373 .callback = set_bios_reboot,
374 .ident = "Sony VGN-Z540N",
364 .matches = { 375 .matches = {
365 DMI_MATCH(DMI_SYS_VENDOR, "Dell"), 376 DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
366 DMI_MATCH(DMI_PRODUCT_NAME, "C6100"), 377 DMI_MATCH(DMI_PRODUCT_NAME, "VGN-Z540N"),
367 }, 378 },
368 }, 379 },
380
369 { } 381 { }
370}; 382};
371 383