socsvn commit: r257427 - soc2013/zcore/head/usr.sbin/bhyve
zcore at FreeBSD.org
zcore at FreeBSD.org
Tue Sep 17 15:41:15 UTC 2013
Author: zcore
Date: Tue Sep 17 15:41:15 2013
New Revision: 257427
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=257427
Log:
fix CI clear for NCQ
Modified:
soc2013/zcore/head/usr.sbin/bhyve/pci_ahci.c
Modified: soc2013/zcore/head/usr.sbin/bhyve/pci_ahci.c
==============================================================================
--- soc2013/zcore/head/usr.sbin/bhyve/pci_ahci.c Tue Sep 17 14:23:15 2013 (r257426)
+++ soc2013/zcore/head/usr.sbin/bhyve/pci_ahci.c Tue Sep 17 15:41:15 2013 (r257427)
@@ -256,7 +256,6 @@
if (fis[2] & ATA_S_ERROR)
p->is |= AHCI_P_IX_TFE;
p->tfd = tfd;
- p->ci &= ~(1 << slot);
ahci_write_fis(p, FIS_TYPE_SETDEVBITS, fis);
}
@@ -374,7 +373,7 @@
static void
handle_dma(struct ahci_port *p, int slot, uint8_t *cfis)
{
- int i, err, readop = 1;
+ int i, err, ncq = 0, readop = 1;
uint64_t lba;
uint32_t len;
struct ahci_ioreq *aior;
@@ -398,6 +397,7 @@
len = cfis[11] << 8 | cfis[3];
if (!len)
len = 65536;
+ ncq = 1;
} else if (cfis[2] == ATA_READ_DMA48 || cfis[2] == ATA_WRITE_DMA48) {
lba = ((uint64_t)cfis[10] << 40) |
((uint64_t)cfis[9] << 32) |
@@ -445,6 +445,9 @@
else
err = blockif_write(p->bctx, breq);
assert(err == 0);
+
+ if (ncq)
+ p->ci &= ~(1 << slot);
}
static void
More information about the svn-soc-all
mailing list