All of lore.kernel.org
 help / color / mirror / Atom feed
From: rabin@rab.in (Rabin Vincent)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V7 04/24] coresight: moving PM runtime operations to core framework
Date: Sat, 19 Dec 2015 18:13:42 +0100	[thread overview]
Message-ID: <20151219171342.GA2437@debian> (raw)
In-Reply-To: <1450472361-426-5-git-send-email-mathieu.poirier@linaro.org>

On Fri, Dec 18, 2015 at 01:59:00PM -0700, Mathieu Poirier wrote:
> @@ -415,9 +418,13 @@ struct list_head *coresight_build_path(struct coresight_device *csdev)
>   */
>  void coresight_release_path(struct list_head *path)
>  {
> +	struct coresight_device *csdev;
>  	struct coresight_node *nd, *next;
>  
>  	list_for_each_entry_safe(nd, next, path, link) {
> +		csdev = nd->csdev;
> +
> +		pm_runtime_put_sync(csdev->dev.parent);
>  		list_del(&nd->link);
>  		kfree(nd);
>  	}

This leads to the following splat:

 BUG: sleeping function called from invalid context at /home/rabin/dev/linux/drivers/base/power/runtime.c:892
 in_atomic(): 1, irqs_disabled(): 128, pid: 763, name: perf
 2 locks held by perf/763:
  #0:  (&mm->mmap_sem){++++++}, at: [<c012e42c>] vm_munmap+0x2c/0x50
  #1:  (&event->mmap_mutex){+.+.+.}, at: [<c008248c>] atomic_dec_and_mutex_lock+0x58/0x98
 irq event stamp: 63152
 hardirqs last  enabled at (63151): [<c04f7edc>] _raw_spin_unlock_irqrestore+0x30/0x5c
 hardirqs last disabled at (63152): [<c04f88e8>] __irq_svc+0x48/0x78
 softirqs last  enabled at (61242): [<c003a914>] __do_softirq+0x408/0x4fc
 softirqs last disabled at (61223): [<c003ad50>] irq_exit+0xcc/0x130
 CPU: 1 PID: 763 Comm: perf Not tainted 4.4.0-rc5-00224-ge461459-dirty #152
 Hardware name: Generic OMAP4 (Flattened Device Tree)
 [<c00184dc>] (unwind_backtrace) from [<c0014c74>] (show_stack+0x10/0x14)
 [<c0014c74>] (show_stack) from [<c025c834>] (dump_stack+0x90/0xb8)
 [<c025c834>] (dump_stack) from [<c02f026c>] (__pm_runtime_idle+0xa4/0xa8)
 [<c02f026c>] (__pm_runtime_idle) from [<c03e1a08>] (coresight_release_path+0x38/0x7c)
 [<c03e1a08>] (coresight_release_path) from [<c03e210c>] (free_event_data+0x84/0x9c)
 [<c03e210c>] (free_event_data) from [<c00f8be8>] (rb_irq_work+0x4c/0xcc)
 [<c00f8be8>] (rb_irq_work) from [<c00e8860>] (irq_work_run_list+0x7c/0xb4)
 [<c00e8860>] (irq_work_run_list) from [<c00e88b8>] (irq_work_run+0x20/0x34)
 [<c00e88b8>] (irq_work_run) from [<c0016dcc>] (handle_IPI+0x1cc/0x334)
 [<c0016dcc>] (handle_IPI) from [<c0009538>] (gic_handle_irq+0x84/0x88)
 [<c0009538>] (gic_handle_irq) from [<c04f88f8>] (__irq_svc+0x58/0x78)
 Exception stack(0xed865e98 to 0xed865ee0)
 5e80:                                                       00000001 00000110
 5ea0: 00000000 ee2f1080 20000113 c0784808 edbe4e1c b6ae5000 edb882f0 ed9b1e04
 5ec0: edb88298 c075648c 00000002 ed865ee8 c008724c c04f7ee0 20000113 ffffffff
 [<c04f88f8>] (__irq_svc) from [<c04f7ee0>] (_raw_spin_unlock_irqrestore+0x34/0x5c)
 [<c04f7ee0>] (_raw_spin_unlock_irqrestore) from [<c00e8978>] (irq_work_queue+0xac/0xb4)
 [<c00e8978>] (irq_work_queue) from [<c00f5020>] (perf_mmap_close+0x370/0x3c8)
 [<c00f5020>] (perf_mmap_close) from [<c012c560>] (remove_vma+0x40/0x6c)
 [<c012c560>] (remove_vma) from [<c012e2b4>] (do_munmap+0x210/0x35c)
 [<c012e2b4>] (do_munmap) from [<c012e43c>] (vm_munmap+0x3c/0x50)
 [<c012e43c>] (vm_munmap) from [<c0010320>] (ret_fast_syscall+0x0/0x1c)

It should presumably be using pm_runtime_put() instead.

WARNING: multiple messages have this Message-ID (diff)
From: Rabin Vincent <rabin@rab.in>
To: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: gregkh@linuxfoundation.org, alexander.shishkin@linux.intel.com,
	al.grant@arm.com, linux-doc@vger.kernel.org,
	fainelli@broadcom.com, linux-kernel@vger.kernel.org, tor@ti.com,
	mike.leach@arm.com, zhang.chunyan@linaro.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH V7 04/24] coresight: moving PM runtime operations to core framework
Date: Sat, 19 Dec 2015 18:13:42 +0100	[thread overview]
Message-ID: <20151219171342.GA2437@debian> (raw)
In-Reply-To: <1450472361-426-5-git-send-email-mathieu.poirier@linaro.org>

On Fri, Dec 18, 2015 at 01:59:00PM -0700, Mathieu Poirier wrote:
> @@ -415,9 +418,13 @@ struct list_head *coresight_build_path(struct coresight_device *csdev)
>   */
>  void coresight_release_path(struct list_head *path)
>  {
> +	struct coresight_device *csdev;
>  	struct coresight_node *nd, *next;
>  
>  	list_for_each_entry_safe(nd, next, path, link) {
> +		csdev = nd->csdev;
> +
> +		pm_runtime_put_sync(csdev->dev.parent);
>  		list_del(&nd->link);
>  		kfree(nd);
>  	}

This leads to the following splat:

 BUG: sleeping function called from invalid context at /home/rabin/dev/linux/drivers/base/power/runtime.c:892
 in_atomic(): 1, irqs_disabled(): 128, pid: 763, name: perf
 2 locks held by perf/763:
  #0:  (&mm->mmap_sem){++++++}, at: [<c012e42c>] vm_munmap+0x2c/0x50
  #1:  (&event->mmap_mutex){+.+.+.}, at: [<c008248c>] atomic_dec_and_mutex_lock+0x58/0x98
 irq event stamp: 63152
 hardirqs last  enabled at (63151): [<c04f7edc>] _raw_spin_unlock_irqrestore+0x30/0x5c
 hardirqs last disabled at (63152): [<c04f88e8>] __irq_svc+0x48/0x78
 softirqs last  enabled at (61242): [<c003a914>] __do_softirq+0x408/0x4fc
 softirqs last disabled at (61223): [<c003ad50>] irq_exit+0xcc/0x130
 CPU: 1 PID: 763 Comm: perf Not tainted 4.4.0-rc5-00224-ge461459-dirty #152
 Hardware name: Generic OMAP4 (Flattened Device Tree)
 [<c00184dc>] (unwind_backtrace) from [<c0014c74>] (show_stack+0x10/0x14)
 [<c0014c74>] (show_stack) from [<c025c834>] (dump_stack+0x90/0xb8)
 [<c025c834>] (dump_stack) from [<c02f026c>] (__pm_runtime_idle+0xa4/0xa8)
 [<c02f026c>] (__pm_runtime_idle) from [<c03e1a08>] (coresight_release_path+0x38/0x7c)
 [<c03e1a08>] (coresight_release_path) from [<c03e210c>] (free_event_data+0x84/0x9c)
 [<c03e210c>] (free_event_data) from [<c00f8be8>] (rb_irq_work+0x4c/0xcc)
 [<c00f8be8>] (rb_irq_work) from [<c00e8860>] (irq_work_run_list+0x7c/0xb4)
 [<c00e8860>] (irq_work_run_list) from [<c00e88b8>] (irq_work_run+0x20/0x34)
 [<c00e88b8>] (irq_work_run) from [<c0016dcc>] (handle_IPI+0x1cc/0x334)
 [<c0016dcc>] (handle_IPI) from [<c0009538>] (gic_handle_irq+0x84/0x88)
 [<c0009538>] (gic_handle_irq) from [<c04f88f8>] (__irq_svc+0x58/0x78)
 Exception stack(0xed865e98 to 0xed865ee0)
 5e80:                                                       00000001 00000110
 5ea0: 00000000 ee2f1080 20000113 c0784808 edbe4e1c b6ae5000 edb882f0 ed9b1e04
 5ec0: edb88298 c075648c 00000002 ed865ee8 c008724c c04f7ee0 20000113 ffffffff
 [<c04f88f8>] (__irq_svc) from [<c04f7ee0>] (_raw_spin_unlock_irqrestore+0x34/0x5c)
 [<c04f7ee0>] (_raw_spin_unlock_irqrestore) from [<c00e8978>] (irq_work_queue+0xac/0xb4)
 [<c00e8978>] (irq_work_queue) from [<c00f5020>] (perf_mmap_close+0x370/0x3c8)
 [<c00f5020>] (perf_mmap_close) from [<c012c560>] (remove_vma+0x40/0x6c)
 [<c012c560>] (remove_vma) from [<c012e2b4>] (do_munmap+0x210/0x35c)
 [<c012e2b4>] (do_munmap) from [<c012e43c>] (vm_munmap+0x3c/0x50)
 [<c012e43c>] (vm_munmap) from [<c0010320>] (ret_fast_syscall+0x0/0x1c)

It should presumably be using pm_runtime_put() instead.

  reply	other threads:[~2015-12-19 17:13 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-18 20:58 [PATCH V7 00/24] Coresight integration with perf Mathieu Poirier
2015-12-18 20:58 ` Mathieu Poirier
2015-12-18 20:58 ` [PATCH V7 01/24] coresight: implementing 'cpu_id()' API Mathieu Poirier
2015-12-18 20:58   ` Mathieu Poirier
2015-12-18 20:58 ` [PATCH V7 02/24] coresight: associating path with session rather than tracer Mathieu Poirier
2015-12-18 20:58   ` Mathieu Poirier
2015-12-20 15:29   ` Rabin Vincent
2015-12-20 15:29     ` Rabin Vincent
2015-12-23 16:23     ` Mathieu Poirier
2015-12-23 16:23       ` Mathieu Poirier
2016-01-04 18:24     ` Mathieu Poirier
2016-01-04 18:24       ` Mathieu Poirier
2016-01-05 13:15       ` Rabin Vincent
2016-01-05 13:15         ` Rabin Vincent
     [not found]         ` <CANLsYkwN=SOnfDfd8oF-2Z5Ef8oTPao6H_auQhoMpVAnokYkrg@mail.gmail.com>
2016-01-10 15:43           ` Rabin Vincent
2016-01-10 15:43             ` Rabin Vincent
2016-01-13 21:47             ` Mathieu Poirier
2016-01-13 21:47               ` Mathieu Poirier
2016-01-16 13:54               ` Rabin Vincent
2016-01-16 13:54                 ` Rabin Vincent
2016-01-19 23:54                 ` Mathieu Poirier
2016-01-19 23:54                   ` Mathieu Poirier
2015-12-18 20:58 ` [PATCH V7 03/24] coresight: add API to get sink from path Mathieu Poirier
2015-12-18 20:58   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 04/24] coresight: moving PM runtime operations to core framework Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-19 17:13   ` Rabin Vincent [this message]
2015-12-19 17:13     ` Rabin Vincent
2015-12-23 16:27     ` Mathieu Poirier
2015-12-23 16:27       ` Mathieu Poirier
2015-12-24 19:20       ` Rabin Vincent
2015-12-24 19:20         ` Rabin Vincent
2015-12-18 20:59 ` [PATCH V7 05/24] coresight: etm3x: moving etm_readl/writel to header file Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 06/24] coresight: etm3x: moving sysFS entries to dedicated file Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 07/24] coresight: etm3x: unlocking tracers in default arch init Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 08/24] coresight: etm3x: splitting struct etm_drvdata Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 09/24] coresight: etm3x: adding operation mode for etm_enable() Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 10/24] coresight: etm3x: set progbit to stop trace collection Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 11/24] coresight: etm3x: changing default trace configuration Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 12/24] coresight: etm3x: consolidating initial config Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 13/24] coresight: etm3x: implementing user/kernel mode tracing Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 14/24] coresight: etm3x: implementing perf_enable/disable() API Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 15/24] coresight: etb10: moving to local atomic operations Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 16/24] coresight: etb10: adding operation mode for sink->enable() Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 17/24] coresight: etb10: implementing AUX space API Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-19 17:23   ` Rabin Vincent
2015-12-19 17:23     ` Rabin Vincent
2015-12-23 16:33     ` Mathieu Poirier
2015-12-23 16:33       ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 18/24] coresight: updating documentation to reflect integration with perf Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 19/24] coresight: etm-perf: new PMU driver for ETM tracers Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 20/24] coresight: introducing a global trace ID function Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 21/24] perf tools: making function set_max_cpu_num() non static Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 22/24] perf tools: adding perf_evlist to *info_priv_size() Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 23/24] perf tools: making coresight PMU listable Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-18 20:59 ` [PATCH V7 24/24] perf tools: adding coresight etm PMU record capabilities Mathieu Poirier
2015-12-18 20:59   ` Mathieu Poirier
2015-12-19 17:27   ` Rabin Vincent
2015-12-19 17:27     ` Rabin Vincent
2015-12-23 16:46     ` Mathieu Poirier
2015-12-23 16:46       ` Mathieu Poirier
2015-12-19 17:42 ` [PATCH V7 00/24] Coresight integration with perf Rabin Vincent
2015-12-19 17:42   ` Rabin Vincent
2015-12-23 16:29   ` Mathieu Poirier
2015-12-23 16:29     ` Mathieu Poirier

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=20151219171342.GA2437@debian \
    --to=rabin@rab.in \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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.