Date: Fri, 2 Aug 2013 14:17:25 GMT From: zcore@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r255450 - soc2013/zcore/head/usr.sbin/bhyve Message-ID: <201308021417.r72EHPQ4072700@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308021417.r72EHPQ4072700>