Received: by 2002:a25:23cc:0:0:0:0:0 with SMTP id j195csp805252ybj; Thu, 7 May 2020 08:03:11 -0700 (PDT) X-Google-Smtp-Source: APiQypI0N8TOE5CdaJZB/rzUuCTy7gxVUw6bUmmiPh0E/JVWUjeH11qEw7ZsUnE4ZiT4b1pTeyYJ X-Received: by 2002:a05:6402:204e:: with SMTP id bc14mr12731276edb.199.1588863791157; Thu, 07 May 2020 08:03:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588863791; cv=none; d=google.com; s=arc-20160816; b=n6jd2GIxUCjZOrJ1MCPVw5AJ9cJ3+z28mNvaKvRxfEzCzaOELNc8g/2lxI52aHamVI vWUXW7aXbFe7uU7SjKNA/nCtazfmvd4bg1nMr47I/M4ZcTZwdz82KTQeNzQcLvh3CUTm e2R9yGMOg0Y8IUYZ5MDhCxc3efc2fncy2Ns5fF8/JMNGGjOpen3ptMUB9sUvpPyO7iiL CiTn+1Eqc5sn7opntzGLov+vkCH1HUkghxlvV2HYR7E6qONKeKAuwJk/uX2eSQoYuFmU v1vkxhuNcBO4t6gpJUJCp64zI5iSBNA7j4SzmCS8QmG8Nar54UJSbIdM+XIWb7zbmpYz p6KA== 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=C3IkVSg2g33ngdi4a55UPfeVTUMbshGHRPzZpd1UAsA=; b=wRPft9oJQg1zW7vZ8mTwz6yyHMT6efBhvFXD7xgbF0u4TryWe7KVOMiFzBeUbfAfOJ I1sxfHgetgtmI3eehAmDf85xLyOmTmvp2MwT7loOGeJmeTAHDGRnNOLrwvbw9Sbi0ZlC GggR14Weix3jOHqbaPjjrr3Ald1pvUdw4zkm3DS2u7KQsg2ytgds+R/4qzptAUDYM0mh SqIjqSelCJEgItR421a8vunuLEbD7v8LHtVtw6AXp/Yt5x/Ool6wQYO/vn6hwOetQv8W S+kDJZPJAsUzLrvcL4kV8stgV/JzE8UxhB+mvVoy1DL5iiP6LhMIVKzDwGG0P/zoGXHc iMZQ== 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 f3si3244869edy.68.2020.05.07.08.02.38; Thu, 07 May 2020 08:03:11 -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 S1728114AbgEGPAq (ORCPT + 99 others); Thu, 7 May 2020 11:00:46 -0400 Received: from mga02.intel.com ([134.134.136.20]:63690 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727887AbgEGPAX (ORCPT ); Thu, 7 May 2020 11:00:23 -0400 IronPort-SDR: XB5MSRRJifVAeXuiy7L4epSUhi3Z/7UJV6M8fjXoBTBo25+lfcrvE8sEEvIhD1Uku6MUOgQUaj TpsQ7wIQFKOQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 May 2020 08:00:21 -0700 IronPort-SDR: saT76zwPdNDhyVhlS8gGstj7Z1vEVhsiCVSWpU8SA2MZuPcSyBfm4xuaedmODqMXokcDkJBKU+ 8RFyk6fiFs3w== X-IronPort-AV: E=Sophos;i="5.73,364,1583222400"; d="scan'208";a="370140539" Received: from iweiny-desk2.sc.intel.com (HELO localhost) ([10.3.52.147]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 May 2020 08:00:21 -0700 From: ira.weiny@intel.com To: linux-kernel@vger.kernel.org, Andrew Morton Cc: Ira Weiny , Al Viro , Thomas Bogendoerfer , "James E.J. Bottomley" , Helge Deller , Benjamin Herrenschmidt , Paul Mackerras , "David S. Miller" , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Chris Zankel , Max Filippov , Dan Williams , linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, sparclinux@vger.kernel.org, linux-xtensa@linux-xtensa.org, dri-devel@lists.freedesktop.org, Christian Koenig , Christoph Hellwig Subject: [PATCH V3 13/15] parisc/kmap: Remove duplicate kmap code Date: Thu, 7 May 2020 08:00:01 -0700 Message-Id: <20200507150004.1423069-14-ira.weiny@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200507150004.1423069-1-ira.weiny@intel.com> References: <20200507150004.1423069-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 --- Changes from V2: New Patch for this series --- 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