All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yao Fei Zhu <walkinair@cn.ibm.com>
To: David Gibson <dwg@au1.ibm.com>
Cc: linuxppc-dev@ozlabs.org, linux-kernel@vger.kernel.org
Subject: Re: Failed to boot kernel 2.6.19-rc2 due to IBM veth problem.
Date: Tue, 17 Oct 2006 01:44:09 +0800	[thread overview]
Message-ID: <4533C4E9.1040504@cn.ibm.com> (raw)
In-Reply-To: <20061016014334.GA30921@localhost.localdomain>

David Gibson 写道:
> On Mon, Oct 16, 2006 at 12:26:37AM +0800, Yao Fei Zhu wrote:
> 
>>Hi, all,
>>
>>Boot kernel 2.6.19-rc2 on IBM System P5 partitions will fall into xmon.
>>Here is the boot log,
> 
> 
> This is probably the same bug I recently posted about.  The patch
> below should fix it.
> 
> ibmveth: Fix index increment calculation
> 
> The recent commit 751ae21c6cd1493e3d0a4935b08fb298b9d89773 introduced
> a bug in the producer/consumer index calculation in the ibmveth driver
> - incautious use of the post-increment ++ operator resulted in an
> increment being immediately reverted.  This patch corrects the logic.
> 
> Without this patch, the driver oopses almost immediately after
> activation on at least some machines.
> 
> Signed-off-by: David Gibson <dwg@au1.ibm.com>
> 
> Index: working-2.6/drivers/net/ibmveth.c
> ===================================================================
> --- working-2.6.orig/drivers/net/ibmveth.c	2006-10-13 14:19:54.000000000 +1000
> +++ working-2.6/drivers/net/ibmveth.c	2006-10-13 14:19:59.000000000 +1000
> @@ -212,8 +212,8 @@ static void ibmveth_replenish_buffer_poo
>  			break;
>  		}
>  
> -		free_index = pool->consumer_index++ % pool->size;
> -		pool->consumer_index = free_index;
> +		free_index = pool->consumer_index;
> +		pool->consumer_index = (pool->consumer_index + 1) % pool->size;
>  		index = pool->free_map[free_index];
>  
>  		ibmveth_assert(index != IBM_VETH_INVALID_MAP);
> @@ -329,8 +329,10 @@ static void ibmveth_remove_buffer_from_p
>  			 adapter->rx_buff_pool[pool].buff_size,
>  			 DMA_FROM_DEVICE);
>  
> -	free_index = adapter->rx_buff_pool[pool].producer_index++ % adapter->rx_buff_pool[pool].size;
> -	adapter->rx_buff_pool[pool].producer_index = free_index;
> +	free_index = adapter->rx_buff_pool[pool].producer_index;
> +	adapter->rx_buff_pool[pool].producer_index
> +		= (adapter->rx_buff_pool[pool].producer_index + 1)
> +		% adapter->rx_buff_pool[pool].size;
>  	adapter->rx_buff_pool[pool].free_map[free_index] = index;
>  
>  	mb();
> 
> 
David, I have verified this fix, it works fine for me, Thanks. What's the status of it? Submitted?

  reply	other threads:[~2006-10-16 17:44 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-15 16:26 Failed to boot kernel 2.6.19-rc2 due to IBM veth problem Yao Fei Zhu
2006-10-16  1:43 ` David Gibson
2006-10-16 17:44   ` Yao Fei Zhu [this message]
2006-10-17  0:15     ` David Gibson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4533C4E9.1040504@cn.ibm.com \
    --to=walkinair@cn.ibm.com \
    --cc=dwg@au1.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.