Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp2403148pxb; Fri, 17 Sep 2021 09:01:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyOwmLJ2+59vuErEG1otgCPgc7fED3iYO3xJ9IVYoX8zlMEJdHQOvtW/231swsHnSbm9b9p X-Received: by 2002:a05:6e02:1a8d:: with SMTP id k13mr8056570ilv.70.1631894490818; Fri, 17 Sep 2021 09:01:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631894490; cv=none; d=google.com; s=arc-20160816; b=vDLfwI5nw3IOusM1e4cKpzOGUHMUY8duUPObGy6GIkg3St+cCj85nZnQwHDDCyJc6M 5Rl4BY/TFO2Xkhd4uNEp/FJpg+C1yyMWIYTdYdzfqoi9ad11mV4xuzYN49PyMDVS9ryq XVGsfldovQJ8uDveSRmNsn1mx08hSJA8eV0Po4GiIiyTnhujmKds680ApbxZGf9opOFw Uh+7kaoFdfU2qfjL3b+Mmo3H3+iG476zRIqKHsNAxaQ7GpuDmMZHW4weT0u/uTVemmmP aGUbpJeNXMo1EBBroXS9W4lscOqgTpBQiPuXla9nUPLYLID/qJQLadBcjbMg6OYlv3m1 qT3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=juCPAS9rt42H3tt+8BZ9+J2od5yOi+mneV/cUzY7ysQ=; b=mncX4SHX/8kU8xWUOsw0l+6VMLnVx9C7Jk4uXFhwhlFKpnrbL1V4vwKiJalT0jIqc8 Z+FTgtw8303NLAN1e7kAek/Bhv1gKHkC/mhKuVuFdXx7kc5BI4LgQsS2NHwTn7WYF6wb fkiRBhCPriD9vo2Mys5PP/6cRhgTkpb2dji0DpmbuEeNwrP+IuU513jP503wnCxO9UwB yKmSUea+XhAQpct6Rmr34wSUIaUbmwJ3lC79yoy0hv1N7KizKUF5hNPZX9C22HP0PIOF uSVaRJ6nyt3JWdJHHKbgeRgkBa5KG+YD+TrgKYFENX407wBic8MHY7SiIy8HsPhYivqa KfIA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n3si5888689ilj.23.2021.09.17.09.01.17; Fri, 17 Sep 2021 09:01:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244205AbhIQECT (ORCPT + 99 others); Fri, 17 Sep 2021 00:02:19 -0400 Received: from mail.kernel.org ([198.145.29.99]:47210 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229473AbhIQECE (ORCPT ); Fri, 17 Sep 2021 00:02:04 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id CB736610E9; Fri, 17 Sep 2021 04:00:37 +0000 (UTC) From: Huacai Chen To: Arnd Bergmann , Andy Lutomirski , Thomas Gleixner , Peter Zijlstra , Andrew Morton , David Airlie , Jonathan Corbet , Linus Torvalds Cc: linux-arch@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Xuefeng Li , Yanteng Si , Huacai Chen , Jiaxun Yang , Huacai Chen Subject: [PATCH V3 04/22] LoongArch: Add writecombine support for drm Date: Fri, 17 Sep 2021 11:57:18 +0800 Message-Id: <20210917035736.3934017-5-chenhuacai@loongson.cn> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210917035736.3934017-1-chenhuacai@loongson.cn> References: <20210917035736.3934017-1-chenhuacai@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. Signed-off-by: Huacai Chen --- drivers/gpu/drm/drm_vm.c | 2 +- drivers/gpu/drm/ttm/ttm_module.c | 2 +- include/drm/drm_cache.h | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_vm.c b/drivers/gpu/drm/drm_vm.c index e957d4851dc0..f024dc93939e 100644 --- a/drivers/gpu/drm/drm_vm.c +++ b/drivers/gpu/drm/drm_vm.c @@ -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 diff --git a/drivers/gpu/drm/ttm/ttm_module.c b/drivers/gpu/drm/ttm/ttm_module.c index 7fcdef278c74..3dc43390e76b 100644 --- a/drivers/gpu/drm/ttm/ttm_module.c +++ b/drivers/gpu/drm/ttm/ttm_module.c @@ -60,7 +60,7 @@ pgprot_t ttm_prot_from_caching(enum ttm_caching caching, pgprot_t tmp) tmp = pgprot_noncached(tmp); #endif #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 diff --git a/include/drm/drm_cache.h b/include/drm/drm_cache.h index cc9de1632dd3..5c1059435369 100644 --- a/include/drm/drm_cache.h +++ b/include/drm/drm_cache.h @@ -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 -- 2.27.0