All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: xen-devel@lists.xensource.com
Subject: Re: [xen-devel] create irq failed due to move_cleanup_count always being set
Date: Wed, 4 Jan 2012 11:38:50 +0000	[thread overview]
Message-ID: <4F043A4A.6060702@citrix.com> (raw)
In-Reply-To: <E4ABEE53CC34664FA3F0BD8AEAF50A19A2DF1A@szxeml522-mbx.china.huawei.com>

On 04/01/12 04:37, Liuyongan wrote:
> Hi, all
>    
>     I'm using xen-4.0 to do a test. And when I create a domain, it failed due to create_irq() failure. As only 33 domains were successfully created and destroyed before I got the continuous failures, and the domain just before the failure was properly destroyed(at least destroy_irq() was properly called, which will clear move_in_progress, according to the prink-message). So I can conclude for certain that __assign_irq_vector failed due to move_cleanup_count always being set.

Is it always 33 domains it takes to cause the problem, or does it vary? 
If it varies, then I think you want this patch
http://xenbits.xensource.com/hg/xen-unstable.hg/rev/68b903bb1b01 which
corrects the logic which works out which moved vectors it should clean
up.  Without it, stale irq numbers build up in the per-cpu irq_vector
tables leading to __assign_irq_vector failing with -ENOSPC as it find
find a vector to allocate.

> //this is the normal case when create and destroy domain whose id is 31;
> (XEN) irq.c:1232:d0 bind pirq 79, irq 77, share flag:0
> (XEN) irq.c:1377: dom31: pirq 79, irq 77 force unbind
> (XEN) irq.c:1593: dom31: forcing unbind of pirq 79
> (XEN) irq.c:223, destroy irq 77
>
> //domain id 32 is created and destroyed correctly also.
> (XEN) irq.c:1232:d0 bind pirq 79, irq 77, share flag:0
> (XEN) irq.c:1377: dom32: pirq 79, irq 77 force unbind
> (XEN) irq.c:1593: dom32: forcing unbind of pirq 79
> (XEN) irq.c:223, destroy irq 77
>
> //all the subsequent domain creation failed, below lists only 3 times:
> (XEN) physdev.c:88: dom33: can't create irq for msi!
> (XEN) physdev.c:88: dom34: can't create irq for msi!
> (XEN) physdev.c:88: dom35: can't create irq for msi!
>
>      I think this might be a bug and might have fixed, so I compare my code with 4.1.2 and search the mail list for potential patches. (http://xen.markmail.org/search/?q=move_cleanup_count#query:move_cleanup_count+page:6+mid:fpkrafqbeyiauvhs+state:results) submit a patch which add locks in __assign_irq_vector. Can anybody explain why this lock is needed? Or is there a patch that might fix my bug? Thx.

This patch fixes a problem where IOAPIC line level interrupts cease for
a while.  It has nothing to do with MSI interrupts.  (Also, there are no
locks altered, and xen-4.0-testing seems to have gained an additional
hunk in hvm/vmx code unrelated to the original patch.)

>     Addition message: my board is arch-x86, no domains left when failed to create new ones, create_irq failure lasted one day until I reboot the board, and the irq number allocated is used certainly for a msi dev.
>
> Yong an Liu
> 2012.1.4
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel

-- 
Andrew Cooper - Dom0 Kernel Engineer, Citrix XenServer
T: +44 (0)1223 225 900, http://www.citrix.com

  reply	other threads:[~2012-01-04 11:38 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-04  4:37 [xen-devel] create irq failed due to move_cleanup_count always being set Liuyongan
2012-01-04 11:38 ` Andrew Cooper [this message]
2012-01-04 11:42   ` Andrew Cooper
     [not found] <mailman.5905.1325711316.12970.xen-devel@lists.xensource.com>
2012-01-05  6:13 ` Liuyongan
2012-01-06  6:04   ` Liuyongan
2012-01-06 11:00     ` Andrew Cooper
2012-01-06 11:50       ` Liuyongan
2012-01-06 12:18         ` Andrew Cooper
2012-01-07 10:33           ` Liuyongan
2012-01-09  4:50             ` Liuyongan

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=4F043A4A.6060702@citrix.com \
    --to=andrew.cooper3@citrix.com \
    --cc=xen-devel@lists.xensource.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.