From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Campbell Subject: Re: [PATCH] xen/arm: Fix rtds scheduler for arm Date: Wed, 4 Feb 2015 15:13:46 +0000 Message-ID: <1423062826.24924.17.camel@citrix.com> References: <54CF849D020000780005BEF2@mail.emea.novell.com> <1422900219-30012-1-git-send-email-denys.drozdov@globallogic.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1422900219-30012-1-git-send-email-denys.drozdov@globallogic.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Denis Drozdov Cc: george.dunlap@eu.citrix.com, andrew.cooper3@citrix.com, julien.grall@linaro.org, JBeulich@suse.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On Mon, 2015-02-02 at 20:03 +0200, Denis Drozdov wrote: > From: denys drozdov > > Make Credit2 and RT schedulers to run on arm platform > context_saved should be deferred on ARM after IRQs enabled A better subject+message would be: xen/arm: Call context_saved() with interrupts enabled during context switch This is a requirement of the scheduler interface, violating this causes for example with the RT scheduler: > Signed-off-by: denys drozdov Acked-by: Ian Campbell However I would like an ack from a scheduler person (e.g. George) before it gets applied. > --- > xen/arch/arm/domain.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c > index 7221bc8..1626376 100644 > --- a/xen/arch/arm/domain.c > +++ b/xen/arch/arm/domain.c > @@ -64,7 +64,7 @@ static void ctxt_switch_from(struct vcpu *p) > * mode. Therefore we don't need to save the context of an idle VCPU. > */ > if ( is_idle_vcpu(p) ) > - goto end_context; > + return; > > p2m_save_state(p); > > @@ -138,9 +138,6 @@ static void ctxt_switch_from(struct vcpu *p) > gic_save_state(p); > > isb(); > - > -end_context: > - context_saved(p); > } > > static void ctxt_switch_to(struct vcpu *n) > @@ -246,6 +243,8 @@ static void schedule_tail(struct vcpu *prev) > > local_irq_enable(); > > + context_saved(prev); > + > if ( prev != current ) > update_runstate_area(current); >