From: Avi Kivity <avi@redhat.com>
To: kvm-ppc@vger.kernel.org
Subject: Re: re-writing on powerpc
Date: Wed, 15 Dec 2010 09:48:53 +0000 [thread overview]
Message-ID: <4D088F05.4080800@redhat.com> (raw)
In-Reply-To: <FD1A71B048BD854792EE753E0E9F27DE80A7@az33exm20>
On 12/14/2010 07:53 PM, Hollis Blanchard wrote:
> On 12/14/2010 12:48 AM, Avi Kivity wrote:
>> On 12/13/2010 07:17 PM, Hollis Blanchard wrote:
>>>> Rewriting is dangerous if the guest is unaware of it. As soon as
>>>> it is made aware of it, it might as well actually do it in the best
>>>> way that suits it.
>>>
>>> Can you list some examples of dangerous scenarios?
>>>
> Perhaps I should rephrase... any real-world dangerous scenarios? :)
That's much less fun.
> I was hoping you could share some traps you've hit with Linux or
> Windows on x86.
We've hit a lot of issues with the very limited patching we do for
Windows XP (Linux does its own patching):
- Windows hibernation saves the patched code, but not the payload, so we
have to set up hooks to re-enable the payload when Windows resumes from
hibernation
- We need the vcpu id in the payload code, and no easy way to get at
it. After several wierd hacks we settled on peeking at the Windows
processor control block, a guest specific per-cpu data structure.
- Some patched instructions are called before the stack is set up, so
the return doesn't work very well
- others I'm suppressing
>> - guest checksums own kernel pages
> For runtime intrusion detection? Such guests can simply not ask the
> hypervisor to enable the rewriting feature.
Which is sad.
>> - clever compiler reuses code for constant pool
> Not sure what you mean here. Anyways I think clever compilers are
> irrelevant, since a compiler will not ordinarily emit a
> supervisor-mode instruction. The hypervisor has no need to patch
> normal user-mode instructions.
I meant a really clever compiler. And by using code for the constant
pool I using IP-relative addressing to fetch a constant using a small
offset. If the constant happens to be a patched instruction, it won't
be so constant.
>> - guest patches itself (a la linux alternatives), surprised when it
>> sees a different instruction
> PowerPC Linux does patch itself, which is a write-only operation.
Other self-patchers might be different; say you use xor to toggle
between two variants, reducing the amount of data you need to keep for
patching.
>> - guest jits own kernel code (like Singularity), gets confused when
>> it reads back something it didn't write
> This is getting really hypothetical, but why would a JIT need to read
> the generated code?
>
Any wierd hypothetical idea will be in mission-critical production use
somewhere, see Andreas reply.
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2010-12-15 9:48 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-13 4:45 re-writing on powerpc Yoder Stuart-B08248
2010-12-13 8:35 ` Avi Kivity
2010-12-13 8:42 ` Alexander Graf
2010-12-13 8:45 ` Avi Kivity
2010-12-13 17:12 ` Hollis Blanchard
2010-12-13 17:15 ` Avi Kivity
2010-12-13 17:17 ` Hollis Blanchard
2010-12-13 19:03 ` Scott Wood
2010-12-13 23:54 ` Alexander Graf
2010-12-14 0:18 ` Scott Wood
2010-12-14 0:24 ` Alexander Graf
2010-12-14 8:40 ` Avi Kivity
2010-12-14 8:42 ` Avi Kivity
2010-12-14 8:48 ` Avi Kivity
2010-12-14 9:08 ` Alexander Graf
2010-12-14 15:45 ` Yoder Stuart-B08248
2010-12-14 15:48 ` Avi Kivity
2010-12-14 16:55 ` Scott Wood
2010-12-14 17:48 ` Alexander Graf
2010-12-14 17:53 ` Hollis Blanchard
2010-12-14 18:37 ` Scott Wood
2010-12-14 18:41 ` Scott Wood
2010-12-14 20:04 ` Scott Wood
2010-12-14 23:00 ` Alexander Graf
2010-12-14 23:17 ` Scott Wood
2010-12-14 23:29 ` Alexander Graf
2010-12-15 0:00 ` Scott Wood
2010-12-15 0:13 ` Alexander Graf
2010-12-15 0:57 ` Andreas Färber
2010-12-15 9:48 ` Avi Kivity [this message]
2010-12-15 11:16 ` Sethi Varun-B16395
2010-12-15 11:18 ` Avi Kivity
2010-12-15 11:32 ` Sethi Varun-B16395
2010-12-15 12:25 ` Avi Kivity
2010-12-17 21:59 ` Benjamin Herrenschmidt
2010-12-17 22:00 ` Benjamin Herrenschmidt
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=4D088F05.4080800@redhat.com \
--to=avi@redhat.com \
--cc=kvm-ppc@vger.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.