- don't abort command when setting maximum logical head number to 0 (Linux 2.6.x

kernels use this value when LBA48 support is available)
This commit is contained in:
Volker Ruppert 2007-02-27 18:16:20 +00:00
parent 8beb290f67
commit a3b352d4fd

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: harddrv.cc,v 1.194 2006-12-29 11:57:04 vruppert Exp $
// $Id: harddrv.cc,v 1.195 2007-02-27 18:16:20 vruppert Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2002 MandrakeSoft S.A.
@ -164,7 +164,7 @@ void bx_hard_drive_c::init(void)
char ata_name[20];
bx_list_c *base;
BX_DEBUG(("Init $Id: harddrv.cc,v 1.194 2006-12-29 11:57:04 vruppert Exp $"));
BX_DEBUG(("Init $Id: harddrv.cc,v 1.195 2007-02-27 18:16:20 vruppert Exp $"));
for (channel=0; channel<BX_MAX_ATA_CHANNEL; channel++) {
sprintf(ata_name, "ata.%d.resources", channel);
@ -2226,7 +2226,10 @@ void bx_hard_drive_c::write(Bit32u address, Bit32u value, unsigned io_len)
command_aborted(channel, value);
break;
}
if ( BX_SELECTED_CONTROLLER(channel).head_no != (BX_SELECTED_DRIVE(channel).hard_drive->heads-1) ) {
if (BX_SELECTED_CONTROLLER(channel).head_no == 0) {
// Linux 2.6.x kernels use this value and don't like aborting here
BX_ERROR(("ata%d-%d: init drive params: max. logical head number 0 not supported", channel, BX_SLAVE_SELECTED(channel)));
} else if (BX_SELECTED_CONTROLLER(channel).head_no != (BX_SELECTED_DRIVE(channel).hard_drive->heads-1)) {
BX_ERROR(("ata%d-%d: init drive params: max. logical head number %d not supported", channel, BX_SLAVE_SELECTED(channel),
BX_SELECTED_CONTROLLER(channel).head_no));
command_aborted(channel, value);