mirror of https://github.com/xemu-project/xemu.git
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>
This commit is contained in:
parent
787f31330e
commit
d5b406d95b
|
@ -1035,7 +1035,7 @@ static const uint8_t ide_cmd_table[0x100] = {
|
||||||
[WIN_IDENTIFY] = ALL_OK,
|
[WIN_IDENTIFY] = ALL_OK,
|
||||||
[WIN_SETFEATURES] = ALL_OK,
|
[WIN_SETFEATURES] = ALL_OK,
|
||||||
[IBM_SENSE_CONDITION] = CFA_OK,
|
[IBM_SENSE_CONDITION] = CFA_OK,
|
||||||
[CFA_WEAR_LEVEL] = CFA_OK,
|
[CFA_WEAR_LEVEL] = HD_CFA_OK,
|
||||||
[WIN_READ_NATIVE_MAX] = ALL_OK,
|
[WIN_READ_NATIVE_MAX] = ALL_OK,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1350,6 +1350,11 @@ void ide_exec_cmd(IDEBus *bus, uint32_t val)
|
||||||
break;
|
break;
|
||||||
case CFA_ERASE_SECTORS:
|
case CFA_ERASE_SECTORS:
|
||||||
case CFA_WEAR_LEVEL:
|
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)
|
if (val == CFA_WEAR_LEVEL)
|
||||||
s->nsector = 0;
|
s->nsector = 0;
|
||||||
if (val == CFA_ERASE_SECTORS)
|
if (val == CFA_ERASE_SECTORS)
|
||||||
|
|
Loading…
Reference in New Issue