On 09/08/17 22:15, Josh Poimboeuf wrote: > On Wed, Aug 09, 2017 at 11:55:35AM +0200, Juergen Gross wrote: >> On 09/08/17 11:35, Peter Zijlstra wrote: >>> On Wed, Aug 09, 2017 at 11:24:07AM +0200, Juergen Gross wrote: >>>> On 09/08/17 11:16, Peter Zijlstra wrote: >>>>> On Wed, Aug 09, 2017 at 10:49:43AM +0200, Juergen Gross wrote: >>>>>>> ALTERNATIVE "pushfq; popq %rax", "callq *pv_irq_ops.save_fl", >>>>>>> X86_FEATURE_GODDAMN_PV_IRQ_OPS >>>>>> >>>>>> You are aware that at least some of the Xen irq pvops functionality is >>>>>> patched inline? Your modification would slow down pv guests quite a >>>>>> bit, I guess. >>>>> >>>>> Where does that live? I know of the inline patching for native, but >>>>> didn't know the guests did any of that too. >>>> >>>> See arch/x86/xen/enlighten_pv.c xen_patch(). >>> >>> 'obvious' name that :-) I see that the actual code that's patched in >>> lives in xen-asm.S which unlike the native case doesn't appear to have >>> its own section. So that might make things even more difficult. >> >> I don't see why this couldn't be changed. > > I'm wondering why xen_patch() even exists. The main difference between > xen_patch() and native_patch() seems to be that xen_patch() does some > relocs when doing an inline patch after calling paravirt_patch_insns(). > > But I can't see how that code path would ever run, because the > replacement functions are all larger than the size of the call > instruction to be replaced (7 bytes). So they would never fit, and > instead the paravirt_patch_default() case would always run. Or am I > missing something? Hmm, interesting. Just checked it and it seems you are right. > If we could get rid of the hypervisor-specific patching functions > (pv_init_ops) -- including possibly removing the lguest and vsmp code, > if nobody cares about them anymore -- that might make it easier to > consolidate all the patching things into a single place. I'll send some patches to: - remove xen_patch() - remove lguest - remove vsmp In case nobody objects to apply those patches we can possibly simplify some more code. I'd love that. :-) Juergen -- To unsubscribe from this list: send the line "unsubscribe live-patching" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html