From: David Acker <dacker@roinet.com>
To: Kevin Hao <kexin.hao@windriver.com>
Cc: linux-kernel@vger.kernel.org, jeffrey.t.kirsher@intel.com,
jesse.brandeburg@intel.com, bruce.w.allan@intel.com,
john.ronciak@intel.com, e1000-devel@lists.sourceforge.net,
linux-arm-kernel@lists.arm.linux.org.uk,
linux-net@vger.kernel.org, grfstrm@users.sourceforge.net
Subject: Re: [PATCH] e100: Do pci_dma_sync after skb_alloc for proper operation on ixp4xx
Date: Sat, 21 Jun 2008 21:51:04 -0400 [thread overview]
Message-ID: <485DB008.30405@roinet.com> (raw)
In-Reply-To: <1214043635.12484.8.camel@hkx>
Kevin Hao wrote:
> Hi,
>
> The E100 device can't work on current kernel (2.6.26-rc6) and will cause
> kernel corruption on intel ixdp4xx. This patch fix this regression.
>
Hello, this is pretty much the same patch that Anders Grafström sent on
6/18. I think it looks good; I am sorry I missed this. I think this
can be ok'ed if folks can test it on a few different ARM platforms and
of course x86.
I am getting sinus surgery this Monday but I should be back in the
office within a week. I will give it a try then. I will test it on an
ixp425 board and an PXA255 board. Just so you know, I found the
in-kernel packet generator to be a good test. I also found using the
board as a router between wired and wireless devices to catch issues
that led me to posting patches for this driver in the first place.
-ack
> ---
> commit c1f24812b9de182a4272724a2e84ea1ae5dd4659
> Author: Kevin Hao <kexin.hao@windriver.com>
> Date: Sat Jun 21 16:50:50 2008 +0800
>
> e100: Do pci_dma_sync after skb_alloc for proper operation on ixp4xx
>
> Do a DMA sync after we've allocated a new skb and link it with the previous
> RFD. Otherwise the previous RFD may reference the previously freed skb
> and cause kernel corruption.
>
> Previously there was such a DMA sync at this place, but it was removed
> by commit 7734f6e6bcd7ba78b00e93e74a4ddafd9886cdea.
> Restoring this sync operation eliminates the regression.
>
> Signed-off-by: Kevin Hao <kexin.hao@windriver.com>
>
> diff --git a/drivers/net/e100.c b/drivers/net/e100.c
> index f3cba5e..1037b13 100644
> --- a/drivers/net/e100.c
> +++ b/drivers/net/e100.c
> @@ -1803,6 +1803,8 @@ static int e100_rx_alloc_skb(struct nic *nic, struct rx *rx)
> if (rx->prev->skb) {
> struct rfd *prev_rfd = (struct rfd *)rx->prev->skb->data;
> put_unaligned_le32(rx->dma_addr, &prev_rfd->link);
> + pci_dma_sync_single_for_device(nic->pdev, rx->prev->dma_addr,
> + sizeof(struct rfd), PCI_DMA_TODEVICE);
> }
>
> return 0;
> ---
>
> Best Regards,
> Kevin
>
next prev parent reply other threads:[~2008-06-22 1:57 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-21 10:20 [PATCH] e100: Do pci_dma_sync after skb_alloc for proper operation on ixp4xx Kevin Hao
2008-06-22 1:51 ` David Acker [this message]
2008-06-27 5:32 ` Jeff Garzik
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=485DB008.30405@roinet.com \
--to=dacker@roinet.com \
--cc=bruce.w.allan@intel.com \
--cc=e1000-devel@lists.sourceforge.net \
--cc=grfstrm@users.sourceforge.net \
--cc=jeffrey.t.kirsher@intel.com \
--cc=jesse.brandeburg@intel.com \
--cc=john.ronciak@intel.com \
--cc=kexin.hao@windriver.com \
--cc=linux-arm-kernel@lists.arm.linux.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-net@vger.kernel.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.