All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@kernel.dk>
To: Paolo Bonzini <pbonzini@redhat.com>, linux-kernel@vger.kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Clark Williams <williams@redhat.com>
Subject: Re: [PATCH 0/2] blk-mq: switch from preempt_disable/enable to get/put_cpu
Date: Sun, 09 Nov 2014 20:16:30 -0700	[thread overview]
Message-ID: <54602E0E.6060409@kernel.dk> (raw)
In-Reply-To: <1415397840-18041-1-git-send-email-pbonzini@redhat.com>

On 2014-11-07 15:03, Paolo Bonzini wrote:
> blk-mq is using preempt_disable/enable in order to ensure that the
> queue runners are placed on the right CPU.  This does not work with
> the RT patches, because __blk_mq_run_hw_queue takes a non-raw
> spinlock with the preemption-disabled region.  If there is contention
> on the lock, this violates the rules for preemption-disabled regions.
>
> While this could be fixed easily within the RT patches just by doing
> migrate_disable/enable (note: this was not tested :)), we can do
> better.  The first patch concentrates the preempt_disable/enable in
> a single place in blk_mq_run_hw_queue, and also avoids useless calls
> when the caller wants to start __blk_mq_run_hw_queue asynchronously.
> (There is already a call to __blk_mq_run_hw_queue that does not disable
> preemption in blk-flush.c; not coincidentially, it passes async=true).
>
> Once this is done, it is trivial to use get/put_cpu instead of
> preempt_disable/smp_processor_id/preempt_enable, which is what the
> second patch does.  The RT patches then can change this to use
> get_cpu_light.
>
> With these changes (and the additional switch to get_cpu_light),
> virtio-blk can be used again with RT kernels.

These both look good. I'll double check and run through some testing, 
then apply for 3.19 if it all passes.


-- 
Jens Axboe


  parent reply	other threads:[~2014-11-10  3:16 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-07 22:03 [PATCH 0/2] blk-mq: switch from preempt_disable/enable to get/put_cpu Paolo Bonzini
2014-11-07 22:03 ` [PATCH 1/2] blk_mq: call preempt_disable/enable in blk_mq_run_hw_queue, and only if needed Paolo Bonzini
2014-11-07 22:04 ` [PATCH 2/2] blk-mq: use get_cpu/put_cpu instead of preempt_disable/preempt_enable Paolo Bonzini
2014-11-10  3:16 ` Jens Axboe [this message]
2014-11-11 18:05   ` [PATCH 0/2] blk-mq: switch from preempt_disable/enable to get/put_cpu Jens Axboe

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=54602E0E.6060409@kernel.dk \
    --to=axboe@kernel.dk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=williams@redhat.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.