Allow more IDE power management
PATCH 1/1 Allow more IDE power management
Made the QEMU IDE disk tolerate more power-mgmt commands, specifically:
WIN_SETFEATURE(EN_AAM) - enable automatic acoustic mgmt
WIN_SETFEATURE(DIS_AAM) - disable automatic acoustic mgmt
WIN_STANDBY
WIN_SETIDLE1
WIN_SLEEPNOW1
WIN_STANDBY2
WIN_SETIDLE2
WIN_SLEEPNOW2
WIN_STANDBYNOW2
These are all essentially no-ops, like existing support for EN_RLA (enable read lookahead) and WIN_STANDBYNOW1.
This fixes a crash in the SLES9-SP3 64bit kernel when the powersaved was started (with ACPI or ACM). This guest really only needs EN_AAM, DIS_APM, and WIN_SETIDLE1 support, but the others seemed sensible to include.
I've excluded EN_APM since I'm unsure of what that's agreeing to do. It's probably ok to include.
hw/ide.c +6 -0
@@ -1914,6 +1914,8 @@ static void ide_ioport_write(void *opaqucase 0x67 :/* NOP */ case 0x96 :/* NOP */ case 0x9a :/* NOP */ +case 0x42 :/* enable Automatic Acoustic Mode */ +case 0xc2 :/* disable Automatic Acoustic Mode */ s->status =READY_STAT |SEEK_STAT ;ide_set_irq (s);break ;
@@ -1952,12 +1954,16 @@ static void ide_ioport_write(void *opaqu s->status =READY_STAT ;ide_set_irq (s);break ; +case WIN_STANDBY : +case WIN_STANDBY2 :case WIN_STANDBYNOW1 :case WIN_STANDBYNOW2 :case WIN_IDLEIMMEDIATE :case CFA_IDLEIMMEDIATE :case WIN_SETIDLE1 :case WIN_SETIDLE2 : +case WIN_SLEEPNOW1 : +case WIN_SLEEPNOW2 : s->status =READY_STAT ;ide_set_irq (s);break ;