[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 4/8] x86/spec-ctrl: Extend all SPEC_CTRL_{ENTER,EXIT}_* comments
On 13.09.2023 22:27, Andrew Cooper wrote: > --- a/xen/arch/x86/include/asm/spec_ctrl_asm.h > +++ b/xen/arch/x86/include/asm/spec_ctrl_asm.h > @@ -218,7 +218,10 @@ > wrmsr > .endm > > -/* Use after an entry from PV context (syscall/sysenter/int80/int82/etc). */ > +/* > + * Used after a synchronous entry from PV context. SYSCALL, SYSENTER, INT, > + * etc. Will always interrupt a guest speculation context. > + */ > .macro SPEC_CTRL_ENTRY_FROM_PV > /* > * Requires %rsp=regs/cpuinfo, %rdx=0 For the entry point comments - not being a native speaker -, the use of "{will,may} interrupt" reads odd. You're describing the macros here, not the the events that led to their invocation. Therefore it would seem to me that "{will,may} have interrupted" would be more appropriate. > @@ -233,7 +236,11 @@ > X86_FEATURE_SC_MSR_PV > .endm > > -/* Use in interrupt/exception context. May interrupt Xen or PV context. */ > +/* > + * Used after a synchronous interrupt or exception. May interrupt Xen or PV > + * context, but will not interrupt Xen with a guest speculation context, > + * outside of fatal error cases. > + */ > .macro SPEC_CTRL_ENTRY_FROM_INTR > /* > * Requires %rsp=regs, %r14=stack_end, %rdx=0 I find "synchronous" here odd, when this includes interrupts. Below you at least qualify things further, by saying "fully asynchronous with finding sane state"; I think further qualification is warranted here as well, to avoid any ambiguity. > @@ -319,7 +334,14 @@ UNLIKELY_DISPATCH_LABEL(\@_serialise): > UNLIKELY_END(\@_serialise) > .endm > > -/* Use when exiting to Xen in IST context. */ > +/* > + * Use when exiting from any entry context, back to Xen context. This > + * includes returning to other SPEC_CTRL_{ENTRY,EXIT}_* regions with > + * unsanitised state. > + * > + * Because we might have interrupted Xen beyond SPEC_CTRL_EXIT_TO_$GUEST, we > + * must treat this as if it were an EXIT_TO_$GUEST case too. > + */ > .macro SPEC_CTRL_EXIT_TO_XEN > /* > * Requires %rbx=stack_end Is it really "must"? At least in theory there are ways to recognize that exit is back to Xen context outside of interrupted entry/exit regions (simply by evaluating how far below stack top %rsp is). > @@ -344,6 +366,9 @@ UNLIKELY_DISPATCH_LABEL(\@_serialise): > wrmsr > > .L\@_skip_sc_msr: > + > + /* TODO VERW */ > + > .endm I don't think this comment is strictly necessary to add here, when the omission is addressed in a later patch. But I also don't mind its addition. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |