From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1D0A1C4345F for ; Thu, 18 Apr 2024 14:57:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A0B646B0089; Thu, 18 Apr 2024 10:57:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9BB566B008C; Thu, 18 Apr 2024 10:57:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 883C26B0092; Thu, 18 Apr 2024 10:57:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 6B1FB6B0089 for ; Thu, 18 Apr 2024 10:57:22 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 08C4241482 for ; Thu, 18 Apr 2024 14:57:22 +0000 (UTC) X-FDA: 82022955924.13.E7139C6 Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) by imf08.hostedemail.com (Postfix) with ESMTP id 119B016000D for ; Thu, 18 Apr 2024 14:57:19 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=Cdw+IAZ8; spf=pass (imf08.hostedemail.com: domain of ilias.apalodimas@linaro.org designates 209.85.167.54 as permitted sender) smtp.mailfrom=ilias.apalodimas@linaro.org; dmarc=pass (policy=none) header.from=linaro.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713452240; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=4170ZhgzJpAXwr6ljG/YSDARpsJn4+o6qTKEWZM1ZqQ=; b=Dopqz27UUZckF3YbwZvg+R+t0N5W+qjyhFnIMFbHjVor0gvno6UpwJ7THKmfXPCjjDaRlP qJVJWT9ZcDE+vkP2h5oCPMEqyDGh6x6xJvwaM4zOZOOXXvRanRWsP5Nuh9UU8G5m7lnhmB TMsLeWqTMczB/9zz42OZLii6h5fFheI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713452240; a=rsa-sha256; cv=none; b=GMnS1yRdm0dRQw0tD95qfxaJ7GnYo/B1vOlIMeow4GkGfi7cfDZyb3rvZI3U/i00XaDJJ6 M+97KNGN1D6+otNaaTuyogb7TUBQoYNY3yfteRjG835Y5hUW9uEGYyKsy/42eYtuFxLhDH 42JMS/JjxK/PiDdCvFNEHVWX/ZiZz1I= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=Cdw+IAZ8; spf=pass (imf08.hostedemail.com: domain of ilias.apalodimas@linaro.org designates 209.85.167.54 as permitted sender) smtp.mailfrom=ilias.apalodimas@linaro.org; dmarc=pass (policy=none) header.from=linaro.org Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-518931f8d23so979928e87.3 for ; Thu, 18 Apr 2024 07:57:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1713452238; x=1714057038; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=4170ZhgzJpAXwr6ljG/YSDARpsJn4+o6qTKEWZM1ZqQ=; b=Cdw+IAZ8FXaAtcO18ykJhJOc/sqkuOs0KVFmm8bKkyPOBwb24CsDddXlQmdNmpZ08x uyCtN1ZLTpHraESqEBsdJjJ6FeXlyZek/1mYr4/kwg7HvklUZ8algH957FRW4rKVxNgz G1H3KTCi92QupwbTe0NU1CM87aBfyjYoaEGn1qobQFcdmFReAwYLwCSCWVw0giD9r9eu LpKMHAw8wAoT1cGG4k2y8vWb32O4T0Dk6JtIA5nbRc2vh83yJUUZa9NBuumSNGE0F1IU /Kcu9NA0JTZTTFI3nrE1/wZ7S6Irw85FAPlUMuyPVHjzwSQWef7BADVHT8JaKKPnWGfO 9SgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713452238; x=1714057038; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=4170ZhgzJpAXwr6ljG/YSDARpsJn4+o6qTKEWZM1ZqQ=; b=WL62NLrG/KkSYSrt54Ua15LRSgaeKmimqCs2JlSVmuv91JzzHEROnuu3nQMPPI+z++ AwmDMvmI6O6+9ncSF+CFppYUrIcLOL6tcmPjXcaUWsiNiu78wSzRIQ9zzFRhL2LMwAl5 G7Z+L/iMq9ejM77kEu0foZYCPHdpQsreeBa2tVb6nKSD8VXfqYZQmbMaqHujTEN94B2k zvh8NMriLAgWyATfSduln4ZhGvzIRtpf2sxOqeuWxHifCMHYKB4wmjV4YDC4Ux3pcAFD Shbsb5CgW2/R19Bo09lwA8MEGxtFXb2K+eD9FraFDM0N9ux8SJ9WM1AwKObOdRBBlj7D 5xuA== X-Forwarded-Encrypted: i=1; AJvYcCU4wsmrsuyd1BbLc8bbBfHMn6Um3Tz1mQRWGqIro40xvmKQ6pcOkwmy3XRKcRXAbbILoZCQRJIjfSzD8Klgt8wNGcA= X-Gm-Message-State: AOJu0Yw6hBl2srdSYonQGVs8zbtDYC0tWMdkXvxSK50y00toGs+VgLkz pRfPpAY7JaXSBtg/S3ImouVrzun/BCZpO1noWixHR4H17698F7awrv6SDygWtGjPUBZhKLJYOju Fiegtvxgv+5JlhD+4HVZPq9WwoCEukJDWiSqeYw== X-Google-Smtp-Source: AGHT+IGgo5ZpK7ScQ3STj7jd+rPX7sm4nXqGrRIqUtUQ4a24HhXvoJYmRFhhYV7WswO4nrk1SpVmPZ75uDv3YLj6r+o= X-Received: by 2002:a05:6512:3f0d:b0:519:7738:a5cf with SMTP id y13-20020a0565123f0d00b005197738a5cfmr1605328lfa.25.1713452238069; Thu, 18 Apr 2024 07:57:18 -0700 (PDT) MIME-Version: 1.0 References: <20240418113616.1108566-1-aleksander.lobakin@intel.com> <20240418113616.1108566-7-aleksander.lobakin@intel.com> In-Reply-To: <20240418113616.1108566-7-aleksander.lobakin@intel.com> From: Ilias Apalodimas Date: Thu, 18 Apr 2024 17:56:41 +0300 Message-ID: Subject: Re: [PATCH net-next v10 06/10] page_pool: add DMA-sync-for-CPU inline helper To: Alexander Lobakin Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexander Duyck , Yunsheng Lin , Jesper Dangaard Brouer , Christoph Lameter , Vlastimil Babka , Andrew Morton , Przemek Kitszel , nex.sw.ncis.osdt.itp.upstreaming@intel.com, netdev@vger.kernel.org, intel-wired-lan@lists.osuosl.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: jznyjkjgsp3nrk6egqe89wfe8z6wrc1z X-Rspamd-Queue-Id: 119B016000D X-Rspamd-Server: rspam06 X-Rspam-User: X-HE-Tag: 1713452239-654187 X-HE-Meta: U2FsdGVkX1/Rrlok84NKe71IvpOY7o8wKH5RLgiwIH+1bqaCGKRfW37X4a/gAX1LTucybml31sHlamqeCSuWc5Lnmcg9y24PHToayhEeCZ6fGqRcSXIulnj+KPjdOh6tskGm+f0LM+XnLc6KiqXgx3SuePh7kdxSnZl/03+e54pF1t+t2vDZj+OBQIpQxcI6tMnT+eoNRfwUX60YM7emAyfVF3nRtIhLMZzr067mrzE9qo1hEQ83sEhHq8uqkCdrpQApejw7tKs6z7g0g4m/YahgjPps6c+kr0jIunr4o4aPpnTEUSfwArEN5dLzSsDEo4RiJJcGYhS+z+Ne4jr5HN7chHkhrurMdIFyKC4gd9UsArfFqAqAFGG+kuXQGUDSWZpLGMuUbDTZ7d8PpWoFRMaoKNOwH4I05I4E3grjKWpgio4vWoD9Ae/pdw+XPrDRUCn1YuKpkWpyywvFSSficpZTidwYK8eSYeX5tscf8atzpM7j1g66Fu9zc2ZWA5kdlAE0J9G/HIeD3pRaSdVsSbKg9Ho1W2vihJRRU2kpDyXB/Ywuf6BrV2so6wHFBRRO9238MhYt1PioL48HvRn2t/Oml9KIButHFHY6c1ZolEHlwmEhJI0eIg84XIsLXS9EUMOXM1GPKXPvVAiQs9yhPv/EDx5b7w3wfLEbTAxKzdYu5P8bojrLI0h0fAMSlZXwyyUkHDvURWRY8MhITM+XGq0eRvv75K+305cHt1Yq8ypYRz5Lb2zM/MFxVWxhzE800OtbkmUZiQFj/u8YUEejEN0aSYmq4bgq2Dzcf7dx5dTDPTuYB0Zww7KUWv6wv3incYgNnOKPBhOEDN/NOUUgJMKFSoXBlvYxLyXJBrBVDh8G4hwAUDaVvOg02fcty28U3KZ2ZlBu6OIjYhKq04rvOhwJxdo6cHxkOJFB8g8OZ6F7lxjszSDLgHp81jF32QGSK2F3zPdFytv68jnKgic AtyRvUsI GeU8sVdI+rIW17lgiGLF2EZTzRDH2GsWQDwA7NvRSfVenDnQM4bsGlFN3JlPtFboMzhwNVa9HRXUgfs6wTna+On5qiR7bhrLbY7X2smbxfUdaofM0sAxNYUQmryF+Cq4S8we6RlXuxgV1+zWArwpkvYFCpkQPZ7s4ciZ7HgvmCQ+wOqCFKmDfX/Ruym9WoM6BUTPVN5aZ73KSoIutk89Qkn/FO3QD0cCawNqHo2fIyLnpOLT/whOfna70s4OBWfu8wZf/J3BdQ4N5m8gkYACU0uSxlkTxdKkn8uZniZDT9UIIvtWWyyinTEEVEEXeXLmS0VtPN2NEYOcL0ZsoIhRzLWx6VnFC7HuwqxC7 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Thu, 18 Apr 2024 at 14:37, Alexander Lobakin wrote: > > Each driver is responsible for syncing buffers written by HW for CPU > before accessing them. Almost each PP-enabled driver uses the same > pattern, which could be shorthanded into a static inline to make driver > code a little bit more compact. > Introduce a simple helper which performs DMA synchronization for the > size passed from the driver. It can be used even when the pool doesn't > manage DMA-syncs-for-device, just make sure the page has a correct DMA > address set via page_pool_set_dma_addr(). > > Signed-off-by: Alexander Lobakin > --- > include/net/page_pool/helpers.h | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/include/net/page_pool/helpers.h b/include/net/page_pool/helpers.h > index c7bb06750e85..873631c79ab1 100644 > --- a/include/net/page_pool/helpers.h > +++ b/include/net/page_pool/helpers.h > @@ -52,6 +52,8 @@ > #ifndef _NET_PAGE_POOL_HELPERS_H > #define _NET_PAGE_POOL_HELPERS_H > > +#include > + > #include > > #ifdef CONFIG_PAGE_POOL_STATS > @@ -395,6 +397,28 @@ static inline bool page_pool_set_dma_addr(struct page *page, dma_addr_t addr) > return false; > } > > +/** > + * page_pool_dma_sync_for_cpu - sync Rx page for CPU after it's written by HW > + * @pool: &page_pool the @page belongs to > + * @page: page to sync > + * @offset: offset from page start to "hard" start if using PP frags > + * @dma_sync_size: size of the data written to the page > + * > + * Can be used as a shorthand to sync Rx pages before accessing them in the > + * driver. Caller must ensure the pool was created with ``PP_FLAG_DMA_MAP``. > + * Note that this version performs DMA sync unconditionally, even if the > + * associated PP doesn't perform sync-for-device. > + */ > +static inline void page_pool_dma_sync_for_cpu(const struct page_pool *pool, > + const struct page *page, > + u32 offset, u32 dma_sync_size) > +{ > + dma_sync_single_range_for_cpu(pool->p.dev, > + page_pool_get_dma_addr(page), > + offset + pool->p.offset, dma_sync_size, > + page_pool_get_dma_dir(pool)); > +} > + > static inline bool page_pool_put(struct page_pool *pool) > { > return refcount_dec_and_test(&pool->user_cnt); > -- > 2.44.0 > Reviewed-by: Ilias Apalodimas