All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Rapoport <rppt@kernel.org>
To: Tiezhu Yang <yangtiezhu@loongson.cn>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	Xuefeng Li <lixuefeng@loongson.cn>,
	linux-mips@vger.kernel.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 0/4] MIPS: Modify mem= and memmap= parameter
Date: Wed, 2 Mar 2022 10:03:24 +0200	[thread overview]
Message-ID: <Yh8kzK7TM7EhaKEQ@kernel.org> (raw)
In-Reply-To: <8956c625-c18d-846e-3e65-7920776b27f3@loongson.cn>

On Wed, Mar 02, 2022 at 09:50:49AM +0800, Tiezhu Yang wrote:
> 
> 
> On 03/01/2022 10:31 PM, Mike Rapoport wrote:
> > On Tue, Mar 01, 2022 at 07:51:23PM +0800, Tiezhu Yang wrote:
> > > 
> > > 
> > > On 03/01/2022 05:55 PM, Mike Rapoport wrote:
> > > > Hi,
> > > > 
> > > > On Tue, Mar 01, 2022 at 12:28:57PM +0800, Tiezhu Yang wrote:
> > > > > In the current code, the kernel command-line parameter mem= and memmap=
> > > > > can not work well on MIPS, this patchset refactors the related code to
> > > > > fix them.
> > > > > 
> > > > > For kdump on MIPS, if the users want to limit the memory region for the
> > > > > capture kernel to avoid corrupting the memory image of the panic kernel,
> > > > > use the parameter memmap=limit@base is the proper way, I will submit a
> > > > > patch to use memmap=limit@base for kexec-tools after this patchset is
> > > > > applied.
> > > > 
> > > > Sorry, apparently I misread the prevoius version.
> > > > What's wrong with the current implementation of mem=limit@base for the
> > > > kdump case?
> > > 
> > > In the current code, without this patchset, kernel boot hangs when add
> > > mem=3G, mem=3G@64M or memmap=3G@64M to the command-line, it means that
> > > the parameter mem= and memmap= have bug on mips.
> > 
> > I can see how mem=3G may be wrong when the memory does not start at 0, but
> > it seems to do the right thing of mem=3G@64M.
> > 
> > Do you see system hangs with mem=3G@64M?
> 
> Yes.
> 
> > 
> > Do you have the logs before the hang?
> 
> Here are the logs:
> 
> [    0.000000] Linux version 5.17.0-rc3+ (loongson@linux) (gcc (GCC) 7.3.1
> 20180303 (Red Hat 7.3.1-6), GNU ld version 2.28-13.fc21.loongson.6) #1 SMP
> PREEMPT Wed Mar 2 09:07:39 CST 2022
> [    0.000000] CpuClock = 1800000000
> [    0.000000] The bridge chip is LS7A
> [    0.000000] CP0_Config3: CP0 16.3 (0xdc8030a0)
> [    0.000000] CP0_PageGrain: CP0 5.1 (0x28000000)
> [    0.000000] NUMA: Discovered 4 cpus on 1 nodes
> [    0.000000] Node0: mem_type:1, mem_start:0x200000, mem_size:0xee MB
> [    0.000000]        start_pfn:0x80, end_pfn:0x3c00, num_physpages:0x3b80
> [    0.000000] Node0: mem_type:2, mem_start:0x90200000, mem_size:0x6fe MB
> [    0.000000]        start_pfn:0x24080, end_pfn:0x40000,
> num_physpages:0x1fb00
> [    0.000000] Node0: mem_type:2, mem_start:0x120000000, mem_size:0x1600 MB
> [    0.000000]        start_pfn:0x48000, end_pfn:0xa0000,
> num_physpages:0x77b00
> [    0.000000] Node0's addrspace_offset is 0x0
> [    0.000000] Node0: start_pfn=0x80, end_pfn=0xa0000
> [    0.000000] NUMA: set cpumask cpu 0 on node 0
> [    0.000000] NUMA: set cpumask cpu 1 on node 0
> [    0.000000] NUMA: set cpumask cpu 2 on node 0
> [    0.000000] NUMA: set cpumask cpu 3 on node 0
> [    0.000000] printk: bootconsole [early0] enabled
> [    0.000000] CPU0 revision is: 0014c001 (ICT Loongson-3)
> [    0.000000] FPU revision is: 00f70501
> [    0.000000] MSA revision is: 00060140
> [    0.000000] OF: fdt: No chosen node found, continuing without
> [    0.000000] MIPS: machine is loongson,loongson64g-4core-ls7a
> [    0.000000] User-defined physical RAM map overwrite
> [    0.000000] Kernel sections are not in the memory maps
> [    0.000000] Initrd not found or empty - disabling initrd
 
Can you please also send the log with "memblock=debug" added to the kernel
command line?
 
> > As for memmap= option, it does not specify the memory map but rather alters
> > the memory map passed by the firmware. Particularity in MIPS implementation
> > it allows to add a single range of available or reserved memory.
> > 
> > AFAIU, for the kdump use-case mem=X@Y should suffice.
> 
> We can modify some code to make mem=X@Y work well,
> but according to Documentation/admin-guide/kernel-parameters.txt,
> the common way is mem=X and memmap=X@Y, so mem=X@Y for mips seems
> odd, the intention of this patchset is to make mem= and memmap=
> work well and consistent with the other archs.

These options are anyway not consistent on different architectures.
arm, mips and x86 implement mem= one way and arm64, powerpc and riscv in
another so there is no common way to use mem=.

Your changes will break the existing systems that use mem= and memmap=
options because they change the semantics of their MIPS implementation.

For kexec/kdump use-cases modern architectures usually do not pass mem= but
rather prepare the memory map for the kexeced kernel to use. I believe this
would be the right solution.

> Thanks,
> Tiezhu
> 
> > 
> > > Thanks,
> > > Tiezhu
> > > 
> > > > 
> > > > > v4: Fix some build warnings reported by kernel test robot
> > > > > 
> > > > > v3: Modify patch #3 to maintain compatibility for memmap=limit{$,#,!}base,
> > > > >     commented by Mike Rapoport, thank you
> > > > > 
> > > > > v2: Add some new patches to support memmap=limit@base
> > > > > 
> > > > > Tiezhu Yang (4):
> > > > >   MIPS: Refactor early_parse_mem() to fix mem= parameter
> > > > >   memblock: Introduce memblock_mem_range_remove_map()
> > > > >   MIPS: Refactor early_parse_memmap() to fix memmap= parameter
> > > > >   MIPS: Remove not used variable usermem
> > > > > 
> > > > >  arch/mips/kernel/setup.c | 69 ++++++++++++++++++++++--------------------------
> > > > >  include/linux/memblock.h |  1 +
> > > > >  mm/memblock.c            |  9 +++++--
> > > > >  3 files changed, 40 insertions(+), 39 deletions(-)
> > > > > 
> > > > > --
> > > > > 2.1.0
> > > > > 
> > > > 
> > > 
> > 
> 

-- 
Sincerely yours,
Mike.

  reply	other threads:[~2022-03-02  8:03 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-01  4:28 [PATCH v4 0/4] MIPS: Modify mem= and memmap= parameter Tiezhu Yang
2022-03-01  4:28 ` [PATCH v4 1/4] MIPS: Refactor early_parse_mem() to fix mem= parameter Tiezhu Yang
2022-03-04 15:10   ` Thomas Bogendoerfer
2022-03-04 15:35     ` Thomas Bogendoerfer
2022-03-04 17:11       ` Maciej W. Rozycki
2022-03-05 13:13         ` Mike Rapoport
2022-03-07 16:29         ` Thomas Bogendoerfer
2022-03-07 22:07           ` Mike Rapoport
2022-03-07 23:09             ` Maciej W. Rozycki
2022-03-01  4:28 ` [PATCH v4 2/4] memblock: Introduce memblock_mem_range_remove_map() Tiezhu Yang
2022-03-01  4:29 ` [PATCH v4 3/4] MIPS: Refactor early_parse_memmap() to fix memmap= parameter Tiezhu Yang
2022-03-01  4:29 ` [PATCH v4 4/4] MIPS: Remove not used variable usermem Tiezhu Yang
2022-03-01  9:55 ` [PATCH v4 0/4] MIPS: Modify mem= and memmap= parameter Mike Rapoport
2022-03-01 11:51   ` Tiezhu Yang
2022-03-01 14:31     ` Mike Rapoport
2022-03-02  1:50       ` Tiezhu Yang
2022-03-02  8:03         ` Mike Rapoport [this message]
2022-03-02  9:28           ` Tiezhu Yang
2022-03-02 12:50             ` Mike Rapoport
2022-03-04 17:05         ` Maciej W. Rozycki
2022-03-05  6:19           ` Tiezhu Yang
2022-03-05 13:26             ` Mike Rapoport
2022-03-05 19:21               ` Maciej W. Rozycki
2022-03-05 20:09                 ` Mike Rapoport
2022-03-06  1:22                   ` Maciej W. Rozycki
2022-03-05 20:53                 ` Maciej W. Rozycki

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=Yh8kzK7TM7EhaKEQ@kernel.org \
    --to=rppt@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lixuefeng@loongson.cn \
    --cc=tsbogend@alpha.franken.de \
    --cc=yangtiezhu@loongson.cn \
    /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 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.