Line
Link Here
|
0 |
-- a/arch/x86/kernel/acpi/boot.c |
0 |
++ b/arch/x86/kernel/acpi/boot.c |
Lines 1349-1354
static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
Link Here
|
1349 |
} |
1349 |
} |
1350 |
|
1350 |
|
1351 |
/* |
1351 |
/* |
|
|
1352 |
* Enable A20 line using KBC even if it's already enabled using other method. |
1353 |
* This is needed for some MSI laptops to resume from S3. |
1354 |
*/ |
1355 |
static int __init a20_enable_kbc(const struct dmi_system_id *d) |
1356 |
{ |
1357 |
printk(KERN_NOTICE "%s detected: enabling A20 using KBC\n", d->ident); |
1358 |
outb(0xd1, 0x64); /* Command write */ |
1359 |
outb(0xdf, 0x60); /* A20 on */ |
1360 |
outb(0xff, 0x64); /* Null command, but UHCI wants it */ |
1361 |
|
1362 |
return 0; |
1363 |
} |
1364 |
|
1365 |
/* |
1352 |
* If your system is blacklisted here, but you find that acpi=force |
1366 |
* If your system is blacklisted here, but you find that acpi=force |
1353 |
* works for you, please contact linux-acpi@vger.kernel.org |
1367 |
* works for you, please contact linux-acpi@vger.kernel.org |
1354 |
*/ |
1368 |
*/ |
Lines 1423-1428
static struct dmi_system_id __initdata acpi_dmi_table[] = {
Link Here
|
1423 |
DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), |
1437 |
DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), |
1424 |
}, |
1438 |
}, |
1425 |
}, |
1439 |
}, |
|
|
1440 |
/* |
1441 |
* Some MSI laptop BIOSes are broken - INT 15h code uses port 92h to |
1442 |
* enable A20 line but resume code assumes that KBC was used. |
1443 |
* The laptop will not resume from S3 otherwise but powers off |
1444 |
* after a while and then powers on again stuck with a blank screen. |
1445 |
*/ |
1446 |
{ |
1447 |
.callback = a20_enable_kbc, |
1448 |
.ident = "MSI EX600 Laptop", |
1449 |
.matches = { |
1450 |
DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), |
1451 |
DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook EX600"), |
1452 |
}, |
1453 |
}, |
1454 |
{ |
1455 |
.callback = a20_enable_kbc, |
1456 |
.ident = "MSI EX700 Laptop", |
1457 |
.matches = { |
1458 |
DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), |
1459 |
DMI_MATCH(DMI_PRODUCT_NAME, "EX700"), |
1460 |
}, |
1461 |
}, |
1462 |
{ |
1463 |
.callback = a20_enable_kbc, |
1464 |
.ident = "MSI GX700 Laptop", |
1465 |
.matches = { |
1466 |
DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), |
1467 |
DMI_MATCH(DMI_PRODUCT_NAME, "GX700"), |
1468 |
}, |
1469 |
}, |
1470 |
{ |
1471 |
.callback = a20_enable_kbc, |
1472 |
.ident = "MSI VR201 Laptop", |
1473 |
.matches = { |
1474 |
DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), |
1475 |
DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook VR201"), |
1476 |
}, |
1477 |
}, |
1478 |
{ |
1479 |
.callback = a20_enable_kbc, |
1480 |
.ident = "MSI VR601 Laptop", |
1481 |
.matches = { |
1482 |
DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), |
1483 |
DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook VR601"), |
1484 |
}, |
1485 |
}, |
1486 |
{ |
1487 |
.callback = a20_enable_kbc, |
1488 |
.ident = "MSI PR200 Laptop", |
1489 |
.matches = { |
1490 |
DMI_MATCH(DMI_SYS_VENDOR, "Micro-Star International"), |
1491 |
DMI_MATCH(DMI_PRODUCT_NAME, "MSI Notebook PR200"), |
1492 |
}, |
1493 |
}, |
1426 |
{} |
1494 |
{} |
1427 |
}; |
1495 |
}; |
1428 |
|
1496 |
|