RE: svn commit: r297898 - head/sys/dev/bxe
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:sepher...@gmail.com] Sent: Tuesday, April 12, 2016 8:43 PM To: David C Somayajulu <davi...@freebsd.org> Cc: src-committ...@freebsd.org; svn-src-...@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 <davi...@freebsd.org> 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.kulka...@qlogic.com > Approved by:davi...@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, , 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 >= 90 */ > > -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, >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, >grcdump_done, 0, > + CTLFLAG_RD, >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 i
RE: svn commit: r297898 - head/sys/dev/bxe
HI Sepherosa, I have checked in the fix. https://svnweb.freebsd.org/changeset/base/297909 Apologies for the screw up earlier. Sorry for the inconvenience. Cheers David S. -Original Message- From: Sepherosa Ziehau [mailto:sepher...@gmail.com] Sent: Tuesday, April 12, 2016 8:49 PM To: David Somayajulu <david.somayaj...@qlogic.com> Cc: David C Somayajulu <davi...@freebsd.org>; src-committ...@freebsd.org; svn-src-...@freebsd.org; svn-src-head@freebsd.org Subject: Re: svn commit: r297898 - head/sys/dev/bxe Great! Thanks! On Wed, Apr 13, 2016 at 11:48 AM, David Somayajulu <david.somayaj...@qlogic.com> 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:sepher...@gmail.com] > Sent: Tuesday, April 12, 2016 8:43 PM > To: David C Somayajulu <davi...@freebsd.org> > Cc: src-committ...@freebsd.org; svn-src-...@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 <davi...@freebsd.org> > 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.kulka...@qlogic.com >> Approved by:davi...@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, , 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 >= 90 */ >> >&g
Re: svn commit: r297898 - head/sys/dev/bxe
Fails in different place :) /usr/freebsd-svn/sys/dev/bxe/bxe.c:18757:9: error: format specifies type 'unsigned long' but the argument has type 'unsigned int' [-Werror,-Wformat] sizeof(struct host_sp_status_block)); ^~~ I think you could use %zx for size_t. Thanks, sephe On Wed, Apr 13, 2016 at 12:15 PM, David Somayajulu <david.somayaj...@qlogic.com> wrote: > HI Sepherosa, > I have checked in the fix. https://svnweb.freebsd.org/changeset/base/297909 > > Apologies for the screw up earlier. Sorry for the inconvenience. > > Cheers > David S. > > -Original Message- > From: Sepherosa Ziehau [mailto:sepher...@gmail.com] > Sent: Tuesday, April 12, 2016 8:49 PM > To: David Somayajulu <david.somayaj...@qlogic.com> > Cc: David C Somayajulu <davi...@freebsd.org>; src-committ...@freebsd.org; > svn-src-...@freebsd.org; svn-src-head@freebsd.org > Subject: Re: svn commit: r297898 - head/sys/dev/bxe > > Great! Thanks! > > On Wed, Apr 13, 2016 at 11:48 AM, David Somayajulu > <david.somayaj...@qlogic.com> 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:sepher...@gmail.com] >> Sent: Tuesday, April 12, 2016 8:43 PM >> To: David C Somayajulu <davi...@freebsd.org> >> Cc: src-committ...@freebsd.org; svn-src-...@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 <davi...@freebsd.org> >> 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.kulka...@qlogic.com >>> Approved by:davi...@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; >
Re: svn commit: r297898 - head/sys/dev/bxe
On Wed, Apr 13, 2016 at 12:15 PM, David Somayajulu <david.somayaj...@qlogic.com> wrote: > HI Sepherosa, > I have checked in the fix. https://svnweb.freebsd.org/changeset/base/297909 Thanks! > > Apologies for the screw up earlier. Sorry for the inconvenience. > > Cheers > David S. > > -Original Message- > From: Sepherosa Ziehau [mailto:sepher...@gmail.com] > Sent: Tuesday, April 12, 2016 8:49 PM > To: David Somayajulu <david.somayaj...@qlogic.com> > Cc: David C Somayajulu <davi...@freebsd.org>; src-committ...@freebsd.org; > svn-src-...@freebsd.org; svn-src-head@freebsd.org > Subject: Re: svn commit: r297898 - head/sys/dev/bxe > > Great! Thanks! > > On Wed, Apr 13, 2016 at 11:48 AM, David Somayajulu > <david.somayaj...@qlogic.com> 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:sepher...@gmail.com] >> Sent: Tuesday, April 12, 2016 8:43 PM >> To: David C Somayajulu <davi...@freebsd.org> >> Cc: src-committ...@freebsd.org; svn-src-...@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 <davi...@freebsd.org> >> 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.kulka...@qlogic.com >>> Approved by:davi...@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, , 0, req); >>> - >>> -if (error || !req->newptr) { >>> -return (error); >>> -} >>> - >>> -if (result == 1) { >>> -sc = (struct bxe_softc *)arg1; &
Re: svn commit: r297898 - head/sys/dev/bxe
Great! Thanks! On Wed, Apr 13, 2016 at 11:48 AM, David Somayajulu <david.somayaj...@qlogic.com> 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:sepher...@gmail.com] > Sent: Tuesday, April 12, 2016 8:43 PM > To: David C Somayajulu <davi...@freebsd.org> > Cc: src-committ...@freebsd.org; svn-src-...@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 <davi...@freebsd.org> > 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.kulka...@qlogic.com >> Approved by:davi...@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, , 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 >= 90 */ >> >> -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, >trigger_grcdump, 0, >> + "trigger grcd
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 Somayajuluwrote: > 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.kulka...@qlogic.com > Approved by:davi...@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, , 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 >= 90 */ > > -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, >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, >grcdump_done, 0, > + CTLFLAG_RD, >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 ==
svn commit: r297898 - head/sys/dev/bxe
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.kulka...@qlogic.com Approved by:davi...@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, , 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 >= 90 */ -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, >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, >grcdump_done, 0, + CTLFLAG_RD, >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,