lkml.org 
[lkml]   [2009]   [Feb]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] xen mtrr: Implement xen_get_free_region()
    Date
    From: Mark McLoughlin <markmc@redhat.com>

    When an already set MTRR is being changed, we need to
    first unset, since Xen also maintains a usage count.

    Signed-off-by: Mark McLoughlin <markmc@redhat.com>
    ---
    arch/x86/kernel/cpu/mtrr/xen.c | 27 ++++++++++++++++++++++++++-
    1 files changed, 26 insertions(+), 1 deletions(-)

    diff --git a/arch/x86/kernel/cpu/mtrr/xen.c b/arch/x86/kernel/cpu/mtrr/xen.c
    index f226044..d715843 100644
    --- a/arch/x86/kernel/cpu/mtrr/xen.c
    +++ b/arch/x86/kernel/cpu/mtrr/xen.c
    @@ -9,13 +9,38 @@

    static int __init xen_num_var_ranges(void);

    +static int xen_get_free_region(unsigned long base, unsigned long size, int replace_reg)
    +{
    + struct xen_platform_op op;
    + int error;
    +
    + if (replace_reg < 0)
    + return generic_get_free_region(base, size, -1);
    +
    + /* If we're replacing the contents of a register,
    + * we need to first unset it since Xen also keeps
    + * a usage count.
    + */
    + op.cmd = XENPF_del_memtype;
    + op.u.del_memtype.handle = 0;
    + op.u.del_memtype.reg = replace_reg;
    +
    + error = HYPERVISOR_dom0_op(&op);
    + if (error) {
    + BUG_ON(error > 0);
    + return error;
    + }
    +
    + return replace_reg;
    +}
    +
    /* DOM0 TODO: Need to fill in the remaining mtrr methods to have full
    * working userland mtrr support. */
    static struct mtrr_ops xen_mtrr_ops = {
    .vendor = X86_VENDOR_UNKNOWN,
    // .set = xen_set_mtrr,
    // .get = xen_get_mtrr,
    - .get_free_region = generic_get_free_region,
    + .get_free_region = xen_get_free_region,
    .validate_add_page = generic_validate_add_page,
    .have_wrcomb = positive_have_wrcomb,
    .use_intel_if = 0,
    --
    1.6.0.6


    \
     
     \ /
      Last update: 2009-02-28 03:11    [W:0.020 / U:65.628 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site