* Semantic conflict between 04b177544a04 in drm-misc-fixes and 0b6b1bb28482 in -mm
@ 2026-07-22 22:56 Nathan Chancellor
2026-07-22 23:05 ` sashiko-bot
2026-07-22 23:15 ` Matthew Brost
0 siblings, 2 replies; 3+ messages in thread
From: Nathan Chancellor @ 2026-07-22 22:56 UTC (permalink / raw)
To: Mark Brown, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Matthew Brost, Andrew Morton, Usama Arif
Cc: linux-mm, dri-devel, linux-next
Hi Mark and drm and mm folks,
There is a semantic conflict between commit 04b177544a04 ("drm/pagemap:
Guard HPAGE_PMD_ORDER use with CONFIG_ARCH_ENABLE_THP_MIGRATION") in the
drm-misc-fixes tree and commit 0b6b1bb28482 ("mm: rename
ARCH_ENABLE_THP_MIGRATION to ARCH_HAS_PMD_SOFTLEAVES"), resulting in a
lone instance of CONFIG_ARCH_ENABLE_THP_MIGRATION with no way to define
it.
$ git grep ARCH_ENABLE_THP_MIGRATION
Next/merge.log:Merging drm-misc-fixes/for-linux-next-fixes (04b177544a040 drm/pagemap: Guard HPAGE_PMD_ORDER use with CONFIG_ARCH_ENABLE_THP_MIGRATION)
drivers/gpu/drm/drm_pagemap.c:#if IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION)
This results in an objtool warning (or error with CONFIG_OBJTOOL_WERROR)
when building with clang because NR_PAGES(order) results in 1U << -1,
which causes clang to stop generating code for
drm_pagemap_migrate_to_devmem() when encountering unconditional
undefined behavior.
drivers/gpu/drm/drm_gpusvm_helper.o: error: objtool: drm_pagemap_migrate_to_devmem() falls through to next function drm_pagemap_zdd_alloc()
Mark, could please apply the following diff to the -mm merge to avoid
this? Obviously, there will need to be further coordination for
resolving this upstream when the time comes but it is only an issue in
-next currently.
diff --git a/drivers/gpu/drm/drm_pagemap.c b/drivers/gpu/drm/drm_pagemap.c
index 4a794544b7dc..f00c27edbfb9 100644
--- a/drivers/gpu/drm/drm_pagemap.c
+++ b/drivers/gpu/drm/drm_pagemap.c
@@ -12,7 +12,7 @@
#include <drm/drm_pagemap_util.h>
#include <drm/drm_print.h>
-#if IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION)
+#if IS_ENABLED(CONFIG_ARCH_HAS_PMD_SOFTLEAVES)
#define DRM_PAGEMAP_PMD_ORDER HPAGE_PMD_ORDER
#else
#define DRM_PAGEMAP_PMD_ORDER (-1)
--
Cheers,
Nathan
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: Semantic conflict between 04b177544a04 in drm-misc-fixes and 0b6b1bb28482 in -mm
2026-07-22 22:56 Semantic conflict between 04b177544a04 in drm-misc-fixes and 0b6b1bb28482 in -mm Nathan Chancellor
@ 2026-07-22 23:05 ` sashiko-bot
2026-07-22 23:15 ` Matthew Brost
1 sibling, 0 replies; 3+ messages in thread
From: sashiko-bot @ 2026-07-22 23:05 UTC (permalink / raw)
To: Nathan Chancellor; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Incomplete fix: clang build failure and undefined behavior remain when CONFIG_ARCH_HAS_PMD_SOFTLEAVES is disabled.
--
--- Patch [1]: Semantic conflict between 04b177544a04 in drm-misc-fixes and 0b6b1bb28482 in -mm ---
commit 7a0a17a611e56673b6f5328de62e23da9f7ca1e8
Author: Nathan Chancellor <nathan@kernel.org>
Semantic conflict between 04b177544a04 in drm-misc-fixes and 0b6b1bb28482 in -mm
This commit resolves a semantic conflict by replacing
CONFIG_ARCH_ENABLE_THP_MIGRATION with CONFIG_ARCH_HAS_PMD_SOFTLEAVES.
> diff --git a/drivers/gpu/drm/drm_pagemap.c b/drivers/gpu/drm/drm_pagemap.c
> index 4a794544b7dcf..f00c27edbfb96 100644
> --- a/drivers/gpu/drm/drm_pagemap.c
> +++ b/drivers/gpu/drm/drm_pagemap.c
> @@ -12,7 +12,7 @@
> #include <drm/drm_pagemap_util.h>
> #include <drm/drm_print.h>
>
> -#if IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION)
> +#if IS_ENABLED(CONFIG_ARCH_HAS_PMD_SOFTLEAVES)
> #define DRM_PAGEMAP_PMD_ORDER HPAGE_PMD_ORDER
> #else
> #define DRM_PAGEMAP_PMD_ORDER (-1)
^^^^
[Severity: High]
This is a pre-existing issue, but does this still leave an unresolved build
failure and undefined behavior when CONFIG_ARCH_HAS_PMD_SOFTLEAVES is
disabled?
When the configuration is disabled, the fallback branch defines
DRM_PAGEMAP_PMD_ORDER as (-1). Its usage later in drm_pagemap_cpages()
and drm_pagemap_migrate_to_devmem() results in undefined behavior:
drivers/gpu/drm/drm_pagemap.c:drm_pagemap_migrate_to_devmem() {
...
order = DRM_PAGEMAP_PMD_ORDER;
...
for (j = 1; j < NR_PAGES(order) && i + j < npages; j++)
...
}
NR_PAGES(-1) expands to 1U << 4294967295, causing Clang to stop generating
code and emit a trap instruction, which triggers the objtool warning and
will panic the kernel at runtime if reached.
Could this fallback be adjusted to prevent the undefined behavior when
the config is not enabled?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260722225605.GA1910198@ax162?part=1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Semantic conflict between 04b177544a04 in drm-misc-fixes and 0b6b1bb28482 in -mm
2026-07-22 22:56 Semantic conflict between 04b177544a04 in drm-misc-fixes and 0b6b1bb28482 in -mm Nathan Chancellor
2026-07-22 23:05 ` sashiko-bot
@ 2026-07-22 23:15 ` Matthew Brost
1 sibling, 0 replies; 3+ messages in thread
From: Matthew Brost @ 2026-07-22 23:15 UTC (permalink / raw)
To: Nathan Chancellor
Cc: Mark Brown, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Andrew Morton, Usama Arif, linux-mm, dri-devel, linux-next
On Wed, Jul 22, 2026 at 03:56:05PM -0700, Nathan Chancellor wrote:
> Hi Mark and drm and mm folks,
>
Typically to get drm_pagemap.c to compile on various configs this is
what is needed:
109 #ifdef CONFIG_PGTABLE_HAS_HUGE_LEAVES
110 #define HPAGE_PMD_SHIFT PMD_SHIFT
111 #define HPAGE_PUD_SHIFT PUD_SHIFT
112 #else
113 #define HPAGE_PMD_SHIFT ({ BUILD_BUG(); 0; })
114 #define HPAGE_PUD_SHIFT ({ BUILD_BUG(); 0; })
115 #endif
So the drm_pagemap.c code could be:
-#if IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION)
+#if IS_ENABLED(CONFIG_PGTABLE_HAS_HUGE_LEAVES)
#define DRM_PAGEMAP_PMD_ORDER HPAGE_PMD_ORDER
#else
#define DRM_PAGEMAP_PMD_ORDER (-1)
This Kconfig has been around since 2024:
git format-patch -1 b979db1611a63
Would it be better for everyone for me to change this in the DRM branches?
Matt
> There is a semantic conflict between commit 04b177544a04 ("drm/pagemap:
> Guard HPAGE_PMD_ORDER use with CONFIG_ARCH_ENABLE_THP_MIGRATION") in the
> drm-misc-fixes tree and commit 0b6b1bb28482 ("mm: rename
> ARCH_ENABLE_THP_MIGRATION to ARCH_HAS_PMD_SOFTLEAVES"), resulting in a
> lone instance of CONFIG_ARCH_ENABLE_THP_MIGRATION with no way to define
> it.
>
> $ git grep ARCH_ENABLE_THP_MIGRATION
> Next/merge.log:Merging drm-misc-fixes/for-linux-next-fixes (04b177544a040 drm/pagemap: Guard HPAGE_PMD_ORDER use with CONFIG_ARCH_ENABLE_THP_MIGRATION)
> drivers/gpu/drm/drm_pagemap.c:#if IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION)
>
> This results in an objtool warning (or error with CONFIG_OBJTOOL_WERROR)
> when building with clang because NR_PAGES(order) results in 1U << -1,
> which causes clang to stop generating code for
> drm_pagemap_migrate_to_devmem() when encountering unconditional
> undefined behavior.
>
> drivers/gpu/drm/drm_gpusvm_helper.o: error: objtool: drm_pagemap_migrate_to_devmem() falls through to next function drm_pagemap_zdd_alloc()
>
> Mark, could please apply the following diff to the -mm merge to avoid
> this? Obviously, there will need to be further coordination for
> resolving this upstream when the time comes but it is only an issue in
> -next currently.
>
> diff --git a/drivers/gpu/drm/drm_pagemap.c b/drivers/gpu/drm/drm_pagemap.c
> index 4a794544b7dc..f00c27edbfb9 100644
> --- a/drivers/gpu/drm/drm_pagemap.c
> +++ b/drivers/gpu/drm/drm_pagemap.c
> @@ -12,7 +12,7 @@
> #include <drm/drm_pagemap_util.h>
> #include <drm/drm_print.h>
>
> -#if IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION)
> +#if IS_ENABLED(CONFIG_ARCH_HAS_PMD_SOFTLEAVES)
> #define DRM_PAGEMAP_PMD_ORDER HPAGE_PMD_ORDER
> #else
> #define DRM_PAGEMAP_PMD_ORDER (-1)
> --
> Cheers,
> Nathan
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-07-22 23:15 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-22 22:56 Semantic conflict between 04b177544a04 in drm-misc-fixes and 0b6b1bb28482 in -mm Nathan Chancellor
2026-07-22 23:05 ` sashiko-bot
2026-07-22 23:15 ` Matthew Brost
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.