Re: [patch] paravirt: VDSO page is essential

Roland McGrath
2007-03-06T09:13:47Z

> -# define VDSO_PRELINK VDSO_HIGH_BASE
> +# ifndef CONFIG_XEN
> +# define VDSO_PRELINK VDSO_HIGH_BASE
> +# else
> +# define VDSO_PRELINK (0UL - FIX_VDSO * PAGE_SIZE)
> +# endif
>
> should be Kconfig driven, not #ifdef driven, due to cleanliness and also
> because lguest wants to have the same thing. Plus:

In fact, with the relocate_vdso stuff it doesn't matter what VDSO_PRELINK
is at compile time. It saves the small amount of startup cost if it
matches the runtime address, but that is probably not noticeable.

> furthermore, there should be a paravirt_ops method to chose the
> relocation address, unless i'm missing something. On the native kernel
> that address will default to 0xffffe000. (if CONFIG_COMPAT_VDSO is
> selected)

For everything else to work, it needs to be set by changing __FIXADDR_TOP,
which seems to be done by calling reserve_top_address early enough.
It looks like that needs to be properly tied into paravirt_ops somehow.

Thanks,
Roland