All of lore.kernel.org
 help / color / mirror / Atom feed
From: Samuel Thibault <samuel.thibault@eu.citrix.com>
To: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Xen-devel@lists.xensource.com
Subject: Re: [PATCH] minios: do not pin page tables [was: Really need to pin page tables?]
Date: Tue, 27 May 2008 11:58:36 +0100	[thread overview]
Message-ID: <20080527105836.GP4335@implementation.uk.xensource.com> (raw)
In-Reply-To: <483BE73D.3090403@goop.org>

Jeremy Fitzhardinge, le Tue 27 May 2008 11:49:33 +0100, a écrit :
> Samuel Thibault wrote:
> >Hello,
> >
> >In extras/mini-os/arch/x86/mm.c:new_pt_frame, Mini-OS pins its L1,
> >L2, and L3 page tables.  Does that really make a difference from the
> >Hypervisor point of view?  I mean, once L4 is pinned, pointing to these,
> >and thus their content has been checked, is there any performance
> >difference?
> >  
> 
> Shouldn't be.  Pinning an L4 implicitly pins everything else below it.  
> The only reason to pin the leafy parts of a pagetable is if you want to 
> play games with incrementally pinning the pagetable, or if you want to 
> pull them apart and rearrange the pieces for some reason.  For example, 
> I do incremental pagetable pins in the Xen/pvops kernel to limit the 
> number of pte locks I need to hold at any one time.

Ok, that's what I had in mind indeed.  Here is a patch to drop that from
Mini-OS.

Samuel



minios: We do not need to pin the page tables, as they implicitely get
pinned when we point the permanent page directory to them.

Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>

diff -r 2141ac752316 extras/mini-os/arch/x86/mm.c
--- a/extras/mini-os/arch/x86/mm.c	Fri May 23 15:43:32 2008 +0100
+++ b/extras/mini-os/arch/x86/mm.c	Tue May 27 11:51:43 2008 +0100
@@ -59,11 +59,10 @@
 {   
     pgentry_t *tab = (pgentry_t *)start_info.pt_base;
     unsigned long pt_page = (unsigned long)pfn_to_virt(*pt_pfn); 
-    unsigned long prot_e, prot_t, pincmd;
+    unsigned long prot_e, prot_t;
     mmu_update_t mmu_updates[1];
-    struct mmuext_op pin_request;
     
-    prot_e = prot_t = pincmd = 0;
+    prot_e = prot_t = 0;
     DEBUG("Allocating new L%d pt frame for pt_pfn=%lx, "
            "prev_l_mfn=%lx, offset=%lx", 
            level, *pt_pfn, prev_l_mfn, offset);
@@ -77,18 +76,15 @@
     case L1_FRAME:
          prot_e = L1_PROT;
          prot_t = L2_PROT;
-         pincmd = MMUEXT_PIN_L1_TABLE;
          break;
     case L2_FRAME:
          prot_e = L2_PROT;
          prot_t = L3_PROT;
-         pincmd = MMUEXT_PIN_L2_TABLE;
          break;
 #if defined(__x86_64__)
     case L3_FRAME:
          prot_e = L3_PROT;
          prot_t = L4_PROT;
-         pincmd = MMUEXT_PIN_L3_TABLE;
          break;
 #endif
     default:
@@ -113,15 +109,6 @@
          do_exit();
     }
                         
-    /* Pin the page to provide correct protection */
-    pin_request.cmd = pincmd;
-    pin_request.arg1.mfn = pfn_to_mfn(*pt_pfn);
-    if(HYPERVISOR_mmuext_op(&pin_request, 1, NULL, DOMID_SELF) < 0)
-    {
-        printk("ERROR: pinning failed\n");
-        do_exit();
-    }
-
     /* Now fill the new page table page with entries.
        Update the page directory as well. */
     mmu_updates[0].ptr = ((pgentry_t)prev_l_mfn << PAGE_SHIFT) + sizeof(pgentry_t) * offset;

      reply	other threads:[~2008-05-27 10:58 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-27 10:17 Really need to pin page tables? Samuel Thibault
2008-05-27 10:47 ` Keir Fraser
2008-05-27 10:49 ` Jeremy Fitzhardinge
2008-05-27 10:58   ` Samuel Thibault [this message]

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=20080527105836.GP4335@implementation.uk.xensource.com \
    --to=samuel.thibault@eu.citrix.com \
    --cc=Xen-devel@lists.xensource.com \
    --cc=jeremy@goop.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.