lkml.org 
[lkml]   [2009]   [Jul]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 02/10] x86, PAT: ioremap to follow same PAT restrictions as other PAT users
    Date
    ioremap has this hard-coded check for new type and requested type. That
    check differs from other PAT users like /dev/mem mmap, remap_pfn_range
    in only one condition where requested type is UC_MINUS and new type
    is WC. Under that condition, ioremap fails. But other PAT interfaces succeed
    with a WC mapping.

    Change to make ioremap be in sync with other PAT APIs and use the same
    macro as others. Also changes the error print to KERN_ERR instead of
    pr_debug.

    Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
    Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
    ---
    arch/x86/mm/ioremap.c | 17 +++--------------
    1 files changed, 3 insertions(+), 14 deletions(-)

    diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
    index 8a45093..aeaea8c 100644
    --- a/arch/x86/mm/ioremap.c
    +++ b/arch/x86/mm/ioremap.c
    @@ -228,24 +228,13 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr,
    retval = reserve_memtype(phys_addr, (u64)phys_addr + size,
    prot_val, &new_prot_val);
    if (retval) {
    - pr_debug("Warning: reserve_memtype returned %d\n", retval);
    + printk(KERN_ERR "ioremap reserve_memtype failed %d\n", retval);
    return NULL;
    }

    if (prot_val != new_prot_val) {
    - /*
    - * Do not fallback to certain memory types with certain
    - * requested type:
    - * - request is uc-, return cannot be write-back
    - * - request is uc-, return cannot be write-combine
    - * - request is write-combine, return cannot be write-back
    - */
    - if ((prot_val == _PAGE_CACHE_UC_MINUS &&
    - (new_prot_val == _PAGE_CACHE_WB ||
    - new_prot_val == _PAGE_CACHE_WC)) ||
    - (prot_val == _PAGE_CACHE_WC &&
    - new_prot_val == _PAGE_CACHE_WB)) {
    - pr_debug(
    + if (!is_new_memtype_allowed(prot_val, new_prot_val)) {
    + printk(KERN_ERR
    "ioremap error for 0x%llx-0x%llx, requested 0x%lx, got 0x%lx\n",
    (unsigned long long)phys_addr,
    (unsigned long long)(phys_addr + size),
    --
    1.6.0.6


    \
     
     \ /
      Last update: 2009-07-10 19:03    [W:3.033 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site