From: Andi Kleen <andi@firstfloor.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Andi Kleen <andi@firstfloor.org>,
Glauber de Oliveira Costa <gcosta@redhat.com>,
LKML <linux-kernel@vger.kernel.org>,
akpm@linux-foundation.org, rusty@rustcorp.com.au,
Ingo Molnar <mingo@elte.hu>,
chrisw@sous-sol.org, jeremy@goop.org, avi@qumranet.com,
anthony@codemonkey.ws, virtualization@lists.linux-foundation.org,
lguest@ozlabs.org
Subject: Re: [PATCH 18/25] [PATCH] turn priviled operations into macros in entry.S
Date: Wed, 8 Aug 2007 16:03:19 +0200 [thread overview]
Message-ID: <20070808140319.GF14419@one.firstfloor.org> (raw)
In-Reply-To: <Pine.LNX.4.58.0708080936070.7516@gandalf.stny.rr.com>
On Wed, Aug 08, 2007 at 09:47:05AM -0400, Steven Rostedt wrote:
> /me working very hard to get lguest64 ready for public display
>
> Here's a snippet from my version of core.c. I've been thinking of ways to
> optimize it, but for now it works fine. This was done for both ring 3 and
> ring 1 lguest versions (this is the host running):
>
>
> /*
> * Update the LSTAR to point to the HV syscall handler.
> * Also update the fsbase if the guest uses one.
> */
> wrmsrl(MSR_LSTAR, (unsigned long)HV_OFFSET(&lguest_syscall_trampoline));
>
> [...]
> asm volatile ("pushq %2; pushq %%rsp; pushfq; pushq %3; call *%6;"
> /* The stack we pushed is off by 8, due to the
> previous pushq */
> "addq $8, %%rsp"
Weird stack inbalance, i'm surprised that works. %6 must be doing strange
things.
> /* Need to read manual, does rdmsr clear
> * the top 32 bits of rax? */
> xor %rax, %rax
>
> movl $MSR_GS_BASE,%ecx
> rdmsr
This seems incredibly slow. Since GS changes are controlled in
the kernel why don't you just cache them in the per cpu area?
The only case where user can reload it is using segment
selector changes, which can be also handled.
Also why do you need the guest gs value anyways?
You could just use your own stack and let the guest
switch to its own.
-Andi
next prev parent reply other threads:[~2007-08-08 14:03 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-08 4:18 Introducing paravirt_ops for x86_64 Glauber de Oliveira Costa
2007-08-08 4:18 ` [PATCH 1/25] [PATCH] header file move Glauber de Oliveira Costa
2007-08-08 4:18 ` [PATCH 2/25] [PATCH] tlb flushing routines Glauber de Oliveira Costa
2007-08-08 4:18 ` [PATCH 3/25] [PATCH] irq_flags / halt routines Glauber de Oliveira Costa
2007-08-08 4:18 ` [PATCH 4/25] [PATCH] Add debugreg/load_rsp native hooks Glauber de Oliveira Costa
2007-08-08 4:18 ` [PATCH 5/25] [PATCH] native versions for system.h functions Glauber de Oliveira Costa
2007-08-08 4:18 ` [PATCH 6/25] [PATCH] add native_apic read and write functions, as well as boot clocks ones Glauber de Oliveira Costa
2007-08-08 4:18 ` [PATCH 7/25] [PATCH] interrupt related native paravirt functions Glauber de Oliveira Costa
2007-08-08 4:18 ` [PATCH 8/25] [PATCH] use macro for sti/cli in spinlock definitions Glauber de Oliveira Costa
2007-08-08 4:18 ` [PATCH 9/25] [PATCH] report ring kernel is running without paravirt Glauber de Oliveira Costa
2007-08-08 4:18 ` [PATCH 10/25] [PATCH] export math_state_restore Glauber de Oliveira Costa
2007-08-08 4:18 ` [PATCH 11/25] [PATCH] introduce paravirt_release_pgd() Glauber de Oliveira Costa
2007-08-08 4:18 ` [PATCH 12/25] [PATCH] native versions for set pagetables Glauber de Oliveira Costa
2007-08-08 4:19 ` [PATCH 13/25] [PATCH] turn msr.h functions into native versions Glauber de Oliveira Costa
2007-08-08 4:19 ` [PATCH 14/25] [PATCH] add native functions for descriptors handling Glauber de Oliveira Costa
2007-08-08 4:19 ` [PATCH 15/25] [PATCH] get rid of inline asm for load_cr3 Glauber de Oliveira Costa
2007-08-08 4:19 ` [PATCH 16/25] [PATCH] introducing paravirt_activate_mm Glauber de Oliveira Costa
2007-08-08 4:19 ` [PATCH 17/25] [PATCH] turn page operations into native versions Glauber de Oliveira Costa
2007-08-08 4:19 ` [PATCH 18/25] [PATCH] turn priviled operations into macros in entry.S Glauber de Oliveira Costa
2007-08-08 4:19 ` [PATCH 19/25] [PATCH] time-related functions paravirt provisions Glauber de Oliveira Costa
2007-08-08 4:19 ` [PATCH 20/25] [PATCH] replace syscall_init Glauber de Oliveira Costa
2007-08-08 4:19 ` [PATCH 21/25] [PATCH] export cpu_gdt_descr Glauber de Oliveira Costa
2007-08-08 4:19 ` [PATCH 22/25] [PATCH] turn priviled operation into a macro Glauber de Oliveira Costa
2007-08-08 4:19 ` [PATCH 23/25] [PATCH] paravirt hooks for arch initialization Glauber de Oliveira Costa
2007-08-08 4:19 ` [PATCH 24/25] [PATCH] provide paravirt patching function Glauber de Oliveira Costa
2007-08-08 4:19 ` [PATCH 25/25] [PATCH] add paravirtualization support for x86_64 Glauber de Oliveira Costa
2007-08-08 10:00 ` Andi Kleen
2007-08-08 11:58 ` Steven Rostedt
2007-08-08 14:49 ` Glauber de Oliveira Costa
2007-08-08 23:18 ` Rusty Russell
2007-08-09 0:24 ` Andi Kleen
2007-08-09 0:44 ` Rusty Russell
2007-08-09 5:38 ` Jeremy Fitzhardinge
2007-08-09 6:53 ` Jeremy Fitzhardinge
2007-08-09 14:26 ` Andi Kleen
2007-08-09 14:37 ` Steven Rostedt
2007-08-09 15:09 ` Jeremy Fitzhardinge
2007-08-09 6:35 ` Jeremy Fitzhardinge
2007-08-09 7:02 ` Glauber de Oliveira Costa
2007-08-09 7:02 ` Jeremy Fitzhardinge
2007-08-09 7:07 ` Glauber de Oliveira Costa
2007-08-09 7:12 ` Jeremy Fitzhardinge
2007-08-09 12:30 ` Steven Rostedt
2007-08-09 14:26 ` Andi Kleen
2007-08-08 9:44 ` [PATCH 23/25] [PATCH] paravirt hooks for arch initialization Andi Kleen
2007-08-08 14:08 ` Glauber de Oliveira Costa
2007-08-08 14:13 ` Andi Kleen
2007-08-09 17:43 ` Jeremy Fitzhardinge
2007-08-09 18:03 ` Alan Cox
2007-08-10 18:08 ` Glauber de Oliveira Costa
2007-08-10 18:25 ` Alan Cox
2007-08-10 18:51 ` Jeremy Fitzhardinge
2007-08-10 19:17 ` Glauber de Oliveira Costa
2007-08-10 20:01 ` Jeremy Fitzhardinge
2007-08-10 20:13 ` Glauber de Oliveira Costa
2007-08-10 20:30 ` Jeremy Fitzhardinge
2007-08-08 11:32 ` [PATCH 21/25] [PATCH] export cpu_gdt_descr Arjan van de Ven
2007-08-08 14:24 ` Glauber de Oliveira Costa
2007-08-08 9:38 ` [PATCH 18/25] [PATCH] turn priviled operations into macros in entry.S Andi Kleen
2007-08-08 11:52 ` Steven Rostedt
2007-08-08 12:24 ` Andi Kleen
2007-08-08 12:37 ` Steven Rostedt
2007-08-08 13:52 ` Andi Kleen
2007-08-08 13:23 ` Steven Rostedt
2007-08-08 13:26 ` Steven Rostedt
2007-08-08 13:30 ` Andi Kleen
2007-08-08 13:47 ` Steven Rostedt
2007-08-08 14:03 ` Andi Kleen [this message]
2007-08-08 17:07 ` Steven Rostedt
2007-08-09 5:21 ` Jeremy Fitzhardinge
2007-08-09 12:17 ` Steven Rostedt
2007-08-08 13:29 ` Andi Kleen
2007-08-08 14:01 ` Steven Rostedt
2007-08-08 14:00 ` Glauber de Oliveira Costa
2007-08-08 13:58 ` Glauber de Oliveira Costa
2007-08-08 14:11 ` Andi Kleen
2007-08-08 14:53 ` Glauber de Oliveira Costa
2007-08-08 9:25 ` [PATCH 13/25] [PATCH] turn msr.h functions into native versions Andi Kleen
2007-08-08 14:19 ` Glauber de Oliveira Costa
2007-08-08 14:23 ` Andi Kleen
2007-08-09 5:52 ` [PATCH 7/25] [PATCH] interrupt related native paravirt functions Jeremy Fitzhardinge
2007-08-08 7:29 ` [PATCH 5/25] [PATCH] native versions for system.h functions Glauber de Oliveira Costa
2007-08-08 9:16 ` [PATCH 4/25] [PATCH] Add debugreg/load_rsp native hooks Andi Kleen
2007-08-09 5:47 ` Jeremy Fitzhardinge
2007-08-09 5:49 ` Glauber de Oliveira Costa
2007-08-08 9:14 ` [PATCH 3/25] [PATCH] irq_flags / halt routines Andi Kleen
2007-08-08 14:10 ` Glauber de Oliveira Costa
2007-08-08 14:14 ` Andi Kleen
2007-08-08 14:23 ` Glauber de Oliveira Costa
2007-08-09 7:29 ` Glauber de Oliveira Costa
2007-08-08 14:53 ` Introducing paravirt_ops for x86_64 Nakajima, Jun
2007-08-08 14:58 ` Glauber de Oliveira Costa
2007-08-09 0:28 ` Nakajima, Jun
2007-08-09 0:31 ` Glauber de Oliveira Costa
2007-08-09 5:35 ` Jeremy Fitzhardinge
2007-08-09 12:46 ` [Lguest] " Steven Rostedt
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=20070808140319.GF14419@one.firstfloor.org \
--to=andi@firstfloor.org \
--cc=akpm@linux-foundation.org \
--cc=anthony@codemonkey.ws \
--cc=avi@qumranet.com \
--cc=chrisw@sous-sol.org \
--cc=gcosta@redhat.com \
--cc=jeremy@goop.org \
--cc=lguest@ozlabs.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rostedt@goodmis.org \
--cc=rusty@rustcorp.com.au \
--cc=virtualization@lists.linux-foundation.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
Powered by JetHome