From owner-svn-soc-all@FreeBSD.ORG Fri Aug 2 14:17:25 2013 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B0F085A9 for ; Fri, 2 Aug 2013 14:17:25 +0000 (UTC) (envelope-from zcore@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9D2A628BD for ; Fri, 2 Aug 2013 14:17:25 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.7/8.14.7) with ESMTP id r72EHP2D072702 for ; Fri, 2 Aug 2013 14:17:25 GMT (envelope-from zcore@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.7/8.14.6/Submit) id r72EHPQ4072700 for svn-soc-all@FreeBSD.org; Fri, 2 Aug 2013 14:17:25 GMT (envelope-from zcore@FreeBSD.org) Date: Fri, 2 Aug 2013 14:17:25 GMT Message-Id: <201308021417.r72EHPQ4072700@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to zcore@FreeBSD.org using -f From: zcore@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r255450 - soc2013/zcore/head/usr.sbin/bhyve MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Aug 2013 14:17:25 -0000 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: