提交 4614619e 编写于 作者: J John Snow

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: NJohn Snow <jsnow@redhat.com>
Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
Message-id: 1435767578-32743-3-git-send-email-jsnow@redhat.com
上级 a718978e
...@@ -996,6 +996,7 @@ static void process_ncq_command(AHCIState *s, int port, uint8_t *cmd_fis, ...@@ -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, ...@@ -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 { ...@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册