From owner-svn-src-all@freebsd.org Wed Apr 13 03:49:01 2016 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 67DA9B0D7BF; Wed, 13 Apr 2016 03:49:01 +0000 (UTC) (envelope-from sepherosa@gmail.com) Received: from mail-vk0-x242.google.com (mail-vk0-x242.google.com [IPv6:2607:f8b0:400c:c05::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 21A901D2C; Wed, 13 Apr 2016 03:49:01 +0000 (UTC) (envelope-from sepherosa@gmail.com) Received: by mail-vk0-x242.google.com with SMTP id x190so4760018vka.3; Tue, 12 Apr 2016 20:49:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=XPOwoZKNPOPp4iHF9iKNsjve6WiPNhfyxZrU3URH7/o=; b=c/mD72K2KJVm7uVhZMYBiXYE+W75qdqs19ZmV4mEkb1SxcXYGDANBw6IsFop7CIcL3 5qBjtTuKLCXRHx2fCjDe7vuNH93NJwG/5J77DvA/+ZTIJZgsavGGT0wmvOhDeUbxcaDm zu5YN/pe49yADwI5XWU8cZiKy//oQET0LXZtm7NQvxUK8IGbo3zubTSkkgaeublp3rm1 KxE8Lo/+IJ1GUhhp4RfUe/1sK4m5St1+nbYda2qx4l6g0RInp+hfF4bEsxMweVEPHx9g S+gSmmAbRhERNvUi/nIyheGqTfRD/uBk9eyzyZCHDho+CxSenbefzymKBOq5hUUBauyx hUxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=XPOwoZKNPOPp4iHF9iKNsjve6WiPNhfyxZrU3URH7/o=; b=AXJsLgUeokx5+WCi9Z45WDsVBcC+ymYj3vUoXEzB5L1iyDQyfYDgzyxVzmGu6Pykel 8JTJN6hUicUcBgjIDTNaB9M1j2bAZ/V/OclIkMBhoXBn7s+FvUkhEt2GjUMFHG0f/4FV UzKWzGBv7lVJrVuEDYMQqgdJ6O2ikCMvQxsd3BEdbHXt5GltKkGqWqjH3VZbyn6H8iDK pUpicaOJbO/NOZCtufZei9L+drQcE8Op6aE5Oe0pBRcnBrIM6KVebDVuHuW2UGmJysqo 7TKEeC4zgPB5oyxtyrurvy211GHRDYZLSlfV/M3jn72mSUhyd9m30nPbBgcd+uZdmU3A rcKw== X-Gm-Message-State: AOPr4FX7QD7bVQcmglQCKB/xXxU0xxILonVzLl1QhtqUECZOMwqaB599DeAvI/eGVeFI4j1fvxBNj3ZMTw1H0A== MIME-Version: 1.0 X-Received: by 10.159.39.71 with SMTP id a65mr3631483uaa.47.1460519340108; Tue, 12 Apr 2016 20:49:00 -0700 (PDT) Received: by 10.176.64.130 with HTTP; Tue, 12 Apr 2016 20:48:59 -0700 (PDT) In-Reply-To: References: <201604130053.u3D0r4g4016759@repo.freebsd.org> Date: Wed, 13 Apr 2016 11:48:59 +0800 Message-ID: Subject: Re: svn commit: r297898 - head/sys/dev/bxe From: Sepherosa Ziehau To: David Somayajulu Cc: David C Somayajulu , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Apr 2016 03:49:01 -0000 Great! Thanks! On Wed, Apr 13, 2016 at 11:48 AM, David Somayajulu wrote: > Hi Sepherosa, > I just saw it and am taking a look at it. Give me a few minutes and I will get back. > Thanks > David S. > > -----Original Message----- > From: Sepherosa Ziehau [mailto:sepherosa@gmail.com] > Sent: Tuesday, April 12, 2016 8:43 PM > To: David C Somayajulu > Cc: src-committers@freebsd.org; svn-src-all@freebsd.org; svn-src-head@freebsd.org > Subject: Re: svn commit: r297898 - head/sys/dev/bxe > > Hi David, > > BLOGI(sc, "cdu_context i %d paddr %#jx vaddr %p size 0x%zx\n", i, > sc->context[i].vcxt_dma.paddr, sc->context[i].vcxt_dma.vaddr, > sc->context[i].size); > > This breaks i386 building. I think you need to do (uintmax_t)paddr for %jx: > > /usr/freebsd-svn/sys/dev/bxe/bxe.c:18746:13: error: format specifies type 'uintmax_t' (aka 'unsigned long long') but the argument has type 'bus_addr_t' (aka 'unsigned int') [-Werror,-Wformat] > sc->context[i].vcxt_dma.paddr, sc->context[i].vcxt_dma.vaddr, > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > On Wed, Apr 13, 2016 at 8:53 AM, David C Somayajulu wrote: >> Author: davidcs >> Date: Wed Apr 13 00:53:04 2016 >> New Revision: 297898 >> URL: https://svnweb.freebsd.org/changeset/base/297898 >> >> Log: >> 1. modify fwdump (a.k.a grcdump) memory is allocated and freed on as needed >> basis. >> 2. grcdump can be taken at failure points by invoking bxe_grc_dump() when >> trigger_grcdump sysctl flag is set. When grcdump is taken grcdump_done >> sysctl flag is set. >> 3. grcdump_done can be monitored by the user to retrieve the grcdump. >> >> Submitted by:vaishali.kulkarni@qlogic.com >> Approved by:davidcs@freebsd.org >> MFC after:5 days >> >> Modified: >> head/sys/dev/bxe/bxe.c >> head/sys/dev/bxe/bxe.h >> head/sys/dev/bxe/bxe_stats.c >> >> Modified: head/sys/dev/bxe/bxe.c >> ============================================================================== >> --- head/sys/dev/bxe/bxe.c Wed Apr 13 00:30:42 2016 (r297897) >> +++ head/sys/dev/bxe/bxe.c Wed Apr 13 00:53:04 2016 (r297898) >> @@ -672,7 +672,6 @@ static void bxe_handle_fp_tq(void *conte >> >> static int bxe_add_cdev(struct bxe_softc *sc); static void >> bxe_del_cdev(struct bxe_softc *sc); -static int bxe_grc_dump(struct >> bxe_softc *sc); static int bxe_alloc_buf_rings(struct bxe_softc *sc); >> static void bxe_free_buf_rings(struct bxe_softc *sc); >> >> @@ -3449,6 +3448,10 @@ bxe_watchdog(struct bxe_softc *sc, >> } >> >> BLOGE(sc, "TX watchdog timeout on fp[%02d], resetting!\n", >> fp->index); >> + if(sc->trigger_grcdump) { >> + /* taking grcdump */ >> + bxe_grc_dump(sc); >> + } >> >> BXE_FP_TX_UNLOCK(fp); >> >> @@ -15637,30 +15640,6 @@ bxe_sysctl_state(SYSCTL_HANDLER_ARGS) >> } >> >> static int >> -bxe_sysctl_trigger_grcdump(SYSCTL_HANDLER_ARGS) >> -{ >> - struct bxe_softc *sc; >> - int error, result; >> - >> - result = 0; >> - error = sysctl_handle_int(oidp, &result, 0, req); >> - >> - if (error || !req->newptr) { >> - return (error); >> - } >> - >> - if (result == 1) { >> - sc = (struct bxe_softc *)arg1; >> - >> - BLOGI(sc, "... grcdump start ...\n"); >> - bxe_grc_dump(sc); >> - BLOGI(sc, "... grcdump done ...\n"); >> - } >> - >> - return (error); >> -} >> - >> -static int >> bxe_sysctl_eth_stat(SYSCTL_HANDLER_ARGS) >> { >> struct bxe_softc *sc = (struct bxe_softc *)arg1; @@ -15811,14 >> +15790,16 @@ bxe_add_sysctls(struct bxe_softc *sc) >> "debug logging mode"); #endif /* #if >> __FreeBSD_version >= 900000 */ >> >> - SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "trigger_grcdump", >> - CTLTYPE_UINT | CTLFLAG_RW, sc, 0, >> - bxe_sysctl_trigger_grcdump, "IU", >> - "set by driver when a grcdump is needed"); >> + sc->trigger_grcdump = 0; >> + SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "trigger_grcdump", >> + CTLFLAG_RW, &sc->trigger_grcdump, 0, >> + "trigger grcdump should be invoked" >> + " before collecting grcdump"); >> >> + sc->grcdump_started = 0; >> sc->grcdump_done = 0; >> SYSCTL_ADD_UINT(ctx, children, OID_AUTO, "grcdump_done", >> - CTLFLAG_RW, &sc->grcdump_done, 0, >> + CTLFLAG_RD, &sc->grcdump_done, 0, >> "set by driver when grcdump is done"); >> >> sc->rx_budget = bxe_rx_budget; >> @@ -18650,7 +18631,7 @@ bxe_get_preset_regs(struct bxe_softc *sc >> return 0; >> } >> >> -static int >> +int >> bxe_grc_dump(struct bxe_softc *sc) >> { >> int rval = 0; >> @@ -18658,12 +18639,53 @@ bxe_grc_dump(struct bxe_softc *sc) >> uint8_t *buf; >> uint32_t size; >> struct dump_header *d_hdr; >> + uint32_t i; >> + uint32_t reg_val; >> + uint32_t reg_addr; >> + uint32_t cmd_offset; >> + int context_size; >> + int allocated; >> + struct ecore_ilt *ilt = SC_ILT(sc); >> + struct bxe_fastpath *fp; >> + struct ilt_client_info *ilt_cli; >> + int grc_dump_size; >> >> - if (sc->grcdump_done) >> + >> + if (sc->grcdump_done || sc->grcdump_started) >> return (rval); >> >> + sc->grcdump_started = 1; >> + BLOGI(sc, "Started collecting grcdump\n"); >> + >> + grc_dump_size = (bxe_get_total_regs_len32(sc) * sizeof(uint32_t)) + >> + sizeof(struct dump_header); >> + >> + sc->grc_dump = malloc(grc_dump_size, M_DEVBUF, M_NOWAIT); >> + >> + if (sc->grc_dump == NULL) { >> + BLOGW(sc, "Unable to allocate memory for grcdump collection\n"); >> + return(ENOMEM); >> + } >> + >> + >> + >> + /* Disable parity attentions as long as following dump may >> + * cause false alarms by reading never written registers. We >> + * will re-enable parity attentions right after the dump. >> + */ >> + >> + /* Disable parity on path 0 */ >> + bxe_pretend_func(sc, 0); >> + >> ecore_disable_blocks_parity(sc); >> >> + /* Disable parity on path 1 */ >> + bxe_pretend_func(sc, 1); >> + ecore_disable_blocks_parity(sc); >> + >> + /* Return to current function */ >> + bxe_pretend_func(sc, SC_ABS_FUNC(sc)); >> + >> buf = sc->grc_dump; >> d_hdr = sc->grc_dump; >> >> @@ -18695,7 +18717,7 @@ bxe_grc_dump(struct bxe_softc *sc) >> (preset_idx == 11)) >> continue; >> >> - rval = bxe_get_preset_regs(sc, sc->grc_dump, preset_idx); >> + rval = bxe_get_preset_regs(sc, (uint32_t *)buf, preset_idx); >> >> if (rval) >> break; >> @@ -18705,9 +18727,78 @@ bxe_grc_dump(struct bxe_softc *sc) >> buf += size; >> } >> >> + bxe_pretend_func(sc, 0); >> + ecore_clear_blocks_parity(sc); >> + ecore_enable_blocks_parity(sc); >> + >> + bxe_pretend_func(sc, 1); >> ecore_clear_blocks_parity(sc); >> ecore_enable_blocks_parity(sc); >> >> + /* Return to current function */ >> + bxe_pretend_func(sc, SC_ABS_FUNC(sc)); >> + >> + >> + context_size = (sizeof(union cdu_context) * BXE_L2_CID_COUNT(sc)); >> + for (i = 0, allocated = 0; allocated < context_size; i++) { >> + >> + BLOGI(sc, "cdu_context i %d paddr %#jx vaddr %p size 0x%zx\n", i, >> + sc->context[i].vcxt_dma.paddr, sc->context[i].vcxt_dma.vaddr, >> + sc->context[i].size); >> + allocated += sc->context[i].size; >> + } >> + BLOGI(sc, "fw stats start_paddr %#jx end_paddr %#jx vaddr %p size 0x%x\n", >> + (uintmax_t)sc->fw_stats_req_mapping, >> + (uintmax_t)sc->fw_stats_data_mapping, >> + sc->fw_stats_req, (sc->fw_stats_req_size + sc->fw_stats_data_size)); >> + BLOGI(sc, "def_status_block paddr %p vaddr %p size 0x%lx\n", >> + (void *)sc->def_sb_dma.paddr, sc->def_sb, >> + sizeof(struct host_sp_status_block)); >> + BLOGI(sc, "event_queue paddr %#jx vaddr %p size 0x%x\n", >> + sc->eq_dma.paddr, sc->eq_dma.vaddr, BCM_PAGE_SIZE); >> + BLOGI(sc, "slow path paddr %#jx vaddr %p size 0x%lx\n", >> + sc->sp_dma.paddr, sc->sp_dma.vaddr, sizeof(struct bxe_slowpath)); >> + BLOGI(sc, "slow path queue paddr %#jx vaddr %p size 0x%x\n", >> + sc->spq_dma.paddr, sc->spq_dma.vaddr, BCM_PAGE_SIZE); >> + BLOGI(sc, "fw_buf paddr %#jx vaddr %p size 0x%x\n", >> + sc->gz_buf_dma.paddr, sc->gz_buf_dma.vaddr, FW_BUF_SIZE); >> + for (i = 0; i < sc->num_queues; i++) { >> + fp = &sc->fp[i]; >> + BLOGI(sc, "FP status block fp %d paddr %#jx vaddr %p size 0x%lx\n", i, >> + fp->sb_dma.paddr, fp->sb_dma.vaddr, >> + sizeof(union bxe_host_hc_status_block)); >> + BLOGI(sc, "TX BD CHAIN fp %d paddr %#jx vaddr %p size 0x%x\n", i, >> + fp->tx_dma.paddr, fp->tx_dma.vaddr, >> + (BCM_PAGE_SIZE * TX_BD_NUM_PAGES)); >> + BLOGI(sc, "RX BD CHAIN fp %d paddr %#jx vaddr %p size 0x%x\n", i, >> + fp->rx_dma.paddr, fp->rx_dma.vaddr, >> + (BCM_PAGE_SIZE * RX_BD_NUM_PAGES)); >> + BLOGI(sc, "RX RCQ CHAIN fp %d paddr %#jx vaddr %p size 0x%lx\n", i, >> + fp->rcq_dma.paddr, fp->rcq_dma.vaddr, >> + (BCM_PAGE_SIZE * RCQ_NUM_PAGES)); >> + BLOGI(sc, "RX SGE CHAIN fp %d paddr %#jx vaddr %p size 0x%x\n", i, >> + fp->rx_sge_dma.paddr, fp->rx_sge_dma.vaddr, >> + (BCM_PAGE_SIZE * RX_SGE_NUM_PAGES)); >> + } >> + >> + ilt_cli = &ilt->clients[1]; >> + for (i = ilt_cli->start; i <= ilt_cli->end; i++) { >> + BLOGI(sc, "ECORE_ILT paddr %#jx vaddr %p size 0x%x\n", >> + ((struct bxe_dma *)((&ilt->lines[i])->page))->paddr, >> + ((struct bxe_dma *)((&ilt->lines[i])->page))->vaddr, BCM_PAGE_SIZE); >> + } >> + >> + >> + cmd_offset = DMAE_REG_CMD_MEM; >> + for (i = 0; i < 224; i++) { >> + reg_addr = (cmd_offset +(i * 4)); >> + reg_val = REG_RD(sc, reg_addr); >> + BLOGI(sc, "DMAE_REG_CMD_MEM i=%d reg_addr 0x%x reg_val 0x%08x\n",i, >> + reg_addr, reg_val); >> + } >> + >> + >> + BLOGI(sc, "Collection of grcdump done\n"); >> sc->grcdump_done = 1; >> return(rval); >> } >> @@ -18715,21 +18806,10 @@ bxe_grc_dump(struct bxe_softc *sc) static >> int bxe_add_cdev(struct bxe_softc *sc) { >> - int grc_dump_size; >> - >> - grc_dump_size = (bxe_get_total_regs_len32(sc) * sizeof(uint32_t)) + >> - sizeof(struct dump_header); >> - >> - sc->grc_dump = malloc(grc_dump_size, M_DEVBUF, M_NOWAIT); >> - >> - if (sc->grc_dump == NULL) >> - return (-1); >> - >> sc->eeprom = malloc(BXE_EEPROM_MAX_DATA_LEN, M_DEVBUF, M_NOWAIT); >> >> if (sc->eeprom == NULL) { >> BLOGW(sc, "Unable to alloc for eeprom size buffer\n"); >> - free(sc->grc_dump, M_DEVBUF); sc->grc_dump = NULL; >> return (-1); >> } >> >> @@ -18742,11 +18822,8 @@ bxe_add_cdev(struct bxe_softc *sc) >> if_name(sc->ifp)); >> >> if (sc->ioctl_dev == NULL) { >> - >> - free(sc->grc_dump, M_DEVBUF); >> free(sc->eeprom, M_DEVBUF); >> sc->eeprom = NULL; >> - >> return (-1); >> } >> >> @@ -18761,13 +18838,11 @@ bxe_del_cdev(struct bxe_softc *sc) >> if (sc->ioctl_dev != NULL) >> destroy_dev(sc->ioctl_dev); >> >> - if (sc->grc_dump != NULL) >> - free(sc->grc_dump, M_DEVBUF); >> - >> if (sc->eeprom != NULL) { >> free(sc->eeprom, M_DEVBUF); >> sc->eeprom = NULL; >> } >> + sc->ioctl_dev = NULL; >> >> return; >> } >> @@ -18945,15 +19020,26 @@ bxe_eioctl(struct cdev *dev, u_long cmd, >> >> grc_dump_size = (bxe_get_total_regs_len32(sc) * sizeof(uint32_t)) + >> sizeof(struct dump_header); >> - >> - if ((sc->grc_dump == NULL) || (dump->grcdump == NULL) || >> - (dump->grcdump_size < grc_dump_size) || (!sc->grcdump_done)) { >> + if ((!sc->trigger_grcdump) || (dump->grcdump == NULL) || >> + (dump->grcdump_size < grc_dump_size)) { >> rval = EINVAL; >> break; >> } >> - dump->grcdump_dwords = grc_dump_size >> 2; >> - rval = copyout(sc->grc_dump, dump->grcdump, grc_dump_size); >> - sc->grcdump_done = 0; >> + >> + if((sc->trigger_grcdump) && (!sc->grcdump_done) && >> + (!sc->grcdump_started)) { >> + rval = bxe_grc_dump(sc); >> + } >> + >> + if((!rval) && (sc->grcdump_done) && (sc->grcdump_started) && >> + (sc->grc_dump != NULL)) { >> + dump->grcdump_dwords = grc_dump_size >> 2; >> + rval = copyout(sc->grc_dump, dump->grcdump, grc_dump_size); >> + free(sc->grc_dump, M_DEVBUF); >> + sc->grc_dump = NULL; >> + sc->grcdump_started = 0; >> + sc->grcdump_done = 0; >> + } >> >> break; >> >> @@ -18973,6 +19059,7 @@ bxe_eioctl(struct cdev *dev, u_long cmd, >> snprintf(drv_infop->bus_info, BXE_BUS_INFO_LENGTH, "%d:%d:%d", >> sc->pcie_bus, sc->pcie_device, sc->pcie_func); >> break; >> + >> case BXE_DEV_SETTING: >> dev_p = (bxe_dev_setting_t *)data; >> bxe_get_settings(sc, &dev_set); @@ -18991,20 +19078,20 @@ >> bxe_eioctl(struct cdev *dev, u_long cmd, >> reg_p = (bxe_get_regs_t *)data; >> grc_dump_size = reg_p->reg_buf_len; >> >> - if (sc->grc_dump == NULL) { >> - rval = EINVAL; >> - break; >> - } >> - >> - if(!sc->grcdump_done) { >> + if((!sc->grcdump_done) && (!sc->grcdump_started)) { >> bxe_grc_dump(sc); >> } >> - if(sc->grcdump_done) { >> + if((sc->grcdump_done) && (sc->grcdump_started) && >> + (sc->grc_dump != NULL)) { >> rval = copyout(sc->grc_dump, reg_p->reg_buf, >> grc_dump_size); >> + free(sc->grc_dump, M_DEVBUF); >> + sc->grc_dump = NULL; >> + sc->grcdump_started = 0; >> sc->grcdump_done = 0; >> } >> >> break; >> + >> case BXE_RDW_REG: >> reg_rdw_p = (bxe_reg_rdw_t *)data; >> if((reg_rdw_p->reg_cmd == BXE_READ_REG_CMD) && >> >> Modified: head/sys/dev/bxe/bxe.h >> ============================================================================== >> --- head/sys/dev/bxe/bxe.h Wed Apr 13 00:30:42 2016 (r297897) >> +++ head/sys/dev/bxe/bxe.h Wed Apr 13 00:53:04 2016 (r297898) >> @@ -1786,8 +1786,12 @@ struct bxe_softc { >> int panic; >> >> struct cdev *ioctl_dev; >> + >> void *grc_dump; >> - int grcdump_done; >> + unsigned int trigger_grcdump; >> + unsigned int grcdump_done; >> + unsigned int grcdump_started; >> + >> void *eeprom; >> }; /* struct bxe_softc */ >> >> @@ -2293,7 +2297,7 @@ void bxe_dump_mem(struct bxe_softc *sc, >> uint8_t *mem, uint32_t len); void >> bxe_dump_mbuf_data(struct bxe_softc *sc, char *pTag, >> struct mbuf *m, uint8_t contents); >> - >> +extern int bxe_grc_dump(struct bxe_softc *sc); >> >> #if __FreeBSD_version >= 800000 >> #if __FreeBSD_version >= 1000000 >> >> Modified: head/sys/dev/bxe/bxe_stats.c >> ============================================================================== >> --- head/sys/dev/bxe/bxe_stats.c Wed Apr 13 00:30:42 2016 (r297897) >> +++ head/sys/dev/bxe/bxe_stats.c Wed Apr 13 00:53:04 2016 (r297898) >> @@ -234,6 +234,10 @@ bxe_stats_comp(struct bxe_softc *sc) >> while (*stats_comp != DMAE_COMP_VAL) { >> if (!cnt) { >> BLOGE(sc, "Timeout waiting for stats finished\n"); >> + if(sc->trigger_grcdump) { >> + /* taking grcdump */ >> + bxe_grc_dump(sc); >> + } >> break; >> } >> >> @@ -1310,8 +1314,12 @@ bxe_stats_update(struct bxe_softc *sc) >> if (bxe_storm_stats_update(sc)) { >> if (sc->stats_pending++ == 3) { >> if (if_getdrvflags(sc->ifp) & IFF_DRV_RUNNING) { >> - atomic_store_rel_long(&sc->chip_tq_flags, CHIP_TQ_REINIT); >> - taskqueue_enqueue(sc->chip_tq, &sc->chip_tq_task); >> + if(sc->trigger_grcdump) { >> + /* taking grcdump */ >> + bxe_grc_dump(sc); >> + } >> + atomic_store_rel_long(&sc->chip_tq_flags, CHIP_TQ_REINIT); >> + taskqueue_enqueue(sc->chip_tq, >> + &sc->chip_tq_task); >> } >> } >> return; >> _______________________________________________ >> svn-src-all@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/svn-src-all >> To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org" > > > > -- > Tomorrow Will Never Die -- Tomorrow Will Never Die