Re: [patch] paravirt: VDSO page is essential

Avi Kivity
2007-03-05T13:03:10Z

Ingo Molnar wrote:
> * Avi Kivity <avi@qumranet.com> wrote:
>
>
>>> -#ifdef CONFIG_PARAVIRT
>>> -unsigned int __read_mostly vdso_enabled = 0;
>>> -#else
>>> unsigned int __read_mostly vdso_enabled = 1;
>>> -#endif
>>>
>
>
>> Can't paravirt patch the syscall instruction like it does the rest of
>> the kernel?
>>
>
> we want to keep the guest as simple and unmodified as possible. And all
> this #ifdef jungle /will/ bite back. Especially if the change goes in
> with zero explanation like it did:
>
> [PATCH] paravirt: Disable vdso by default when CONFIG_PARAVIRT is enabled
>
> They don't work together and this way even glibc still works.
>
> i rather want an experimental feature (CONFIG_PARAVIRT) broken on some
> hypervisors for a bit than an entire body of guest OSs getting used to
> the "you dont have to deal with this VDSO annoyance by default" quirk
> forever ...
>

Sure, I agree with this patch. I'm talking about an alternate solution
so Xen can work with the vdso instead of #ifdefing away the kernel.

> but yes, i agree that the hypervisor should have the ability to patch
> the syscall instruction of both the hypervisor interface and of the VDSO
> interface. But this wasnt implemented like that, and the #ifdef quirk
> just /prevents/ a sane solution like that from ever getting done the
> right way.
>

Rusty, shouldn't this be a one-liner? No need to involve the hypervisor
here; the guest can s/syscall/int 80/ on its vdso page like it patches
cli and its ilk.

--
error compiling committee.c: too many arguments to function