From: Jia He <hejianet@gmail.com> To: Russell King <linux@armlinux.org.uk>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will.deacon@arm.com>, Mark Rutland <mark.rutland@arm.com>, Ard Biesheuvel <ard.biesheuvel@linaro.org>, Andrew Morton <akpm@linux-foundation.org>, Michal Hocko <mhocko@suse.com> Cc: Wei Yang <richard.weiyang@gmail.com>, Kees Cook <keescook@chromium.org>, Laura Abbott <labbott@redhat.com>, Vladimir Murzin <vladimir.murzin@arm.com>, Philip Derrin <philip@cog.systems>, AKASHI Takahiro <takahiro.akashi@linaro.org>, James Morse <james.morse@arm.com>, Steve Capper <steve.capper@arm.com>, Pavel Tatashin <pasha.tatashin@oracle.com>, Gioh Kim <gi-oh.kim@profitbricks.com>, Vlastimil Babka <vbabka@suse.cz>, Mel Gorman <mgorman@suse.de>, Johannes Weiner <hannes@cmpxchg.org>, Kemi Wang <kemi.wang@intel.com>, Petr Tesarik <ptesarik@suse.com>, YASUAKI ISHIMATSU <yasu.isimatu@gmail.com>, Andrey Ryabinin <aryabinin@virtuozzo.com>, Nikolay Borisov <nborisov@suse.com>, Daniel Jordan <daniel.m.jordan@oracle.com>, Daniel Vacek <neelx@redhat.com>, Eugeniu Rosca <erosca@de.adit-jv.com>, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Jia He <hejianet@gmail.com>, Jia He <jia.he@hxt-semitech.com> Subject: [PATCH v7 4/5] arm: arm64: introduce pfn_valid_region() Date: Thu, 5 Apr 2018 01:04:37 -0700 [thread overview] Message-ID: <1522915478-5044-5-git-send-email-hejianet@gmail.com> (raw) In-Reply-To: <1522915478-5044-1-git-send-email-hejianet@gmail.com> Commit b92df1de5d28 ("mm: page_alloc: skip over regions of invalid pfns where possible") optimized the loop in memmap_init_zone(). But there is still some room for improvement. E.g. in early_pfn_valid(), we can record the last returned memblock region. If current pfn and last pfn are in the same memory region, we needn't do the unnecessary binary searches because memblock_is_nomap is the same result for whole memory region. Signed-off-by: Jia He <jia.he@hxt-semitech.com> --- include/linux/arm96_common.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/include/linux/arm96_common.h b/include/linux/arm96_common.h index 2f4dea4..bb86bd3 100644 --- a/include/linux/arm96_common.h +++ b/include/linux/arm96_common.h @@ -48,5 +48,29 @@ ulong __init_memblock memblock_next_valid_pfn(ulong pfn) return PHYS_PFN(regions[early_region_idx].base); } EXPORT_SYMBOL(memblock_next_valid_pfn); + +int pfn_valid_region(ulong pfn) +{ + ulong start_pfn, end_pfn; + struct memblock_type *type = &memblock.memory; + struct memblock_region *regions = type->regions; + + if (early_region_idx != -1) { + start_pfn = PFN_DOWN(regions[early_region_idx].base); + end_pfn = PFN_DOWN(regions[early_region_idx].base + + regions[early_region_idx].size); + + if (pfn >= start_pfn && pfn < end_pfn) + return !memblock_is_nomap( + ®ions[early_region_idx]); + } + + early_region_idx = memblock_search_pfn_regions(pfn); + if (early_region_idx == -1) + return false; + + return !memblock_is_nomap(®ions[early_region_idx]); +} +EXPORT_SYMBOL(pfn_valid_region); #endif /*CONFIG_HAVE_ARCH_PFN_VALID*/ #endif /*__ARM96_COMMON_H*/ -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: hejianet@gmail.com (Jia He) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v7 4/5] arm: arm64: introduce pfn_valid_region() Date: Thu, 5 Apr 2018 01:04:37 -0700 [thread overview] Message-ID: <1522915478-5044-5-git-send-email-hejianet@gmail.com> (raw) In-Reply-To: <1522915478-5044-1-git-send-email-hejianet@gmail.com> Commit b92df1de5d28 ("mm: page_alloc: skip over regions of invalid pfns where possible") optimized the loop in memmap_init_zone(). But there is still some room for improvement. E.g. in early_pfn_valid(), we can record the last returned memblock region. If current pfn and last pfn are in the same memory region, we needn't do the unnecessary binary searches because memblock_is_nomap is the same result for whole memory region. Signed-off-by: Jia He <jia.he@hxt-semitech.com> --- include/linux/arm96_common.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/include/linux/arm96_common.h b/include/linux/arm96_common.h index 2f4dea4..bb86bd3 100644 --- a/include/linux/arm96_common.h +++ b/include/linux/arm96_common.h @@ -48,5 +48,29 @@ ulong __init_memblock memblock_next_valid_pfn(ulong pfn) return PHYS_PFN(regions[early_region_idx].base); } EXPORT_SYMBOL(memblock_next_valid_pfn); + +int pfn_valid_region(ulong pfn) +{ + ulong start_pfn, end_pfn; + struct memblock_type *type = &memblock.memory; + struct memblock_region *regions = type->regions; + + if (early_region_idx != -1) { + start_pfn = PFN_DOWN(regions[early_region_idx].base); + end_pfn = PFN_DOWN(regions[early_region_idx].base + + regions[early_region_idx].size); + + if (pfn >= start_pfn && pfn < end_pfn) + return !memblock_is_nomap( + ®ions[early_region_idx]); + } + + early_region_idx = memblock_search_pfn_regions(pfn); + if (early_region_idx == -1) + return false; + + return !memblock_is_nomap(®ions[early_region_idx]); +} +EXPORT_SYMBOL(pfn_valid_region); #endif /*CONFIG_HAVE_ARCH_PFN_VALID*/ #endif /*__ARM96_COMMON_H*/ -- 2.7.4
next prev parent reply other threads:[~2018-04-05 8:05 UTC|newest] Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-04-05 8:04 [PATCH v7 0/5] optimize memblock_next_valid_pfn and early_pfn_valid on arm and arm64 Jia He 2018-04-05 8:04 ` Jia He 2018-04-05 8:04 ` [PATCH v7 1/5] mm: page_alloc: remain memblock_next_valid_pfn() " Jia He 2018-04-05 8:04 ` Jia He 2018-04-05 11:23 ` Matthew Wilcox 2018-04-05 11:23 ` Matthew Wilcox 2018-04-05 12:29 ` Jia He 2018-04-05 12:29 ` Jia He 2018-04-05 8:04 ` [PATCH v7 2/5] arm: arm64: page_alloc: reduce unnecessary binary search in memblock_next_valid_pfn() Jia He 2018-04-05 8:04 ` Jia He 2018-04-05 11:34 ` Matthew Wilcox 2018-04-05 11:34 ` Matthew Wilcox 2018-04-05 12:44 ` Jia He 2018-04-05 12:44 ` Jia He 2018-04-05 12:50 ` Matthew Wilcox 2018-04-05 12:50 ` Matthew Wilcox 2018-04-06 9:09 ` Russell King - ARM Linux 2018-04-06 9:09 ` Russell King - ARM Linux 2018-04-06 10:23 ` Daniel Vacek 2018-04-06 10:23 ` Daniel Vacek 2018-04-08 2:05 ` Jia He 2018-04-08 2:05 ` Jia He 2018-04-05 8:04 ` [PATCH v7 3/5] mm/memblock: introduce memblock_search_pfn_regions() Jia He 2018-04-05 8:04 ` Jia He 2018-04-05 8:04 ` Jia He [this message] 2018-04-05 8:04 ` [PATCH v7 4/5] arm: arm64: introduce pfn_valid_region() Jia He 2018-04-05 8:04 ` [PATCH v7 5/5] mm: page_alloc: reduce unnecessary binary search in early_pfn_valid() Jia He 2018-04-05 8:04 ` Jia He
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1522915478-5044-5-git-send-email-hejianet@gmail.com \ --to=hejianet@gmail.com \ --cc=akpm@linux-foundation.org \ --cc=ard.biesheuvel@linaro.org \ --cc=aryabinin@virtuozzo.com \ --cc=catalin.marinas@arm.com \ --cc=daniel.m.jordan@oracle.com \ --cc=erosca@de.adit-jv.com \ --cc=gi-oh.kim@profitbricks.com \ --cc=hannes@cmpxchg.org \ --cc=james.morse@arm.com \ --cc=jia.he@hxt-semitech.com \ --cc=keescook@chromium.org \ --cc=kemi.wang@intel.com \ --cc=labbott@redhat.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=linux@armlinux.org.uk \ --cc=mark.rutland@arm.com \ --cc=mgorman@suse.de \ --cc=mhocko@suse.com \ --cc=nborisov@suse.com \ --cc=neelx@redhat.com \ --cc=pasha.tatashin@oracle.com \ --cc=philip@cog.systems \ --cc=ptesarik@suse.com \ --cc=richard.weiyang@gmail.com \ --cc=steve.capper@arm.com \ --cc=takahiro.akashi@linaro.org \ --cc=vbabka@suse.cz \ --cc=vladimir.murzin@arm.com \ --cc=will.deacon@arm.com \ --cc=yasu.isimatu@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.