Thomas Huth
2015-Feb-26 07:36 UTC
virtio balloon: do not call blocking ops when !TASK_RUNNING
On Thu, 26 Feb 2015 11:50:42 +1030 Rusty Russell <rusty at rustcorp.com.au> wrote:> Thomas Huth <thuth at 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.AFAIK this is currently not a problem. According to http://lwn.net/Articles/627419/ these kmalloc calls never fail because they allocate less than a page. Thomas
Rusty Russell
2015-Mar-02 00:07 UTC
virtio balloon: do not call blocking ops when !TASK_RUNNING
Thomas Huth <thuth at linux.vnet.ibm.com> writes:> On Thu, 26 Feb 2015 11:50:42 +1030 > Rusty Russell <rusty at rustcorp.com.au> wrote: > >> Thomas Huth <thuth at 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. > > AFAIK this is currently not a problem. According to > http://lwn.net/Articles/627419/ these kmalloc calls never > fail because they allocate less than a page.I strongly suggest you unlearn that fact. The fix for this is in two parts: 1) Annotate using sched_annotate_sleep() and add a comment: we may spin a few times in low memory situations, but this isn't a high performance path. 2) Handle get_config (and other) failure in some more elegant way. Cheers, Rusty.
Michael S. Tsirkin
2015-Mar-02 11:13 UTC
virtio balloon: do not call blocking ops when !TASK_RUNNING
On Mon, Mar 02, 2015 at 10:37:26AM +1030, Rusty Russell wrote:> Thomas Huth <thuth at linux.vnet.ibm.com> writes: > > On Thu, 26 Feb 2015 11:50:42 +1030 > > Rusty Russell <rusty at rustcorp.com.au> wrote: > > > >> Thomas Huth <thuth at 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. > > > > AFAIK this is currently not a problem. According to > > http://lwn.net/Articles/627419/ these kmalloc calls never > > fail because they allocate less than a page. > > I strongly suggest you unlearn that fact. > The fix for this is in two parts: > > 1) Annotate using sched_annotate_sleep() and add a comment: we may spin > a few times in low memory situations, but this isn't a high > performance path. > > 2) Handle get_config (and other) failure in some more elegant way. > > Cheers, > Rusty.I agree, but I'd like to point out that even without kmalloc, on s390 get_config is blocking - it's waiting for a hardware interrupt. And it makes sense: config is not data path, I don't think we should spin there. So I think besides these two parts, we still need my two patches: virtio-balloon: do not call blocking ops when !TASK_RUNNING virtio_console: avoid config access from irq in 4.0. agree?
Apparently Analagous Threads
- virtio balloon: do not call blocking ops when !TASK_RUNNING
- virtio balloon: do not call blocking ops when !TASK_RUNNING
- virtio balloon: do not call blocking ops when !TASK_RUNNING
- virtio balloon: do not call blocking ops when !TASK_RUNNING
- virtio balloon: do not call blocking ops when !TASK_RUNNING