WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] [HVM] Fix the issue that the HVM 64bit gu

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [HVM] Fix the issue that the HVM 64bit guest cannot boot with 32G memory.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Sat, 19 Aug 2006 02:40:14 +0000
Delivery-date: Fri, 18 Aug 2006 19:40:51 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Node ID 716ef8e8bddcd1b3b677f46d1d7de1d1d89e77db
# Parent  b127e557ee74e02834c76e61c1c55b33de808e4c
[HVM] Fix the issue that the HVM 64bit guest cannot boot with 32G memory.
It enlarges the PGT_mfn_mask to support 27bit, and also remove the
score stuff on x86-64.

Signed-off-by: Jun Nakajima <jun.nakajima@xxxxxxxxx>
Signed-off-by: Xiaohui Xin <xiaohui.xin@xxxxxxxxx>
---
 xen/arch/x86/shadow.c        |   49 -------------------------------------------
 xen/arch/x86/shadow_public.c |    2 -
 xen/include/asm-x86/mm.h     |    4 +--
 3 files changed, 3 insertions(+), 52 deletions(-)

diff -r b127e557ee74 -r 716ef8e8bddc xen/arch/x86/shadow.c
--- a/xen/arch/x86/shadow.c     Wed Aug 16 11:55:26 2006 +0100
+++ b/xen/arch/x86/shadow.c     Wed Aug 16 11:58:48 2006 +0100
@@ -1315,55 +1315,6 @@ static int is_out_of_sync(struct vcpu *v
     return 0;
 }
 
-#define GPFN_TO_GPTEPAGE(_gpfn) ((_gpfn) / (PAGE_SIZE / 
sizeof(guest_l1_pgentry_t)))
-static inline unsigned long
-predict_writable_pte_page(struct domain *d, unsigned long gpfn)
-{
-    return __shadow_status(d, GPFN_TO_GPTEPAGE(gpfn), PGT_writable_pred);
-}
-
-static inline void
-increase_writable_pte_prediction(struct domain *d, unsigned long gpfn, 
unsigned long prediction)
-{
-    unsigned long score = prediction & PGT_score_mask;
-    int create = (score == 0);
-
-    // saturating addition
-    score = (score + (1u << PGT_score_shift)) & PGT_score_mask;
-    score = score ? score : PGT_score_mask;
-
-    prediction = (prediction & PGT_mfn_mask) | score;
-
-    //printk("increase gpfn=%lx pred=%lx create=%d\n", gpfn, prediction, 
create);
-    set_shadow_status(d, GPFN_TO_GPTEPAGE(gpfn), 0, prediction, 
PGT_writable_pred, 0);
-
-    if ( create )
-        perfc_incr(writable_pte_predictions);
-}
-
-static inline void
-decrease_writable_pte_prediction(struct domain *d, unsigned long gpfn, 
unsigned long prediction)
-{
-    unsigned long score = prediction & PGT_score_mask;
-    ASSERT(score);
-
-    // divide score by 2...  We don't like bad predictions.
-    //
-    score = (score >> 1) & PGT_score_mask;
-
-    prediction = (prediction & PGT_mfn_mask) | score;
-
-    //printk("decrease gpfn=%lx pred=%lx score=%lx\n", gpfn, prediction, 
score);
-
-    if ( score )
-        set_shadow_status(d, GPFN_TO_GPTEPAGE(gpfn), 0, prediction, 
PGT_writable_pred, 0);
-    else
-    {
-        delete_shadow_status(d, GPFN_TO_GPTEPAGE(gpfn), 0, PGT_writable_pred, 
0);
-        perfc_decr(writable_pte_predictions);
-    }
-}
-
 static int fix_entry(
     struct domain *d,
     l1_pgentry_t *pt, u32 *found, int is_l1_shadow, u32 max_refs_to_find)
diff -r b127e557ee74 -r 716ef8e8bddc xen/arch/x86/shadow_public.c
--- a/xen/arch/x86/shadow_public.c      Wed Aug 16 11:55:26 2006 +0100
+++ b/xen/arch/x86/shadow_public.c      Wed Aug 16 11:58:48 2006 +0100
@@ -749,7 +749,7 @@ void free_shadow_page(unsigned long smfn
         unsigned long mfn;
         mfn = __shadow_status(d, gpfn, PGT_fl1_shadow);
         if ( !mfn )
-            gpfn |= (1UL << 63);
+            gpfn |= PGT_high_mfn_nx;
     }
 #endif
 #if CONFIG_PAGING_LEVELS >= 3
diff -r b127e557ee74 -r 716ef8e8bddc xen/include/asm-x86/mm.h
--- a/xen/include/asm-x86/mm.h  Wed Aug 16 11:55:26 2006 +0100
+++ b/xen/include/asm-x86/mm.h  Wed Aug 16 11:58:48 2006 +0100
@@ -101,17 +101,17 @@ struct page_info
 #ifdef __x86_64__
 #define PGT_high_mfn_shift  52
 #define PGT_high_mfn_mask   (0xfffUL << PGT_high_mfn_shift)
-#define PGT_mfn_mask        (((1U<<23)-1) | PGT_high_mfn_mask)
+#define PGT_mfn_mask        (((1U<<27)-1) | PGT_high_mfn_mask)
 #define PGT_high_mfn_nx     (0x800UL << PGT_high_mfn_shift)
 #else
  /* 23-bit mfn mask for shadow types: good for up to 32GB RAM. */
 #define PGT_mfn_mask        ((1U<<23)-1)
  /* NX for PAE xen is not supported yet */
 #define PGT_high_mfn_nx     (1ULL << 63)
-#endif
 
 #define PGT_score_shift     23
 #define PGT_score_mask      (((1U<<4)-1)<<PGT_score_shift)
+#endif
 
  /* Cleared when the owning guest 'frees' this page. */
 #define _PGC_allocated      31

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [HVM] Fix the issue that the HVM 64bit guest cannot boot with 32G memory., Xen patchbot-unstable <=