|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 5/8] pdx: allow per-arch optimization of PDX conversion helpers
On Tue, Jun 24, 2025 at 03:51:09PM +0200, Jan Beulich wrote:
> On 20.06.2025 13:11, Roger Pau Monne wrote:
> > --- /dev/null
> > +++ b/xen/arch/x86/include/asm/pdx.h
> > @@ -0,0 +1,75 @@
> > +/* SPDX-License-Identifier: GPL-2.0-only */
> > +
> > +#ifndef X86_PDX_H
> > +#define X86_PDX_H
> > +
> > +#ifndef CONFIG_PDX_NONE
> > +
> > +#include <asm/alternative.h>
> > +
> > +/*
> > + * Introduce a macro to avoid repeating the same asm goto block in each
> > helper.
> > + * Note the macro is strictly tied to the code in the helpers.
> > + */
> > +#define PDX_ASM_GOTO_SKIP \
> > + asm_inline goto ( \
> > + ALTERNATIVE( \
> > + "", \
> > + "jmp %l[skip]", \
> > + ALT_NOT(X86_FEATURE_PDX_COMPRESSION)) \
> > + : : : : skip )
>
> Did you consider passing the label name as argument to the macro? That way ...
>
> > +static inline unsigned long pfn_to_pdx(unsigned long pfn)
> > +{
> > + PDX_ASM_GOTO_SKIP;
> > +
> > + return pfn_to_pdx_xlate(pfn);
> > +
> > + skip:
> > + return pfn;
> > +}
>
> ... the labels here and below then wouldn't look unused.
Yes - that's why I've added the "Note the macro is strictly tied to
the code in the helpers" comment ahead of the macro, and named it as
"GOTO_SKIP" to explicitly reference the label name. I could pass the
label name however if that's preferred, ie: PDX_ASM_GOTO(skip). IMO
It seems a bit redundant since all callers will pass the same label
name.
> The other slight anomaly with this is that we're wasting 2 or 5 bytes of
> code space. Yet I guess that's an acceptable price to pay for keeping the
> actual translation code in C (rather than in assembly).
I wanted to avoid doing the translation in assembly, so I think it's a
fair price to pay.
Thanks, Roger.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |