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