On Wed, Dec 06, 2023 at 07:41:04PM +0000, Jani Saarinen wrote:
Hi,
-----Original Message-----
From: Intel-gfx <intel-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Shankar,
Uma
Sent: Wednesday, December 6, 2023 1:05 PM
To: Borah, Chaitanya Kumar <chaitanya.kumar.borah@xxxxxxxxx>; intel-
gfx@xxxxxxxxxxxxxxxxxxxxx
Subject: Re: [topic/core-for-CI] Revert "debugfs: annotate debugfs
handlers vs. removal with lockdep"
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of
> Chaitanya Kumar Borah
> Sent: Wednesday, December 6, 2023 12:17 PM
> To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx
> Subject: [topic/core-for-CI] Revert "debugfs: annotate
> debugfs handlers vs. removal with lockdep"
>
> From: Johannes Berg <johannes.berg@xxxxxxxxx>
>
> This reverts commit f4acfcd4deb1 ("debugfs: annotate debugfs handlers vs.
> removal with lockdep"), it appears to have false positives and really
> shouldn't have been in the -rc series with the fixes anyway.
Acked-by: Uma Shankar <uma.shankar@xxxxxxxxx>
Hi Chaitanya,
Please get the full CI run executed with this change, once its green we can plan merge.
Just commented on "issues" (no real issues ) on BAT and asked to re-report but we really should use sometimes by-pass shards when we see regression on this magnitude.
This has big impact on core/gem tests https://intel-gfx-ci.01.org/tree/drm-tip/index.html?testfilter=module%7Cgem%7Ccore
Even on module load. I am leaning to break process and not wait to Full CI if someone who has merge rights (eg @Vivi, Rodrigo, @De Marchi, Lucas) agree here?
I think this is the convincing link:
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_127359v2/index.html?testfilter=module%7Cgem%7Ccore
Applied with ack on irc by Rodrigo.
Lucas De Marchi
Br,
Jani
Regards,
Uma Shankar
> Link:https://patchwork.kernel.org/project/linux-
> fsdevel/patch/20231202114936.fd55431ab160.I911aa53abeeca138126f69
> 0d383a89b13eb05667@changeid/
> Reference: https://gitlab.freedesktop.org/drm/intel/-/issues/9802
> Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx>
> Acked-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> ---
> fs/debugfs/file.c | 10 ----------
> fs/debugfs/inode.c | 7 -------
> fs/debugfs/internal.h | 6 ------
> 3 files changed, 23 deletions(-)
>
> diff --git a/fs/debugfs/file.c b/fs/debugfs/file.c index
> a5ade8c16375..5063434be0fc 100644
> --- a/fs/debugfs/file.c
> +++ b/fs/debugfs/file.c
> @@ -108,12 +108,6 @@ int debugfs_file_get(struct dentry *dentry)
> kfree(fsd);
> fsd = READ_ONCE(dentry->d_fsdata);
> }
> -#ifdef CONFIG_LOCKDEP
> - fsd->lock_name = kasprintf(GFP_KERNEL, "debugfs:%pd",
> dentry);
> - lockdep_register_key(&fsd->key);
> - lockdep_init_map(&fsd->lockdep_map, fsd->lock_name ?:
> "debugfs",
> - &fsd->key, 0);
> -#endif
> INIT_LIST_HEAD(&fsd->cancellations);
> mutex_init(&fsd->cancellations_mtx);
> }
> @@ -132,8 +126,6 @@ int debugfs_file_get(struct dentry *dentry)
> if (!refcount_inc_not_zero(&fsd->active_users))
> return -EIO;
>
> - lock_map_acquire_read(&fsd->lockdep_map);
> -
> return 0;
> }
> EXPORT_SYMBOL_GPL(debugfs_file_get);
> @@ -151,8 +143,6 @@ void debugfs_file_put(struct dentry *dentry) {
> struct debugfs_fsdata *fsd = READ_ONCE(dentry->d_fsdata);
>
> - lock_map_release(&fsd->lockdep_map);
> -
> if (refcount_dec_and_test(&fsd->active_users))
> complete(&fsd->active_users_drained);
> }
> diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c index
> e4e7fe1bd9fb..034a617cb1a5 100644
> --- a/fs/debugfs/inode.c
> +++ b/fs/debugfs/inode.c
> @@ -243,10 +243,6 @@ static void debugfs_release_dentry(struct dentry
> *dentry)
>
> /* check it wasn't a dir (no fsdata) or automount (no real_fops) */
> if (fsd && fsd->real_fops) {
> -#ifdef CONFIG_LOCKDEP
> - lockdep_unregister_key(&fsd->key);
> - kfree(fsd->lock_name);
> -#endif
> WARN_ON(!list_empty(&fsd->cancellations));
> mutex_destroy(&fsd->cancellations_mtx);
> }
> @@ -755,9 +751,6 @@ static void __debugfs_file_removed(struct dentry
> *dentry)
> if ((unsigned long)fsd & DEBUGFS_FSDATA_IS_REAL_FOPS_BIT)
> return;
>
> - lock_map_acquire(&fsd->lockdep_map);
> - lock_map_release(&fsd->lockdep_map);
> -
> /* if we hit zero, just wait for all to finish */
> if (!refcount_dec_and_test(&fsd->active_users)) {
> wait_for_completion(&fsd->active_users_drained);
> diff --git a/fs/debugfs/internal.h b/fs/debugfs/internal.h index
> 0c4c68cf161f..dae80c2a469e 100644
> --- a/fs/debugfs/internal.h
> +++ b/fs/debugfs/internal.h
> @@ -7,7 +7,6 @@
>
> #ifndef _DEBUGFS_INTERNAL_H_
> #define _DEBUGFS_INTERNAL_H_
> -#include <linux/lockdep.h>
> #include <linux/list.h>
>
> struct file_operations;
> @@ -25,11 +24,6 @@ struct debugfs_fsdata {
> struct {
> refcount_t active_users;
> struct completion active_users_drained; -#ifdef
CONFIG_LOCKDEP
> - struct lockdep_map lockdep_map;
> - struct lock_class_key key;
> - char *lock_name;
> -#endif
>
> /* protect cancellations */
> struct mutex cancellations_mtx;
> --
> 2.25.1