From: Alexander Lobakin <aleksander.lobakin@intel.com>
To: Yunsheng Lin <linyunsheng@huawei.com>
Cc: Jesper Dangaard Brouer <hawk@kernel.org>,
Larysa Zaremba <larysa.zaremba@intel.com>,
netdev@vger.kernel.org,
Ilias Apalodimas <ilias.apalodimas@linaro.org>,
linux-kernel@vger.kernel.org, Christoph Hellwig <hch@lst.de>,
Eric Dumazet <edumazet@google.com>,
Michal Kubiak <michal.kubiak@intel.com>,
intel-wired-lan@lists.osuosl.org,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
"David S. Miller" <davem@davemloft.net>,
Magnus Karlsson <magnus.karlsson@intel.com>
Subject: Re: [Intel-wired-lan] [PATCH net-next 06/11] net: page_pool: avoid calling no-op externals when possible
Date: Thu, 18 May 2023 15:29:34 +0200 [thread overview]
Message-ID: <7d484879-e256-fb06-45cd-1b61a429e6c2@intel.com> (raw)
In-Reply-To: <b84ad4ef-a996-4fd7-dc90-3b44f7acaf39@huawei.com>
From: Yunsheng Lin <linyunsheng@huawei.com>
Date: Thu, 18 May 2023 12:54:37 +0800
> On 2023/5/18 12:08, Jakub Kicinski wrote:
>> On Tue, 16 May 2023 18:18:36 +0200 Alexander Lobakin wrote:
>>> + /* Try to avoid calling no-op syncs */
>>> + pool->p.flags |= PP_FLAG_DMA_MAYBE_SYNC;
>>> + pool->p.flags &= ~PP_FLAG_DMA_SYNC_DEV;
>>> }
>>>
>>> if (PAGE_POOL_DMA_USE_PP_FRAG_COUNT &&
>>> @@ -323,6 +327,12 @@ static bool page_pool_dma_map(struct page_pool *pool, struct page *page)
>>>
>>> page_pool_set_dma_addr(page, dma);
>>>
>>> + if ((pool->p.flags & PP_FLAG_DMA_MAYBE_SYNC) &&
>>> + dma_need_sync(pool->p.dev, dma)) {
>>> + pool->p.flags |= PP_FLAG_DMA_SYNC_DEV;
>>> + pool->p.flags &= ~PP_FLAG_DMA_MAYBE_SYNC;
>>> + }
>>
>> is it just me or does it feel cleaner to allocate a page at init,
>> and throw it into the cache, rather than adding a condition to a
>> fast(ish) path?
>
> Is dma_need_sync() not reliable until a dma map is called?
> Is there any reason why not just clear PP_FLAG_DMA_SYNC_DEV if
> dma_need_sync() is false without introducing the PP_FLAG_DMA_MAYBE_SYNC
> flag?
We can't just clear the flag, because some drivers don't want PP to
synchronize DMA. Without a new flag, we can't distinguish those two.
Example:
1) Driver doesn't set DMA_SYNC_DEV
2) We check for dma_need_sync() and it returns true
3) As a result, we set DMA_SYNC_DEV, although driver does that on its
own
Thanks,
Olek
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
WARNING: multiple messages have this Message-ID (diff)
From: Alexander Lobakin <aleksander.lobakin@intel.com>
To: Yunsheng Lin <linyunsheng@huawei.com>
Cc: Jakub Kicinski <kuba@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>,
"Maciej Fijalkowski" <maciej.fijalkowski@intel.com>,
Magnus Karlsson <magnus.karlsson@intel.com>,
Michal Kubiak <michal.kubiak@intel.com>,
"Larysa Zaremba" <larysa.zaremba@intel.com>,
Jesper Dangaard Brouer <hawk@kernel.org>,
Ilias Apalodimas <ilias.apalodimas@linaro.org>,
"Christoph Hellwig" <hch@lst.de>, <netdev@vger.kernel.org>,
<intel-wired-lan@lists.osuosl.org>,
<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH net-next 06/11] net: page_pool: avoid calling no-op externals when possible
Date: Thu, 18 May 2023 15:29:34 +0200 [thread overview]
Message-ID: <7d484879-e256-fb06-45cd-1b61a429e6c2@intel.com> (raw)
In-Reply-To: <b84ad4ef-a996-4fd7-dc90-3b44f7acaf39@huawei.com>
From: Yunsheng Lin <linyunsheng@huawei.com>
Date: Thu, 18 May 2023 12:54:37 +0800
> On 2023/5/18 12:08, Jakub Kicinski wrote:
>> On Tue, 16 May 2023 18:18:36 +0200 Alexander Lobakin wrote:
>>> + /* Try to avoid calling no-op syncs */
>>> + pool->p.flags |= PP_FLAG_DMA_MAYBE_SYNC;
>>> + pool->p.flags &= ~PP_FLAG_DMA_SYNC_DEV;
>>> }
>>>
>>> if (PAGE_POOL_DMA_USE_PP_FRAG_COUNT &&
>>> @@ -323,6 +327,12 @@ static bool page_pool_dma_map(struct page_pool *pool, struct page *page)
>>>
>>> page_pool_set_dma_addr(page, dma);
>>>
>>> + if ((pool->p.flags & PP_FLAG_DMA_MAYBE_SYNC) &&
>>> + dma_need_sync(pool->p.dev, dma)) {
>>> + pool->p.flags |= PP_FLAG_DMA_SYNC_DEV;
>>> + pool->p.flags &= ~PP_FLAG_DMA_MAYBE_SYNC;
>>> + }
>>
>> is it just me or does it feel cleaner to allocate a page at init,
>> and throw it into the cache, rather than adding a condition to a
>> fast(ish) path?
>
> Is dma_need_sync() not reliable until a dma map is called?
> Is there any reason why not just clear PP_FLAG_DMA_SYNC_DEV if
> dma_need_sync() is false without introducing the PP_FLAG_DMA_MAYBE_SYNC
> flag?
We can't just clear the flag, because some drivers don't want PP to
synchronize DMA. Without a new flag, we can't distinguish those two.
Example:
1) Driver doesn't set DMA_SYNC_DEV
2) We check for dma_need_sync() and it returns true
3) As a result, we set DMA_SYNC_DEV, although driver does that on its
own
Thanks,
Olek
next prev parent reply other threads:[~2023-05-18 13:30 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-16 16:18 [Intel-wired-lan] [PATCH net-next 00/11] net: intel: start The Great Code Dedup + Page Pool for iavf Alexander Lobakin
2023-05-16 16:18 ` Alexander Lobakin
2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 01/11] net: intel: introduce Intel Ethernet common library Alexander Lobakin
2023-05-16 16:18 ` Alexander Lobakin
2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 02/11] iavf: kill "legacy-rx" for good Alexander Lobakin
2023-05-16 16:18 ` Alexander Lobakin
2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 03/11] iavf: optimize Rx buffer allocation a bunch Alexander Lobakin
2023-05-16 16:18 ` Alexander Lobakin
2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 04/11] iavf: remove page splitting/recycling Alexander Lobakin
2023-05-16 16:18 ` Alexander Lobakin
2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 05/11] iavf: always use a full order-0 page Alexander Lobakin
2023-05-16 16:18 ` Alexander Lobakin
2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 06/11] net: page_pool: avoid calling no-op externals when possible Alexander Lobakin
2023-05-16 16:18 ` Alexander Lobakin
2023-05-17 8:14 ` [Intel-wired-lan] " Christoph Hellwig
2023-05-17 8:14 ` Christoph Hellwig
2023-05-18 13:26 ` [Intel-wired-lan] " Alexander Lobakin
2023-05-18 13:26 ` Alexander Lobakin
2023-05-18 4:08 ` [Intel-wired-lan] " Jakub Kicinski
2023-05-18 4:08 ` Jakub Kicinski
2023-05-18 4:54 ` [Intel-wired-lan] " Yunsheng Lin
2023-05-18 4:54 ` Yunsheng Lin
2023-05-18 13:29 ` Alexander Lobakin [this message]
2023-05-18 13:29 ` Alexander Lobakin
2023-05-18 13:34 ` [Intel-wired-lan] " Alexander Lobakin
2023-05-18 13:34 ` Alexander Lobakin
2023-05-18 15:02 ` [Intel-wired-lan] " Jakub Kicinski
2023-05-18 15:02 ` Jakub Kicinski
2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 07/11] net: page_pool: add DMA-sync-for-CPU inline helpers Alexander Lobakin
2023-05-16 16:18 ` Alexander Lobakin
2023-05-18 4:12 ` [Intel-wired-lan] " Jakub Kicinski
2023-05-18 4:12 ` Jakub Kicinski
2023-05-18 7:03 ` [Intel-wired-lan] " Ilias Apalodimas
2023-05-18 7:03 ` Ilias Apalodimas
2023-05-18 13:53 ` [Intel-wired-lan] " Alexander Lobakin
2023-05-18 13:53 ` Alexander Lobakin
2023-05-18 13:45 ` [Intel-wired-lan] " Alexander Lobakin
2023-05-18 13:45 ` Alexander Lobakin
2023-05-18 14:56 ` Jakub Kicinski
2023-05-18 14:56 ` Jakub Kicinski
2023-05-18 15:41 ` Alexander Lobakin
2023-05-18 15:41 ` Alexander Lobakin
2023-05-18 20:36 ` Jakub Kicinski
2023-05-18 20:36 ` Jakub Kicinski
2023-05-19 13:56 ` Alexander Lobakin
2023-05-19 13:56 ` Alexander Lobakin
2023-05-19 20:45 ` Jakub Kicinski
2023-05-19 20:45 ` Jakub Kicinski
2023-05-22 13:48 ` Alexander Lobakin
2023-05-22 13:48 ` Alexander Lobakin
2023-05-22 15:27 ` Magnus Karlsson
2023-05-22 15:27 ` Magnus Karlsson
2023-05-18 4:19 ` Jakub Kicinski
2023-05-18 4:19 ` Jakub Kicinski
2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 08/11] iavf: switch to Page Pool Alexander Lobakin
2023-05-16 16:18 ` Alexander Lobakin
2023-05-23 22:42 ` [Intel-wired-lan] " David Christensen
2023-05-23 22:42 ` David Christensen
2023-05-25 11:08 ` [Intel-wired-lan] " Alexander Lobakin
2023-05-25 11:08 ` Alexander Lobakin
2023-05-31 20:18 ` David Christensen
2023-06-02 13:25 ` [Intel-wired-lan] " Alexander Lobakin
2023-06-02 13:25 ` Alexander Lobakin
2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 09/11] libie: add common queue stats Alexander Lobakin
2023-05-16 16:18 ` Alexander Lobakin
2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 10/11] libie: add per-queue Page Pool stats Alexander Lobakin
2023-05-16 16:18 ` Alexander Lobakin
2023-05-18 4:19 ` [Intel-wired-lan] " Jakub Kicinski
2023-05-18 4:19 ` Jakub Kicinski
2023-05-18 13:47 ` [Intel-wired-lan] " Alexander Lobakin
2023-05-18 13:47 ` Alexander Lobakin
2023-05-22 15:05 ` [Intel-wired-lan] " Paul Menzel
2023-05-22 15:05 ` Paul Menzel
2023-05-22 15:32 ` Alexander Lobakin
2023-05-22 15:32 ` Alexander Lobakin
2023-05-16 16:18 ` [Intel-wired-lan] [PATCH net-next 11/11] iavf: switch queue stats to libie Alexander Lobakin
2023-05-16 16:18 ` Alexander Lobakin
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=7d484879-e256-fb06-45cd-1b61a429e6c2@intel.com \
--to=aleksander.lobakin@intel.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hawk@kernel.org \
--cc=hch@lst.de \
--cc=ilias.apalodimas@linaro.org \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=kuba@kernel.org \
--cc=larysa.zaremba@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linyunsheng@huawei.com \
--cc=magnus.karlsson@intel.com \
--cc=michal.kubiak@intel.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.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.