2021-04-27 11:37:41

by Corentin Labbe

[permalink] [raw]
Subject: dma-api debugfs directory is not created since debugfs is not initialized

Hello

I try to debug some DMA problem on next-20210427, and so I have enabled CONFIG_DMA_API_DEBUG=y.
But the dma-api directory does show up in debugfs, but lot of other directory exists in it.

After debugging it seems due to commit 56348560d495 ("debugfs: do not attempt to create a new file before the filesystem is initalized")
Reverting the commit permit to "dma-api" debugfs to be found. (but seems not the right way to fix it).

Regards


2021-04-27 11:40:29

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: dma-api debugfs directory is not created since debugfs is not initialized

On Tue, Apr 27, 2021 at 01:34:27PM +0200, Corentin Labbe wrote:
> Hello
>
> I try to debug some DMA problem on next-20210427, and so I have enabled CONFIG_DMA_API_DEBUG=y.
> But the dma-api directory does show up in debugfs, but lot of other directory exists in it.

Does it show up properly in 5.12?

> After debugging it seems due to commit 56348560d495 ("debugfs: do not attempt to create a new file before the filesystem is initalized")
> Reverting the commit permit to "dma-api" debugfs to be found. (but seems not the right way to fix it).

We have had some odd start-up ordering issues that the above commit has
caused to show. Given that this commit is now in stable kernels, with
no report of this issue so far, I'm worried that maybe this is a dma
subsystem ordering issue?

thanks,

greg k-h

2021-04-27 12:34:15

by Robin Murphy

[permalink] [raw]
Subject: Re: dma-api debugfs directory is not created since debugfs is not initialized

On 2021-04-27 12:39, Greg KH wrote:
> On Tue, Apr 27, 2021 at 01:34:27PM +0200, Corentin Labbe wrote:
>> Hello
>>
>> I try to debug some DMA problem on next-20210427, and so I have enabled CONFIG_DMA_API_DEBUG=y.
>> But the dma-api directory does show up in debugfs, but lot of other directory exists in it.
>
> Does it show up properly in 5.12?
>
>> After debugging it seems due to commit 56348560d495 ("debugfs: do not attempt to create a new file before the filesystem is initalized")
>> Reverting the commit permit to "dma-api" debugfs to be found. (but seems not the right way to fix it).
>
> We have had some odd start-up ordering issues that the above commit has
> caused to show. Given that this commit is now in stable kernels, with
> no report of this issue so far, I'm worried that maybe this is a dma
> subsystem ordering issue?

Both debugfs_init() and dma_debug_init() do run at core_initcall level,
and disassembling the vmlinux from my current working tree does indeed
suggest that they somehow end up in the wrong relative order:

[...]
ffff80001160d0c8 <__initcall__kmod_debug__325_918_dma_debug_init1>:
ffff80001160d0c8: feb0d528 .word 0xfeb0d528

[...]

ffff80001160d108 <__initcall__kmod_debugfs__357_848_debugfs_init1>:
ffff80001160d108: fff4326c .word 0xfff4326c
[...]


I always had the impression that initcall ordering tended to work out
roughly alphabetical, such that entries from fs/* might come before
kernel/*, but I guess it's at the whims of the linker in the end :/

Perhaps the easiest thing to do is split out dma_debug_fs_init() and run
that at a later level? We do want the dma-debug infrastructure itself to
be up as early as possible, but I think the debugfs view of its
internals can happily wait until closer to the time that there's
actually a userspace to be able to look at it.

Robin.

2021-04-27 12:42:34

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: dma-api debugfs directory is not created since debugfs is not initialized

On Tue, Apr 27, 2021 at 01:32:50PM +0100, Robin Murphy wrote:
> On 2021-04-27 12:39, Greg KH wrote:
> > On Tue, Apr 27, 2021 at 01:34:27PM +0200, Corentin Labbe wrote:
> > > Hello
> > >
> > > I try to debug some DMA problem on next-20210427, and so I have enabled CONFIG_DMA_API_DEBUG=y.
> > > But the dma-api directory does show up in debugfs, but lot of other directory exists in it.
> >
> > Does it show up properly in 5.12?
> >
> > > After debugging it seems due to commit 56348560d495 ("debugfs: do not attempt to create a new file before the filesystem is initalized")
> > > Reverting the commit permit to "dma-api" debugfs to be found. (but seems not the right way to fix it).
> >
> > We have had some odd start-up ordering issues that the above commit has
> > caused to show. Given that this commit is now in stable kernels, with
> > no report of this issue so far, I'm worried that maybe this is a dma
> > subsystem ordering issue?
>
> Both debugfs_init() and dma_debug_init() do run at core_initcall level, and
> disassembling the vmlinux from my current working tree does indeed suggest
> that they somehow end up in the wrong relative order:
>
> [...]
> ffff80001160d0c8 <__initcall__kmod_debug__325_918_dma_debug_init1>:
> ffff80001160d0c8: feb0d528 .word 0xfeb0d528
>
> [...]
>
> ffff80001160d108 <__initcall__kmod_debugfs__357_848_debugfs_init1>:
> ffff80001160d108: fff4326c .word 0xfff4326c
> [...]
>
>
> I always had the impression that initcall ordering tended to work out
> roughly alphabetical, such that entries from fs/* might come before
> kernel/*, but I guess it's at the whims of the linker in the end :/

init call ordering happens from link ordering.

> Perhaps the easiest thing to do is split out dma_debug_fs_init() and run
> that at a later level? We do want the dma-debug infrastructure itself to be
> up as early as possible, but I think the debugfs view of its internals can
> happily wait until closer to the time that there's actually a userspace to
> be able to look at it.

That seems like a better idea here, there's no need for "special
treatment" of debugfs.

thanks,

greg k-h

2021-04-27 16:10:53

by Corentin Labbe

[permalink] [raw]
Subject: Re: dma-api debugfs directory is not created since debugfs is not initialized

Le Tue, Apr 27, 2021 at 01:39:16PM +0200, Greg KH a ?crit :
> On Tue, Apr 27, 2021 at 01:34:27PM +0200, Corentin Labbe wrote:
> > Hello
> >
> > I try to debug some DMA problem on next-20210427, and so I have enabled CONFIG_DMA_API_DEBUG=y.
> > But the dma-api directory does show up in debugfs, but lot of other directory exists in it.
>
> Does it show up properly in 5.12?
>

No (Tested on a qemu x86_64)