All of lore.kernel.org
 help / color / mirror / Atom feed
From: Minchan Kim <minchan@kernel.org>
To: John Hubbard <jhubbard@nvidia.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	linux-mm <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>,
	"Paul E . McKenney" <paulmck@kernel.org>,
	John Dias <joaodias@google.com>,
	David Hildenbrand <david@redhat.com>
Subject: Re: [PATCH v4] mm: fix is_pinnable_page against on cma page
Date: Wed, 11 May 2022 14:46:12 -0700	[thread overview]
Message-ID: <YnwupNzDNv7IbjRQ@google.com> (raw)
In-Reply-To: <2ffa7670-04ea-bb28-28f8-93a9b9eea7e8@nvidia.com>

On Tue, May 10, 2022 at 09:32:05PM -0700, John Hubbard wrote:
> On 5/10/22 17:09, Minchan Kim wrote:
> > On Tue, May 10, 2022 at 04:58:13PM -0700, John Hubbard wrote:
> > > On 5/10/22 4:31 PM, Minchan Kim wrote:
> > > > > > +	int __mt = get_pageblock_migratetype(page);
> > > > > > +	int mt = __READ_ONCE(__mt);
> > > > > 
> > > > > Although I saw the email discussion about this in v2, that discussion
> > > > > didn't go far enough. It started with "don't use volatile", and went
> > > > > on to "try __READ_ONCE() instead", but it should have continued on
> > > > > to "you don't need this at all".
> > > > 
> > > > That's really what I want to hear from experts so wanted to learn
> > > > "Why". How could we prevent refetching of the mt if we don't use
> > > > __READ_ONCE or volatile there?
> > > > 
> > > > > 
> > > > > Because you don't. There is nothing you are racing with, and adding
> > > > > __READ_ONCE() in order to avoid a completely not-going-to-happen
> > > > > compiler re-invocation of a significant code block is just very wrong.
> > > > > 
> > > > > So let's just let it go entirely. :)
> > > > 
> > > > Yeah, once it's clear for everyone, I am happy to remove the
> > > > unnecessary lines.
> > > > 
> > > > > 
> > > > > > +
> > > > > > +	if (mt == MIGRATE_CMA || mt == MIGRATE_ISOLATE)
> > > > > 
> > > 
> > > With or without __READ_ONCE() or volatile or anything else,
> > > this code will do what you want. Which is: loosely check
> > > for either of the above.
> > > 
> > > What functional problem do you think you are preventing
> > > with __READ_ONCE()? Because I don't see one.
> > 
> > I discussed the issue at v1 so please take a look.
> > 
> > https://lore.kernel.org/all/YnFvmc+eMoXvLCWf@google.com/
> 
> I read that, but there was never any real justification there for needing
> to prevent a re-read of mt, just a preference: "I'd like to keep use the local
> variable mt's value in folloing conditions checks instead of refetching
> the value from get_pageblock_migratetype."
> 
> But I don't believe that there is any combination of values of mt that
> will cause a problem here.
> 
> I also think that once we pull in experts, they will tell us that the
> compiler is not going to re-run a non-trivial function to re-fetch a
> value, but I'm not one of those experts, so that's still arguable. But
> imagine what the kernel code would look like if every time we call
> a large function, we have to consider if it actually gets called some
> arbitrary number of times, due to (anti-) optimizations by the compiler.
> This seems like something that is not really happening.

Maybe, I might be paranoid since I have heard too subtle things
about how compiler could changes high level language code so wanted
be careful especially when we do lockless-stuff.

Who cares when we change the large(?) function to small(?) function
later on? I'd like to hear from experts to decide it.


  reply	other threads:[~2022-05-11 21:46 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-10 21:17 [PATCH v4] mm: fix is_pinnable_page against on cma page Minchan Kim
2022-05-10 22:56 ` John Hubbard
2022-05-10 23:31   ` Minchan Kim
2022-05-10 23:58     ` John Hubbard
2022-05-11  0:09       ` Minchan Kim
2022-05-11  4:32         ` John Hubbard
2022-05-11 21:46           ` Minchan Kim [this message]
2022-05-11 22:25             ` John Hubbard
2022-05-11 22:37               ` Minchan Kim
2022-05-11 22:49                 ` John Hubbard
2022-05-11 23:08                   ` Minchan Kim
2022-05-11 23:13                     ` John Hubbard
2022-05-11 23:15                       ` Minchan Kim
2022-05-11 23:28                         ` Minchan Kim
2022-05-11 23:33                           ` John Hubbard
2022-05-11 23:45                       ` Paul E. McKenney
2022-05-11 23:57                         ` John Hubbard
2022-05-12  0:12                           ` Paul E. McKenney
2022-05-12  0:12                           ` John Hubbard
2022-05-12  0:22                             ` Paul E. McKenney
2022-05-12  0:26                               ` Minchan Kim
2022-05-12  0:34                                 ` John Hubbard
2022-05-12  0:49                                   ` Paul E. McKenney
2022-05-12  1:02                                     ` John Hubbard
2022-05-12  1:03                                     ` Minchan Kim
2022-05-12  1:08                                       ` John Hubbard
2022-05-12  2:18                                         ` John Hubbard
2022-05-12  3:44                                           ` Minchan Kim
2022-05-12  4:47                                             ` John Hubbard
2022-05-17 14:00                                             ` Jason Gunthorpe
2022-05-17 18:12                                               ` John Hubbard
2022-05-17 19:28                                                 ` Jason Gunthorpe
2022-05-17 20:12                                                   ` John Hubbard
2022-05-17 20:21                                                     ` Paul E. McKenney
2022-05-23 16:33                                                     ` Minchan Kim
2022-05-24  2:55                                                       ` John Hubbard
2022-05-24  5:16                                                         ` Minchan Kim
2022-05-24  6:22                                                           ` John Hubbard
2022-05-24 14:19                                                           ` Jason Gunthorpe
2022-05-24 15:43                                                             ` Minchan Kim
2022-05-24 15:48                                                               ` Jason Gunthorpe
2022-05-24 16:37                                                                 ` Paul E. McKenney
2022-05-24 16:59                                                                   ` Minchan Kim
2022-05-12  3:57                                           ` Paul E. McKenney
2022-05-12  1:03                                   ` Minchan Kim
2022-05-12  0:35                                 ` Paul E. McKenney

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=YnwupNzDNv7IbjRQ@google.com \
    --to=minchan@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=david@redhat.com \
    --cc=jhubbard@nvidia.com \
    --cc=joaodias@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=paulmck@kernel.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.