Re: [PATCH RFC 13/43] x86/paravirt: Use relative reference for original instruction

From: Hou Wenlong
Date: Tue Jun 06 2023 - 07:36:01 EST


On Mon, Jun 05, 2023 at 02:40:54PM +0800, Nadav Amit wrote:
>
>
> > On Jun 1, 2023, at 2:29 AM, Juergen Gross <jgross@xxxxxxxx> wrote:
> >
> > On 28.04.23 11:50, Hou Wenlong wrote:
> >> Similar to the alternative patching, use relative reference for original
> >> instruction rather than absolute one, which saves 8 bytes for one entry
> >> on x86_64. And it could generate R_X86_64_PC32 relocation instead of
> >> R_X86_64_64 relocation, which also reduces relocation metadata on
> >> relocatable builds. And the alignment could be hard coded to be 4 now.
> >> Signed-off-by: Hou Wenlong <houwenlong.hwl@xxxxxxxxxxxx>
> >> Cc: Thomas Garnier <thgarnie@xxxxxxxxxxxx>
> >> Cc: Lai Jiangshan <jiangshan.ljs@xxxxxxxxxxxx>
> >> Cc: Kees Cook <keescook@xxxxxxxxxxxx>
> >
> > Reviewed-by: Juergen Gross <jgross@xxxxxxxx>
> >
> > I think this patch should be taken even without the series.
>
> It looks good to me, I am just not sure what the alignment is needed
> at all.
>
> Why not to make the struct __packed (like struct alt_instr) and get rid
> of all the .align directives? Am I missing something?

Yes, making the struct __packed can save more space. If I understand
correctly, it could be done even without this patch but it may lead to
misaligned memory access. However, it seems to not matter as I didn't
find any related log for packing struct alt_instr. I can do such things
if needed.

Thanks.