Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion xen/p2m: Move code around to allow for better re-usage.
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Konrad Rzeszutek Wilk  
View profile  
 More options Apr 16 2012, 1:22 pm
Newsgroups: fa.linux.kernel
From: Konrad Rzeszutek Wilk <konrad.w...@oracle.com>
Date: Mon, 16 Apr 2012 17:22:35 UTC
Local: Mon, Apr 16 2012 1:22 pm
Subject: [PATCH 1/8] xen/p2m: Move code around to allow for better re-usage.
We are going to be using the early_alloc_p2m (and
early_alloc_p2m_middle) code in follow up patches which
are not related to setting identity pages.

Hence lets move the code out in its own function and
rename them as appropiate.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.w...@oracle.com>
---
 arch/x86/xen/p2m.c |   62 ++++++++++++++++++++++++++++-----------------------
 1 files changed, 34 insertions(+), 28 deletions(-)

diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c
index 1b267e7..3cc3afe 100644
--- a/arch/x86/xen/p2m.c
+++ b/arch/x86/xen/p2m.c
@@ -499,7 +499,7 @@ static bool alloc_p2m(unsigned long pfn)
        return true;
 }

-static bool __init __early_alloc_p2m(unsigned long pfn)
+static bool __init early_alloc_p2m_middle(unsigned long pfn)
 {
        unsigned topidx, mididx, idx;

@@ -541,6 +541,36 @@ static bool __init __early_alloc_p2m(unsigned long pfn)
        }
        return idx != 0;
 }
+
+static bool __init early_alloc_p2m(unsigned long pfn)
+{
+       unsigned topidx = p2m_top_index(pfn);
+       unsigned long *mid_mfn_p;
+       unsigned long **mid;
+
+       mid = p2m_top[topidx];
+       mid_mfn_p = p2m_top_mfn_p[topidx];
+       if (mid == p2m_mid_missing) {
+               mid = extend_brk(PAGE_SIZE, PAGE_SIZE);
+
+               p2m_mid_init(mid);
+
+               p2m_top[topidx] = mid;
+
+               BUG_ON(mid_mfn_p != p2m_mid_missing_mfn);
+       }
+       /* And the save/restore P2M tables.. */
+       if (mid_mfn_p == p2m_mid_missing_mfn) {
+               mid_mfn_p = extend_brk(PAGE_SIZE, PAGE_SIZE);
+               p2m_mid_mfn_init(mid_mfn_p);
+
+               p2m_top_mfn_p[topidx] = mid_mfn_p;
+               p2m_top_mfn[topidx] = virt_to_mfn(mid_mfn_p);
+               /* Note: we don't set mid_mfn_p[midix] here,
+                * look in early_alloc_p2m_middle */
+       }
+       return true;
+}
 unsigned long __init set_phys_range_identity(unsigned long pfn_s,
                                      unsigned long pfn_e)
 {
@@ -559,35 +589,11 @@ unsigned long __init set_phys_range_identity(unsigned long pfn_s,
                pfn < ALIGN(pfn_e, (P2M_MID_PER_PAGE * P2M_PER_PAGE));
                pfn += P2M_MID_PER_PAGE * P2M_PER_PAGE)
        {
-               unsigned topidx = p2m_top_index(pfn);
-               unsigned long *mid_mfn_p;
-               unsigned long **mid;
-
-               mid = p2m_top[topidx];
-               mid_mfn_p = p2m_top_mfn_p[topidx];
-               if (mid == p2m_mid_missing) {
-                       mid = extend_brk(PAGE_SIZE, PAGE_SIZE);
-
-                       p2m_mid_init(mid);
-
-                       p2m_top[topidx] = mid;
-
-                       BUG_ON(mid_mfn_p != p2m_mid_missing_mfn);
-               }
-               /* And the save/restore P2M tables.. */
-               if (mid_mfn_p == p2m_mid_missing_mfn) {
-                       mid_mfn_p = extend_brk(PAGE_SIZE, PAGE_SIZE);
-                       p2m_mid_mfn_init(mid_mfn_p);
-
-                       p2m_top_mfn_p[topidx] = mid_mfn_p;
-                       p2m_top_mfn[topidx] = virt_to_mfn(mid_mfn_p);
-                       /* Note: we don't set mid_mfn_p[midix] here,
-                        * look in __early_alloc_p2m */
-               }
+               WARN_ON(!early_alloc_p2m(pfn));
        }

-       __early_alloc_p2m(pfn_s);
-       __early_alloc_p2m(pfn_e);
+       early_alloc_p2m_middle(pfn_s);
+       early_alloc_p2m_middle(pfn_e);

        for (pfn = pfn_s; pfn < pfn_e; pfn++)
                if (!__set_phys_to_machine(pfn, IDENTITY_FRAME(pfn)))
--
1.7.7.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.