[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 09/13] x86/emulator: Refactor FXSAVE_AREA to use wrappers
On Mon Dec 9, 2024 at 4:26 PM GMT, Jan Beulich wrote: > On 05.11.2024 15:33, Alejandro Vallejo wrote: > > --- a/xen/arch/x86/x86_emulate/blk.c > > +++ b/xen/arch/x86/x86_emulate/blk.c > > @@ -11,9 +11,12 @@ > > !defined(X86EMUL_NO_SIMD) > > # ifdef __XEN__ > > # include <asm/xstate.h> > > -# define FXSAVE_AREA ((void *)¤t->arch.xsave_area->fpu_sse) > > +/* has a fastpath for `current`, so there's no actual map */ > > +# define FXSAVE_AREA ((void *)VCPU_MAP_XSAVE_AREA(current)) > > +# define UNMAP_FXSAVE_AREA(x) VCPU_UNMAP_XSAVE_AREA(currt ent, x) > > The typo of the first argument strongly suggests that the macro should > already now evaluate its parameters, also pleasing Misra. Not an unreasonable takeaway. I can expand as follows instead: #define VCPU_UNMAP_XSAVE_AREA(v, x) ({ (void)(v); x; }) Thoughts? > > > # else > > # define FXSAVE_AREA get_fpu_save_area() > > +# define UNMAP_FXSAVE_AREA(x) ((void)x) > > If only for consistency and to avoid setting bad precedents - parentheses > please around x. Ack. > > > @@ -292,6 +295,9 @@ int x86_emul_blk( > > } > > else > > asm volatile ( "fxrstor %0" :: "m" (*fxsr) ); > > + > > + UNMAP_FXSAVE_AREA(fxsr); > > + > > break; > > } > > > > @@ -320,6 +326,9 @@ int x86_emul_blk( > > > > if ( fxsr != ptr ) /* i.e. s->op_bytes < sizeof(*fxsr) */ > > memcpy(ptr, fxsr, s->op_bytes); > > + > > + UNMAP_FXSAVE_AREA(fxsr); > > + > > break; > > } > > So for now the emulator only supports FXSAVE / FXRSTOR. That'll need to change > sooner or later. Is it really appropriate in that light to name the new macro > after FXSAVE, when the underlying machinery uses all XSAVE? > > Jan I have no strong feeling one way or the other, except that it should mirror the other macro's name. I'd say it makes more sense to rename _both_ after the emulator is XSAVE-aware. That the internal machinery is actually XSAVE-based is an implementation detail largely irrelevant at the call sites. Cheers, Alejandro
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |