From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: "Fabio M. De Francesco" <fmdefrancesco@gmail.com>
Cc: Ira Weiny <ira.weiny@intel.com>,
Andrew Morton <akpm@linux-foundation.org>,
Catalin Marinas <catalin.marinas@arm.com>,
"Matthew Wilcox (Oracle)" <willy@infradead.org>,
Will Deacon <will@kernel.org>,
Peter Collingbourne <pcc@google.com>,
Vlastimil Babka <vbabka@suse.cz>,
linux-kernel@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>,
linux-doc@vger.kernel.org, outreachy@lists.linux.dev,
"Acked-by : Mike Rapoport" <rppt@linux.ibm.com>
Subject: Re: [PATCH v2 1/4] mm/highmem: Fix kernel-doc warnings in highmem*.h
Date: Tue, 26 Apr 2022 13:04:42 +0200 [thread overview]
Message-ID: <YmfRynAhuSWz9H+e@linutronix.de> (raw)
In-Reply-To: <4396926.LvFx2qVVIh@leap>
On 2022-04-26 11:43:03 [+0200], Fabio M. De Francesco wrote:
> I might add "Deprecated!", however Ira Weiny asked me to rephrase an
> earlier version of one of the patch which is is this series. I wrote that
> "The use of kmap_atomic() is deprecated in favor of kmap_local_page()." and
> Ira replied "I'm not sure deprecated is the right word. [] This series
> should end up indicating the desire to stop growing kmap() and
> kmap_atomic() call sites and that their deprecation is on the horizon.".
>
> What Ira suggested is exactly what I'm doing in v2.
>
> @Ira: what about adding "Deprecated!" for consistency with kmap_atomic()
> kdoc?
I would prefer to keep the documentation symmetric.
> > The part about
> > disabling/ enabling preemption is true for !PREEMPT_RT.
>
> To me it looks that this is not what Thomas Gleixner wrote in the cover
> letter of his series ("[patch V2 00/18] mm/highmem: Preemptible variant of
> kmap_atomic & friends") at
> https://lore.kernel.org/lkml/20201029221806.189523375@linutronix.de/
>
> For your convenience:
>
> "[] there is not a real reason anymore to confine migration disabling to
> RT. [] Removing the RT dependency from migrate_disable/enable()".
>
> Is there anything I'm still missing?
Hmm. We had migrate_disable() initially limited to RT for a few reasons.
Then Linus complained about this and that and mentioned something about
Highmem is dying or not used that widely anymore (or so) and then the
local interface came up which required the migrate_disable() interface
to work for everyone. Back then the atomic interface should go away and
I remember that hch wanted to remove some of the callers from the DMA
API.
That is just on top of my head.
Looking at kmap_atomic() there is this:
| static inline void *kmap_atomic_prot(struct page *page, pgprot_t prot)
| {
| if (IS_ENABLED(CONFIG_PREEMPT_RT))
| migrate_disable();
| else
| preempt_disable();
|
| pagefault_disable();
| return __kmap_local_page_prot(page, prot);
| }
|
| static inline void *kmap_atomic(struct page *page)
| {
| return kmap_atomic_prot(page, kmap_prot);
| }
as of v5.18-rc4. As you see, pagefaults are disabled for everyone. RT disables
migration only and !RT disables preemption.
Internally __kmap_local_page_prot() ends up in __kmap_local_pfn_prot()
which uses migrate_disable() for the lifetime of the mapping. So it
disables additionally migration for the life time of the mapping but
preemption has been also disabled (and only for !RT).
We _could_ only disable migration in kmap_atomic_prot() for everyone but
we can't easily proof that none of the kmap_atomic() user rely on the
preempt-disable part. RT never disabled preemption here so it is safe to
assume that nothing on RT relies on that.
> > The part that
> > worries me is that people use it and rely on disabled preemption like
> > some did in the past.
>
> This is something I'd prefer to hear also from other developers who are
> CC'ed for this patch :)
Eitherway, according to the code kmap_atomic() does not always disable
preemption and the other comments around indicate that it is deprecated,
see commit
f3ba3c710ac5a ("mm/highmem: Provide kmap_local*")
https://git.kernel.org/torvalds/c/f3ba3c710ac5a
> Thanks for your review,
>
> Fabio
Sebastian
next prev parent reply other threads:[~2022-04-26 11:04 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-25 16:23 [PATCH v2 0/4] Extend and reorganize Highmem's documentation Fabio M. De Francesco
2022-04-25 16:23 ` [PATCH v2 1/4] mm/highmem: Fix kernel-doc warnings in highmem*.h Fabio M. De Francesco
2022-04-26 7:01 ` Sebastian Andrzej Siewior
2022-04-26 9:43 ` Fabio M. De Francesco
2022-04-26 11:04 ` Sebastian Andrzej Siewior [this message]
2022-04-27 5:28 ` Fabio M. De Francesco
2022-04-29 15:59 ` Ira Weiny
2022-05-25 9:34 ` Sebastian Andrzej Siewior
2022-05-25 16:03 ` Ira Weiny
2022-04-25 16:23 ` [PATCH v2 2/4] Documentation/vm: Include kdocs into highmem.rst Fabio M. De Francesco
2022-04-25 16:23 ` [PATCH v2 3/4] Documentation/vm: Move section from highmem.rst to highmem.h Fabio M. De Francesco
2022-04-25 16:24 ` [PATCH v2 4/4] Documentation/vm: Rework "Temporary Virtual Mappings" section Fabio M. De Francesco
2022-04-26 7:17 ` Sebastian Andrzej Siewior
2022-04-26 10:45 ` Fabio M. De Francesco
2022-04-26 11:47 ` Sebastian Andrzej Siewior
2022-04-26 18:31 ` Fabio M. De Francesco
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=YmfRynAhuSWz9H+e@linutronix.de \
--to=bigeasy@linutronix.de \
--cc=akpm@linux-foundation.org \
--cc=catalin.marinas@arm.com \
--cc=corbet@lwn.net \
--cc=fmdefrancesco@gmail.com \
--cc=ira.weiny@intel.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=outreachy@lists.linux.dev \
--cc=pcc@google.com \
--cc=rppt@linux.ibm.com \
--cc=vbabka@suse.cz \
--cc=will@kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).