http://bugs.freedesktop.org/show_bug.cgi?id=17085





--- Comment #13 from Tomas Carnecky <[EMAIL PROTECTED]>  2008-08-15 17:43:16 
PST ---
The drm_core_ioremap() at [1] eventually calls ioremap() in
include/asm-x86/io_64.h which calls ioremap_nocache() in arch/x86/mm/ioremap.c
which calls __ioremap_caller() in the same file which fails in this block:

        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)) {
                        printk(
                "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),
                                prot_val, new_prot_val);
                        free_memtype(phys_addr, phys_addr + size);
                        return NULL;
                }
                prot_val = new_prot_val;
        }

with the following values:

ioremap error for 0xe077f000-0xe079f000, requested 0x10, got 0x8

The types are:
 - requested: _PAGE_CACHE_UC_MINUS (this one comes directly from
ioremap_nocache())
 - got: _PAGE_CACHE_WC

Interesting is also the comment inside ioremap_nocache() (mentions the X
drivers and ioremap_wc()).

new_prot_val comes from arch/x86/mm/pat.c:reserve_memtype() which calls
chk_conflict() because of this conflict:

Xorg:3880 memory types e077f000-e079f000 uncached-minus <-> e0000000-f0000000
write-combining

So someone must be setting up e0000000-f0000000 as WC and drm can't map that as
uncached. Maybe AGP?
agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xe0000000


tom

[1]
http://gitweb.freedesktop.org/?p=users/anholt/anholt/linux-2.6.git;a=blob;h=2394f4568005fb0eda07742a343437df943ec67f;hb=93e91293c9d7a3fcdd3a7874cd43295786e9a614;f=drivers/gpu/drm/i915/i915_gem.c#l2401


-- 
Configure bugmail: http://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
--
_______________________________________________
Dri-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to