All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Barry Song <21cnbao@gmail.com>
To: Guenter Roeck <linux@roeck-us.net>
Cc: chris@zankel.net, jcmvbkbc@gmail.com, akpm@linux-foundation.org,
	 linux-kernel@vger.kernel.org, willy@infradead.org,
	dennis@kernel.org,  alexghiti@rivosinc.com,
	Barry Song <v-songbaohua@oppo.com>,
	 Huacai Chen <chenhuacai@loongson.cn>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	 kernel test robot <lkp@intel.com>
Subject: Re: [PATCH v2] xtensa: remove redundant flush_dcache_page and ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE macros
Date: Wed, 20 Mar 2024 12:22:56 +1300	[thread overview]
Message-ID: <CAGsJ_4xOSjmA5c_b2M+_EM9eZkna7ePTV=MSvgOrt-VYvPEO3g@mail.gmail.com> (raw)
In-Reply-To: <ce352c9c-2052-4a23-809a-ef4cc9b7169c@roeck-us.net>

On Wed, Mar 20, 2024 at 3:18 AM Guenter Roeck <linux@roeck-us.net> wrote:
>
> On 3/18/24 18:27, Barry Song wrote:
> > On Tue, Mar 19, 2024 at 2:09 PM Barry Song <21cnbao@gmail.com> wrote:
> >>
> >> From: Barry Song <v-songbaohua@oppo.com>
> >>
> >> xtensa's flush_dcache_page() can be a no-op sometimes. There is a
> >> generic implementation for this case in include/asm-generic/
> >> cacheflush.h.
> >>   #ifndef ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE
> >>   static inline void flush_dcache_page(struct page *page)
> >>   {
> >>   }
> >>
> >>   #define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 0
> >>   #endif
> >>
> >> So remove the superfluous flush_dcache_page() definition, which also
> >> helps silence potential build warnings complaining the page variable
> >> passed to flush_dcache_page() is not used.
> >>
> >>     In file included from crypto/scompress.c:12:
> >>     include/crypto/scatterwalk.h: In function 'scatterwalk_pagedone':
> >>     include/crypto/scatterwalk.h:76:30: warning: variable 'page' set but not used [-Wunused-but-set-variable]
> >>        76 |                 struct page *page;
> >>           |                              ^~~~
> >>     crypto/scompress.c: In function 'scomp_acomp_comp_decomp':
> >>>> crypto/scompress.c:174:38: warning: unused variable 'dst_page' [-Wunused-variable]
> >>       174 |                         struct page *dst_page = sg_page(req->dst);
> >>           |
> >>
> >> The issue was originally reported on LoongArch by kernel test
> >> robot (Huacai fixed it on LoongArch), then reported by Guenter
> >> and me on xtensa.
> >>
> >> This patch also removes lots of redundant macros which have
> >> been defined by asm-generic/cacheflush.h.
> >>
> >> Cc: Huacai Chen <chenhuacai@loongson.cn>
> >> Cc: Herbert Xu <herbert@gondor.apana.org.au>
> >> Reported-by: kernel test robot <lkp@intel.com>
> >> Closes: https://lore.kernel.org/oe-kbuild-all/202403091614.NeUw5zcv-lkp@intel.com/
> >> Reported-by: Barry Song <v-songbaohua@oppo.com>
> >> Closes: https://lore.kernel.org/all/CAGsJ_4yDk1+axbte7FKQEwD7X2oxUCFrEc9M5YOS1BobfDFXPA@mail.gmail.com/
> >> Reported-by: Guenter Roeck <linux@roeck-us.net>
> >
> > Hi Guenter,
> > I am not a xtensa guy, so I will need your help for a full test. if
> > turns out it is a too big(ambitious)
>
> I sent a Tested-by: tag to your patch. As far as my testing goes, it works fine,
> and I added your patch to my "testing" branch (which tries to be buildable
> and testable for all architectures).

Thank you very much, Guenter. It would be nice if xtensa can leverage
the common cacheflush.h just like other architectures.

>
> > fix, a minimal fix might be:
> >
>
> FWIW, I think a minimal fix would have been to mark the variable as __maybe_unused,

I am not quite sure we want this as the point is that drivers should
be independent of
architectural differences.

The driver code, for itself, seems quite innocent,

struct page *dst_page = sg_page(req->dst);

for (i = 0; i < nr_pages; i++)
            flush_dcache_page(dst_page + i);

The only problem is that xtensa's flush_dcache_page is a macro and
doesn't use the "page"
parameter.
if we re-use the inline function in common cacheflush.h, it won't be a problem.

> but as others have pointed out it would be nice if there would be a guidance
> about optional API functions like this one that specifies if it may be
> implemented as macro and, if so, how it has to handle unused variables.

I agree. personally I like this and will have a go in
Documentation/process/coding-style.rst
and see others' opinions.

>
> Thanks,
> Guenter

Thanks
Barry

  reply	other threads:[~2024-03-19 23:23 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-19  1:09 [PATCH v2] xtensa: remove redundant flush_dcache_page and ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE macros Barry Song
2024-03-19  1:27 ` Barry Song
2024-03-19  2:12   ` Max Filippov
2024-03-19  2:16     ` Barry Song
2024-03-19  3:49       ` Guenter Roeck
2024-03-19 14:17   ` Guenter Roeck
2024-03-19 23:22     ` Barry Song [this message]
2024-03-19  3:43 ` Guenter Roeck
2024-04-27 19:05 ` Guenter Roeck
2024-04-29  1:39   ` Barry Song
2024-04-29  5:09   ` Max Filippov
2024-04-29  9:11     ` Barry Song
2024-04-29 13:58     ` Guenter Roeck

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='CAGsJ_4xOSjmA5c_b2M+_EM9eZkna7ePTV=MSvgOrt-VYvPEO3g@mail.gmail.com' \
    --to=21cnbao@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexghiti@rivosinc.com \
    --cc=chenhuacai@loongson.cn \
    --cc=chris@zankel.net \
    --cc=dennis@kernel.org \
    --cc=herbert@gondor.apana.org.au \
    --cc=jcmvbkbc@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=lkp@intel.com \
    --cc=v-songbaohua@oppo.com \
    --cc=willy@infradead.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 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.