summaryrefslogtreecommitdiff
path: root/hw/ide/core.c
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2012-04-26 12:45:07 +0200
committerKevin Wolf <kwolf@redhat.com>2012-05-02 18:47:08 +0200
commitd5b406d95b4259baf622f73e1ffad6ee144633b8 (patch)
treeaba90f8e4133a327171bf699ce715155abc30137 /hw/ide/core.c
parent787f31330eb51ef7621d7c316b90262c7bb5d6d3 (diff)
downloadqemu-d5b406d95b4259baf622f73e1ffad6ee144633b8.tar.gz
ATA: Allow WIN_SECURITY_FREEZE_LOCK as nop
When using Windows 8 with an AHCI disk drive, it issues a blue screen. The reason is that WIN_SECURITY_FREEZE_LOCK / CFA_WEAR_LEVEL is not supported by our ATA implementation, but Windows expects it to be there. Since without security stuff implemented, the lock would be a nop anyway and CFA_WEAR_LEVEL already is treated as a nop, let's just allow the cmd for HD drives as well. That way Windows is happy. Signed-off-by: Alexander Graf <agraf@suse.de> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'hw/ide/core.c')
-rw-r--r--hw/ide/core.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/hw/ide/core.c b/hw/ide/core.c
index a5216a6aac..9785d5f713 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -1035,7 +1035,7 @@ static const uint8_t ide_cmd_table[0x100] = {
[WIN_IDENTIFY] = ALL_OK,
[WIN_SETFEATURES] = ALL_OK,
[IBM_SENSE_CONDITION] = CFA_OK,
- [CFA_WEAR_LEVEL] = CFA_OK,
+ [CFA_WEAR_LEVEL] = HD_CFA_OK,
[WIN_READ_NATIVE_MAX] = ALL_OK,
};
@@ -1350,6 +1350,11 @@ void ide_exec_cmd(IDEBus *bus, uint32_t val)
break;
case CFA_ERASE_SECTORS:
case CFA_WEAR_LEVEL:
+#if 0
+ /* This one has the same ID as CFA_WEAR_LEVEL and is required for
+ Windows 8 to work with AHCI */
+ case WIN_SECURITY_FREEZE_LOCK:
+#endif
if (val == CFA_WEAR_LEVEL)
s->nsector = 0;
if (val == CFA_ERASE_SECTORS)