From: Daniel Axtens <dja@axtens.net>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Andy Lutomirski <luto@kernel.org>, Baoquan He <bhe@redhat.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Borislav Petkov <bp@alien8.de>,
Catalin Marinas <catalin.marinas@arm.com>,
Christoph Hellwig <hch@lst.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
Emil Renner Berthing <kernel@esmil.dk>,
Ingo Molnar <mingo@redhat.com>,
Hari Bathini <hbathini@linux.ibm.com>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Max Filippov <jcmvbkbc@gmail.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Michal Simek <monstr@monstr.eu>,
Mike Rapoport <rppt@linux.ibm.com>,
Mike Rapoport <rppt@kernel.org>,
Palmer Dabbelt <palmer@dabbelt.com>,
Paul Mackerras <paulus@samba.org>,
Paul Walmsley <paul.walmsley@sifive.com>,
Peter Zijlstra <peterz@infradead.org>
Subject: Re: [PATCH v2 01/17] KVM: PPC: Book3S HV: simplify kvm_cma_reserve()
Date: Tue, 04 Aug 2020 23:53:15 +1000 [thread overview]
Message-ID: <87tuxio6us.fsf@dja-thinkpad.axtens.net> (raw)
In-Reply-To: <20200802163601.8189-2-rppt@kernel.org>
Hi Mike,
>
> The memory size calculation in kvm_cma_reserve() traverses memblock.memory
> rather than simply call memblock_phys_mem_size(). The comment in that
> function suggests that at some point there should have been call to
> memblock_analyze() before memblock_phys_mem_size() could be used.
> As of now, there is no memblock_analyze() at all and
> memblock_phys_mem_size() can be used as soon as cold-plug memory is
> registerd with memblock.
>
> Replace loop over memblock.memory with a call to memblock_phys_mem_size().
>
> Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
> ---
> arch/powerpc/kvm/book3s_hv_builtin.c | 11 ++---------
> 1 file changed, 2 insertions(+), 9 deletions(-)
>
> diff --git a/arch/powerpc/kvm/book3s_hv_builtin.c b/arch/powerpc/kvm/book3s_hv_builtin.c
> index 7cd3cf3d366b..56ab0d28de2a 100644
> --- a/arch/powerpc/kvm/book3s_hv_builtin.c
> +++ b/arch/powerpc/kvm/book3s_hv_builtin.c
> @@ -95,22 +95,15 @@ EXPORT_SYMBOL_GPL(kvm_free_hpt_cma);
> void __init kvm_cma_reserve(void)
> {
> unsigned long align_size;
> - struct memblock_region *reg;
> - phys_addr_t selected_size = 0;
> + phys_addr_t selected_size;
>
> /*
> * We need CMA reservation only when we are in HV mode
> */
> if (!cpu_has_feature(CPU_FTR_HVMODE))
> return;
> - /*
> - * We cannot use memblock_phys_mem_size() here, because
> - * memblock_analyze() has not been called yet.
> - */
> - for_each_memblock(memory, reg)
> - selected_size += memblock_region_memory_end_pfn(reg) -
> - memblock_region_memory_base_pfn(reg);
>
> + selected_size = PHYS_PFN(memblock_phys_mem_size());
> selected_size = (selected_size * kvm_cma_resv_ratio / 100) << PAGE_SHIFT;
I think this is correct, but PHYS_PFN does x >> PAGE_SHIFT and then the
next line does x << PAGE_SHIFT, so I think we could combine those two
lines as:
selected_size = PAGE_ALIGN(memblock_phys_mem_size() * kvm_cma_resv_ratio / 100);
(I think that might technically change it from aligning down to aligning
up but I don't think 1 page matters here.)
Kind regards,
Daniel
> if (selected_size) {
> pr_debug("%s: reserving %ld MiB for global area\n", __func__,
> --
> 2.26.2
next prev parent reply other threads:[~2020-08-04 13:53 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-02 16:35 [PATCH v2 00/17] memblock: seasonal cleaning^w cleanup Mike Rapoport
2020-08-02 16:35 ` [PATCH v2 01/17] KVM: PPC: Book3S HV: simplify kvm_cma_reserve() Mike Rapoport
2020-08-04 13:53 ` Daniel Axtens [this message]
2020-08-02 16:35 ` [PATCH v2 02/17] dma-contiguous: simplify cma_early_percent_memory() Mike Rapoport
2020-08-05 3:50 ` Baoquan He
2020-08-02 16:35 ` [PATCH v2 03/17] arm, xtensa: simplify initialization of high memory pages Mike Rapoport
2020-08-02 16:35 ` [PATCH v2 04/17] arm64: numa: simplify dummy_numa_init() Mike Rapoport
2020-08-02 16:35 ` [PATCH v2 05/17] h8300, nds32, openrisc: simplify detection of memory extents Mike Rapoport
2020-08-02 16:35 ` [PATCH v2 06/17] riscv: drop unneeded node initialization Mike Rapoport
2020-08-02 16:35 ` [PATCH v2 07/17] mircoblaze: drop unneeded NUMA and sparsemem initializations Mike Rapoport
2020-08-02 16:35 ` [PATCH v2 08/17] memblock: make for_each_memblock_type() iterator private Mike Rapoport
2020-08-02 16:35 ` [PATCH v2 09/17] memblock: make memblock_debug and related functionality private Mike Rapoport
2020-08-02 16:35 ` [PATCH v2 10/17] memblock: reduce number of parameters in for_each_mem_range() Mike Rapoport
2020-08-02 16:35 ` [PATCH v2 11/17] arch, mm: replace for_each_memblock() with for_each_mem_pfn_range() Mike Rapoport
2020-08-05 3:57 ` Baoquan He
2020-08-02 16:35 ` [PATCH v2 12/17] arch, drivers: replace for_each_membock() with for_each_mem_range() Mike Rapoport
2020-08-05 11:00 ` Thomas Bogendoerfer
2020-08-02 16:35 ` [PATCH v2 13/17] x86/setup: simplify initrd relocation and reservation Mike Rapoport
2020-08-02 18:01 ` Ingo Molnar
2020-08-05 4:20 ` Baoquan He
2020-08-05 5:59 ` Mike Rapoport
2020-08-05 5:59 ` Mike Rapoport
2020-08-02 16:35 ` [PATCH v2 14/17] x86/setup: simplify reserve_crashkernel() Mike Rapoport
2020-08-02 18:02 ` Ingo Molnar
2020-08-05 6:00 ` Baoquan He
2020-08-02 16:35 ` [PATCH v2 15/17] memblock: remove unused memblock_mem_size() Mike Rapoport
2020-08-05 8:29 ` Baoquan He
[not found] ` <20200802163601.8189-1-rppt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2020-08-02 16:36 ` [PATCH v2 16/17] memblock: implement for_each_reserved_mem_region() using __next_mem_region() Mike Rapoport
2020-08-05 9:11 ` Baoquan He
2020-08-05 17:11 ` Miguel Ojeda
2020-08-02 16:36 ` [PATCH v2 17/17] memblock: use separate iterators for memory and reserved regions Mike Rapoport
2020-08-02 18:03 ` Ingo Molnar
[not found] ` <20200802163601.8189-18-rppt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2020-08-05 9:29 ` Baoquan He
2020-08-05 10:58 ` Thomas Bogendoerfer
2020-08-05 17:10 ` Miguel Ojeda
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=87tuxio6us.fsf@dja-thinkpad.axtens.net \
--to=dja@axtens.net \
--cc=akpm@linux-foundation.org \
--cc=benh@kernel.crashing.org \
--cc=bhe@redhat.com \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=dave.hansen@linux.intel.com \
--cc=hbathini@linux.ibm.com \
--cc=hch@lst.de \
--cc=jcmvbkbc@gmail.com \
--cc=kernel@esmil.dk \
--cc=luto@kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=mingo@redhat.com \
--cc=monstr@monstr.eu \
--cc=mpe@ellerman.id.au \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=paulus@samba.org \
--cc=peterz@infradead.org \
--cc=rppt@kernel.org \
--cc=rppt@linux.ibm.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).