On Mon, 19 Nov 2018, 15:57 Andrii Anisov, <andrii.ani...@gmail.com> wrote:
> Julien, > > > It's me again about your patch:) > > I've found this patch useful and even can give a motivation to have it > in the mainline. The patch ensures that vgic_sync_from_lrs is performed > on guest to hyp switch prior to any IRQ processing. > There are no issue about processing IRQs before the syncs. It is the same as if an IRQ was raised from ila different pCPUs. So why do you need that? > So, do you plan to push it for review? Could I do that on behalf of you? > Unless there are any bug with current code, then I don't plan to merge it. Cheers, > > On 09.11.18 16:42, Andrii Anisov wrote: > > Hello Julien, > > > > I just wonder, do you plan to upstream the patch below? > > > > Andrii Anisov > > > > > > > > commit 11e360b93be81a58a41832d714f33f797ad312a9 > > Author: Julien Grall <julien.gr...@arm.com> > > Date: Mon Oct 29 13:32:56 2018 +0000 > > > > xen/arm: Re-enable interrupt later in the trap path > > > > Signed-off-by: Julien Grall <julien.gr...@arm.com> > > > > diff --git a/xen/arch/arm/arm64/entry.S b/xen/arch/arm/arm64/entry.S > > index 97b05f53ea..8f287891b6 100644 > > --- a/xen/arch/arm/arm64/entry.S > > +++ b/xen/arch/arm/arm64/entry.S > > @@ -195,7 +195,6 @@ hyp_error_invalid: > > > > hyp_error: > > entry hyp=1 > > - msr daifclr, #2 > > mov x0, sp > > bl do_trap_hyp_serror > > exit hyp=1 > > @@ -203,7 +202,7 @@ hyp_error: > > /* Traps taken in Current EL with SP_ELx */ > > hyp_sync: > > entry hyp=1 > > - msr daifclr, #6 > > + msr daifclr, #4 > > mov x0, sp > > bl do_trap_hyp_sync > > exit hyp=1 > > @@ -304,7 +303,7 @@ guest_sync_slowpath: > > ALTERNATIVE("bl check_pending_vserror; cbnz x0, 1f", > > "nop; nop", > > SKIP_SYNCHRONIZE_SERROR_ENTRY_EXIT) > > - msr daifclr, #6 > > + msr daifclr, #4 > > mov x0, sp > > bl do_trap_guest_sync > > 1: > > @@ -332,7 +331,7 @@ guest_fiq_invalid: > > > > guest_error: > > entry hyp=0, compat=0 > > - msr daifclr, #6 > > + msr daifclr, #4 > > mov x0, sp > > bl do_trap_guest_serror > > exit hyp=0, compat=0 > > @@ -347,7 +346,7 @@ guest_sync_compat: > > ALTERNATIVE("bl check_pending_vserror; cbnz x0, 1f", > > "nop; nop", > > SKIP_SYNCHRONIZE_SERROR_ENTRY_EXIT) > > - msr daifclr, #6 > > + msr daifclr, #4 > > mov x0, sp > > bl do_trap_guest_sync > > 1: > > @@ -375,7 +374,7 @@ guest_fiq_invalid_compat: > > > > guest_error_compat: > > entry hyp=0, compat=1 > > - msr daifclr, #6 > > + msr daifclr, #4 > > mov x0, sp > > bl do_trap_guest_serror > > exit hyp=0, compat=1 > > diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c > > index 51d2e42c77..c18f89b41f 100644 > > --- a/xen/arch/arm/traps.c > > +++ b/xen/arch/arm/traps.c > > @@ -2039,6 +2039,8 @@ static void enter_hypervisor_head(struct > cpu_user_regs *regs) > > { > > struct vcpu *v = current; > > > > + ASSERT(!local_irq_is_enabled()); > > + > > /* If the guest has disabled the workaround, bring it back > on. */ > > if ( needs_ssbd_flip(v) ) > > arm_smccc_1_1_smc(ARM_SMCCC_ARCH_WORKAROUND_2_FID, 1, > NULL); > > @@ -2073,6 +2075,7 @@ void do_trap_guest_sync(struct cpu_user_regs *regs) > > const union hsr hsr = { .bits = regs->hsr }; > > > > enter_hypervisor_head(regs); > > + local_irq_enable(); > > > > switch ( hsr.ec ) > > { > > @@ -2208,6 +2211,7 @@ void do_trap_hyp_sync(struct cpu_user_regs *regs) > > const union hsr hsr = { .bits = regs->hsr }; > > > > enter_hypervisor_head(regs); > > + local_irq_enable(); > > > > switch ( hsr.ec ) > > { > > @@ -2246,6 +2250,7 @@ void do_trap_hyp_sync(struct cpu_user_regs *regs) > > void do_trap_hyp_serror(struct cpu_user_regs *regs) > > { > > enter_hypervisor_head(regs); > > + local_irq_enable(); > > > > __do_trap_serror(regs, VABORT_GEN_BY_GUEST(regs)); > > } > > @@ -2253,6 +2258,7 @@ void do_trap_hyp_serror(struct cpu_user_regs *regs) > > void do_trap_guest_serror(struct cpu_user_regs *regs) > > { > > enter_hypervisor_head(regs); > > + local_irq_enable(); > > > > __do_trap_serror(regs, true); > > } > > > -- > Sincerely, > Andrii Anisov. > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xenproject.org > https://lists.xenproject.org/mailman/listinfo/xen-devel
_______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel