lkml.org 
[lkml]   [2012]   [Apr]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/8] xen/p2m: Move code around to allow for better re-usage.
    Date
    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.wilk@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


    \
     
     \ /
      Last update: 2012-04-16 19:25    [W:0.022 / U:2.172 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site