Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp3263490ybz; Sun, 3 May 2020 22:28:29 -0700 (PDT) X-Google-Smtp-Source: APiQypJhICVC26NBP31FArjUQoQSKTSmlV4unvO91iFU89sCvrsZoaolh9UFMSWr+O6irIbIS1pZ X-Received: by 2002:a17:906:90cc:: with SMTP id v12mr13817126ejw.211.1588570109455; Sun, 03 May 2020 22:28:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588570109; cv=none; d=google.com; s=arc-20160816; b=kw6ekEHhtb/eXIts/6UIKOJ5iz7kXTySg6gWZXD+4oz0VyI+ZqPvWRDbHhE+L1O1ML Ykj1OF2CIVpcem/s2xMRx9vxwGHK7omF4wYlzqeJW1HEg5mte8HXQITEdRXbq0jUtkvV h1V31tIeYdeTXJUty/+uMPoMcnK0zsnG5BotJ/fEBmDYWl+JkY9XdZ661HopNUgmxmEn 9hqlrlBLSo0u7/qr4EZYBRzIgO5zWrgv66tz/TQGypSCBWks6m+/MSWAbnXzpuMusw0D X5rUfuqWxWDNE0as1laMjAa+YXm/BERAjPZ+N/bDX0L1eHIS/pALuDkoXIh7YUhb+5TG JfDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :ironport-sdr:ironport-sdr; bh=Ooca81ZVA8zHzxqB4h2mWyuOnikHl248NYyVlR1YFFc=; b=jfh9dfk/oug/dM/++qc4SzFZEznyeXOr62XEUK34mhlyC1aac2EV+Gb9DcyfeA2Vw7 SuG6NJtFdGgUtz6P2ShXeoAWRSRZJ5UqkZ35iGJ6w5/BEJzMGkrft0FYb3dgmkPdBj51 yxSBkSUktXiUVBWwplBb+mbCnytFpZ60V0zTioDntKHkVk7R2uKLXQJWC4YV8oHYOqsW E2S/bnL9HVKohwi3L4PiI2+k27bKZgMfr0epiBDv72son9XoXG071NCA62IJXgy7J32W qMoUprts3Ix6YL1sf4HEA7sNbl/lldxPaXxtbQacEDqgeKBTwywj01tr+y1dGZD5ZdGk Mrjw== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gq24si5861015ejb.222.2020.05.03.22.28.06; Sun, 03 May 2020 22:28:29 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727119AbgEDFYX (ORCPT + 99 others); Mon, 4 May 2020 01:24:23 -0400 Received: from mga07.intel.com ([134.134.136.100]:26822 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727076AbgEDFYS (ORCPT ); Mon, 4 May 2020 01:24:18 -0400 IronPort-SDR: 8SAkRLyIZefCcBECzWIHxMr2SowRue5B1HN7yxR79shIeQhLRjs4PZjiYDYjetSAOr3tuKSrlM qk7tadh/MKVw== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 May 2020 22:24:18 -0700 IronPort-SDR: NzvbNRHq6UBAlopwxxgTn8DqRhO3MZ+WvXLnxag1GcYjgoWzoU8q73WIVYyrSRLbwVzFSf9jpH S9ORNEppR9Sg== X-IronPort-AV: E=Sophos;i="5.73,350,1583222400"; d="scan'208";a="433985282" Received: from iweiny-desk2.sc.intel.com (HELO localhost) ([10.3.52.147]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 May 2020 22:24:18 -0700 From: ira.weiny@intel.com To: linux-kernel@vger.kernel.org, Andrew Morton , Al Viro Cc: Ira Weiny , linux-csky@vger.kernel.org, linux-parisc@vger.kernel.org, "James E.J. Bottomley" , Helge Deller Subject: [PATCH 2/2] parisc/kmap: Remove duplicate kmap code Date: Sun, 3 May 2020 22:24:15 -0700 Message-Id: <20200504052415.984585-3-ira.weiny@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200504052415.984585-1-ira.weiny@intel.com> References: <20200504052415.984585-1-ira.weiny@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ira Weiny parisc reimplements the kmap calls except to flush it's dcache. This is arguably an abuse of kmap but regardless it is messy and confusing. Remove the duplicate code and have parisc define ARCH_HAS_FLUSH_ON_KUNMAP for a kunmap_flush_on_unmap() architecture specific call to flush the cache. Suggested-by: Al Viro Signed-off-by: Ira Weiny --- arch/parisc/include/asm/cacheflush.h | 28 ++-------------------------- include/linux/highmem.h | 10 +++++++--- 2 files changed, 9 insertions(+), 29 deletions(-) diff --git a/arch/parisc/include/asm/cacheflush.h b/arch/parisc/include/asm/cacheflush.h index 119c9a7681bc..99663fc1f997 100644 --- a/arch/parisc/include/asm/cacheflush.h +++ b/arch/parisc/include/asm/cacheflush.h @@ -100,35 +100,11 @@ flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vma } } -#include - -#define ARCH_HAS_KMAP - -static inline void *kmap(struct page *page) -{ - might_sleep(); - return page_address(page); -} - -static inline void kunmap(struct page *page) -{ - flush_kernel_dcache_page_addr(page_address(page)); -} - -static inline void *kmap_atomic(struct page *page) -{ - preempt_disable(); - pagefault_disable(); - return page_address(page); -} - -static inline void kunmap_atomic_high(void *addr) +#define ARCH_HAS_FLUSH_ON_KUNMAP +static inline void kunmap_flush_on_unmap(void *addr) { flush_kernel_dcache_page_addr(addr); } -#define kmap_atomic_prot(page, prot) kmap_atomic(page) -#define kmap_atomic_pfn(pfn) kmap_atomic(pfn_to_page(pfn)) - #endif /* _PARISC_CACHEFLUSH_H */ diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 89838306f50d..cc0c3904e501 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -129,7 +129,6 @@ static inline struct page *kmap_to_page(void *addr) static inline unsigned long totalhigh_pages(void) { return 0UL; } -#ifndef ARCH_HAS_KMAP static inline void *kmap(struct page *page) { might_sleep(); @@ -138,6 +137,9 @@ static inline void *kmap(struct page *page) static inline void kunmap(struct page *page) { +#ifdef ARCH_HAS_FLUSH_ON_KUNMAP + kunmap_flush_on_unmap(page_address(page)); +#endif } static inline void *kmap_atomic(struct page *page) @@ -150,14 +152,16 @@ static inline void *kmap_atomic(struct page *page) static inline void kunmap_atomic_high(void *addr) { - /* Nothing to do in the CONFIG_HIGHMEM=n case as kunmap_atomic() + /* Mostly nothing to do in the CONFIG_HIGHMEM=n case as kunmap_atomic() * handles re-enabling faults + preemption */ +#ifdef ARCH_HAS_FLUSH_ON_KUNMAP + kunmap_flush_on_unmap(addr); +#endif } #define kmap_atomic_pfn(pfn) kmap_atomic(pfn_to_page(pfn)) #define kmap_flush_unused() do {} while(0) -#endif #endif /* CONFIG_HIGHMEM */ -- 2.25.1