All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeremy Fitzhardinge <jeremy@goop.org>
To: weiming <zephyr.zhao@gmail.com>
Cc: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Subject: Re: a quick question about _PAGE_GLOBAL flag in para virt 	mode
Date: Sun, 15 Feb 2009 14:26:13 -0800	[thread overview]
Message-ID: <49989685.6020004@goop.org> (raw)
In-Reply-To: <add59a3f0902150930m57ab843bi5bcdb90b6a4859a8@mail.gmail.com>

weiming wrote:
> When a normal context switch happens (like process switch), those tlb 
> entries will still be flushed no matter if global bit is set or not, 
> is it correct?

Things would go very wrong if it didn't...  I haven't checked in detail, 
but presumably when the kernel does a user cr3 reload, Xen will do a 
global tlb flush (or at least make sure one happens when needed).

> why not set global bit for user kernel pages? I guess this is because 
> when domain switchs, all tlb entries will still be flushed, so it's 
> not necessary for user kernel pages. Is my understanding right?

64-bit Xen uses paging to protect the guest kernel from guest usermode, 
and protect Xen from the guest kernel, and as a result has to do a cr3 
reload for any user->kernel switch (which is why it has to go via Xen).  
We don't want kernel mappings to be visible to usermode, so they have to 
only be in tlb while we're actually running in guest kernel mode; 
setting global on the kernel mappings wouldn't be useful because we 
always need to flush them anyway when returning to usermode.

Or to put it another way, it makes sense to set global on user mappings 
because they're always mapped, regardless of what context we're in; the 
only time they need to be flushed is either doing a user process context 
switch, or a vcpu context switch.

    J

  reply	other threads:[~2009-02-15 22:26 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-15  1:40 a quick question about _PAGE_GLOBAL flag in para virt mode weiming
2009-02-15  9:37 ` Jeremy Fitzhardinge
2009-02-15 17:30   ` weiming
2009-02-15 22:26     ` Jeremy Fitzhardinge [this message]
2009-02-15 23:06       ` John Levon
2009-02-16  0:47       ` weiming
2009-02-16  2:35         ` How to disconnect a network card in the Virtual machine? ANNIE LI

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=49989685.6020004@goop.org \
    --to=jeremy@goop.org \
    --cc=xen-devel@lists.xensource.com \
    --cc=zephyr.zhao@gmail.com \
    /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.