linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set
@ 2025-06-02 21:05 Steven Rostedt
  2025-06-02 21:14 ` Steven Rostedt
  0 siblings, 1 reply; 13+ messages in thread
From: Steven Rostedt @ 2025-06-02 21:05 UTC (permalink / raw)
  To: LKML, linux-mm
  Cc: Hugh Dickins, Andrew Morton, Matthew Wilcox (Oracle),
	Linus Torvalds

From: Steven Rostedt <rostedt@goodmis.org>

When CONFIG_SHMEM is not set, the following compiler error occurs:

ld: vmlinux.o: in function `ttm_backup_backup_page':
(.text+0x10363bc): undefined reference to `shmem_writeout'
make[3]: *** [/work/build/trace/nobackup/linux-test.git/scripts/Makefile.vmlinux:91: vmlinux.unstripped] Error 1
make[2]: *** [/work/build/trace/nobackup/linux-test.git/Makefile:1241: vmlinux] Error 2
make[1]: *** [/work/build/trace/nobackup/linux-test.git/Makefile:248: __sub-make] Error 2
make[1]: Leaving directory '/work/build/nobackup/tracetest'
make: *** [Makefile:248: __sub-make] Error 2

This is due to the replacement of writepage and calling swap_writepage()
and shmem_writepage() directly. The issue is that when CONFIG_SHMEM is not
defined, shmem_writepage() is also not defined. Add it as a stub, and it
should also never be called when CONFIG_SHMEM is undefined.

Fixes: 84798514db50 ("mm: Remove swap_writepage() and shmem_writepage()")
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
---
 mm/shmem.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/mm/shmem.c b/mm/shmem.c
index 858cee02ca49..dec85388030a 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -5760,6 +5760,11 @@ void shmem_unlock_mapping(struct address_space *mapping)
 {
 }
 
+int shmem_writeout(struct folio *folio, struct writeback_control *wbc)
+{
+	return 0;
+}
+
 #ifdef CONFIG_MMU
 unsigned long shmem_get_unmapped_area(struct file *file,
 				      unsigned long addr, unsigned long len,
-- 
2.47.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set
  2025-06-02 21:05 [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set Steven Rostedt
@ 2025-06-02 21:14 ` Steven Rostedt
  2025-06-02 21:46   ` Matthew Wilcox
  0 siblings, 1 reply; 13+ messages in thread
From: Steven Rostedt @ 2025-06-02 21:14 UTC (permalink / raw)
  To: LKML, linux-mm
  Cc: Hugh Dickins, Andrew Morton, Matthew Wilcox (Oracle),
	Linus Torvalds

On Mon, 2 Jun 2025 17:05:00 -0400
Steven Rostedt <rostedt@goodmis.org> wrote:

> From: Steven Rostedt <rostedt@goodmis.org>
> 
> When CONFIG_SHMEM is not set, the following compiler error occurs:
> 
> ld: vmlinux.o: in function `ttm_backup_backup_page':

Actually, I was looking at the wrong location and not at ttm_backup_backup_page().

Which commit fe75adffac33e ("ttm: Call shmem_writeout() from
ttm_backup_backup_page()") updates as:

diff --git a/drivers/gpu/drm/ttm/ttm_backup.c b/drivers/gpu/drm/ttm/ttm_backup.c
index 93c007f18855..0d5718466ffc 100644
--- a/drivers/gpu/drm/ttm/ttm_backup.c
+++ b/drivers/gpu/drm/ttm/ttm_backup.c
@@ -136,13 +136,13 @@ ttm_backup_backup_page(struct ttm_backup *backup, struct page *page,
                        .for_reclaim = 1,
                };
                folio_set_reclaim(to_folio);
-               ret = mapping->a_ops->writepage(folio_file_page(to_folio, idx), &wbc);
+               ret = shmem_writeout(to_folio, &wbc);
                if (!folio_test_writeback(to_folio))
                        folio_clear_reclaim(to_folio);
                /*
-                * If writepage succeeds, it unlocks the folio.
-                * writepage() errors are otherwise dropped, since writepage()
-                * is only best effort here.
+                * If writeout succeeds, it unlocks the folio.  errors
+                * are otherwise dropped, since writeout is only best
+                * effort here.
                 */
                if (ret)
                        folio_unlock(to_folio);

I'm not sure this is the right fix or not.


> (.text+0x10363bc): undefined reference to `shmem_writeout'
> make[3]: *** [/work/build/trace/nobackup/linux-test.git/scripts/Makefile.vmlinux:91: vmlinux.unstripped] Error 1
> make[2]: *** [/work/build/trace/nobackup/linux-test.git/Makefile:1241: vmlinux] Error 2
> make[1]: *** [/work/build/trace/nobackup/linux-test.git/Makefile:248: __sub-make] Error 2
> make[1]: Leaving directory '/work/build/nobackup/tracetest'
> make: *** [Makefile:248: __sub-make] Error 2
> 
> This is due to the replacement of writepage and calling swap_writepage()
> and shmem_writepage() directly. The issue is that when CONFIG_SHMEM is not
> defined, shmem_writepage() is also not defined. Add it as a stub, and it
> should also never be called when CONFIG_SHMEM is undefined.
> 
> Fixes: 84798514db50 ("mm: Remove swap_writepage() and shmem_writepage()")
> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
> ---
>  mm/shmem.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/mm/shmem.c b/mm/shmem.c
> index 858cee02ca49..dec85388030a 100644
> --- a/mm/shmem.c
> +++ b/mm/shmem.c
> @@ -5760,6 +5760,11 @@ void shmem_unlock_mapping(struct address_space *mapping)
>  {
>  }
>  
> +int shmem_writeout(struct folio *folio, struct writeback_control *wbc)
> +{
> +	return 0;

Perhaps this should return:

	return swap_writeout(folio, wbc);

?

-- Steve

> +}
> +
>  #ifdef CONFIG_MMU
>  unsigned long shmem_get_unmapped_area(struct file *file,
>  				      unsigned long addr, unsigned long len,



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set
  2025-06-02 21:14 ` Steven Rostedt
@ 2025-06-02 21:46   ` Matthew Wilcox
  2025-06-03  8:02     ` Hugh Dickins
  0 siblings, 1 reply; 13+ messages in thread
From: Matthew Wilcox @ 2025-06-02 21:46 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: LKML, linux-mm, Hugh Dickins, Andrew Morton, Linus Torvalds

On Mon, Jun 02, 2025 at 05:14:58PM -0400, Steven Rostedt wrote:
> On Mon, 2 Jun 2025 17:05:00 -0400
> Steven Rostedt <rostedt@goodmis.org> wrote:
> 
> > From: Steven Rostedt <rostedt@goodmis.org>
> > 
> > When CONFIG_SHMEM is not set, the following compiler error occurs:
> > 
> > ld: vmlinux.o: in function `ttm_backup_backup_page':
> 
> I'm not sure this is the right fix or not.

> > +int shmem_writeout(struct folio *folio, struct writeback_control *wbc)
> > +{
> > +	return 0;
> 
> Perhaps this should return:
> 
> 	return swap_writeout(folio, wbc);

I don't think so.  ttm_backup_backup_page() gets its page from:

        to_folio = shmem_read_folio_gfp(mapping, idx, alloc_gfp);
...
                ret = shmem_writeout(to_folio, &wbc);

and if you look at the implementation of shmem_read_folio_gfp() does:

#else
        /*
         * The tiny !SHMEM case uses ramfs without swap
         */
        return mapping_read_folio_gfp(mapping, index, gfp);
#endif

so I would say that if anybody is actually using it this way (and 99%
chance they're not), they literally cannot write back the folio.  So
I think your initial patch is fine.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set
  2025-06-02 21:46   ` Matthew Wilcox
@ 2025-06-03  8:02     ` Hugh Dickins
  2025-06-03 14:29       ` Steven Rostedt
  0 siblings, 1 reply; 13+ messages in thread
From: Hugh Dickins @ 2025-06-03  8:02 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: Steven Rostedt, LKML, linux-mm, Hugh Dickins, Andrew Morton,
	Linus Torvalds

On Mon, 2 Jun 2025, Matthew Wilcox wrote:
> On Mon, Jun 02, 2025 at 05:14:58PM -0400, Steven Rostedt wrote:
> > On Mon, 2 Jun 2025 17:05:00 -0400
> > Steven Rostedt <rostedt@goodmis.org> wrote:
> > 
> > > From: Steven Rostedt <rostedt@goodmis.org>
> > > 
> > > When CONFIG_SHMEM is not set, the following compiler error occurs:
> > > 
> > > ld: vmlinux.o: in function `ttm_backup_backup_page':
> > 
> > I'm not sure this is the right fix or not.
> 
> > > +int shmem_writeout(struct folio *folio, struct writeback_control *wbc)
> > > +{
> > > +	return 0;
> > 
> > Perhaps this should return:
> > 
> > 	return swap_writeout(folio, wbc);
> 
> I don't think so.  ttm_backup_backup_page() gets its page from:
> 
>         to_folio = shmem_read_folio_gfp(mapping, idx, alloc_gfp);
> ...
>                 ret = shmem_writeout(to_folio, &wbc);
> 
> and if you look at the implementation of shmem_read_folio_gfp() does:
> 
> #else
>         /*
>          * The tiny !SHMEM case uses ramfs without swap
>          */
>         return mapping_read_folio_gfp(mapping, index, gfp);
> #endif
> 
> so I would say that if anybody is actually using it this way (and 99%
> chance they're not), they literally cannot write back the folio.  So
> I think your initial patch is fine.

Agreed that ramfs does not use swap, so calling swap_writepage() would
be weird.  But, thanks for the build fix Steve, but it cannot be right
because return 0 says shmem_writeout() successfully sent the page to
swap, and that has unlocked the page (or soon will do so).  It should
return an error (-ENXIO?), but I haven't checked what the callers do with
that, nor whether they need the folio to be redirtied.  And wouldn't it
need an EXPORT like the real one?  Sorry, can't keep up, there are many
many things I should have looked at but have not... Tomorrow?

Hugh


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set
  2025-06-03  8:02     ` Hugh Dickins
@ 2025-06-03 14:29       ` Steven Rostedt
  2025-06-03 16:26         ` Matthew Wilcox
  0 siblings, 1 reply; 13+ messages in thread
From: Steven Rostedt @ 2025-06-03 14:29 UTC (permalink / raw)
  To: Hugh Dickins
  Cc: Matthew Wilcox, LKML, linux-mm, Andrew Morton, Linus Torvalds

On Tue, 3 Jun 2025 01:02:36 -0700 (PDT)
Hugh Dickins <hughd@google.com> wrote:

> Agreed that ramfs does not use swap, so calling swap_writepage() would
> be weird.  But, thanks for the build fix Steve, but it cannot be right
> because return 0 says shmem_writeout() successfully sent the page to
> swap, and that has unlocked the page (or soon will do so).  It should
> return an error (-ENXIO?), but I haven't checked what the callers do with

Yeah, I figured it should return an error, but looking at the code I
couldn't figure out what the proper error would be. Then I also noticed
that the other stub functions just returned zero so I did the same.

Perhaps add a WARN_ON_ONCE() if it is called without CONFIG_SHMEM configured?

> that, nor whether they need the folio to be redirtied.  And wouldn't it
> need an EXPORT like the real one?  Sorry, can't keep up, there are many
> many things I should have looked at but have not... Tomorrow?

Yeah, it probably needs an export as well.

Note, if you come up with a solution, by all means use it and don't use my
patch. I'm happy with a "Reported-by" and don't need to be the author. This
is the "fix" I'm using so that I can test my code because without it, my
tests fail.

I'm also happy to send another update if it's simple.

-- Steve


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set
  2025-06-03 14:29       ` Steven Rostedt
@ 2025-06-03 16:26         ` Matthew Wilcox
  2025-06-03 17:27           ` Steven Rostedt
  0 siblings, 1 reply; 13+ messages in thread
From: Matthew Wilcox @ 2025-06-03 16:26 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: Hugh Dickins, LKML, linux-mm, Andrew Morton, Linus Torvalds

On Tue, Jun 03, 2025 at 10:29:59AM -0400, Steven Rostedt wrote:
> On Tue, 3 Jun 2025 01:02:36 -0700 (PDT)
> Hugh Dickins <hughd@google.com> wrote:
> 
> > Agreed that ramfs does not use swap, so calling swap_writepage() would
> > be weird.  But, thanks for the build fix Steve, but it cannot be right
> > because return 0 says shmem_writeout() successfully sent the page to
> > swap, and that has unlocked the page (or soon will do so).  It should
> > return an error (-ENXIO?), but I haven't checked what the callers do with
> 
> Yeah, I figured it should return an error, but looking at the code I
> couldn't figure out what the proper error would be. Then I also noticed
> that the other stub functions just returned zero so I did the same.
> 
> Perhaps add a WARN_ON_ONCE() if it is called without CONFIG_SHMEM configured?

Or just make this module depend on SHMEM?  I don't think it makes much
sense to use it without being able to swap, and shmem can't swap ...


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set
  2025-06-03 16:26         ` Matthew Wilcox
@ 2025-06-03 17:27           ` Steven Rostedt
  2025-06-03 17:54             ` Linus Torvalds
  0 siblings, 1 reply; 13+ messages in thread
From: Steven Rostedt @ 2025-06-03 17:27 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: Hugh Dickins, LKML, linux-mm, Andrew Morton, Linus Torvalds,
	Christian Koenig, Huang Rui, Matthew Auld, Matthew Brost,
	dri-devel, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	David Airlie, Simona Vetter


[ Adding DRM folks ]

On Tue, 3 Jun 2025 17:26:23 +0100
Matthew Wilcox <willy@infradead.org> wrote:

> On Tue, Jun 03, 2025 at 10:29:59AM -0400, Steven Rostedt wrote:
> > On Tue, 3 Jun 2025 01:02:36 -0700 (PDT)
> > Hugh Dickins <hughd@google.com> wrote:
> >   
> > > Agreed that ramfs does not use swap, so calling swap_writepage() would
> > > be weird.  But, thanks for the build fix Steve, but it cannot be right
> > > because return 0 says shmem_writeout() successfully sent the page to
> > > swap, and that has unlocked the page (or soon will do so).  It should
> > > return an error (-ENXIO?), but I haven't checked what the callers do with  
> > 
> > Yeah, I figured it should return an error, but looking at the code I
> > couldn't figure out what the proper error would be. Then I also noticed
> > that the other stub functions just returned zero so I did the same.
> > 
> > Perhaps add a WARN_ON_ONCE() if it is called without CONFIG_SHMEM configured?  
> 
> Or just make this module depend on SHMEM?  I don't think it makes much
> sense to use it without being able to swap, and shmem can't swap ...

Heh, not exactly sure what to make depend on CONFIG_SHMEM. The function is:

  ttm_backup_backup_page()

Which is defined when CONFIG_DRM_TTM is set, but just doing:

diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index f094797f3b2b..ebb948a0142f 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -187,7 +187,7 @@ source "drivers/gpu/drm/display/Kconfig"
 
 config DRM_TTM
 	tristate
-	depends on DRM && MMU
+	depends on DRM && MMU && SHMEM
 	help
 	  GPU memory management subsystem for devices with multiple
 	  GPU memory types. Will be enabled automatically if a device driver

Isn't good enough because "select" can override depends on :-p and DRM_TTM
gets selected by:

 Symbol: DRM_TTM [=y]
 Type  : tristate
 Defined at drivers/gpu/drm/Kconfig:188
   Depends on: HAS_IOMEM [=y] && DRM [=y] && MMU [=y] && SHMEM [=n]
 Selected by [y]:
   - DRM_TTM_HELPER [=y] && HAS_IOMEM [=y] && DRM [=y]
   - DRM_RADEON [=y] && HAS_IOMEM [=y] && DRM [=y] && PCI [=y] && MMU [=y] && (AGP [=n] || !AGP [=n])
   - DRM_VMWGFX [=y] && HAS_IOMEM [=y] && DRM [=y] && PCI [=y] && MMU [=y] && (X86 [=y] && HYPERVISOR_GUEST [=y] || ARM64)
 Selected by [n]:
   - DRM_TTM_KUNIT_TEST [=n] && HAS_IOMEM [=y] && DRM [=y] && KUNIT [=n] && MMU [=y] && (UML || COMPILE_TEST [=n])
   - DRM_AMDGPU [=n] && HAS_IOMEM [=y] && DRM [=y] && PCI [=y] && MMU [=y] && !UML
   - DRM_NOUVEAU [=n] && HAS_IOMEM [=y] && DRM [=y] && PCI [=y] && MMU [=y]
   - DRM_I915 [=n] && HAS_IOMEM [=y] && DRM [=y] && X86 [=y] && PCI [=y] && !PREEMPT_RT [=n]
   - DRM_XE [=n] && HAS_IOMEM [=y] && DRM [=y] && PCI [=y] && MMU [=y] && (m [=m] && MODULES [=n] || KUNIT [=n]=y [=y]
   - DRM_QXL [=n] && HAS_IOMEM [=y] && DRM [=y] && PCI [=y] && MMU [=y] && HAS_IOPORT [=y]
   - DRM_LOONGSON [=n] && HAS_IOMEM [=y] && DRM [=y] && PCI [=y] && MMU [=y] && (LOONGARCH || MIPS || COMPILE_TEST [=n])
   - DRM_HISI_HIBMC [=n] && HAS_IOMEM [=y] && DRM [=y] && PCI [=y] && MMU [=y]
   - DRM_VBOXVIDEO [=n] && HAS_IOMEM [=y] && DRM [=y] && X86 [=y] && PCI [=y]

Should DRM itself depend on SHMEM?

-- Steve


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set
  2025-06-03 17:27           ` Steven Rostedt
@ 2025-06-03 17:54             ` Linus Torvalds
  2025-06-03 18:06               ` Steven Rostedt
  0 siblings, 1 reply; 13+ messages in thread
From: Linus Torvalds @ 2025-06-03 17:54 UTC (permalink / raw)
  To: Steven Rostedt
  Cc: Matthew Wilcox, Hugh Dickins, LKML, linux-mm, Andrew Morton,
	Christian Koenig, Huang Rui, Matthew Auld, Matthew Brost,
	dri-devel, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	David Airlie, Simona Vetter

On Tue, 3 Jun 2025 at 10:26, Steven Rostedt <rostedt@goodmis.org> wrote:
>
>  config DRM_TTM
>         tristate
> -       depends on DRM && MMU
> +       depends on DRM && MMU && SHMEM

Yeah, except I think you should just make it be

          depends on DRM && SHMEM

because SHMEM already depends on MMU.

That said, our docs already say that if you disable SHMEM, it gets
replaced by RAMFS, so maybe just having a ramfs version is the
RightThing(tm).

I don't think such a ramfs version should just return 0 - much less an
error. I think it should always redirty the page.

IOW, I think the "ramfs" version should look something like

        folio_mark_dirty(folio);
        if (wbc->for_reclaim)
                return AOP_WRITEPAGE_ACTIVATE;  /* Return with folio locked */
        folio_unlock(folio);
        return 0;

which is what shmem does for the "page is locked" case.

            Linus


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set
  2025-06-03 17:54             ` Linus Torvalds
@ 2025-06-03 18:06               ` Steven Rostedt
  2025-06-04  7:03                 ` Hugh Dickins
  0 siblings, 1 reply; 13+ messages in thread
From: Steven Rostedt @ 2025-06-03 18:06 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Matthew Wilcox, Hugh Dickins, LKML, linux-mm, Andrew Morton,
	Christian Koenig, Huang Rui, Matthew Auld, Matthew Brost,
	dri-devel, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	David Airlie, Simona Vetter

On Tue, 3 Jun 2025 10:54:49 -0700
Linus Torvalds <torvalds@linux-foundation.org> wrote:

> On Tue, 3 Jun 2025 at 10:26, Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> >  config DRM_TTM
> >         tristate
> > -       depends on DRM && MMU
> > +       depends on DRM && MMU && SHMEM  
> 
> Yeah, except I think you should just make it be
> 
>           depends on DRM && SHMEM
> 
> because SHMEM already depends on MMU.

Yeah, if I had made this a real patch I would have done that, but this was
only for seeing it it would work.

> 
> That said, our docs already say that if you disable SHMEM, it gets
> replaced by RAMFS, so maybe just having a ramfs version is the
> RightThing(tm).
> 
> I don't think such a ramfs version should just return 0 - much less an
> error. I think it should always redirty the page.
> 
> IOW, I think the "ramfs" version should look something like
> 
>         folio_mark_dirty(folio);
>         if (wbc->for_reclaim)
>                 return AOP_WRITEPAGE_ACTIVATE;  /* Return with folio locked */
>         folio_unlock(folio);
>         return 0;
> 
> which is what shmem does for the "page is locked" case.

I'll let someone that understand the code a bit more than I do to make such
a change. My patch was just a "this makes my system build" thing and let
those that know this code do the RightThing(tm).

-- Steve



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set
  2025-06-03 18:06               ` Steven Rostedt
@ 2025-06-04  7:03                 ` Hugh Dickins
  2025-06-04 12:04                   ` Steven Rostedt
  0 siblings, 1 reply; 13+ messages in thread
From: Hugh Dickins @ 2025-06-04  7:03 UTC (permalink / raw)
  To: Thomas Hellström, Steven Rostedt
  Cc: Linus Torvalds, Matthew Wilcox, Hugh Dickins, LKML, linux-mm,
	Andrew Morton, Christian Koenig, Huang Rui, Matthew Auld,
	Matthew Brost, dri-devel, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter

[-- Attachment #1: Type: text/plain, Size: 3177 bytes --]

Adding Thomas Hellström, father of ttm_backup_backup_page():
Steve doesn't have CONFIG_SHMEM=y, so now gets a build error because
there's no shmem_writeout(); whereas before 6.16, backup_backup
writeback would have oopsed on calling NULL ram_aops.writepage
when CONFIG_SHMEM is not set.

On Tue, 3 Jun 2025, Steven Rostedt wrote:
> On Tue, 3 Jun 2025 10:54:49 -0700
> Linus Torvalds <torvalds@linux-foundation.org> wrote:
> > On Tue, 3 Jun 2025 at 10:26, Steven Rostedt <rostedt@goodmis.org> wrote:
> > >
> > >  config DRM_TTM
> > >         tristate
> > > -       depends on DRM && MMU
> > > +       depends on DRM && MMU && SHMEM  
> > 
> > Yeah, except I think you should just make it be
> > 
> >           depends on DRM && SHMEM
> > 
> > because SHMEM already depends on MMU.
> 
> Yeah, if I had made this a real patch I would have done that, but this was
> only for seeing it it would work.

Many in drivers/gpu/drm do already "select SHMEM",
so I came to think that

--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -188,6 +188,7 @@ source "drivers/gpu/drm/display/Kconfig"
 config DRM_TTM
 	tristate
 	depends on DRM && MMU
+	select SHMEM
 	help
 	  GPU memory management subsystem for devices with multiple
 	  GPU memory types. Will be enabled automatically if a device driver

would be the right answer.

But perhaps that adds bloat to kernels that don't need backup_backup
writeback, and some #ifdef CONFIG_SHMEMs in or around backup_backup
would be more to the point.  Maybe add that "select SHMEM" line
before rc1, then refine ttm_backup.c with #ifdefs at leisure?

But I just don't appreciate backup_backup and its place in the
drm world: it's a matter for Thomas and dri-devel to work out.

> 
> > 
> > That said, our docs already say that if you disable SHMEM, it gets
> > replaced by RAMFS, so maybe just having a ramfs version is the
> > RightThing(tm).
> > 
> > I don't think such a ramfs version should just return 0 - much less an
> > error. I think it should always redirty the page.
> > 
> > IOW, I think the "ramfs" version should look something like
> > 
> >         folio_mark_dirty(folio);
> >         if (wbc->for_reclaim)
> >                 return AOP_WRITEPAGE_ACTIVATE;  /* Return with folio locked */
> >         folio_unlock(folio);
> >         return 0;
> > 
> > which is what shmem does for the "page is locked" case.
> 
> I'll let someone that understand the code a bit more than I do to make such
> a change. My patch was just a "this makes my system build" thing and let
> those that know this code do the RightThing(tm).

I did start out from the position that mm/shmem.c should provide a good
shmem_writeout() stub for the tiny !CONFIG_SHMEM case.  But seeing as
nobody else has wanted it before, and backup_backup would have been
crashing in such a case, it now seems to me pointless to add such a stub.

Unless all those drm "select SHMEM"s got added long ago to avoid exactly
such crashes, and a shmem stub is preferred throughout drivers/gpu/drm.

I vote for the "select SHMEM", but Thomas and dri-devel and Linus
should decide.

Hugh

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set
  2025-06-04  7:03                 ` Hugh Dickins
@ 2025-06-04 12:04                   ` Steven Rostedt
  2025-06-04 12:18                     ` Thomas Hellström
  0 siblings, 1 reply; 13+ messages in thread
From: Steven Rostedt @ 2025-06-04 12:04 UTC (permalink / raw)
  To: Hugh Dickins
  Cc: Thomas Hellström, Linus Torvalds, Matthew Wilcox, LKML,
	linux-mm, Andrew Morton, Christian Koenig, Huang Rui,
	Matthew Auld, Matthew Brost, dri-devel, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter

On Wed, 4 Jun 2025 00:03:18 -0700 (PDT)
Hugh Dickins <hughd@google.com> wrote:

> I vote for the "select SHMEM", but Thomas and dri-devel and Linus
> should decide.

I only tried "depends on SHMEM" which did not work, but it looks like
"select SHMEM" should.

I prefer this solution too.

Thanks,

-- Steve


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set
  2025-06-04 12:04                   ` Steven Rostedt
@ 2025-06-04 12:18                     ` Thomas Hellström
  2025-06-04 12:23                       ` Steven Rostedt
  0 siblings, 1 reply; 13+ messages in thread
From: Thomas Hellström @ 2025-06-04 12:18 UTC (permalink / raw)
  To: Steven Rostedt, Hugh Dickins
  Cc: Linus Torvalds, Matthew Wilcox, LKML, linux-mm, Andrew Morton,
	Christian Koenig, Huang Rui, Matthew Auld, Matthew Brost,
	dri-devel, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
	David Airlie, Simona Vetter

On Wed, 2025-06-04 at 08:04 -0400, Steven Rostedt wrote:
> On Wed, 4 Jun 2025 00:03:18 -0700 (PDT)
> Hugh Dickins <hughd@google.com> wrote:
> 
> > I vote for the "select SHMEM", but Thomas and dri-devel and Linus
> > should decide.
> 
> I only tried "depends on SHMEM" which did not work, but it looks like
> "select SHMEM" should.

I agree. The whole ttm_backup implementation is based on backing things
up to shmem objects so IMO it perfectly makes sense to "select SHMEM".

Let me know if you want me to send a patch for that.

In the very unlikely case someone would ever want a config without
SHMEM but with TTM, they'd have to live without the ttm_backup and we'd
create a separate config for that.

/Thomas


> 
> I prefer this solution too.
> 
> Thanks,
> 
> -- Steve



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set
  2025-06-04 12:18                     ` Thomas Hellström
@ 2025-06-04 12:23                       ` Steven Rostedt
  0 siblings, 0 replies; 13+ messages in thread
From: Steven Rostedt @ 2025-06-04 12:23 UTC (permalink / raw)
  To: Thomas Hellström
  Cc: Hugh Dickins, Linus Torvalds, Matthew Wilcox, LKML, linux-mm,
	Andrew Morton, Christian Koenig, Huang Rui, Matthew Auld,
	Matthew Brost, dri-devel, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter

On Wed, 04 Jun 2025 14:18:06 +0200
Thomas Hellström <thomas.hellstrom@linux.intel.com> wrote:

> Let me know if you want me to send a patch for that.

This is a simple fix. I can send the patch and make sure it fixes my builds.

Thanks,

-- Steve


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2025-06-04 12:21 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-02 21:05 [PATCH] mm: Fix compile error when CONFIG_SHMEM is not set Steven Rostedt
2025-06-02 21:14 ` Steven Rostedt
2025-06-02 21:46   ` Matthew Wilcox
2025-06-03  8:02     ` Hugh Dickins
2025-06-03 14:29       ` Steven Rostedt
2025-06-03 16:26         ` Matthew Wilcox
2025-06-03 17:27           ` Steven Rostedt
2025-06-03 17:54             ` Linus Torvalds
2025-06-03 18:06               ` Steven Rostedt
2025-06-04  7:03                 ` Hugh Dickins
2025-06-04 12:04                   ` Steven Rostedt
2025-06-04 12:18                     ` Thomas Hellström
2025-06-04 12:23                       ` Steven Rostedt

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).