From: "tip-bot2 for Thomas Gleixner" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>,
Linus Torvalds <torvalds@linuxfoundation.org>,
Christoph Hellwig <hch@lst.de>,
Andrew Morton <akpm@linux-foundation.org>, x86 <x86@kernel.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: [tip: core/mm] highmem: Make DEBUG_HIGHMEM functional
Date: Fri, 06 Nov 2020 23:27:24 -0000 [thread overview]
Message-ID: <160470524446.397.16379792318716189243.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20201103095857.268258322@linutronix.de>
The following commit has been merged into the core/mm branch of tip:
Commit-ID: 389755c250814185938f5b04334a4f0184c30647
Gitweb: https://git.kernel.org/tip/389755c250814185938f5b04334a4f0184c30647
Author: Thomas Gleixner <tglx@linutronix.de>
AuthorDate: Tue, 03 Nov 2020 10:27:19 +01:00
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Fri, 06 Nov 2020 23:14:55 +01:00
highmem: Make DEBUG_HIGHMEM functional
For some obscure reason when CONFIG_DEBUG_HIGHMEM is enabled the stack
depth is increased from 20 to 41. But the only thing DEBUG_HIGHMEM does is
to enable a few BUG_ON()'s in the mapping code.
That's a leftover from the historical mapping code which had fixed entries
for various purposes. DEBUG_HIGHMEM inserted guard mappings between the map
types. But that got all ditched when kmap_atomic() switched to a stack
based map management. Though the WITH_KM_FENCE magic survived without being
functional. All the thing does today is to increase the stack depth.
Add a working implementation to the generic kmap_local* implementation.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Linus Torvalds <torvalds@linuxfoundation.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Andrew Morton <akpm@linux-foundation.org>
Link: https://lore.kernel.org/r/20201103095857.268258322@linutronix.de
---
mm/highmem.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/mm/highmem.c b/mm/highmem.c
index bb4ce13..67d2d59 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -376,9 +376,19 @@ EXPORT_SYMBOL(kunmap_high);
static DEFINE_PER_CPU(int, __kmap_local_idx);
+/*
+ * With DEBUG_HIGHMEM the stack depth is doubled and every second
+ * slot is unused which acts as a guard page
+ */
+#ifdef CONFIG_DEBUG_HIGHMEM
+# define KM_INCR 2
+#else
+# define KM_INCR 1
+#endif
+
static inline int kmap_local_idx_push(void)
{
- int idx = __this_cpu_inc_return(__kmap_local_idx) - 1;
+ int idx = __this_cpu_add_return(__kmap_local_idx, KM_INCR) - 1;
WARN_ON_ONCE(in_irq() && !irqs_disabled());
BUG_ON(idx >= KM_MAX_IDX);
@@ -392,7 +402,7 @@ static inline int kmap_local_idx(void)
static inline void kmap_local_idx_pop(void)
{
- int idx = __this_cpu_dec_return(__kmap_local_idx);
+ int idx = __this_cpu_sub_return(__kmap_local_idx, KM_INCR);
BUG_ON(idx < 0);
}
next prev parent reply other threads:[~2020-11-06 23:27 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-03 9:27 [patch V3 00/37] mm/highmem: Preemptible variant of kmap_atomic & friends Thomas Gleixner
2020-11-03 9:27 ` [patch V3 01/37] mm/highmem: Un-EXPORT __kmap_atomic_idx() Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 02/37] highmem: Remove unused functions Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 03/37] fs: Remove asm/kmap_types.h includes Thomas Gleixner
2020-11-03 11:12 ` David Sterba
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 04/37] sh/highmem: Remove all traces of unused cruft Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 05/37] asm-generic: Provide kmap_size.h Thomas Gleixner
2020-11-03 12:25 ` Arnd Bergmann
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 06/37] highmem: Provide generic variant of kmap_atomic* Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 07/37] highmem: Make DEBUG_HIGHMEM functional Thomas Gleixner
2020-11-06 23:27 ` tip-bot2 for Thomas Gleixner [this message]
2020-11-03 9:27 ` [patch V3 08/37] x86/mm/highmem: Use generic kmap atomic implementation Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 09/37] arc/mm/highmem: " Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 10/37] ARM: highmem: Switch to generic kmap atomic Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
[not found] ` <CGME20201112081036eucas1p14e135a370d3bccab311727fd2e89f4df@eucas1p1.samsung.com>
2020-11-12 8:10 ` [patch V3 10/37] " Marek Szyprowski
2020-11-12 11:03 ` Thomas Gleixner
2020-11-12 11:07 ` Sebastian Andrzej Siewior
2020-11-03 9:27 ` [patch V3 11/37] csky/mm/highmem: " Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 12/37] microblaze/mm/highmem: " Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 13/37] mips/mm/highmem: " Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 14/37] nds32/mm/highmem: " Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 15/37] powerpc/mm/highmem: " Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 16/37] sparc/mm/highmem: " Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 17/37] xtensa/mm/highmem: " Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 18/37] highmem: Get rid of kmap_types.h Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 19/37] mm/highmem: Remove the old kmap_atomic cruft Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 20/37] io-mapping: Cleanup atomic iomap Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 21/37] Documentation/io-mapping: Remove outdated blurb Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 22/37] highmem: High implementation details and document API Thomas Gleixner
2020-11-03 17:48 ` Linus Torvalds
2020-11-03 19:00 ` Thomas Gleixner
2020-11-06 23:27 ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03 9:27 ` [patch V3 23/37] sched: Make migrate_disable/enable() independent of RT Thomas Gleixner
2020-11-03 9:27 ` [patch V3 24/37] sched: highmem: Store local kmaps in task struct Thomas Gleixner
2020-11-03 13:49 ` Thomas Gleixner
2020-11-03 13:51 ` [patch V4 " Thomas Gleixner
2020-11-03 9:27 ` [patch V3 25/37] mm/highmem: Provide kmap_local* Thomas Gleixner
2020-11-03 9:27 ` [patch V3 26/37] io-mapping: Provide iomap_local variant Thomas Gleixner
2020-11-03 9:27 ` [patch V3 27/37] x86/crashdump/32: Simplify copy_oldmem_page() Thomas Gleixner
2020-11-03 9:27 ` [patch V3 28/37] mips/crashdump: " Thomas Gleixner
2020-11-03 9:27 ` [patch V3 29/37] ARM: mm: Replace kmap_atomic_pfn() Thomas Gleixner
2020-11-03 9:27 ` [patch V3 30/37] highmem: Remove kmap_atomic_pfn() Thomas Gleixner
2020-11-03 9:27 ` [patch V3 31/37] drm/ttm: Replace kmap_atomic() usage Thomas Gleixner
2020-11-03 9:27 ` [patch V3 32/37] drm/vmgfx: Replace kmap_atomic() Thomas Gleixner
2020-11-03 9:27 ` [patch V3 33/37] highmem: Remove kmap_atomic_prot() Thomas Gleixner
2020-11-03 9:27 ` [patch V3 34/37] drm/qxl: Replace io_mapping_map_atomic_wc() Thomas Gleixner
2020-11-03 9:27 ` [patch V3 35/37] drm/nouveau/device: " Thomas Gleixner
2020-11-03 9:27 ` [patch V3 36/37] drm/i915: " Thomas Gleixner
2020-11-03 9:27 ` [patch V3 37/37] io-mapping: Remove io_mapping_map_atomic_wc() Thomas Gleixner
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=160470524446.397.16379792318716189243.tip-bot2@tip-bot2 \
--to=tip-bot2@linutronix.de \
--cc=akpm@linux-foundation.org \
--cc=hch@lst.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linuxfoundation.org \
--cc=x86@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 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).