From: Alexander Duyck <alexander.h.duyck@intel.com>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Cong Wang <amwang@redhat.com>,
linux-kernel@vger.kernel.org, akpm@linux-foundation.org,
Jeff Kirsher <jeffrey.t.kirsher@intel.com>,
Jesse Brandeburg <jesse.brandeburg@intel.com>,
Bruce Allan <bruce.w.allan@intel.com>,
Carolyn Wyborny <carolyn.wyborny@intel.com>,
Don Skidmore <donald.c.skidmore@intel.com>,
Greg Rose <gregory.v.rose@intel.com>,
Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>,
John Ronciak <john.ronciak@intel.com>,
"David S. Miller" <davem@davemloft.net>,
Dean Nelson <dnelson@redhat.com>,
Ian Campbell <ian.campbell@citrix.com>,
Jiri Pirko <jpirko@redhat.com>,
e1000-devel@lists.sourceforge.net, netdev@vger.kernel.org
Subject: Re: [PATCH 21/62] net: remove the second argument of k[un]map_atomic()
Date: Mon, 28 Nov 2011 10:06:03 -0800 [thread overview]
Message-ID: <4ED3CD8B.5060000@intel.com> (raw)
In-Reply-To: <1322381248.2826.1.camel@edumazet-laptop>
On 11/27/2011 12:07 AM, Eric Dumazet wrote:
> Le dimanche 27 novembre 2011 à 13:27 +0800, Cong Wang a écrit :
>> Signed-off-by: Cong Wang <amwang@redhat.com>
>> ---
>> diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
>> index cf480b5..b194beb 100644
>> --- a/drivers/net/ethernet/intel/e1000/e1000_main.c
>> +++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
>> @@ -3878,11 +3878,9 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
>> if (length <= copybreak &&
>> skb_tailroom(skb) >= length) {
>> u8 *vaddr;
>> - vaddr = kmap_atomic(buffer_info->page,
>> - KM_SKB_DATA_SOFTIRQ);
>> + vaddr = kmap_atomic(buffer_info->page);
>> memcpy(skb_tail_pointer(skb), vaddr, length);
>> - kunmap_atomic(vaddr,
>> - KM_SKB_DATA_SOFTIRQ);
>> + kunmap_atomic(vaddr);
>> /* re-use the page, so don't erase
>> * buffer_info->page */
>> skb_put(skb, length);
>> diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
>> index a855db1..8603c87 100644
>> --- a/drivers/net/ethernet/intel/e1000e/netdev.c
>> +++ b/drivers/net/ethernet/intel/e1000e/netdev.c
>> @@ -1272,9 +1272,9 @@ static bool e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
>> */
>> dma_sync_single_for_cpu(&pdev->dev, ps_page->dma,
>> PAGE_SIZE, DMA_FROM_DEVICE);
>> - vaddr = kmap_atomic(ps_page->page, KM_SKB_DATA_SOFTIRQ);
>> + vaddr = kmap_atomic(ps_page->page);
>> memcpy(skb_tail_pointer(skb), vaddr, l1);
>> - kunmap_atomic(vaddr, KM_SKB_DATA_SOFTIRQ);
>> + kunmap_atomic(vaddr);
>> dma_sync_single_for_device(&pdev->dev, ps_page->dma,
>> PAGE_SIZE, DMA_FROM_DEVICE);
>>
>> @@ -1465,12 +1465,10 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
>> if (length <= copybreak &&
>> skb_tailroom(skb) >= length) {
>> u8 *vaddr;
>> - vaddr = kmap_atomic(buffer_info->page,
>> - KM_SKB_DATA_SOFTIRQ);
>> + vaddr = kmap_atomic(buffer_info->page);
>> memcpy(skb_tail_pointer(skb), vaddr,
>> length);
>> - kunmap_atomic(vaddr,
>> - KM_SKB_DATA_SOFTIRQ);
>> + kunmap_atomic(vaddr);
>> /* re-use the page, so don't erase
>> * buffer_info->page */
>> skb_put(skb, length);
> But why are these drivers using kmap_atomic() in first place, since
> their fragments are allocated in regular zone (GFP_ATOMIC or
> GFP_KERNEL) ?
I was asking the same thing myself recently when I started working on
some copy-break like code for the ixgbe driver. I believe the main
reason is a lack of documentation. This code is based loosely on the
skb_copy_bits code which will use kmap_skb_frag over all of the paged
portions of the sk_buff. As such it was decided to map things via
kmap_atomic in order to guarantee the pages had a valid virtual address.
If I understand things correctly, what you are brining up is that pages
allocated with either GFP_ATOMIC or GFP_KERNEL will always be allocated
from the lowmem pool and as such page_address should always succeed. Is
that correct?
Thanks,
Alex
next prev parent reply other threads:[~2011-11-28 18:06 UTC|newest]
Thread overview: 159+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-27 5:26 [V2 PATCH 00/62] highmem: remove the second argument of kmap_atomic/kunmap_atomic Cong Wang
2011-11-27 5:26 ` [PATCH 01/62] highmem: mark k[un]map_atomic() with two arguments as deprecated Cong Wang
2011-11-27 12:34 ` Cesar Eduardo Barros
2011-11-28 5:07 ` Cong Wang
2011-11-28 7:46 ` [UPDATED PATCH " Cong Wang
2011-11-27 5:26 ` [PATCH 02/62] include/linux/highmem.h: remove the second argument of k[un]map_atomic() Cong Wang
2011-11-27 5:26 ` [PATCH 03/62] arm: " Cong Wang
2011-11-27 5:26 ` Cong Wang
2011-12-10 21:46 ` Russell King - ARM Linux
2011-12-10 21:46 ` Russell King - ARM Linux
2011-11-27 5:26 ` [PATCH 04/62] mips: " Cong Wang
2011-12-09 16:06 ` Ralf Baechle
2011-12-12 2:52 ` Cong Wang
2011-11-27 5:26 ` [PATCH 05/62] powerpc: " Cong Wang
2011-11-27 5:26 ` Cong Wang
2011-11-27 5:26 ` Cong Wang
2011-11-27 5:26 ` [PATCH 06/62] sh: " Cong Wang
2011-11-27 5:26 ` Cong Wang
2011-11-27 5:26 ` [uml-devel] [PATCH 07/62] um: " Cong Wang
2011-11-27 5:26 ` Cong Wang
2011-11-27 5:26 ` [PATCH 08/62] x86: " Cong Wang
2011-11-28 12:35 ` Avi Kivity
2011-11-28 12:47 ` Herbert Xu
2011-11-28 12:47 ` Herbert Xu
2011-11-27 5:26 ` [PATCH 09/62] crypto: " Cong Wang
2011-11-27 5:26 ` [PATCH 10/62] ata: " Cong Wang
2011-11-27 18:40 ` Jeff Garzik
2011-11-28 10:01 ` Sergei Shtylyov
2011-11-28 11:42 ` Cong Wang
2011-11-28 11:49 ` Cong Wang
2011-11-28 19:00 ` James Bottomley
2011-11-29 3:25 ` Cong Wang
2011-11-27 5:26 ` [Drbd-dev] [PATCH 11/62] block: " Cong Wang
2011-11-27 5:26 ` Cong Wang
2011-11-27 5:26 ` [PATCH 12/62] crypto: " Cong Wang
2011-11-27 5:26 ` [PATCH 13/62] edac: " Cong Wang
2011-11-27 5:26 ` [PATCH 14/62] drm: " Cong Wang
2011-11-27 5:26 ` [PATCH 15/62] ide: " Cong Wang
2011-11-27 6:12 ` David Miller
2011-11-27 5:26 ` [PATCH 16/62] infiniband: " Cong Wang
[not found] ` <1322371662-26166-17-git-send-email-amwang-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-11-28 7:38 ` Roland Dreier
2011-11-28 7:38 ` Roland Dreier
[not found] ` <CAL1RGDXkh4xJJNO+7fkDXJ4f7LgwvbrHKTueiozUkiK0dkRBZA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-11-28 7:45 ` Cong Wang
2011-11-28 7:45 ` Cong Wang
2011-11-27 5:26 ` [PATCH 17/62] md: " Cong Wang
2011-11-27 6:00 ` NeilBrown
2011-11-27 10:27 ` [dm-devel] " Milan Broz
2011-11-28 5:10 ` Cong Wang
2011-11-28 7:47 ` [UPDATED PATCH " Cong Wang
2011-11-27 5:26 ` [PATCH 18/62] media: " Cong Wang
2011-11-27 23:10 ` Andy Walls
2011-11-27 5:26 ` [PATCH 19/62] memstick: " Cong Wang
2011-11-27 5:27 ` [PATCH 20/62] mmc: " Cong Wang
2011-11-27 5:27 ` Cong Wang
2011-11-27 21:02 ` Guennadi Liakhovetski
2011-11-27 21:02 ` Guennadi Liakhovetski
2011-11-30 23:51 ` David Brown
2011-11-30 23:51 ` David Brown
2011-12-01 18:47 ` Chris Ball
2011-12-01 18:47 ` Chris Ball
2011-12-02 2:10 ` Cong Wang
2011-12-02 2:10 ` Cong Wang
2011-11-27 5:27 ` [PATCH 21/62] net: " Cong Wang
2011-11-27 5:27 ` Cong Wang
2011-11-27 6:12 ` David Miller
2011-11-27 6:12 ` David Miller
2011-11-27 8:07 ` Eric Dumazet
2011-11-27 8:07 ` Eric Dumazet
2011-11-28 18:06 ` Alexander Duyck [this message]
2011-11-28 18:26 ` Eric Dumazet
2011-11-28 18:26 ` Eric Dumazet
2011-11-28 7:39 ` Cong Wang
2011-11-28 7:39 ` Cong Wang
2011-11-28 7:48 ` [UPDATED PATCH " Cong Wang
2011-11-28 7:48 ` Cong Wang
[not found] ` <1322371662-26166-1-git-send-email-amwang-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-11-27 5:27 ` [PATCH 22/62] scsi: " Cong Wang
2011-11-27 5:27 ` [PATCH 23/62] hv: " Cong Wang
2011-11-27 9:34 ` Greg KH
2011-11-27 5:27 ` [PATCH 24/62] pohmelfs: " Cong Wang
2011-11-27 9:34 ` Greg KH
2011-11-28 0:58 ` Evgeniy Polyakov
2011-11-27 5:27 ` [PATCH 25/62] rtl8192u: " Cong Wang
2011-11-27 9:34 ` Greg KH
2011-11-27 5:27 ` [PATCH 26/62] zram: " Cong Wang
2011-11-27 9:34 ` Greg KH
2011-11-27 5:27 ` [PATCH 27/62] target: " Cong Wang
2011-11-27 5:27 ` [PATCH 28/62] vhost: " Cong Wang
2011-11-27 5:27 ` Cong Wang
2011-11-27 5:27 ` [PATCH 29/62] fs: " Cong Wang
2011-11-27 5:27 ` Cong Wang
2011-11-28 2:36 ` Benjamin LaHaise
2011-11-28 2:36 ` Benjamin LaHaise
2011-11-27 5:27 ` [PATCH 30/62] btrfs: " Cong Wang
2011-11-27 5:27 ` [PATCH 31/62] ecryptfs: " Cong Wang
2011-11-27 5:27 ` [PATCH 32/62] afs: " Cong Wang
2011-11-27 5:27 ` [PATCH 33/62] exofs: " Cong Wang
2011-11-28 17:35 ` Boaz Harrosh
2011-11-27 5:27 ` [PATCH 34/62] ext2: " Cong Wang
2011-11-28 14:15 ` Jan Kara
2011-11-27 5:27 ` [PATCH 35/62] fuse: " Cong Wang
2011-11-27 5:27 ` [PATCH 36/62] gfs2: " Cong Wang
2011-11-27 5:27 ` [PATCH 37/62] jbd: " Cong Wang
2011-11-28 14:15 ` Jan Kara
2011-11-27 5:27 ` [PATCH 38/62] jbd2: " Cong Wang
2011-11-27 5:27 ` [PATCH 39/62] logfs: " Cong Wang
2011-11-27 5:27 ` [PATCH 40/62] minix: " Cong Wang
2011-11-27 5:27 ` [PATCH 41/62] nfs: " Cong Wang
2011-11-27 5:27 ` [PATCH 42/62] nilfs2: " Cong Wang
2011-11-28 16:14 ` Ryusuke Konishi
2011-11-27 5:27 ` [PATCH 43/62] ntfs: " Cong Wang
2011-11-27 5:27 ` [PATCH 44/62] ocfs2: " Cong Wang
2011-12-01 20:18 ` [Ocfs2-devel] " Joel Becker
2011-12-01 20:18 ` Joel Becker
2011-12-02 2:04 ` Cong Wang
2011-12-02 2:29 ` [Ocfs2-devel] " Andrew Morton
2011-12-02 2:29 ` Andrew Morton
2011-12-02 2:38 ` Cong Wang
2011-11-27 5:27 ` [PATCH 45/62] reiserfs: " Cong Wang
2011-11-27 5:27 ` [PATCH 46/62] squashfs: " Cong Wang
2011-11-27 5:27 ` [PATCH 47/62] ubifs: " Cong Wang
2011-11-27 5:27 ` Cong Wang
2011-11-27 5:27 ` [PATCH 48/62] udf: " Cong Wang
2011-11-28 14:16 ` Jan Kara
2011-11-27 5:27 ` [PATCH 49/62] kdb: " Cong Wang
2011-11-27 5:27 ` [PATCH 50/62] power: " Cong Wang
2011-11-27 11:38 ` Rafael J. Wysocki
2011-11-27 5:27 ` [PATCH 51/62] lib: " Cong Wang
2011-11-27 5:27 ` [PATCH 52/62] mm: " Cong Wang
2011-11-27 5:27 ` Cong Wang
2011-11-27 5:27 ` [PATCH 53/62] net: " Cong Wang
2011-11-27 6:12 ` David Miller
2011-11-27 5:27 ` [PATCH 54/62] rds: " Cong Wang
2011-11-27 6:13 ` David Miller
2011-11-27 5:27 ` [PATCH 55/62] sunrpc: " Cong Wang
2011-11-27 5:27 ` [PATCH 56/62] tomoyo: " Cong Wang
2011-11-27 5:27 ` [PATCH 57/62] md: " Cong Wang
2011-11-28 7:50 ` [UPDATED PATCH 57/62] dm: " Cong Wang
2011-11-27 5:27 ` [PATCH 58/62] gma500: " Cong Wang
2011-11-28 11:33 ` Alan Cox
2011-11-27 5:27 ` [PATCH 59/62] zcache: " Cong Wang
2011-11-27 9:34 ` Greg KH
2011-11-27 5:27 ` [Drbd-dev] [PATCH 60/62] drbd: " Cong Wang
2011-11-27 5:27 ` Cong Wang
2011-11-27 5:27 ` [PATCH 61/62] highmem: kill all __kmap_atomic() Cong Wang
2011-11-27 5:27 ` Cong Wang
2011-11-27 5:27 ` Cong Wang
2011-11-27 5:27 ` Cong Wang
2011-11-27 5:27 ` Cong Wang
2011-12-09 16:07 ` Ralf Baechle
2011-12-09 16:07 ` Ralf Baechle
2011-12-09 16:07 ` Ralf Baechle
2011-12-09 16:07 ` Ralf Baechle
2011-12-09 16:07 ` Ralf Baechle
2011-11-27 5:27 ` [PATCH 62/62] feature-removal-schedule.txt: add the deprecated form of kmap_atomic() Cong Wang
2011-11-27 22:21 ` [V2 PATCH 00/62] highmem: remove the second argument of kmap_atomic/kunmap_atomic Benjamin Herrenschmidt
2011-11-28 4:34 ` Benjamin Herrenschmidt
2011-11-28 5:34 ` Cong Wang
2011-11-28 7:42 ` Cong Wang
2011-11-29 3:36 ` Cong Wang
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=4ED3CD8B.5060000@intel.com \
--to=alexander.h.duyck@intel.com \
--cc=akpm@linux-foundation.org \
--cc=amwang@redhat.com \
--cc=bruce.w.allan@intel.com \
--cc=carolyn.wyborny@intel.com \
--cc=davem@davemloft.net \
--cc=dnelson@redhat.com \
--cc=donald.c.skidmore@intel.com \
--cc=e1000-devel@lists.sourceforge.net \
--cc=eric.dumazet@gmail.com \
--cc=gregory.v.rose@intel.com \
--cc=ian.campbell@citrix.com \
--cc=jeffrey.t.kirsher@intel.com \
--cc=jesse.brandeburg@intel.com \
--cc=john.ronciak@intel.com \
--cc=jpirko@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=peter.p.waskiewicz.jr@intel.com \
/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.