* [2/5][BNX2]: Add missing wait in bnx2_init_5709_context().
@ 2007-06-05 0:00 Michael Chan
2007-06-04 23:39 ` Jeff Garzik
0 siblings, 1 reply; 5+ messages in thread
From: Michael Chan @ 2007-06-05 0:00 UTC (permalink / raw)
To: davem; +Cc: andy, netdev
[BNX2]: Add missing wait in bnx2_init_5709_context().
For correctness, we need to wait for the MEM_INIT bit to be cleared
in the BNX2_CTX_COMMAND register before proceeding.
Signed-off-by: Michael Chan <mchan@broadcom.com>
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index 5d69e5b..daa62d9 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -1778,6 +1778,12 @@ bnx2_init_5709_context(struct bnx2 *bp)
val = BNX2_CTX_COMMAND_ENABLED | BNX2_CTX_COMMAND_MEM_INIT | (1 << 12);
val |= (BCM_PAGE_BITS - 8) << 16;
REG_WR(bp, BNX2_CTX_COMMAND, val);
+ for (i = 0; i < 10; i++) {
+ val = REG_RD(bp, BNX2_CTX_COMMAND);
+ if (!(val & BNX2_CTX_COMMAND_MEM_INIT))
+ break;
+ udelay(2);
+ }
for (i = 0; i < bp->ctx_pages; i++) {
int j;
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [2/5][BNX2]: Add missing wait in bnx2_init_5709_context().
2007-06-05 0:00 [2/5][BNX2]: Add missing wait in bnx2_init_5709_context() Michael Chan
@ 2007-06-04 23:39 ` Jeff Garzik
2007-06-05 0:58 ` [2/5 revised][BNX2]: " Michael Chan
0 siblings, 1 reply; 5+ messages in thread
From: Jeff Garzik @ 2007-06-04 23:39 UTC (permalink / raw)
To: Michael Chan; +Cc: davem, andy, netdev
On Mon, Jun 04, 2007 at 05:00:35PM -0700, Michael Chan wrote:
> [BNX2]: Add missing wait in bnx2_init_5709_context().
>
> For correctness, we need to wait for the MEM_INIT bit to be cleared
> in the BNX2_CTX_COMMAND register before proceeding.
>
> Signed-off-by: Michael Chan <mchan@broadcom.com>
>
> diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
> index 5d69e5b..daa62d9 100644
> --- a/drivers/net/bnx2.c
> +++ b/drivers/net/bnx2.c
> @@ -1778,6 +1778,12 @@ bnx2_init_5709_context(struct bnx2 *bp)
> val = BNX2_CTX_COMMAND_ENABLED | BNX2_CTX_COMMAND_MEM_INIT | (1 << 12);
> val |= (BCM_PAGE_BITS - 8) << 16;
> REG_WR(bp, BNX2_CTX_COMMAND, val);
> + for (i = 0; i < 10; i++) {
> + val = REG_RD(bp, BNX2_CTX_COMMAND);
> + if (!(val & BNX2_CTX_COMMAND_MEM_INIT))
> + break;
> + udelay(2);
> + }
> for (i = 0; i < bp->ctx_pages; i++) {
> int j;
If the bit does not clear after 10 loops, it seems to me you should
complain or somehow otherwise make note of the failure.
Jeff
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [2/5 revised][BNX2]: Add missing wait in bnx2_init_5709_context().
2007-06-04 23:39 ` Jeff Garzik
@ 2007-06-05 0:58 ` Michael Chan
2007-06-05 1:23 ` Jeff Garzik
0 siblings, 1 reply; 5+ messages in thread
From: Michael Chan @ 2007-06-05 0:58 UTC (permalink / raw)
To: Jeff Garzik; +Cc: David Miller, andy, netdev
[BNX2]: Add missing wait in bnx2_init_5709_context().
For correctness, we need to wait for the MEM_INIT bit to be cleared
in the BNX2_CTX_COMMAND register before proceeding.
[Added return -EBUSY when the MEM_INIT bit doesn't clear, suggested
by Jeff Garzik.]
Signed-off-by: Michael Chan <mchan@broadcom.com>
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index 5d69e5b..0f861e2 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -1778,6 +1778,15 @@ bnx2_init_5709_context(struct bnx2 *bp)
val = BNX2_CTX_COMMAND_ENABLED | BNX2_CTX_COMMAND_MEM_INIT | (1 << 12);
val |= (BCM_PAGE_BITS - 8) << 16;
REG_WR(bp, BNX2_CTX_COMMAND, val);
+ for (i = 0; i < 10; i++) {
+ val = REG_RD(bp, BNX2_CTX_COMMAND);
+ if (!(val & BNX2_CTX_COMMAND_MEM_INIT))
+ break;
+ udelay(2);
+ }
+ if (val & BNX2_CTX_COMMAND_MEM_INIT)
+ return -EBUSY;
+
for (i = 0; i < bp->ctx_pages; i++) {
int j;
@@ -3696,9 +3705,11 @@ bnx2_init_chip(struct bnx2 *bp)
/* Initialize context mapping and zero out the quick contexts. The
* context block must have already been enabled. */
- if (CHIP_NUM(bp) == CHIP_NUM_5709)
- bnx2_init_5709_context(bp);
- else
+ if (CHIP_NUM(bp) == CHIP_NUM_5709) {
+ rc = bnx2_init_5709_context(bp);
+ if (rc)
+ return rc;
+ } else
bnx2_init_context(bp);
if ((rc = bnx2_init_cpus(bp)) != 0)
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [2/5 revised][BNX2]: Add missing wait in bnx2_init_5709_context().
2007-06-05 0:58 ` [2/5 revised][BNX2]: " Michael Chan
@ 2007-06-05 1:23 ` Jeff Garzik
2007-06-05 4:22 ` David Miller
0 siblings, 1 reply; 5+ messages in thread
From: Jeff Garzik @ 2007-06-05 1:23 UTC (permalink / raw)
To: Michael Chan; +Cc: David Miller, andy, netdev
On Mon, Jun 04, 2007 at 05:58:49PM -0700, Michael Chan wrote:
> [BNX2]: Add missing wait in bnx2_init_5709_context().
>
> For correctness, we need to wait for the MEM_INIT bit to be cleared
> in the BNX2_CTX_COMMAND register before proceeding.
>
> [Added return -EBUSY when the MEM_INIT bit doesn't clear, suggested
> by Jeff Garzik.]
>
> Signed-off-by: Michael Chan <mchan@broadcom.com>
ACK
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [2/5 revised][BNX2]: Add missing wait in bnx2_init_5709_context().
2007-06-05 1:23 ` Jeff Garzik
@ 2007-06-05 4:22 ` David Miller
0 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2007-06-05 4:22 UTC (permalink / raw)
To: jeff; +Cc: mchan, andy, netdev
From: Jeff Garzik <jeff@garzik.org>
Date: Mon, 4 Jun 2007 21:23:51 -0400
> On Mon, Jun 04, 2007 at 05:58:49PM -0700, Michael Chan wrote:
> > [BNX2]: Add missing wait in bnx2_init_5709_context().
> >
> > For correctness, we need to wait for the MEM_INIT bit to be cleared
> > in the BNX2_CTX_COMMAND register before proceeding.
> >
> > [Added return -EBUSY when the MEM_INIT bit doesn't clear, suggested
> > by Jeff Garzik.]
> >
> > Signed-off-by: Michael Chan <mchan@broadcom.com>
>
> ACK
Applied, thanks.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2007-06-05 4:22 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-06-05 0:00 [2/5][BNX2]: Add missing wait in bnx2_init_5709_context() Michael Chan
2007-06-04 23:39 ` Jeff Garzik
2007-06-05 0:58 ` [2/5 revised][BNX2]: " Michael Chan
2007-06-05 1:23 ` Jeff Garzik
2007-06-05 4:22 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).