ide: Stop disks on reboot for laptop which cuts power
My laptop (Acer Travelmate 660) always cuts the power when rebooting which causes the disk to emergency-park it's head. Add a dmi check to stop disk as for shutdown on this laptop. Signed-off-by: Bruno Prémont <bonbons@linux-vserver.org> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
a1f9a89c90
commit
b0aedb04ea
|
@ -7,6 +7,7 @@
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
#include <linux/ide.h>
|
#include <linux/ide.h>
|
||||||
#include <linux/hdreg.h>
|
#include <linux/hdreg.h>
|
||||||
|
#include <linux/dmi.h>
|
||||||
|
|
||||||
#if !defined(CONFIG_DEBUG_BLOCK_EXT_DEVT)
|
#if !defined(CONFIG_DEBUG_BLOCK_EXT_DEVT)
|
||||||
#define IDE_DISK_MINORS (1 << PARTN_BITS)
|
#define IDE_DISK_MINORS (1 << PARTN_BITS)
|
||||||
|
@ -99,6 +100,19 @@ static void ide_gd_resume(ide_drive_t *drive)
|
||||||
(void)drive->disk_ops->get_capacity(drive);
|
(void)drive->disk_ops->get_capacity(drive);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const struct dmi_system_id ide_coldreboot_table[] = {
|
||||||
|
{
|
||||||
|
/* Acer TravelMate 66x cuts power during reboot */
|
||||||
|
.ident = "Acer TravelMate 660",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 660"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{ } /* terminate list */
|
||||||
|
};
|
||||||
|
|
||||||
static void ide_gd_shutdown(ide_drive_t *drive)
|
static void ide_gd_shutdown(ide_drive_t *drive)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_ALPHA
|
#ifdef CONFIG_ALPHA
|
||||||
|
@ -115,7 +129,8 @@ static void ide_gd_shutdown(ide_drive_t *drive)
|
||||||
the disk to expire its write cache. */
|
the disk to expire its write cache. */
|
||||||
if (system_state != SYSTEM_POWER_OFF) {
|
if (system_state != SYSTEM_POWER_OFF) {
|
||||||
#else
|
#else
|
||||||
if (system_state == SYSTEM_RESTART) {
|
if (system_state == SYSTEM_RESTART &&
|
||||||
|
!dmi_check_system(ide_coldreboot_table)) {
|
||||||
#endif
|
#endif
|
||||||
drive->disk_ops->flush(drive);
|
drive->disk_ops->flush(drive);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue