lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <48595F16.5000905@roinet.com>
Date:	Wed, 18 Jun 2008 15:16:38 -0400
From:	David Acker <dacker@...net.com>
To:	Anders Grafström <grfstrm@...rs.sourceforge.net>
CC:	Jeff Garzik <jeff@...zik.org>,
	"Kok, Auke" <auke-jan.h.kok@...el.com>, akpm@...ux-foundation.org,
	netdev@...r.kernel.org, jesse.brandeburg@...el.com,
	miltonm@....com, e1000-devel@...ts.sourceforge.net
Subject: Re: [PATCH] Fix e100 on systems that have cache incoherent DMA

Anders Grafström wrote:
>>>> David Acker wrote:
>>>>> What is the status of this patch?
>>>>
>>>> Jeff merged it in netdev-2.6#upstream so it is queued for 2.6.25.
> 
> The e100 driver broke in 2.6.25 on the ixp4xx based platform I'm using.
> This patch seems to be the cause.
> 
> It appears to work again with pci_dma_sync_single_for_device() restored.
> So I'm wondering if the patch below would be valid and correct?
> 
> Anders
> 
> 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;

Interesting.  That e100 patch really is the patch that never ends!  :-) 
  I didn't think I needed the pci_dma_sync_single_for_device because I 
wasn't changing the prev_rfd->command anymore.  Now I look again and I 
see that the code is still setting prev_rfd->link which may require a 
sync.  Although I did the bulk of my work with a compulab CM-X255, 
http://www.compulab.co.il/x255/html/x255-cm-datasheet.htm , I happen to 
have some IXP425 based Gateworks Avilas.  They are GW2348-4, 
http://www.gateworks.com/products/avila/gw2348-4.php .

May I ask what actual board you are using and how the e100 is connected 
to it?  I plan to test with miniPCI based e100 cards.  Also, can you say 
more about it being broke?  Does it crash immediately, fail to move any 
data, move some data and stop, etc. ?

-Ack
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