mirror of
https://github.com/qemu/qemu.git
synced 2024-11-28 22:33:36 +08:00
hw/ide/core: Clear LBA and drive bits for EXECUTE DEVICE DIAGNOSTIC
Prior to this patch, cmd_exec_dev_diagnostic relied upon ide_set_signature to clear the device register. While the preservation of the drive bit by ide_set_signature is necessary for the DEVICE RESET, IDENTIFY DEVICE, and READ SECTOR commands, ATA/ATAPI-6 specifies that "DEV shall be cleared to zero" for EXECUTE DEVICE DIAGNOSTIC. This deviation was uncovered by the ATACT Device Testing Program written by Hale Landis. Signed-off-by: Lev Kujawski <lkujaw@member.fsf.org> Message-Id: <20220707031140.158958-3-lkujaw@member.fsf.org> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
ecfcf71314
commit
3195c9e6ab
@ -1704,8 +1704,14 @@ static bool cmd_identify_packet(IDEState *s, uint8_t cmd)
|
||||
return false;
|
||||
}
|
||||
|
||||
/* EXECUTE DEVICE DIAGNOSTIC */
|
||||
static bool cmd_exec_dev_diagnostic(IDEState *s, uint8_t cmd)
|
||||
{
|
||||
/*
|
||||
* Clear the device register per the ATA (v6) specification,
|
||||
* because ide_set_signature does not clear LBA or drive bits.
|
||||
*/
|
||||
s->select = (ATA_DEV_ALWAYS_ON);
|
||||
ide_set_signature(s);
|
||||
|
||||
if (s->drive_kind == IDE_CD) {
|
||||
|
Loading…
Reference in New Issue
Block a user