Skip to content
  • Luis R. Rodriguez's avatar
    drivers/video/fbdev/atyfb: Use arch_phys_wc_add() and ioremap_wc() · 7d89a3cb
    Luis R. Rodriguez authored
    This driver uses strong UC for the MMIO region, and ioremap_wc()
    for the framebuffer to whitelist for the WC MTRR that can be
    changed to WC. On PAT systems we don't need the MTRR call so
    just use arch_phys_wc_add() there, this lets us remove all those
    ifdefs. Let's also be consistent and use ioremap_wc() for ATARI
    as well.
    
    There are a few motivations for this:
    
      a) Take advantage of PAT when available.
    
      b) Help bury MTRR code away, MTRR is architecture specific and
         on x86 it is being replaced by PAT.
    
      c) Help with the goal of eventually using _PAGE_CACHE_UC over
         _PAGE_CACHE_UC_MINUS on x86 on ioremap_nocache() (see commit
         de33c442
    
     titled "x86 PAT: fix performance drop for glx,
         use UC minus for ioremap(), ioremap_nocache() and
         pci_mmap_page_range()").
    
    The conversion done is expressed by the following Coccinelle
    SmPL patch, it additionally required manual intervention to
    address all the ifdeffery and removal of redundant things which
    arch_phys_wc_add() already addresses such as verbose message
    about when MTRR fails and doing nothing when we didn't get an
    MTRR:
    
    	@ mtrr_found @
    	expression index, base, size;
    	@@
    
    	-index = mtrr_add(base, size, MTRR_TYPE_WRCOMB, 1);
    	+index = arch_phys_wc_add(base, size);
    
    	@ mtrr_rm depends on mtrr_found @
    	expression mtrr_found.index, mtrr_found.base, mtrr_found.size;
    	@@
    
    	-mtrr_del(index, base, size);
    	+arch_phys_wc_del(index);
    
    	@ mtrr_rm_zero_arg depends on mtrr_found @
    	expression mtrr_found.index;
    	@@
    
    	-mtrr_del(index, 0, 0);
    	+arch_phys_wc_del(index);
    
    	@ mtrr_rm_fb_info depends on mtrr_found @
    	struct fb_info *info;
    	expression mtrr_found.index;
    	@@
    
    	-mtrr_del(index, info->fix.smem_start, info->fix.smem_len);
    	+arch_phys_wc_del(index);
    
    	@ ioremap_replace_nocache depends on mtrr_found @
    	struct fb_info *info;
    	expression base, size;
    	@@
    
    	-info->screen_base = ioremap_nocache(base, size);
    	+info->screen_base = ioremap_wc(base, size);
    
    	@ ioremap_replace_default depends on mtrr_found @
    	struct fb_info *info;
    	expression base, size;
    	@@
    
    	-info->screen_base = ioremap(base, size);
    	+info->screen_base = ioremap_wc(base, size);
    
    Signed-off-by: default avatarLuis R. Rodriguez <mcgrof@suse.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andrzej Hajda <a.hajda@samsung.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Antonino Daplas <adaplas@gmail.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Dave Airlie <airlied@redhat.com>
    Cc: Davidlohr Bueso <dbueso@suse.de>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mathias Krause <minipli@googlemail.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rob Clark <robdclark@gmail.com>
    Cc: Suresh Siddha <sbsiddha@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: Ville Syrjälä <syrjala@sci.fi>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: arnd@arndb.de
    Cc: benh@kernel.crashing.org
    Cc: dan.j.williams@intel.com
    Cc: geert@linux-m68k.org
    Cc: hch@lst.de
    Cc: hmh@hmh.eng.br
    Cc: linux-fbdev@vger.kernel.org
    Cc: linux-mm@kvack.org
    Cc: linux-pci@vger.kernel.org
    Cc: mpe@ellerman.id.au
    Cc: mst@redhat.com
    Cc: ralf@linux-mips.org
    Cc: ross.zwisler@linux.intel.com
    Cc: stefan.bader@canonical.com
    Cc: tj@kernel.org
    Cc: ville.syrjala@linux.intel.com
    Link: http://lkml.kernel.org/r/1436491499-3289-5-git-send-email-mcgrof@do-not-panic.com
    
    
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    7d89a3cb