[PATCH] [RFC] Emulate "lwsync" to run standard user land on e500 cores

Scott Wood scottwood at freescale.com
Fri Oct 25 21:36:13 EST 2013


On Thu, 2013-10-24 at 04:55 -0500, Kumar Gala wrote:
> On Oct 24, 2013, at 4:45 AM, Benjamin Herrenschmidt wrote:
> 
> > On Wed, 2013-10-23 at 23:06 -0500, Kumar Gala wrote:
> >> On Oct 23, 2013, at 5:15 AM, Scott Wood wrote:
> >> 
> >>> On Wed, 2013-10-23 at 00:07 -0500, Kumar Gala wrote:
> >>>> On Oct 18, 2013, at 2:38 AM, Wolfgang Denk wrote:
> >>>>> diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
> >>>>> index f783c93..f330374 100644
> >>>>> --- a/arch/powerpc/kernel/traps.c
> >>>>> +++ b/arch/powerpc/kernel/traps.c
> >>>>> @@ -986,6 +986,13 @@ static int emulate_instruction(struct pt_regs *regs)
> >>>>> 		return 0;
> >>>>> 	}
> >>>>> 
> >>>>> +	/* Emulating the lwsync insn as a sync insn */
> >>>>> +	if (instword == PPC_INST_LWSYNC) {
> >>>>> +		PPC_WARN_EMULATED(lwsync, regs);
> >>>>> +		asm volatile("sync" : : : "memory");
> >>>> 
> >>>> Do we really need the inline asm?  Doesn't the fact of just taking an exception and returning from it equate to a sync.
> >>> 
> >>> No, it doesn't equate to a sync.  See the discussion here:
> >>> http://patchwork.ozlabs.org/patch/256747/
> >>> 
> >> 
> >> Thanks. 
> >> 
> >> I'm not sure I'm a fan of doing this as it silently hides a significant performance impact.
> >> 
> >> Could we possible re-write the userspace instruction to be a 'sync' when we hit this?
> > 
> > Rewriting user space is a can of worms I wouldn't get into ... is any
> > other arch doing it ?
> 
> Fair enough
> > 
> > I'm not too worried as long as we warn and account them.
> 
> Than, I'd ask this be under a Kconfig option that is disabled by
> default.  Users should have to explicitly enable this so they know what
> they are doing.

Why should this be any different than the other emulated instructions,
which are generally either not kconfigized, or on by default in some
configs (like fp emu)?

Making sure users are aware of this is what PPC_WARN_EMULATED is for.

Has anyone measured how much this slows things down with a typical
userspace?

-Scott





More information about the Linuxppc-dev mailing list