RE: svn commit: r297898 - head/sys/dev/bxe

2016-04-13 Thread David Somayajulu
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

2016-04-13 Thread David Somayajulu
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

2016-04-13 Thread Sepherosa Ziehau
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

2016-04-12 Thread Sepherosa Ziehau
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

2016-04-12 Thread Sepherosa Ziehau
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

2016-04-12 Thread Sepherosa Ziehau
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.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

2016-04-12 Thread David C Somayajulu
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,