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 F38F6C4727F for ; Wed, 23 Sep 2020 00:05:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AEBC4221E8 for ; Wed, 23 Sep 2020 00:05:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1600819541; bh=BN2JO8cF+jS2JfvaTCuvroT3lVzAjAOUVtydtxaO3O4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:List-ID:From; b=Lam+nh7a8u+qDGpjYANfHAdJ1A3bCKilvZlN5vN2+0mbJHBTyO25793bfA983lqvz 7wkb+7agGLHlN8G29VYBlIIlcHePvvEmsSb7xRcd48v6qY89pgXSacbeOjzfNARwJY J8OusPNiJXleMj8JSrOmJYqqYlEWZiNjXoruM9tg= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726997AbgIWAFk (ORCPT ); Tue, 22 Sep 2020 20:05:40 -0400 Received: from mail.kernel.org ([198.145.29.99]:35642 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726179AbgIWAFi (ORCPT ); Tue, 22 Sep 2020 20:05:38 -0400 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (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 585CF23A1D; 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-f48.google.com with SMTP id m5so20012350lfp.7; Tue, 22 Sep 2020 17:05:37 -0700 (PDT) X-Gm-Message-State: AOAM530+PnvaE7YXTbFCc5RzNePMH2/z0TW6+pAuQ01OsCwpJeCsn2X6 2Etm8PCEARnxsajIruZonESmNLO9mlZYfowtXOU= 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" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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/ From mboxrd@z Thu Jan 1 00:00:00 1970 From: Guo Ren Date: Wed, 23 Sep 2020 00:05:24 +0000 Subject: Re: [patch RFC 06/15] csky/mm/highmem: Switch to generic kmap atomic Message-Id: List-Id: References: <20200919091751.011116649@linutronix.de> <20200919092616.432209211@linutronix.de> In-Reply-To: <20200919092616.432209211@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Thomas Gleixner Cc: Juri Lelli , Peter Zijlstra , Sebastian Andrzej Siewior , dri-devel , linux-mips@vger.kernel.org, Ben Segall , Max Filippov , Paul Mackerras , sparclinux@vger.kernel.org, Vincent Chen , Will Deacon , Ard Biesheuvel , linux-arch , Vincent Guittot , Herbert Xu , Michael Ellerman , x86@kernel.org, Russell King , linux-csky@vger.kernel.org, David Airlie , Mel Gorman , linux-snps-arc@lists.infradead.org, linux-xtensa@linux-xtensa.org, Paul McKenney , intel-gfx , linuxppc-dev@lists.ozlabs.org, Steven Rostedt , Linus Torvalds , Rodrigo Vivi , Dietmar Eggemann , Linux ARM , Chris Zankel , Michal Simek , Thomas Bogendoerfer , Nick Hu , Linux-MM , Vineet Gupta , LKML , Arnd Bergmann , Andrew Morton , Daniel Bristot de Oliveira , "David S. Miller" , Greentime Hu 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/ 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/ 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=-6.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no 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 24595C2D0E2 for ; Wed, 23 Sep 2020 00:07:42 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 38DE020BED for ; Wed, 23 Sep 2020 00:07:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="mmPGcm7L" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 38DE020BED Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Received: from bilbo.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 4Bwz5P1MdQzDqYS for ; Wed, 23 Sep 2020 10:07:37 +1000 (AEST) Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=kernel.org (client-ip=198.145.29.99; helo=mail.kernel.org; envelope-from=guoren@kernel.org; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=kernel.org Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=default header.b=mmPGcm7L; dkim-atps=neutral Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4Bwz395d1qzDqPk for ; Wed, 23 Sep 2020 10:05:41 +1000 (AEST) Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (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 4FE2B2399A for ; Wed, 23 Sep 2020 00:05:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1600819538; bh=BN2JO8cF+jS2JfvaTCuvroT3lVzAjAOUVtydtxaO3O4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=mmPGcm7LxHfM3JkO5ukjrArXyU1stUbRtAzscnDWEGc5Aza2N+gH0OERfj402Z7+n 8PvMXWK05ebNEqKv4755UuUp0qiqi0R46iiKvnS6ot9b86RGdNOKVtk3VzgEbcs4gc 6pcfGM0E8ZH8NSSWjmZRwuT92Y5H/UBEelVk9/FM= Received: by mail-wr1-f44.google.com with SMTP id o5so18936021wrn.13 for ; Tue, 22 Sep 2020 17:05:38 -0700 (PDT) X-Gm-Message-State: AOAM533x89ru6AVJHuSzPZ2avmHV3PWHVtrZyYynAu6QFTkUcRS9j/RO l52qMdZB+LKh3yRo+adNjY6QaIhz7k7DzV0Gczg= 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 Content-Type: text/plain; charset="UTF-8" X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Juri Lelli , Peter Zijlstra , Sebastian Andrzej Siewior , Joonas Lahtinen , dri-devel , linux-mips@vger.kernel.org, Ben Segall , Max Filippov , Paul Mackerras , sparclinux@vger.kernel.org, Vincent Chen , Will Deacon , Ard Biesheuvel , linux-arch , Vincent Guittot , Herbert Xu , x86@kernel.org, Russell King , linux-csky@vger.kernel.org, David Airlie , Mel Gorman , linux-snps-arc@lists.infradead.org, linux-xtensa@linux-xtensa.org, Paul McKenney , intel-gfx , linuxppc-dev@lists.ozlabs.org, Steven Rostedt , Linus Torvalds , Jani Nikula , Rodrigo Vivi , Dietmar Eggemann , Linux ARM , Chris Zankel , Michal Simek , Thomas Bogendoerfer , Nick Hu , Linux-MM , Vineet Gupta , LKML , Arnd Bergmann , Daniel Vetter , Andrew Morton , Daniel Bristot de Oliveira , "David S. Miller" , Greentime Hu Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" 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/ 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.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,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 0D6BDC4727D for ; Wed, 23 Sep 2020 00:05:46 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 42AFE2071A for ; Wed, 23 Sep 2020 00:05:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="rDXeZ127"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="D4BsQwtr" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 42AFE2071A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-snps-arc-bounces+linux-snps-arc=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=tPrDwGjxI5iNei2eIzfnWQZN3WKtm3Zs9CMi0R/785k=; b=rDXeZ127R9PBOmsrxlfLyYxfE +O3t/clM5B1nKuwkcKIn1+nnKt7Uz+EgCAUEy9R4kZQlU4U6eQnNJGBr7YshqrcOOgrKjmfOnDTV0 E0sVteHOQ7GBc1vjVon9TaGnQ91CoyigVTIVLG3aT6KjVYz2JZMWPsjviR4Gz9wdSrDAbK85cN0aY KmZGd+q46quQ/avqUzU6mLX8L+9MJM5ixaoOClTp++26dlLeVHavG0bj417tYhyHZ8iexm9fwXd4J 3oQ7CHLgC2+LWqGDm5N/pQRM4tbiO05ETtRgFrmY3BvtMP7Cne9Nqtyp10VulGG8TbSLWD1NgCPVl Rh3kLrg1g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kKsI4-0002IS-IT; Wed, 23 Sep 2020 00:05:44 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kKsHz-0002GG-Kx; Wed, 23 Sep 2020 00:05:40 +0000 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (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 377DC23787; 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-f51.google.com with SMTP id d15so19990655lfq.11; Tue, 22 Sep 2020 17:05:37 -0700 (PDT) X-Gm-Message-State: AOAM533TUM99VXnB25CVTs4NayEq7RXNgqp3/KK8k7hGnq7dI+f7FIRN 7UQh9Egu+NUYzo2sIKZmyTyQcbUvOiV8t1TA9O4= 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200922_200539_887707_848B6461 X-CRM114-Status: GOOD ( 26.09 ) X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Juri Lelli , Peter Zijlstra , Benjamin Herrenschmidt , Sebastian Andrzej Siewior , Joonas Lahtinen , dri-devel , linux-mips@vger.kernel.org, Ben Segall , Max Filippov , Paul Mackerras , sparclinux@vger.kernel.org, Vincent Chen , Will Deacon , Ard Biesheuvel , linux-arch , Vincent Guittot , Herbert Xu , Michael Ellerman , x86@kernel.org, Russell King , linux-csky@vger.kernel.org, David Airlie , Mel Gorman , linux-snps-arc@lists.infradead.org, linux-xtensa@linux-xtensa.org, Paul McKenney , intel-gfx , linuxppc-dev@lists.ozlabs.org, Steven Rostedt , Linus Torvalds , Jani Nikula , Rodrigo Vivi , Dietmar Eggemann , Linux ARM , Chris Zankel , Michal Simek , Thomas Bogendoerfer , Nick Hu , Linux-MM , Vineet Gupta , LKML , Arnd Bergmann , Daniel Vetter , Andrew Morton , Daniel Bristot de Oliveira , "David S. Miller" , Greentime Hu Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+linux-snps-arc=archiver.kernel.org@lists.infradead.org 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/ _______________________________________________ linux-snps-arc mailing list linux-snps-arc@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-snps-arc 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.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,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 C2E5FC2D0E2 for ; Wed, 23 Sep 2020 00:07:11 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4E0D620BED for ; Wed, 23 Sep 2020 00:07:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="q7YvKRwL"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="D4BsQwtr" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4E0D620BED Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=T8uwMxLotO3HFpBt6TCbeXRqE+J4Jy2cTp2Y0fpyn4o=; b=q7YvKRwLbaKOP9jAhJLclWkys wVAcWw1FscBRR/8k6MUjfu3U7zWaW6mQ5OnA8n4/GaY19Fqd/n/+pMjt/Dd6iIgZZoTVVOUU3huXI STDoVxbV7VX854A0AIxPqTxdhlZvewCWt/VoLk+AX5AhLmBiVHfE2otQwUznJ08+ljtw7VbHVAGRB aTkq8PMbYaHY4gRw/pPjeOn0IXrZnFOB7rA+94p7biXPIem4JkG3SxDFpYlJ/HYrsjk4Xz0cfPA/j vTolnLSBJEcw/a6HxExCdJx1PIUGOeQOBIGX74jQBL00KCUZPzFx90SDzAkdbQfxny5wLBggImDfF /tUvaQWqQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kKsI2-0002I2-Vf; Wed, 23 Sep 2020 00:05:43 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kKsHz-0002GG-Kx; Wed, 23 Sep 2020 00:05:40 +0000 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (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 377DC23787; 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-f51.google.com with SMTP id d15so19990655lfq.11; Tue, 22 Sep 2020 17:05:37 -0700 (PDT) X-Gm-Message-State: AOAM533TUM99VXnB25CVTs4NayEq7RXNgqp3/KK8k7hGnq7dI+f7FIRN 7UQh9Egu+NUYzo2sIKZmyTyQcbUvOiV8t1TA9O4= 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200922_200539_887707_848B6461 X-CRM114-Status: GOOD ( 26.09 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Juri Lelli , Peter Zijlstra , Benjamin Herrenschmidt , Sebastian Andrzej Siewior , Joonas Lahtinen , dri-devel , linux-mips@vger.kernel.org, Ben Segall , Max Filippov , Paul Mackerras , sparclinux@vger.kernel.org, Vincent Chen , Will Deacon , Ard Biesheuvel , linux-arch , Vincent Guittot , Herbert Xu , Michael Ellerman , x86@kernel.org, Russell King , linux-csky@vger.kernel.org, David Airlie , Mel Gorman , linux-snps-arc@lists.infradead.org, linux-xtensa@linux-xtensa.org, Paul McKenney , intel-gfx , linuxppc-dev@lists.ozlabs.org, Steven Rostedt , Linus Torvalds , Jani Nikula , Rodrigo Vivi , Dietmar Eggemann , Linux ARM , Chris Zankel , Michal Simek , Thomas Bogendoerfer , Nick Hu , Linux-MM , Vineet Gupta , LKML , Arnd Bergmann , Daniel Vetter , Andrew Morton , Daniel Bristot de Oliveira , "David S. Miller" , Greentime Hu Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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/ _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel 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=-6.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no 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 099ABC47420 for ; Wed, 23 Sep 2020 00:05:42 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8664820BED for ; Wed, 23 Sep 2020 00:05:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="mmPGcm7L" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8664820BED Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A2C3889E5B; Wed, 23 Sep 2020 00:05:40 +0000 (UTC) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id 090B46E3B7; Wed, 23 Sep 2020 00:05:38 +0000 (UTC) Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (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 CB822239A1; 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=1600819538; bh=BN2JO8cF+jS2JfvaTCuvroT3lVzAjAOUVtydtxaO3O4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=mmPGcm7LxHfM3JkO5ukjrArXyU1stUbRtAzscnDWEGc5Aza2N+gH0OERfj402Z7+n 8PvMXWK05ebNEqKv4755UuUp0qiqi0R46iiKvnS6ot9b86RGdNOKVtk3VzgEbcs4gc 6pcfGM0E8ZH8NSSWjmZRwuT92Y5H/UBEelVk9/FM= Received: by mail-lf1-f46.google.com with SMTP id u8so20025051lff.1; Tue, 22 Sep 2020 17:05:37 -0700 (PDT) X-Gm-Message-State: AOAM5306P/jZamt5BT5gI+5vdWUGWSqL7hOFgEYTwldQVTd3e1FbS2KQ Dg/HPeaiTrWgSWIWAoPPH09H3p4JG4aDuxwO4WI= 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 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Juri Lelli , Peter Zijlstra , Sebastian Andrzej Siewior , dri-devel , linux-mips@vger.kernel.org, Ben Segall , Max Filippov , Paul Mackerras , sparclinux@vger.kernel.org, Vincent Chen , Will Deacon , Ard Biesheuvel , linux-arch , Vincent Guittot , Herbert Xu , Michael Ellerman , x86@kernel.org, Russell King , linux-csky@vger.kernel.org, David Airlie , Mel Gorman , linux-snps-arc@lists.infradead.org, linux-xtensa@linux-xtensa.org, Paul McKenney , intel-gfx , linuxppc-dev@lists.ozlabs.org, Steven Rostedt , Linus Torvalds , Rodrigo Vivi , Dietmar Eggemann , Linux ARM , Chris Zankel , Michal Simek , Thomas Bogendoerfer , Nick Hu , Linux-MM , Vineet Gupta , LKML , Arnd Bergmann , Andrew Morton , Daniel Bristot de Oliveira , "David S. Miller" , Greentime Hu Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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/ _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel 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=-6.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no 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 4A17EC2D0A8 for ; Wed, 23 Sep 2020 12:33:50 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E2452221E7 for ; Wed, 23 Sep 2020 12:33:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="mmPGcm7L" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E2452221E7 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 27BF86E9A6; Wed, 23 Sep 2020 12:33:49 +0000 (UTC) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id 090B46E3B7; Wed, 23 Sep 2020 00:05:38 +0000 (UTC) Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (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 CB822239A1; 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=1600819538; bh=BN2JO8cF+jS2JfvaTCuvroT3lVzAjAOUVtydtxaO3O4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=mmPGcm7LxHfM3JkO5ukjrArXyU1stUbRtAzscnDWEGc5Aza2N+gH0OERfj402Z7+n 8PvMXWK05ebNEqKv4755UuUp0qiqi0R46iiKvnS6ot9b86RGdNOKVtk3VzgEbcs4gc 6pcfGM0E8ZH8NSSWjmZRwuT92Y5H/UBEelVk9/FM= Received: by mail-lf1-f46.google.com with SMTP id u8so20025051lff.1; Tue, 22 Sep 2020 17:05:37 -0700 (PDT) X-Gm-Message-State: AOAM5306P/jZamt5BT5gI+5vdWUGWSqL7hOFgEYTwldQVTd3e1FbS2KQ Dg/HPeaiTrWgSWIWAoPPH09H3p4JG4aDuxwO4WI= 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: To: Thomas Gleixner X-Mailman-Approved-At: Wed, 23 Sep 2020 12:33:48 +0000 Subject: Re: [Intel-gfx] [patch RFC 06/15] csky/mm/highmem: Switch to generic kmap atomic X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Juri Lelli , Peter Zijlstra , Benjamin Herrenschmidt , Sebastian Andrzej Siewior , dri-devel , linux-mips@vger.kernel.org, Ben Segall , Max Filippov , Paul Mackerras , sparclinux@vger.kernel.org, Vincent Chen , Will Deacon , Ard Biesheuvel , linux-arch , Herbert Xu , Michael Ellerman , x86@kernel.org, Russell King , linux-csky@vger.kernel.org, David Airlie , Mel Gorman , linux-snps-arc@lists.infradead.org, linux-xtensa@linux-xtensa.org, Paul McKenney , intel-gfx , linuxppc-dev@lists.ozlabs.org, Steven Rostedt , Linus Torvalds , Dietmar Eggemann , Linux ARM , Chris Zankel , Michal Simek , Thomas Bogendoerfer , Nick Hu , Linux-MM , Vineet Gupta , LKML , Arnd Bergmann , Andrew Morton , Daniel Bristot de Oliveira , "David S. Miller" , Greentime Hu Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" 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/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx