All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab@kernel.org>
To: Tsuchiya Yuto <kitakar@gmail.com>
Cc: unlisted-recipients:; (no To-header on
	input)@bombadil.infradead.org,
	Hans de Goede <hdegoede@redhat.com>,
	Patrik Gfeller <patrik.gfeller@gmail.com>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Kaixu Xia <kaixuxia@tencent.com>, Ingo Molnar <mingo@kernel.org>,
	Dan Carpenter <dan.carpenter@oracle.com>,
	Arnd Bergmann <arnd@arndb.de>, Borislav Petkov <bp@suse.de>,
	Hans Verkuil <hverkuil-cisco@xs4all.nl>,
	linux-media@vger.kernel.org, linux-staging@lists.linux.dev,
	linux-kernel@vger.kernel.org
Subject: Re: [BUG/RFC PATCH 2/5] [BUG][RFC] media: atomisp: pci: remove dummy_ptr NULL check to avoid duplicate active_bo
Date: Tue, 8 Feb 2022 07:19:37 +0100	[thread overview]
Message-ID: <20220208071937.38991cbf@sal.lan> (raw)
In-Reply-To: <20211017162337.44860-3-kitakar@gmail.com>

Em Mon, 18 Oct 2021 01:23:33 +0900
Tsuchiya Yuto <kitakar@gmail.com> escreveu:

> This is almost a BUG report with a patch to just avoid kernel error
> message. Thus, prefixed with [BUG][RFC].
> 
> RFC:
>   1. Regarding the NULL check in hmm_init(), it was added for the case
>      when probe failed [1]. So, need to address that case with the other
>      means? But I'm not sure how we can do for the case.
>   2. Regarding the WARN_ON() in hmm_free(), there is a patch from Alan
>      ("atomisp: hmm gives a bogus warning on unload") [1] but I haven't
>      looked into it yet.
> 
> [1] https://lore.kernel.org/linux-media/151001141201.77201.10725942741811192730.stgit@alans-desktop/
> 
> >8-----------------------------------------------------------------8<  
> 
> The NULL check for dummy_ptr in hmm_init() [1] results in the following
> "hmm_init Failed to create sysfs" error exactly once every
> two times on atomisp reload by rmmod/insmod (although atomisp module
> loads and works fine regardless of this error):
> 
> 	kern  :warn  : [  140.230662] sysfs: cannot create duplicate filename '/devices/pci0000:00/0000:00:03.0/active_bo'
> 	kern  :warn  : [  140.230668] CPU: 1 PID: 2502 Comm: insmod Tainted: G         C OE     5.15.0-rc4-1-surface-mainline #1 b8acf6eb64994414b2e20bad312a7a2c45f748f9
> 	kern  :warn  : [  140.230675] Hardware name: OEMB OEMB/OEMB, BIOS 1.51116.238 03/09/2015
> 	kern  :warn  : [  140.230678] Call Trace:
> 	kern  :warn  : [  140.230687]  dump_stack_lvl+0x46/0x5a
> 	kern  :warn  : [  140.230702]  sysfs_warn_dup.cold+0x17/0x24
> 	kern  :warn  : [  140.230710]  sysfs_add_file_mode_ns+0x160/0x170
> 	kern  :warn  : [  140.230717]  internal_create_group+0x126/0x390
> 	kern  :warn  : [  140.230723]  hmm_init+0x5c/0x70 [atomisp 7a6a680bf400629363d2a6f58fd10e7299678b99]
> 	kern  :warn  : [  140.230811]  atomisp_pci_probe.cold+0x1136/0x148e [atomisp 7a6a680bf400629363d2a6f58fd10e7299678b99]
> 	kern  :warn  : [  140.230875]  local_pci_probe+0x45/0x80
> 	kern  :warn  : [  140.230882]  ? pci_match_device+0xd7/0x130
> 	kern  :warn  : [  140.230887]  pci_device_probe+0xfa/0x1b0
> 	kern  :warn  : [  140.230892]  really_probe+0x1f5/0x3f0
> 	kern  :warn  : [  140.230899]  __driver_probe_device+0xfe/0x180
> 	kern  :warn  : [  140.230903]  driver_probe_device+0x1e/0x90
> 	kern  :warn  : [  140.230908]  __driver_attach+0xc0/0x1c0
> 	kern  :warn  : [  140.230912]  ? __device_attach_driver+0xe0/0xe0
> 	kern  :warn  : [  140.230915]  ? __device_attach_driver+0xe0/0xe0
> 	kern  :warn  : [  140.230919]  bus_for_each_dev+0x89/0xd0
> 	kern  :warn  : [  140.230924]  bus_add_driver+0x12b/0x1e0
> 	kern  :warn  : [  140.230929]  driver_register+0x8f/0xe0
> 	kern  :warn  : [  140.230933]  ? 0xffffffffc153f000
> 	kern  :warn  : [  140.230937]  do_one_initcall+0x57/0x220
> 	kern  :warn  : [  140.230945]  do_init_module+0x5c/0x260
> 	kern  :warn  : [  140.230952]  load_module+0x24bd/0x26a0
> 	kern  :warn  : [  140.230962]  ? __do_sys_finit_module+0xae/0x110
> 	kern  :warn  : [  140.230966]  __do_sys_finit_module+0xae/0x110
> 	kern  :warn  : [  140.230972]  do_syscall_64+0x5c/0x80
> 	kern  :warn  : [  140.230979]  ? syscall_exit_to_user_mode+0x23/0x40
> 	kern  :warn  : [  140.230983]  ? do_syscall_64+0x69/0x80
> 	kern  :warn  : [  140.230988]  ? exc_page_fault+0x72/0x170
> 	kern  :warn  : [  140.230991]  entry_SYSCALL_64_after_hwframe+0x44/0xae
> 	kern  :warn  : [  140.230997] RIP: 0033:0x7f7fd5d8718d
> 	kern  :warn  : [  140.231003] Code: b4 0c 00 0f 05 eb a9 66 0f 1f 44 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d b3 6c 0c 00 f7 d8 64 89 01 48
> 	kern  :warn  : [  140.231006] RSP: 002b:00007ffefc25f0e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
> 	kern  :warn  : [  140.231012] RAX: ffffffffffffffda RBX: 000055ac3edcd7f0 RCX: 00007f7fd5d8718d
> 	kern  :warn  : [  140.231015] RDX: 0000000000000000 RSI: 000055ac3d723270 RDI: 0000000000000003
> 	kern  :warn  : [  140.231017] RBP: 0000000000000000 R08: 0000000000000000 R09: 00007f7fd5e52380
> 	kern  :warn  : [  140.231019] R10: 0000000000000003 R11: 0000000000000246 R12: 000055ac3d723270
> 	kern  :warn  : [  140.231021] R13: 0000000000000000 R14: 000055ac3edd06e0 R15: 0000000000000000
> 	kern  :err   : [  140.231038] atomisp-isp2 0000:00:03.0: hmm_init Failed to create sysfs
> 
> So, remove the NULL check to always call sysfs_remove_group() and fix
> the above error.
> 
> At this point, atomisp now gives WARN_ON() in hmm_free() [2] on atomisp
> reload by rmmod/insmod. So, also remove it.
> 
> [1] added on commit
>     d9ab83953fa7 ("media: atomisp: don't cause a warn if probe failed")
> [2] added on commit
>     b83cc378dfc4 ("atomisp: clean up the hmm init/cleanup indirections")

