Message ID | 20211020090625.1037517-1-lucas.demarchi@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915/gem: stop using PAGE_KERNEL_IO | expand |
On Wed, Oct 20, 2021 at 02:06:25AM -0700, Lucas De Marchi wrote: > PAGE_KERNEL_IO is only defined for x86 and is the same as PAGE_KERNEL. > Use the latter since that is also available on other archs, which should > help us getting i915 there. > > This is the same that was done done in commit 80c33624e472 ("io-mapping: > Fixup for different names of writecombine"). Later the commit > 80c33624e472 ("io-mapping: Fixup for different names of writecombine") > added a "Fixes" tag to the first one, but that is actually fixing a > separate issue: the different names for pgprot_writecombine(). > > Fast-forward today, it seems the only 2 archs that define > pgprot_noncached_wc() are microblaze and powerpc. Microblaze has the > same definition for pgprot_writecombine() since commit > 97ccedd793ac ("microblaze: Provide pgprot_device/writecombine macros for > nommu"). Powerpc has 3 variants and all of them have the same behavior > for pgprot_writecombine() and pgprot_noncached_wc(). From the commit message > and linked issue, the fallback was needed for arm, but apparently today > all the variants there also have pgprot_writecombine(). > > So, just use PAGE_KERNEL, and just use pgprot_writecombine(). > > Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> I think a bit more history on PAGE_KERNEL_IO is useful to add. It was added in be43d72835ba ("x86: add _PAGE_IOMAP pte flag for IO mappings"). The one and only user was lost in f955371ca9d3 ("x86: remove the Xen-specific _PAGE_IOMAP PTE flag"), therefore it's safe to do this. With that added Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Also if you're motivated, maybe delete PAGE_KERNEL_IO across the tree and get x86 maintainers to merge the entire series? -Daniel > --- > drivers/gpu/drm/i915/gem/i915_gem_pages.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_pages.c b/drivers/gpu/drm/i915/gem/i915_gem_pages.c > index 8eb1c3a6fc9c..68fe1837ef54 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_pages.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_pages.c > @@ -289,7 +289,7 @@ static void *i915_gem_object_map_page(struct drm_i915_gem_object *obj, > pgprot = PAGE_KERNEL; > break; > case I915_MAP_WC: > - pgprot = pgprot_writecombine(PAGE_KERNEL_IO); > + pgprot = pgprot_writecombine(PAGE_KERNEL); > break; > } > > @@ -333,7 +333,7 @@ static void *i915_gem_object_map_pfn(struct drm_i915_gem_object *obj, > i = 0; > for_each_sgt_daddr(addr, iter, obj->mm.pages) > pfns[i++] = (iomap + addr) >> PAGE_SHIFT; > - vaddr = vmap_pfn(pfns, n_pfn, pgprot_writecombine(PAGE_KERNEL_IO)); > + vaddr = vmap_pfn(pfns, n_pfn, pgprot_writecombine(PAGE_KERNEL)); > if (pfns != stack) > kvfree(pfns); > > -- > 2.33.1 >
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_pages.c b/drivers/gpu/drm/i915/gem/i915_gem_pages.c index 8eb1c3a6fc9c..68fe1837ef54 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_pages.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_pages.c @@ -289,7 +289,7 @@ static void *i915_gem_object_map_page(struct drm_i915_gem_object *obj, pgprot = PAGE_KERNEL; break; case I915_MAP_WC: - pgprot = pgprot_writecombine(PAGE_KERNEL_IO); + pgprot = pgprot_writecombine(PAGE_KERNEL); break; } @@ -333,7 +333,7 @@ static void *i915_gem_object_map_pfn(struct drm_i915_gem_object *obj, i = 0; for_each_sgt_daddr(addr, iter, obj->mm.pages) pfns[i++] = (iomap + addr) >> PAGE_SHIFT; - vaddr = vmap_pfn(pfns, n_pfn, pgprot_writecombine(PAGE_KERNEL_IO)); + vaddr = vmap_pfn(pfns, n_pfn, pgprot_writecombine(PAGE_KERNEL)); if (pfns != stack) kvfree(pfns);
PAGE_KERNEL_IO is only defined for x86 and is the same as PAGE_KERNEL. Use the latter since that is also available on other archs, which should help us getting i915 there. This is the same that was done done in commit 80c33624e472 ("io-mapping: Fixup for different names of writecombine"). Later the commit 80c33624e472 ("io-mapping: Fixup for different names of writecombine") added a "Fixes" tag to the first one, but that is actually fixing a separate issue: the different names for pgprot_writecombine(). Fast-forward today, it seems the only 2 archs that define pgprot_noncached_wc() are microblaze and powerpc. Microblaze has the same definition for pgprot_writecombine() since commit 97ccedd793ac ("microblaze: Provide pgprot_device/writecombine macros for nommu"). Powerpc has 3 variants and all of them have the same behavior for pgprot_writecombine() and pgprot_noncached_wc(). From the commit message and linked issue, the fallback was needed for arm, but apparently today all the variants there also have pgprot_writecombine(). So, just use PAGE_KERNEL, and just use pgprot_writecombine(). Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> --- drivers/gpu/drm/i915/gem/i915_gem_pages.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)