ahci: stash ncq command
For migration and werror=stop/rerror=stop resume purposes, it will be convenient to have the command handy inside of ncq_tfs. Eventually, we'd like to avoid reading from the FIS entirely after the initial read, so this is a byte (hah!) sized step in that direction. Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 1435767578-32743-3-git-send-email-jsnow@redhat.com
This commit is contained in:
parent
a718978ed5
commit
4614619ee4
@ -996,6 +996,7 @@ static void process_ncq_command(AHCIState *s, int port, uint8_t *cmd_fis,
|
|||||||
ncq_tfs->used = 1;
|
ncq_tfs->used = 1;
|
||||||
ncq_tfs->drive = ad;
|
ncq_tfs->drive = ad;
|
||||||
ncq_tfs->slot = slot;
|
ncq_tfs->slot = slot;
|
||||||
|
ncq_tfs->cmd = ncq_fis->command;
|
||||||
ncq_tfs->lba = ((uint64_t)ncq_fis->lba5 << 40) |
|
ncq_tfs->lba = ((uint64_t)ncq_fis->lba5 << 40) |
|
||||||
((uint64_t)ncq_fis->lba4 << 32) |
|
((uint64_t)ncq_fis->lba4 << 32) |
|
||||||
((uint64_t)ncq_fis->lba3 << 24) |
|
((uint64_t)ncq_fis->lba3 << 24) |
|
||||||
@ -1047,7 +1048,7 @@ static void process_ncq_command(AHCIState *s, int port, uint8_t *cmd_fis,
|
|||||||
ncq_tfs->lba, ncq_tfs->lba + ncq_tfs->sector_count - 1,
|
ncq_tfs->lba, ncq_tfs->lba + ncq_tfs->sector_count - 1,
|
||||||
ide_state->nb_sectors - 1);
|
ide_state->nb_sectors - 1);
|
||||||
|
|
||||||
switch(ncq_fis->command) {
|
switch (ncq_tfs->cmd) {
|
||||||
case READ_FPDMA_QUEUED:
|
case READ_FPDMA_QUEUED:
|
||||||
DPRINTF(port, "NCQ reading %d sectors from LBA %"PRId64", "
|
DPRINTF(port, "NCQ reading %d sectors from LBA %"PRId64", "
|
||||||
"tag %d\n",
|
"tag %d\n",
|
||||||
|
@ -259,6 +259,7 @@ typedef struct NCQTransferState {
|
|||||||
uint16_t sector_count;
|
uint16_t sector_count;
|
||||||
uint64_t lba;
|
uint64_t lba;
|
||||||
uint8_t tag;
|
uint8_t tag;
|
||||||
|
uint8_t cmd;
|
||||||
int slot;
|
int slot;
|
||||||
int used;
|
int used;
|
||||||
} NCQTransferState;
|
} NCQTransferState;
|
||||||
|
Loading…
Reference in New Issue
Block a user