Interesting bug. As dummy_ptr == 0 is indeed a valid value, and
the driver should not call sysfs_remove_group() if sysfs_create_group(),
the right fix seem to use mmgr_EXCEPTION as the default value for
dummy_ptr. This way, the check before calling sys group removal logic
will still preserved.

On other words:

@@ -39,7 +39,7 @@
 struct hmm_bo_device bo_device;
 struct hmm_pool        dynamic_pool;
 struct hmm_pool        reserved_pool;
-static ia_css_ptr dummy_ptr;
+static ia_css_ptr dummy_ptr = mmgr_EXCEPTION;
 static bool hmm_initialized;
 struct _hmm_mem_stat hmm_mem_stat;
 
@@ -209,7 +209,7 @@ int hmm_init(void)
 
 void hmm_cleanup(void)
 {
-       if (!dummy_ptr)
+       if (dummy_ptr == mmgr_EXCEPTION)
                return;
        sysfs_remove_group(&atomisp_dev->kobj, atomisp_attribute_group);
 
The WARN_ON(!virt) should be removed anyway, as virt == 0 is a valid
value.

I'll do the above changes and apply the patch.


> 
> Signed-off-by: Tsuchiya Yuto <kitakar@gmail.com>
> ---
>  drivers/staging/media/atomisp/pci/hmm/hmm.c | 4 ----
>  1 file changed, 4 deletions(-)
> 
> diff --git a/drivers/staging/media/atomisp/pci/hmm/hmm.c b/drivers/staging/media/atomisp/pci/hmm/hmm.c
> index 6a5ee4607089..47dc3df3b800 100644
> --- a/drivers/staging/media/atomisp/pci/hmm/hmm.c
> +++ b/drivers/staging/media/atomisp/pci/hmm/hmm.c
> @@ -209,8 +209,6 @@ int hmm_init(void)
>  
>  void hmm_cleanup(void)
>  {
> -	if (!dummy_ptr)
> -		return;
>  	sysfs_remove_group(&atomisp_dev->kobj, atomisp_attribute_group);
>  
>  	/* free dummy memory first */
> @@ -288,8 +286,6 @@ void hmm_free(ia_css_ptr virt)
>  
>  	dev_dbg(atomisp_dev, "%s: free 0x%08x\n", __func__, virt);
>  
> -	WARN_ON(!virt);
> -
>  	bo = hmm_bo_device_search_start(&bo_device, (unsigned int)virt);
>  
>  	if (!bo) {

  reply	other threads:[~2022-02-08  6:19 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-17 16:23 [BUG 0/5] bug reports for atomisp to make it work Tsuchiya Yuto
2021-10-17 16:23 ` Tsuchiya Yuto
2021-10-17 16:23 ` [BUG/RFC PATCH 1/5] [BUG][RFC] media: atomisp: pci: assume run_mode is PREVIEW Tsuchiya Yuto
2021-10-17 16:23   ` Tsuchiya Yuto
2021-10-29  9:02   ` Mauro Carvalho Chehab
2021-11-11  8:00     ` Tsuchiya Yuto
2021-10-17 16:23 ` [BUG/RFC PATCH 2/5] [BUG][RFC] media: atomisp: pci: remove dummy_ptr NULL check to avoid duplicate active_bo Tsuchiya Yuto
2021-10-17 16:23   ` Tsuchiya Yuto
2022-02-08  6:19   ` Mauro Carvalho Chehab [this message]
2021-10-17 16:23 ` [BUG/RFC PATCH 3/5] [BUG][RFC] media: atomisp: pci: add NULL check for asd obtained from atomisp_video_pipe Tsuchiya Yuto
2021-10-17 16:23   ` Tsuchiya Yuto
2021-11-02 13:02   ` Dan Carpenter
2021-11-02 14:44     ` Andy Shevchenko
2021-11-02 14:45       ` Andy Shevchenko
2021-11-02 15:05         ` Dan Carpenter
2021-11-02 15:49           ` Andy Shevchenko
2021-11-02 22:52             ` Mauro Carvalho Chehab
2021-11-08 15:48     ` Tsuchiya Yuto
2021-10-17 16:23 ` [BUG 4/5] [BUG] media: atomisp: `modprobe -r` not working well (dup video4linux, ATOMISP_SUBDEV_{0,1}) Tsuchiya Yuto
2021-10-17 16:23   ` Tsuchiya Yuto
2021-10-17 16:23 ` [BUG 5/5] [BUG] media: atomisp: atomisp causes touchscreen to stop working on Microsoft Surface 3 Tsuchiya Yuto
2021-10-17 16:23   ` Tsuchiya Yuto
2021-10-18  8:30   ` Hans de Goede
2021-10-21  9:52     ` Tsuchiya Yuto
2021-10-24  8:32       ` Hans de Goede
2021-10-26  9:35         ` Tsuchiya Yuto
2021-10-26 15:41           ` Hans de Goede
2021-10-27 16:07             ` Tsuchiya Yuto
2021-11-07 23:39       ` Hans de Goede
2021-11-08  7:41         ` Mauro Carvalho Chehab
2021-11-08  7:55           ` Hans de Goede
2021-11-08  8:01             ` Mauro Carvalho Chehab
2021-11-09  4:18             ` Tsuchiya Yuto
2021-11-09  9:08               ` Mauro Carvalho Chehab
2021-11-09  4:15         ` Tsuchiya Yuto
2021-11-09  7:35           ` Mauro Carvalho Chehab
2021-10-18  7:50 ` [BUG 0/5] bug reports for atomisp to make it work Hans de Goede
2021-10-18  8:10   ` Andy Shevchenko
2021-10-19 12:58     ` Tsuchiya Yuto
2021-10-19 14:06       ` Andy Shevchenko
2021-10-20  6:48 ` Mauro Carvalho Chehab
2021-10-20 12:35   ` Tsuchiya Yuto

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=20220208071937.38991cbf@sal.lan \
    --to=mchehab@kernel.org \
    --cc=kitakar@gmail.com \
    /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 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.