From: Juergen Gross <jgross@suse.com>
To: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Andy Lutomirski <luto@kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
"Levin, Alexander (Sasha Levin)" <alexander.levin@verizon.com>,
"x86@kernel.org" <x86@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"live-patching@vger.kernel.org" <live-patching@vger.kernel.org>,
Jiri Slaby <jslaby@suse.cz>, Ingo Molnar <mingo@kernel.org>,
"H. Peter Anvin" <hpa@zytor.com>, Mike Galbraith <efault@gmx.de>
Subject: Re: [PATCH v4 1/2] x86/unwind: add ORC unwinder
Date: Thu, 10 Aug 2017 16:24:58 +0200 [thread overview]
Message-ID: <b3ed30d4-9c6d-ae91-b876-486f18d638f3@suse.com> (raw)
In-Reply-To: <20170810140903.3phgijen4w2tjp6w@treble>
On 10/08/17 16:09, Josh Poimboeuf wrote:
> On Thu, Aug 10, 2017 at 09:05:19AM +0200, Juergen Gross wrote:
>>> 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. :-)
>
> Well, I might have spoken too soon about getting rid of vsmp. The
> scalemp.com domain still exists. The code hasn't changed much in three
> years, but maybe it's simple enough that it hasn't needed to change.
Lets see. I have made the experience that asking whether some code can
be removed almost never get answers. Sending a patch which actually
removes the stuff results much more often in objections. :-)
> Also, looking at the lguest mailing list, there seem to have been at
> least a few people trying lguest out in the past year or so.
Well, yes. The question is here whether there is a _need_ for lguest
or was it just out of curiosity?
In the end it is 32 bit only and you can easily test boot code via
KVM, Xen or qemu.
> Even if we couldn't get rid of vsmp or lguest, I wonder if the PVOP_CALL
> stuff could be reworked to something like the following:
>
> static inline notrace unsigned long arch_local_save_flags(void)
> {
> return PVOP_CALLEE0(unsigned long, pv_irq_ops.save_fl,
> "pushfq; popq %rax", CPU_FEATURE_NATIVE,
> "call __raw_callee_save_xen_save_fl", CPU_FEATURE_XEN,
> "call __raw_callee_save_vsmp_save_fl", CPU_FEATURE_VSMP,
> "call __raw_callee_save_lguest_save_fl", CPU_FEATURE_LGUEST);
> }
>
> Which would eventually translate to something like:
>
> asm volatile(ALTERNATIVE_4("call *pv_irq_ops.save_fl",
> "pushfq; popq %rax", CPU_FEATURE_NATIVE,
> "call __raw_callee_save_xen_save_fl", CPU_FEATURE_XEN,
> "call __raw_callee_save_vsmp_save_fl", CPU_FEATURE_VSMP,
> "call __raw_callee_save_lguest_save_fl", CPU_FEATURE_LGUEST
> : ... pvop clobber stuff ... );
>
> where ALTERNATIVE_4 is a logical extension of ALTERNATIVE_2 and
> CPU_FEATURE_NATIVE would always be set.
>
> It might need some more macro magic, but if it worked I think it would
> be a lot clearer than the current voodoo.
>
> Thoughts?
Hmm, this would modify the current approach of pvops completely: instead
of letting each user of pvops (xen, lguest, vsmp, ...) set the functions
it is needing, you'd have to modify the core definition of each pvops
function for each user. Or would you want to let Xen, lguest etc. opt in
for pvops and generate above code at build time from some templates?
Juergen
next prev parent reply other threads:[~2017-08-10 14:25 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-24 23:36 [PATCH v4 0/2] " Josh Poimboeuf
2017-07-24 23:36 ` [PATCH v4 1/2] x86/unwind: add " Josh Poimboeuf
2017-07-26 12:10 ` [tip:x86/asm] x86/unwind: Add the " tip-bot for Josh Poimboeuf
2017-07-28 16:48 ` [PATCH v4 1/2] x86/unwind: add " Levin, Alexander (Sasha Levin)
2017-07-28 17:52 ` Josh Poimboeuf
2017-07-28 18:29 ` Levin, Alexander (Sasha Levin)
2017-07-28 18:57 ` Josh Poimboeuf
2017-07-28 19:59 ` Levin, Alexander (Sasha Levin)
2017-07-29 3:54 ` Josh Poimboeuf
2017-08-08 18:58 ` Josh Poimboeuf
2017-08-08 19:03 ` Linus Torvalds
2017-08-08 19:13 ` Josh Poimboeuf
2017-08-08 20:09 ` Andy Lutomirski
2017-08-08 22:00 ` Josh Poimboeuf
2017-08-09 8:49 ` Juergen Gross
2017-08-09 9:16 ` Peter Zijlstra
2017-08-09 9:24 ` Juergen Gross
2017-08-09 9:35 ` Peter Zijlstra
2017-08-09 9:55 ` Juergen Gross
2017-08-09 20:15 ` Josh Poimboeuf
2017-08-10 7:05 ` Juergen Gross
2017-08-10 14:09 ` Josh Poimboeuf
2017-08-10 14:24 ` Juergen Gross [this message]
2017-08-10 14:39 ` Josh Poimboeuf
2017-08-10 14:59 ` Juergen Gross
2017-08-10 15:49 ` Josh Poimboeuf
2017-08-10 14:42 ` Josh Poimboeuf
2017-08-09 16:11 ` Andy Lutomirski
2017-08-09 17:52 ` Juergen Gross
2017-09-27 21:08 ` Josh Poimboeuf
2017-09-28 6:03 ` Juergen Gross
2017-09-28 13:55 ` Josh Poimboeuf
2017-09-28 13:58 ` Juergen Gross
2017-07-24 23:36 ` [PATCH v4 2/2] x86/kconfig: make it easier to switch to the new " Josh Poimboeuf
2017-07-25 9:10 ` Ingo Molnar
2017-07-25 13:54 ` Josh Poimboeuf
2017-07-26 12:11 ` [tip:x86/asm] x86/kconfig: Consolidate unwinders into multiple choice selection tip-bot for Josh Poimboeuf
2017-07-26 12:10 ` [tip:x86/asm] x86/kconfig: Make it easier to switch to the new ORC unwinder tip-bot for Josh Poimboeuf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b3ed30d4-9c6d-ae91-b876-486f18d638f3@suse.com \
--to=jgross@suse.com \
--cc=alexander.levin@verizon.com \
--cc=efault@gmx.de \
--cc=hpa@zytor.com \
--cc=jpoimboe@redhat.com \
--cc=jslaby@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=live-patching@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®