Line 184 correspond at rc = 0 (an int variable) of remove_entry() function. I don't have modified that file. Michele On Fri, Feb 26, 2010 at 6:44 PM, George Dunlap wrote: > Did you look at timer.c, line 184, to find out what the BUG is? > -George > > michele.paolino wrote: > >> Following George's advices I have rewrited my scheduler. But now serial >> console's log report me a bug in a function of timer.c >> >> (XEN) **************************************** >> (XEN) Panic on CPU 0: >> (XEN) Xen BUG at timer.c:184 >> (XEN) **************************************** >> >> This is caused by cpumask_raise_softirq() in my wake() function. What can >> I do? >> >> Michele >> >> On Thu, Feb 25, 2010 at 10:25 PM, George Dunlap < >> george.dunlap@eu.citrix.com > wrote: >> >> The problem is that you're choosing a random vcpu to run, without >> considering whether it *wants* to run or not. In this case, >> you're running a vcpu before it's even been completely set up yet >> (write_cr3 is failing because the guest *has* no cr3 ready yet). >> >> The normal way schedulers deal with this is to keep one list of >> all vcpus (or all domains), and another list with "runnable" >> vcpus. You can keep track of which vcpus are runnable with the >> vcpu_wake() callback and by using vcpu_runnable() in schedule(). >> >> At very least, your loop in schedule should check vcpu_runnable() >> before selecting it. >> >> -George >> >> >> michele.paolino wrote: >> >> Here's my random scheduler. It works until I start a virtual >> machine (error file attached is the serial console's log). >> In xen call trace there isn't any of my functions. >> To generate random numbers I'm using the hash (MD5) of NOW() >> function. >> I would also Know why at boot time there are two calls at >> vcpu_init function for vcpu with id = 0 ?? >> >> Thanks >> Michele >> >> >> >> >