mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
LoongArch: Add writecombine support for drm
LoongArch maintains cache coherency in hardware, but its WUC attribute (Weak-ordered UnCached, which is similar to WC) is out of the scope of cache coherency machanism. This means WUC can only used for write-only memory regions. Cc: Daniel Vetter <daniel@ffwll.ch> Cc: dri-devel@lists.freedesktop.org Reviewed-by: WANG Xuerui <git@xen0n.name> Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
This commit is contained in:
parent
08145b087e
commit
439057ec3b
@ -69,7 +69,7 @@ static pgprot_t drm_io_prot(struct drm_local_map *map,
|
||||
pgprot_t tmp = vm_get_page_prot(vma->vm_flags);
|
||||
|
||||
#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || \
|
||||
defined(__mips__)
|
||||
defined(__mips__) || defined(__loongarch__)
|
||||
if (map->type == _DRM_REGISTERS && !(map->flags & _DRM_WRITE_COMBINING))
|
||||
tmp = pgprot_noncached(tmp);
|
||||
else
|
||||
|
@ -74,7 +74,7 @@ pgprot_t ttm_prot_from_caching(enum ttm_caching caching, pgprot_t tmp)
|
||||
#endif /* CONFIG_UML */
|
||||
#endif /* __i386__ || __x86_64__ */
|
||||
#if defined(__ia64__) || defined(__arm__) || defined(__aarch64__) || \
|
||||
defined(__powerpc__) || defined(__mips__)
|
||||
defined(__powerpc__) || defined(__mips__) || defined(__loongarch__)
|
||||
if (caching == ttm_write_combined)
|
||||
tmp = pgprot_writecombine(tmp);
|
||||
else
|
||||
|
@ -67,6 +67,14 @@ static inline bool drm_arch_can_wc_memory(void)
|
||||
* optimization entirely for ARM and arm64.
|
||||
*/
|
||||
return false;
|
||||
#elif defined(CONFIG_LOONGARCH)
|
||||
/*
|
||||
* LoongArch maintains cache coherency in hardware, but its WUC attribute
|
||||
* (Weak-ordered UnCached, which is similar to WC) is out of the scope of
|
||||
* cache coherency machanism. This means WUC can only used for write-only
|
||||
* memory regions.
|
||||
*/
|
||||
return false;
|
||||
#else
|
||||
return true;
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user