[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Xen-devel] [PATCH] workaround for bug#197



Ryan,

After applying your patch, I tried out the scenario where I purposely
caused a kernel panic and then did an "xm destroy" on the domain.
(http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=223)

I see your printk but the system hangs after that.

(XEN) ACK! DOM1 still running, waiting before dying

Let me know if I can be of any help in debugging this.

Aravindh


> -----Original Message-----
> From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx [mailto:xen-devel-
> bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Ryan Harper
> Sent: Monday, September 12, 2005 5:28 PM
> To: xen-devel@xxxxxxxxxxxxxxxxxxx
> Subject: [Xen-devel] [PATCH] workaround for bug#197
> 
> 
> I don't think this is the right fix, but it does highlight the issue.
> While killing a domain, the vcpus are descheduled, but every
> now and then, one of the cpus is still running one of the vcpus, which
> means d->cpumask is not empty.   This triggers the BUG_ON() in
> xen/arch/x86/domain.c:domain_relinquish_resources().  The patch puts
in
> some printks and a cpu_relax() loop till the cpumask is empty before
> calling domain_relinquish_resources().   With this patch, I've gone
> through several thousand iterations of create/destroy without
crashing.
> 
> --
> Ryan Harper
> Software Engineer; Linux Technology Center
> IBM Corp., Austin, Tx
> (512) 838-9253   T/L: 678-9253
> ryanh@xxxxxxxxxx
> 
> 
> diffstat output:
>  domain.c |    8 ++++++++
>  1 files changed, 8 insertions(+)
> 
> Signed-off-by: Ryan Harper <ryanh@xxxxxxxxxx>
> ---
> 
> diff -r 413c911e5780 xen/common/domain.c
> --- a/xen/common/domain.c     Mon Sep 12 12:48:33 2005
> +++ b/xen/common/domain.c     Mon Sep 12 13:25:07 2005
> @@ -112,6 +112,14 @@
>      {
>          for_each_vcpu(d, v)
>              sched_rem_domain(v);
> +        if(!cpus_empty(d->cpumask)) {
> +            printk("ACK! DOM%d still running, waiting before
dying\n",
> +                   d->domain_id);
> +            while(!cpus_empty(d->cpumask))
> +                cpu_relax();
> +            printk("DOM%d cpumask clear, relinquishing resources\n",
> +                   d->domain_id);
> +        }
>          domain_relinquish_resources(d);
>          put_domain(d);
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.