aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorTycho Nightingale <tychon@FreeBSD.org>2014-11-03 12:55:31 +0000
committerTycho Nightingale <tychon@FreeBSD.org>2014-11-03 12:55:31 +0000
commit26bf96112bd57332d3620825200529a8d027b8d8 (patch)
tree4358453a6123acd76ec8c746dbb70ad3a415457a /usr.sbin
parenta0cc5254d9ea894686f0dda5765871ca73618e0a (diff)
downloadsrc-26bf96112bd57332d3620825200529a8d027b8d8.tar.gz
src-26bf96112bd57332d3620825200529a8d027b8d8.zip
If the start bit, PxCMD.ST, is cleared and nothing is in-flight then
PxCI, PxSACT, PxCMD.CCS and PxCMD.CR should be 0. Reviewed by: grehan
Notes
Notes: svn path=/head/; revision=274045
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/bhyve/pci_ahci.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/usr.sbin/bhyve/pci_ahci.c b/usr.sbin/bhyve/pci_ahci.c
index 42aa0b3e552c..ab408541e105 100644
--- a/usr.sbin/bhyve/pci_ahci.c
+++ b/usr.sbin/bhyve/pci_ahci.c
@@ -367,11 +367,15 @@ ahci_check_stopped(struct ahci_port *p)
{
/*
* If we are no longer processing the command list and nothing
- * is in-flight, clear the running bit.
+ * is in-flight, clear the running bit, the current command
+ * slot, the command issue and active bits.
*/
if (!(p->cmd & AHCI_P_CMD_ST)) {
- if (p->pending == 0)
+ if (p->pending == 0) {
p->cmd &= ~(AHCI_P_CMD_CR | AHCI_P_CMD_CCS_MASK);
+ p->ci = 0;
+ p->sact = 0;
+ }
}
}