Re: [PATCH 18/25] [PATCH] turn priviled operations into macros in entry.S
From: Glauber de Oliveira Costa
Date: Wed Aug 08 2007 - 09:58:23 EST
Thank you for the attention, andi
let's go:
On 8/8/07, Andi Kleen <ak@xxxxxxx> wrote:
>
> > +#define SYSRETQ \
> > + movq %gs:pda_oldrsp,%rsp; \
> > + swapgs; \
> > + sysretq;
>
> When the macro does more than sysret it should have a different
> name
That's fair. Again, suggestions are welcome. Maybe SYSCALL_RETURN ?
> > */
> > .globl int_ret_from_sys_call
> > int_ret_from_sys_call:
> > - cli
> > + DISABLE_INTERRUPTS(CLBR_ANY)
>
> ANY? There are certainly some registers alive at this point like rax
yes, this one is wrong. Thanks for the catch
> > retint_restore_args:
> > - cli
> > + DISABLE_INTERRUPTS(CLBR_ANY)
>
> Similar.
I don't think so. They are live here, but restore_args follows, so we
can safely clobber anything here. Right?
>
> > /*
> > * The iretq could re-enable interrupts:
> > */
> > @@ -566,10 +587,14 @@ retint_restore_args:
> > restore_args:
> > RESTORE_ARGS 0,8,0
> > iret_label:
> > - iretq
> > +#ifdef CONFIG_PARAVIRT
> > + INTERRUPT_RETURN
> > +ENTRY(native_iret)
>
> ENTRY adds alignment. Why do you need that export anyways?
Just went on the flow. Will change.
> > +#endif
> > +1: iretq
> >
> > .section __ex_table,"a"
> > - .quad iret_label,bad_iret
> > + .quad 1b, bad_iret
>
> iret_label seems more expressive to me than 1
fair.
> > + ENABLE_INTERRUPTS(CLBR_NONE)
>
> In many of the CLBR_NONEs there are actually some registers free;
> but it might be safer to keep it this way. But if some client can get
> significantly better code with one or two free registers it might
> be worthwhile to investigate.
That's exactly what I had in mind. I'd highly prefer to keep it this
way until it is merged, and we are sure all the rest is stable
> > - swapgs
> > + SWAPGS_NOSTACK
>
> There's still stack here
Yes, but it is not safe to use. I think Roasted addressed it later on.
> > paranoid_restore\trace:
> > RESTORE_ALL 8
> > - iretq
> > + INTERRUPT_RETURN
>
> I suspect Xen will need much more changes anyways because of its
> ring 3 guest. Are these changes sufficient for lguest?
Yes, they are sufficient for lguest.
Does any xen folks have any comment?
--
Glauber de Oliveira Costa.
"Free as in Freedom"
http://glommer.net
"The less confident you are, the more serious you have to act."
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/