socsvn commit: r255450 - soc2013/zcore/head/usr.sbin/bhyve

zcore at FreeBSD.org zcore at FreeBSD.org
Fri Aug 2 14:17:25 UTC 2013


Author: zcore
Date: Fri Aug  2 14:17:25 2013
New Revision: 255450
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=255450

Log:
  only reset necessary port registers during port_reset

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	Fri Aug  2 13:06:49 2013	(r255449)
+++ soc2013/zcore/head/usr.sbin/bhyve/pci_ahci.c	Fri Aug  2 14:17:25 2013	(r255450)
@@ -57,7 +57,7 @@
  */
 static FILE *dbg;
 #define dprintf(format, arg...)	do{fprintf(dbg, format, ##arg);fflush(dbg);}while(0)
-#define DPRINTF(params) printf params
+#define DPRINTF(params) dprintf params
 #define WPRINTF(params) printf params
 
 struct ahci_ioreq {
@@ -211,7 +211,13 @@
 static void
 ahci_port_reset(struct ahci_port *pr)
 {
-	memset(&pr->clb, 0, 17 * sizeof(uint32_t));
+	pr->is = 0;
+	pr->ie = 0;
+	pr->ssts = 0;
+	pr->sctl = 0;
+	pr->serr = 0;
+	pr->sact = 0;
+
 	/* TODO set signature by the device kind */
 	pr->sig = 0x00000101;
 	pr->tfd = 0;
@@ -269,15 +275,11 @@
 {
 	int i;
 	struct pci_ahci_softc *sc;
-	uint64_t clb;
 
 	if (!(p->cmd & AHCI_P_CMD_ST) || !p->ci)
 		return;
 
 	sc = p->pr_sc;
-	clb = (uint64_t)p->clbu << 32 | p->clb;
-	p->cmd_lst = paddr_guest2host(ahci_ctx(sc), clb,
-			AHCI_CL_SIZE * AHCI_MAX_SLOTS);
 
 	for (i = 0; (i < 32) && p->ci; i++) {
 		if (p->ci & (1 << i)) {
@@ -387,6 +389,8 @@
 		ahci_generate_intr(sc);
 		break;
 	case AHCI_P_CMD:
+	{
+		uint64_t clb;
 		p->cmd = value;
 
 		if (!(value & AHCI_P_CMD_ST)) {
@@ -406,8 +410,12 @@
 			p->cmd &= ~AHCI_P_CMD_CLO;
 		}
 
+		clb = (uint64_t)p->clbu << 32 | p->clb;
+		p->cmd_lst = paddr_guest2host(ahci_ctx(sc), clb,
+				AHCI_CL_SIZE * AHCI_MAX_SLOTS);
 		handle_cmd(p);
 		break;
+	}
 	case AHCI_P_TFD:
 	case AHCI_P_SIG:
 	case AHCI_P_SSTS:


More information about the svn-soc-all mailing list