public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: stable-review@kernel.org, torvalds@linux-foundation.org,
	akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk,
	"Krzysztof Hałasa" <khc@pm.waw.pl>,
	"David S. Miller" <davem@davemloft.net>
Subject: [patch 02/22] E100: fix interaction with swiotlb on X86.
Date: Thu, 10 Sep 2009 17:22:48 -0700	[thread overview]
Message-ID: <20090911002409.235687801@mini.kroah.org> (raw)
In-Reply-To: <20090911002616.GA12087@kroah.com>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: e100-fix-interaction-with-swiotlb-on-x86.patch --]
[-- Type: text/plain, Size: 1627 bytes --]

2.6.30-stable review patch.  If anyone has any objections, please let us know.

------------------
From: Krzysztof Hałasa <khc@pm.waw.pl>

[ Upstream commit 6ff9c2e7fa8ca63a575792534b63c5092099c286 ]

E100 places it's RX packet descriptors inside skb->data and uses them
with bidirectional streaming DMA mapping. Data in descriptors is
accessed simultaneously by the chip (writing status and size when
a packet is received) and CPU (reading to check if the packet was
received). This isn't a valid usage of PCI DMA API, which requires use
of the coherent (consistent) memory for such purpose. Unfortunately e100
chips working in "simplified" RX mode have to store received data
directly after the descriptor. Fixing the driver to conform to the API
would require using unsupported "flexible" RX mode or receiving data
into a coherent memory and using CPU to copy it to network buffers.

This patch, while not yet making the driver conform to the PCI DMA API,
allows it to work correctly on X86 with swiotlb (while not breaking
other architectures).

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/net/e100.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -1764,7 +1764,7 @@ static int e100_rx_indicate(struct nic *
 				nic->ru_running = RU_SUSPENDED;
 		pci_dma_sync_single_for_device(nic->pdev, rx->dma_addr,
 					       sizeof(struct rfd),
-					       PCI_DMA_BIDIRECTIONAL);
+					       PCI_DMA_FROMDEVICE);
 		return -ENODATA;
 	}
 



  parent reply	other threads:[~2009-09-11  0:33 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20090911002246.666327880@mini.kroah.org>
2009-09-11  0:26 ` [patch 00/22] 2.6.30.7-stable review Greg KH
2009-09-11  0:22   ` [patch 01/22] dccp: missing destroy of percpu counter variable while unload module Greg KH
2009-09-11  0:22   ` Greg KH [this message]
2009-09-11  0:22   ` [patch 03/22] gre: Fix MTU calculation for bound GRE tunnels Greg KH
2009-09-11  0:22   ` [patch 04/22] ppp: fix lost fragments in ppp_mp_explode() (resubmit) Greg KH
2009-09-11  0:22   ` [patch 05/22] pppol2tp: calls unregister_pernet_gen_device() at unload time Greg KH
2009-09-11  0:22   ` [patch 06/22] net: net_assign_generic() fix Greg KH
2009-09-11  0:22   ` [patch 07/22] sparc64: Kill spurious NMI watchdog triggers by increasing limit to 30 seconds Greg KH
2009-09-11  0:22   ` [patch 08/22] sparc64: Validate linear D-TLB misses Greg KH
2009-09-11  0:22   ` [patch 09/22] sparc64: Fix bootup with mcount in some configs Greg KH
2009-09-11  0:22   ` [patch 10/22] sparc: sys32.S incorrect compat-layer splice() system call Greg KH
2009-09-11  0:22   ` [patch 11/22] JFFS2: add missing verify buffer allocation/deallocation Greg KH
2009-09-11  0:22   ` [patch 12/22] slub: Fix kmem_cache_destroy() with SLAB_DESTROY_BY_RCU Greg KH
2009-09-11  0:22   ` [patch 13/22] nilfs2: fix preempt count underflow in nilfs_btnode_prepare_change_key Greg KH
2009-09-11  0:23   ` [patch 14/22] PCI SR-IOV: correct broken resource alignment calculations Greg KH
2009-09-11  0:23   ` [patch 15/22] SCSI: sd: fix bug in SCSI async probing Greg KH
2009-09-11  0:23   ` [patch 16/22] sound: oxygen: handle cards with missing EEPROM Greg KH
2009-09-11  0:23   ` [patch 17/22] sound: oxygen: fix MCLK rate for 192 kHz playback Greg KH
2009-09-11  0:23   ` [patch 18/22] dm raid1: do not allow log_failure variable to unset after being set Greg KH
2009-09-11  0:23   ` [patch 19/22] dm snapshot: refactor zero_disk_area to use chunk_io Greg KH
2009-09-11  0:23   ` [patch 20/22] dm snapshot: fix header corruption race on invalidation Greg KH
2009-09-11  0:23   ` [patch 21/22] dm exception store: split set_chunk_size Greg KH
2009-09-11  0:23   ` [patch 22/22] dm snapshot: fix on disk chunk size validation Greg KH
2009-09-11  5:19   ` [patch 00/22] 2.6.30.7-stable review Dmitry Torokhov
2009-09-11 15:31     ` [stable] " Greg KH

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=20090911002409.235687801@mini.kroah.org \
    --to=gregkh@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=davem@davemloft.net \
    --cc=khc@pm.waw.pl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable-review@kernel.org \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox