From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D3EB1C4727D for ; Wed, 23 Sep 2020 00:05:41 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 529162071A for ; Wed, 23 Sep 2020 00:05:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="D4BsQwtr" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 529162071A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 9DBA16B0068; Tue, 22 Sep 2020 20:05:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 965C66B006C; Tue, 22 Sep 2020 20:05:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 853FD6B006E; Tue, 22 Sep 2020 20:05:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0224.hostedemail.com [216.40.44.224]) by kanga.kvack.org (Postfix) with ESMTP id 6C4C56B0068 for ; Tue, 22 Sep 2020 20:05:40 -0400 (EDT) Received: from smtpin03.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 3000C3632 for ; Wed, 23 Sep 2020 00:05:40 +0000 (UTC) X-FDA: 77292382440.03.sail32_340c67f27151 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin03.hostedemail.com (Postfix) with ESMTP id 0C13D28A4E8 for ; Wed, 23 Sep 2020 00:05:40 +0000 (UTC) X-HE-Tag: sail32_340c67f27151 X-Filterd-Recvd-Size: 7944 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by imf07.hostedemail.com (Postfix) with ESMTP for ; Wed, 23 Sep 2020 00:05:38 +0000 (UTC) Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5A5DD23A1E for ; Wed, 23 Sep 2020 00:05:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1600819537; bh=BN2JO8cF+jS2JfvaTCuvroT3lVzAjAOUVtydtxaO3O4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=D4BsQwtrE0bRRALj0ZhdHfCLSujXjh6F7meja8WT18qpviXbA+QZpG22D6TStoFzD esLcNEEis3q5GD2ngAjDv1JBj3nuV1NJDjbAM1zx1PLnf+GaJE4CWCPciG6IKeEj9P 2etOQlfFcS6a8cIi5hnan134iSIropl9NNarJz0U= Received: by mail-lf1-f47.google.com with SMTP id b12so19993661lfp.9 for ; Tue, 22 Sep 2020 17:05:37 -0700 (PDT) X-Gm-Message-State: AOAM530lYhX9n0Oqqeebqmx5MAW2kIsS8xbbw9MENsDxSa1ZtbtoYEmS 8uB+hutOuBmyRPm5GAn8v4w81TDtEwj8W5YHi/k= X-Google-Smtp-Source: ABdhPJzKHKLgsGXChluCkkkYPY85+IzWQtpjD+xwRPqP5lLV/gun1FBs3gKk0smb1Hrbxlj4VdZ3a5tMZisYukVr51E= X-Received: by 2002:ac2:51aa:: with SMTP id f10mr2347652lfk.451.1600819535428; Tue, 22 Sep 2020 17:05:35 -0700 (PDT) MIME-Version: 1.0 References: <20200919091751.011116649@linutronix.de> <20200919092616.432209211@linutronix.de> In-Reply-To: <20200919092616.432209211@linutronix.de> From: Guo Ren Date: Wed, 23 Sep 2020 08:05:24 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [patch RFC 06/15] csky/mm/highmem: Switch to generic kmap atomic To: Thomas Gleixner Cc: LKML , linux-arch , Linus Torvalds , Paul McKenney , x86@kernel.org, Sebastian Andrzej Siewior , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Will Deacon , Andrew Morton , Linux-MM , Russell King , Linux ARM , Chris Zankel , Max Filippov , linux-xtensa@linux-xtensa.org, Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , David Airlie , Daniel Vetter , intel-gfx , dri-devel , Ard Biesheuvel , Herbert Xu , linux-csky@vger.kernel.org, Vineet Gupta , linux-snps-arc@lists.infradead.org, Arnd Bergmann , Michal Simek , Thomas Bogendoerfer , linux-mips@vger.kernel.org, Nick Hu , Greentime Hu , Vincent Chen , Michael Ellerman , Benjamin Herrenschmidt , Paul Mackerras , linuxppc-dev@lists.ozlabs.org, "David S. Miller" , sparclinux@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Acked-by: Guo Ren On Sat, Sep 19, 2020 at 5:50 PM Thomas Gleixner wrote: > > Signed-off-by: Thomas Gleixner > Cc: Guo Ren > Cc: linux-csky@vger.kernel.org > --- > Note: Completely untested > --- > arch/csky/Kconfig | 1 > arch/csky/include/asm/highmem.h | 4 +- > arch/csky/mm/highmem.c | 75 ---------------------------------------- > 3 files changed, 5 insertions(+), 75 deletions(-) > > --- a/arch/csky/Kconfig > +++ b/arch/csky/Kconfig > @@ -285,6 +285,7 @@ config NR_CPUS > config HIGHMEM > bool "High Memory Support" > depends on !CPU_CK610 > + select KMAP_ATOMIC_GENERIC > default y > > config FORCE_MAX_ZONEORDER > --- a/arch/csky/include/asm/highmem.h > +++ b/arch/csky/include/asm/highmem.h > @@ -32,10 +32,12 @@ extern pte_t *pkmap_page_table; > > #define ARCH_HAS_KMAP_FLUSH_TLB > extern void kmap_flush_tlb(unsigned long addr); > -extern void *kmap_atomic_pfn(unsigned long pfn); > > #define flush_cache_kmaps() do {} while (0) > > +#define arch_kmap_temp_post_map(vaddr, pteval) kmap_flush_tlb(vaddr) > +#define arch_kmap_temp_post_unmap(vaddr) kmap_flush_tlb(vaddr) > + > extern void kmap_init(void); > > #endif /* __KERNEL__ */ > --- a/arch/csky/mm/highmem.c > +++ b/arch/csky/mm/highmem.c > @@ -9,8 +9,6 @@ > #include > #include > > -static pte_t *kmap_pte; > - > unsigned long highstart_pfn, highend_pfn; > > void kmap_flush_tlb(unsigned long addr) > @@ -19,67 +17,7 @@ void kmap_flush_tlb(unsigned long addr) > } > EXPORT_SYMBOL(kmap_flush_tlb); > > -void *kmap_atomic_high_prot(struct page *page, pgprot_t prot) > -{ > - unsigned long vaddr; > - int idx, type; > - > - type = kmap_atomic_idx_push(); > - idx = type + KM_TYPE_NR*smp_processor_id(); > - vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); > -#ifdef CONFIG_DEBUG_HIGHMEM > - BUG_ON(!pte_none(*(kmap_pte - idx))); > -#endif > - set_pte(kmap_pte-idx, mk_pte(page, prot)); > - flush_tlb_one((unsigned long)vaddr); > - > - return (void *)vaddr; > -} > -EXPORT_SYMBOL(kmap_atomic_high_prot); > - > -void kunmap_atomic_high(void *kvaddr) > -{ > - unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK; > - int idx; > - > - if (vaddr < FIXADDR_START) > - return; > - > -#ifdef CONFIG_DEBUG_HIGHMEM > - idx = KM_TYPE_NR*smp_processor_id() + kmap_atomic_idx(); > - > - BUG_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx)); > - > - pte_clear(&init_mm, vaddr, kmap_pte - idx); > - flush_tlb_one(vaddr); > -#else > - (void) idx; /* to kill a warning */ > -#endif > - kmap_atomic_idx_pop(); > -} > -EXPORT_SYMBOL(kunmap_atomic_high); > - > -/* > - * This is the same as kmap_atomic() but can map memory that doesn't > - * have a struct page associated with it. > - */ > -void *kmap_atomic_pfn(unsigned long pfn) > -{ > - unsigned long vaddr; > - int idx, type; > - > - pagefault_disable(); > - > - type = kmap_atomic_idx_push(); > - idx = type + KM_TYPE_NR*smp_processor_id(); > - vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); > - set_pte(kmap_pte-idx, pfn_pte(pfn, PAGE_KERNEL)); > - flush_tlb_one(vaddr); > - > - return (void *) vaddr; > -} > - > -static void __init kmap_pages_init(void) > +void __init kmap_init(void) > { > unsigned long vaddr; > pgd_t *pgd; > @@ -96,14 +34,3 @@ static void __init kmap_pages_init(void) > pte = pte_offset_kernel(pmd, vaddr); > pkmap_page_table = pte; > } > - > -void __init kmap_init(void) > -{ > - unsigned long vaddr; > - > - kmap_pages_init(); > - > - vaddr = __fix_to_virt(FIX_KMAP_BEGIN); > - > - kmap_pte = pte_offset_kernel((pmd_t *)pgd_offset_k(vaddr), vaddr); > -} > -- Best Regards Guo Ren ML: https://lore.kernel.org/linux-csky/