These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / video / fbdev / intelfb / intelfbdrv.c
index b847d53..bbec737 100644 (file)
 
 #include <asm/io.h>
 
-#ifdef CONFIG_MTRR
-#include <asm/mtrr.h>
-#endif
-
 #include "intelfb.h"
 #include "intelfbhw.h"
 #include "../edid.h"
@@ -410,33 +406,6 @@ static void __exit intelfb_exit(void)
 module_init(intelfb_init);
 module_exit(intelfb_exit);
 
-/***************************************************************
- *                     mtrr support functions                  *
- ***************************************************************/
-
-#ifdef CONFIG_MTRR
-static inline void set_mtrr(struct intelfb_info *dinfo)
-{
-       dinfo->mtrr_reg = mtrr_add(dinfo->aperture.physical,
-                                  dinfo->aperture.size, MTRR_TYPE_WRCOMB, 1);
-       if (dinfo->mtrr_reg < 0) {
-               ERR_MSG("unable to set MTRR\n");
-               return;
-       }
-       dinfo->has_mtrr = 1;
-}
-static inline void unset_mtrr(struct intelfb_info *dinfo)
-{
-       if (dinfo->has_mtrr)
-               mtrr_del(dinfo->mtrr_reg, dinfo->aperture.physical,
-                        dinfo->aperture.size);
-}
-#else
-#define set_mtrr(x) WRN_MSG("MTRR is disabled in the kernel\n")
-
-#define unset_mtrr(x) do { } while (0)
-#endif /* CONFIG_MTRR */
-
 /***************************************************************
  *                        driver init / cleanup                *
  ***************************************************************/
@@ -456,7 +425,7 @@ static void cleanup(struct intelfb_info *dinfo)
        if (dinfo->registered)
                unregister_framebuffer(dinfo->info);
 
-       unset_mtrr(dinfo);
+       arch_phys_wc_del(dinfo->wc_cookie);
 
        if (dinfo->fbmem_gart && dinfo->gtt_fb_mem) {
                agp_unbind_memory(dinfo->gtt_fb_mem);
@@ -675,7 +644,7 @@ static int intelfb_pci_register(struct pci_dev *pdev,
        /* Allocate memories (which aren't stolen) */
        /* Map the fb and MMIO regions */
        /* ioremap only up to the end of used aperture */
-       dinfo->aperture.virtual = (u8 __iomem *)ioremap_nocache
+       dinfo->aperture.virtual = (u8 __iomem *)ioremap_wc
                (dinfo->aperture.physical, ((offset + dinfo->fb.offset) << 12)
                 + dinfo->fb.size);
        if (!dinfo->aperture.virtual) {
@@ -772,7 +741,8 @@ static int intelfb_pci_register(struct pci_dev *pdev,
        agp_backend_release(bridge);
 
        if (mtrr)
-               set_mtrr(dinfo);
+               dinfo->wc_cookie = arch_phys_wc_add(dinfo->aperture.physical,
+                                                   dinfo->aperture.size);
 
        DBG_MSG("fb: 0x%x(+ 0x%x)/0x%x (0x%p)\n",
                dinfo->fb.physical, dinfo->fb.offset, dinfo->fb.size,