Re: [PATCH 4/4] x86 paravirt_ops: binary patching infrastructure

Jeremy Fitzhardinge
2006-08-07T05:56:19Z

Andi Kleen wrote:
>>
>> +#ifdef CONFIG_PARAVIRT
>> +void apply_paravirt(struct paravirt_patch *start, struct paravirt_patch *end)
>>
>
> It would be better to merge this with the existing LOCK prefix patching
> or perhaps the normal alternative() patcher (is there any particular
> reason you can't use it?)
>
> Three alternative patching mechanisms just seems to be too many

The difference is that every hypervisor wants its own patched
instruction sequence, which may require a specialized patching
mechanism. If you're simply patching in calls, then it isn't a big
deal, but you may also want to patch in real inlined code for some
operations (like sti/cli equivalents). The alternatives are to allow
each backend to deal with its own patching (perhaps with common
functions abstracted out as they appear), or have a common set of
patching machinery which can deal with all users. The former seems simpler.

J