All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: kvm@vger.kernel.org, virtualization@lists.linux-foundation.org
Subject: Re: virtio balloon: do not call blocking ops when !TASK_RUNNING
Date: Thu, 26 Feb 2015 18:08:49 +0100	[thread overview]
Message-ID: <20150226170849.GV21418@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <20150226083031.GA24184@redhat.com>

On Thu, Feb 26, 2015 at 09:30:31AM +0100, Michael S. Tsirkin wrote:
> On Thu, Feb 26, 2015 at 11:50:42AM +1030, Rusty Russell wrote:
> > Thomas Huth <thuth@linux.vnet.ibm.com> writes:
> > >  Hi all,
> > >
> > > with the recent kernel 3.19, I get a kernel warning when I start my
> > > KVM guest on s390 with virtio balloon enabled:
> > 
> > The deeper problem is that virtio_ccw_get_config just silently fails on
> > OOM.
> > 
> > Neither get_config nor set_config are expected to fail.
> > 
> > Cornelia, I think ccw and config_area should be allocated inside vcdev.
> > You could either use pointers, or simply allocate vcdev with GDP_DMA.
> > 
> > This would avoid the kmalloc inside these calls.
> > 
> > Thanks,
> > Rusty.
> 
> But it won't solve the problem of nested sleepers
> with ccw: ATM is invokes ccw_io_helper to execute
> commands, and that one calls wait_event
> to wait for an interrupt.
> 
> Might be fixable but I think my patch looks like a safer
> solution for 4.0/3.19, no?

I've no idea what your patch was since I'm not subscribed to any of the
lists this discussion is had on.

But you can annotate the warning away; _however_ with the annotation
needs to be a big comment explaining why its safe to do so. Typically to
involved talking about how its actually rare for the call to sleep.

So occasional sleeps inside a wait_event() are ok-ish, we'll just get to
go around once more. But once you consistently sleep inside a
wait_event() things go a bit funny.

So for instance; if in ccw_io_helper() we expect that wait_event(,
!doing_io()) to be (mostly) true on first go, then we'll never get into
__wait_event() and ->state won't actually be mucked about with.

The thing to avoid is not actually sleeping (much) but setting
TASK_RUNNING and turning the entire thing into a giant poll loop.

  reply	other threads:[~2015-02-26 17:08 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-25 10:13 virtio balloon: do not call blocking ops when !TASK_RUNNING Thomas Huth
2015-02-25 11:09 ` Cornelia Huck
2015-02-25 14:17 ` Michael S. Tsirkin
2015-02-26  1:20 ` Rusty Russell
2015-02-26  7:36   ` Thomas Huth
2015-02-26  7:36   ` Thomas Huth
2015-03-02  0:07     ` Rusty Russell
2015-03-02 11:13       ` Michael S. Tsirkin
2015-03-02 11:13       ` Michael S. Tsirkin
2015-03-02 11:31         ` Cornelia Huck
2015-03-02 11:31         ` Cornelia Huck
2015-03-02 11:46           ` Michael S. Tsirkin
2015-03-02 12:11             ` Cornelia Huck
2015-03-02 12:11             ` Cornelia Huck
2015-03-02 12:19               ` Michael S. Tsirkin
2015-03-02 12:35                 ` Cornelia Huck
2015-03-02 20:44                   ` Michael S. Tsirkin
2015-03-02 20:44                   ` Michael S. Tsirkin
2015-03-06 11:47                     ` Cornelia Huck
2015-03-06 11:47                     ` Cornelia Huck
2015-03-02 12:19               ` Michael S. Tsirkin
2015-03-02 20:39               ` Michael S. Tsirkin
2015-03-02 20:39               ` Michael S. Tsirkin
2015-03-04  6:14         ` Rusty Russell
2015-03-04 10:25           ` Michael S. Tsirkin
2015-03-06 11:56             ` Cornelia Huck
2015-03-10  1:26               ` Rusty Russell
2015-02-26  8:30   ` Michael S. Tsirkin
2015-02-26 17:08     ` Peter Zijlstra [this message]
2015-02-26 17:27       ` Michael S. Tsirkin
2015-02-26 17:27       ` Michael S. Tsirkin
2015-02-26 17:41         ` Michael S. Tsirkin
2015-02-26  8:45   ` Michael S. Tsirkin
2015-02-26  8:57     ` Cornelia Huck
2015-02-26  8:45   ` Michael S. Tsirkin
2015-02-26  8:47   ` Cornelia Huck
2015-02-26  8:47   ` Cornelia Huck

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=20150226170849.GV21418@twins.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=kvm@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=virtualization@lists.linux-foundation.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.