mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 20:20:55 +07:00
mtip32xx: Handle NCQ commands during the security locked state
Return error for NCQ commands when the drive is in security locked state Signed-off-by: Asai Thambi S P <asamymuthupa@micron.com> Signed-off-by: Selvan Mani <smani@micron.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
1a131458dd
commit
12a166c919
@ -1148,11 +1148,15 @@ static bool mtip_pause_ncq(struct mtip_port *port,
|
||||
reply = port->rxfis + RX_FIS_D2H_REG;
|
||||
task_file_data = readl(port->mmio+PORT_TFDATA);
|
||||
|
||||
if ((task_file_data & 1) || (fis->command == ATA_CMD_SEC_ERASE_UNIT))
|
||||
if (fis->command == ATA_CMD_SEC_ERASE_UNIT)
|
||||
clear_bit(MTIP_DDF_SEC_LOCK_BIT, &port->dd->dd_flag);
|
||||
|
||||
if ((task_file_data & 1))
|
||||
return false;
|
||||
|
||||
if (fis->command == ATA_CMD_SEC_ERASE_PREP) {
|
||||
set_bit(MTIP_PF_SE_ACTIVE_BIT, &port->flags);
|
||||
set_bit(MTIP_DDF_SEC_LOCK_BIT, &port->dd->dd_flag);
|
||||
port->ic_pause_timer = jiffies;
|
||||
return true;
|
||||
} else if ((fis->command == ATA_CMD_DOWNLOAD_MICRO) &&
|
||||
@ -3619,6 +3623,10 @@ static void mtip_make_request(struct request_queue *queue, struct bio *bio)
|
||||
bio_endio(bio, -ENODATA);
|
||||
return;
|
||||
}
|
||||
if (unlikely(test_bit(MTIP_DDF_SEC_LOCK_BIT, &dd->dd_flag))) {
|
||||
bio_endio(bio, -ENODATA);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (unlikely(!bio_has_data(bio))) {
|
||||
|
@ -137,10 +137,12 @@ enum {
|
||||
MTIP_PF_SVC_THD_STOP_BIT = 8,
|
||||
|
||||
/* below are bit numbers in 'dd_flag' defined in driver_data */
|
||||
MTIP_DDF_SEC_LOCK_BIT = 0,
|
||||
MTIP_DDF_REMOVE_PENDING_BIT = 1,
|
||||
MTIP_DDF_OVER_TEMP_BIT = 2,
|
||||
MTIP_DDF_WRITE_PROTECT_BIT = 3,
|
||||
MTIP_DDF_STOP_IO = ((1 << MTIP_DDF_REMOVE_PENDING_BIT) | \
|
||||
(1 << MTIP_DDF_SEC_LOCK_BIT) | \
|
||||
(1 << MTIP_DDF_OVER_TEMP_BIT) | \
|
||||
(1 << MTIP_DDF_WRITE_PROTECT_BIT)),
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user