From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
"Roger Pau Monné" <roger.pau@citrix.com>,
xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2 09/13] x86/emulator: Refactor FXSAVE_AREA to use wrappers
Date: Mon, 16 Dec 2024 11:58:14 +0000 [thread overview]
Message-ID: <D6D3VA6T02AX.3PVLA7M6C30H@cloud.com> (raw)
In-Reply-To: <bc308e63-5791-4e29-a218-0c83728c116a@suse.com>
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
next prev parent reply other threads:[~2024-12-16 11:58 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-05 14:32 [PATCH v2 00/13] x86: Address Space Isolation FPU preparations Alejandro Vallejo
2024-11-05 14:32 ` [PATCH v2 01/13] x86/xstate: Remove stale assertions in fpu_x{rstor,save}() Alejandro Vallejo
2024-11-07 10:29 ` Jan Beulich
2024-11-05 14:32 ` [PATCH v2 02/13] x86/xstate: Create map/unmap primitives for xsave areas Alejandro Vallejo
2024-12-09 16:11 ` Jan Beulich
2024-12-16 11:00 ` Alejandro Vallejo
2024-11-05 14:33 ` [PATCH v2 03/13] x86/hvm: Map/unmap xsave area in hvm_save_cpu_ctxt() Alejandro Vallejo
2024-12-09 16:13 ` Jan Beulich
2024-11-05 14:33 ` [PATCH v2 04/13] x86/fpu: Map/umap xsave area in vcpu_{reset,setup}_fpu() Alejandro Vallejo
2024-12-09 16:14 ` Jan Beulich
2024-11-05 14:33 ` [PATCH v2 05/13] x86/xstate: Map/unmap xsave area in xstate_set_init() and handle_setbv() Alejandro Vallejo
2024-12-09 16:16 ` Jan Beulich
2024-12-16 11:02 ` Alejandro Vallejo
2024-11-05 14:33 ` [PATCH v2 06/13] x86/hvm: Map/unmap xsave area in hvmemul_{get,put}_fpu() Alejandro Vallejo
2024-12-09 16:18 ` Jan Beulich
2024-11-05 14:33 ` [PATCH v2 07/13] x86/domctl: Map/unmap xsave area in arch_get_info_guest() Alejandro Vallejo
2024-12-09 16:19 ` Jan Beulich
2024-11-05 14:33 ` [PATCH v2 08/13] x86/xstate: Map/unmap xsave area in {compress,expand}_xsave_states() Alejandro Vallejo
2024-12-09 16:20 ` Jan Beulich
2024-12-16 11:36 ` Alejandro Vallejo
2024-11-05 14:33 ` [PATCH v2 09/13] x86/emulator: Refactor FXSAVE_AREA to use wrappers Alejandro Vallejo
2024-12-09 16:26 ` Jan Beulich
2024-12-16 11:58 ` Alejandro Vallejo [this message]
2024-12-16 12:01 ` Jan Beulich
2024-12-16 14:37 ` Alejandro Vallejo
2024-11-05 14:33 ` [PATCH v2 10/13] x86/mpx: Map/unmap xsave area in in read_bndcfgu() Alejandro Vallejo
2024-12-09 16:30 ` Jan Beulich
2024-12-16 12:00 ` Alejandro Vallejo
2024-12-16 12:03 ` Jan Beulich
2024-12-16 14:02 ` Alejandro Vallejo
2025-01-10 11:40 ` Alejandro Vallejo
2024-11-05 14:33 ` [PATCH v2 11/13] x86/fpu: Pass explicit xsave areas to fpu_(f)xsave() Alejandro Vallejo
2024-12-09 16:37 ` Jan Beulich
2024-11-05 14:33 ` [PATCH v2 12/13] x86/fpu: Pass explicit xsave areas to fpu_(f)xrstor() Alejandro Vallejo
2024-12-09 16:39 ` Jan Beulich
2024-11-05 14:33 ` [PATCH v2 13/13] x86/xstate: Make xstate_all() and vcpu_xsave_mask() take explicit xstate Alejandro Vallejo
2024-12-09 16:41 ` Jan Beulich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=D6D3VA6T02AX.3PVLA7M6C30H@cloud.com \
--to=alejandro.vallejo@cloud.com \
--cc=andrew.cooper3@citrix.com \
--cc=jbeulich@suse.com \
--cc=roger.pau@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.