From: Marek Szyprowski <m.szyprowski@samsung.com>
To: Laura Abbott <lauraa@codeaurora.org>, mgorman@suse.de, mina86@mina86.com
Cc: linux-mm@kvack.org, Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
linux-kernel@vger.kernel.org, pratikp@codeaurora.org
Subject: Re: Deadlock with CMA and CPU hotplug
Date: Tue, 28 Oct 2014 10:49:22 +0100 [thread overview]
Message-ID: <544F66A2.1080302@samsung.com> (raw)
In-Reply-To: <5447E210.8020902@codeaurora.org>
Hello,
On 2014-10-22 18:57, Laura Abbott wrote:
> We've run into a AB/BA deadlock situation involving a driver lock and
> the CPU hotplug lock on a 3.10 based kernel. The situation is this:
>
> CPU 0 CPU 1
> ----- ----
> Start CPU hotplug
> mutex_lock(&cpu_hotplug.lock)
> Run CPU hotplug notifier
> data for driver comes in
> mutex_lock(&driver_lock)
> driver calls dma_alloc_coherent
> alloc_contig_range
> lru_add_drain_all
> get_online_cpus()
> mutex_lock(&cpu_hotplug.lock)
>
> Driver hotplug notifier runs
> mutex_lock(&driver_lock)
>
> The driver itself is out of tree right now[1] and we're looking at
> ways to rework the driver. The best option for rework right now
> though might result in some performance penalties. The size that's
> being allocated can't easily be converted to an atomic allocation either
> It seems like this might be a limitation of where CMA/
> dma_alloc_coherent could potentially be used and make drivers
> unnecessarily aware of CPU hotplug locking.
>
> Does this seem like an actual problem that needs to be fixed or
> is trying to use CMA in a CPU hotplug notifier path just asking
> for trouble?
IMHO doing any allocation without GFP_ATOMIC from a notifier is asking
for problems. I always considered notifiers as callbacks that might be
called
directly from i.e. interrupts. I don't know much about your code, but
maybe it
would be possible to move the problematic code from a notifier to a separate
worker or thread?
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Marek Szyprowski <m.szyprowski@samsung.com>
To: Laura Abbott <lauraa@codeaurora.org>, mgorman@suse.de, mina86@mina86.com
Cc: linux-mm@kvack.org, Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
linux-kernel@vger.kernel.org, pratikp@codeaurora.org
Subject: Re: Deadlock with CMA and CPU hotplug
Date: Tue, 28 Oct 2014 10:49:22 +0100 [thread overview]
Message-ID: <544F66A2.1080302@samsung.com> (raw)
In-Reply-To: <5447E210.8020902@codeaurora.org>
Hello,
On 2014-10-22 18:57, Laura Abbott wrote:
> We've run into a AB/BA deadlock situation involving a driver lock and
> the CPU hotplug lock on a 3.10 based kernel. The situation is this:
>
> CPU 0 CPU 1
> ----- ----
> Start CPU hotplug
> mutex_lock(&cpu_hotplug.lock)
> Run CPU hotplug notifier
> data for driver comes in
> mutex_lock(&driver_lock)
> driver calls dma_alloc_coherent
> alloc_contig_range
> lru_add_drain_all
> get_online_cpus()
> mutex_lock(&cpu_hotplug.lock)
>
> Driver hotplug notifier runs
> mutex_lock(&driver_lock)
>
> The driver itself is out of tree right now[1] and we're looking at
> ways to rework the driver. The best option for rework right now
> though might result in some performance penalties. The size that's
> being allocated can't easily be converted to an atomic allocation either
> It seems like this might be a limitation of where CMA/
> dma_alloc_coherent could potentially be used and make drivers
> unnecessarily aware of CPU hotplug locking.
>
> Does this seem like an actual problem that needs to be fixed or
> is trying to use CMA in a CPU hotplug notifier path just asking
> for trouble?
IMHO doing any allocation without GFP_ATOMIC from a notifier is asking
for problems. I always considered notifiers as callbacks that might be
called
directly from i.e. interrupts. I don't know much about your code, but
maybe it
would be possible to move the problematic code from a notifier to a separate
worker or thread?
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
next prev parent reply other threads:[~2014-10-28 9:49 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-22 16:57 Deadlock with CMA and CPU hotplug Laura Abbott
2014-10-22 16:57 ` Laura Abbott
2014-10-28 9:49 ` Marek Szyprowski [this message]
2014-10-28 9:49 ` Marek Szyprowski
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=544F66A2.1080302@samsung.com \
--to=m.szyprowski@samsung.com \
--cc=lauraa@codeaurora.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=mina86@mina86.com \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=pratikp@codeaurora.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.