2021-06-08 08:28:19

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH v3 resend 00/15] init_mm: cleanup ARCH's text/data/brk setup code

Add setup_initial_init_mm() helper, then use it
to cleanup the text, data and brk setup code.

v3:
- resend all and fix x86 warning
- make helper declaration in mm.h, implemention in init-mm.c, suggested
by Mike
- collect ACKs

v2:
- change argument from "char *" to "void *" setup_initial_init_mm()
suggested by Geert Uytterhoeven
- use NULL instead of (void *)0 on h8300 and m68k

Kefeng Wang (15):
mm: add setup_initial_init_mm() helper
arc: convert to setup_initial_init_mm()
arm: convert to setup_initial_init_mm()
arm64: convert to setup_initial_init_mm()
csky: convert to setup_initial_init_mm()
h8300: convert to setup_initial_init_mm()
m68k: convert to setup_initial_init_mm()
nds32: convert to setup_initial_init_mm()
nios2: convert to setup_initial_init_mm()
openrisc: convert to setup_initial_init_mm()
powerpc: convert to setup_initial_init_mm()
riscv: convert to setup_initial_init_mm()
s390: convert to setup_initial_init_mm()
sh: convert to setup_initial_init_mm()
x86: convert to setup_initial_init_mm()

arch/arc/mm/init.c | 5 +----
arch/arm/kernel/setup.c | 5 +----
arch/arm64/kernel/setup.c | 5 +----
arch/csky/kernel/setup.c | 5 +----
arch/h8300/kernel/setup.c | 5 +----
arch/m68k/kernel/setup_mm.c | 5 +----
arch/m68k/kernel/setup_no.c | 5 +----
arch/nds32/kernel/setup.c | 5 +----
arch/nios2/kernel/setup.c | 5 +----
arch/openrisc/kernel/setup.c | 5 +----
arch/powerpc/kernel/setup-common.c | 5 +----
arch/riscv/kernel/setup.c | 5 +----
arch/s390/kernel/setup.c | 5 +----
arch/sh/kernel/setup.c | 5 +----
arch/x86/kernel/setup.c | 5 +----
include/linux/mm.h | 3 +++
mm/init-mm.c | 9 +++++++++
17 files changed, 27 insertions(+), 60 deletions(-)

--
2.26.2


2021-06-08 08:28:27

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH v3 resend 11/15] powerpc: convert to setup_initial_init_mm()

Use setup_initial_init_mm() helper to simplify code.

Note klimit is (unsigned long) _end, with new helper,
will use _end directly.

Cc: Michael Ellerman <[email protected]>
Cc: Benjamin Herrenschmidt <[email protected]>
Cc: [email protected]
Signed-off-by: Kefeng Wang <[email protected]>
---
arch/powerpc/kernel/setup-common.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
index 74a98fff2c2f..96697c6e1e16 100644
--- a/arch/powerpc/kernel/setup-common.c
+++ b/arch/powerpc/kernel/setup-common.c
@@ -927,10 +927,7 @@ void __init setup_arch(char **cmdline_p)

klp_init_thread_info(&init_task);

- init_mm.start_code = (unsigned long)_stext;
- init_mm.end_code = (unsigned long) _etext;
- init_mm.end_data = (unsigned long) _edata;
- init_mm.brk = klimit;
+ setup_initial_init_mm(_stext, _etext, _edata, _end);

mm_iommu_init(&init_mm);
irqstack_early_init();
--
2.26.2

2021-06-08 08:28:29

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH v3 resend 09/15] nios2: convert to setup_initial_init_mm()

Use setup_initial_init_mm() helper to simplify code.

Cc: Ley Foon Tan <[email protected]>
Signed-off-by: Kefeng Wang <[email protected]>
---
arch/nios2/kernel/setup.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/arch/nios2/kernel/setup.c b/arch/nios2/kernel/setup.c
index d2f21957e99c..cf8d687a2644 100644
--- a/arch/nios2/kernel/setup.c
+++ b/arch/nios2/kernel/setup.c
@@ -156,10 +156,7 @@ void __init setup_arch(char **cmdline_p)
memory_start = memblock_start_of_DRAM();
memory_end = memblock_end_of_DRAM();

- init_mm.start_code = (unsigned long) _stext;
- init_mm.end_code = (unsigned long) _etext;
- init_mm.end_data = (unsigned long) _edata;
- init_mm.brk = (unsigned long) _end;
+ setup_initial_init_mm(_stext, _etext, _edata, _end);
init_task.thread.kregs = &fake_regs;

/* Keep a copy of command line */
--
2.26.2

2021-06-08 08:28:30

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH v3 resend 14/15] sh: convert to setup_initial_init_mm()

Use setup_initial_init_mm() helper to simplify code.

Cc: Yoshinori Sato <[email protected]>
Cc: Rich Felker <[email protected]>
Cc: [email protected]
Signed-off-by: Kefeng Wang <[email protected]>
---
arch/sh/kernel/setup.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c
index 4144be650d41..1fcb6659822a 100644
--- a/arch/sh/kernel/setup.c
+++ b/arch/sh/kernel/setup.c
@@ -294,10 +294,7 @@ void __init setup_arch(char **cmdline_p)

if (!MOUNT_ROOT_RDONLY)
root_mountflags &= ~MS_RDONLY;
- init_mm.start_code = (unsigned long) _text;
- init_mm.end_code = (unsigned long) _etext;
- init_mm.end_data = (unsigned long) _edata;
- init_mm.brk = (unsigned long) _end;
+ setup_initial_init_mm(_text, _etext, _edata, _end);

code_resource.start = virt_to_phys(_text);
code_resource.end = virt_to_phys(_etext)-1;
--
2.26.2

2021-06-08 08:29:00

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH v3 resend 12/15] riscv: convert to setup_initial_init_mm()

Use setup_initial_init_mm() helper to simplify code.

Cc: Paul Walmsley <[email protected]>
Cc: Palmer Dabbelt <[email protected]>
Cc: [email protected]
Signed-off-by: Kefeng Wang <[email protected]>
---
arch/riscv/kernel/setup.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c
index 9a1b7a0603b2..8e318f207ac6 100644
--- a/arch/riscv/kernel/setup.c
+++ b/arch/riscv/kernel/setup.c
@@ -264,10 +264,7 @@ static void __init parse_dtb(void)
void __init setup_arch(char **cmdline_p)
{
parse_dtb();
- init_mm.start_code = (unsigned long) _stext;
- init_mm.end_code = (unsigned long) _etext;
- init_mm.end_data = (unsigned long) _edata;
- init_mm.brk = (unsigned long) _end;
+ setup_initial_init_mm(_stext, _etext, _edata, _end);

*cmdline_p = boot_command_line;

--
2.26.2

2021-06-08 08:29:30

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH v3 resend 06/15] h8300: convert to setup_initial_init_mm()

Use setup_initial_init_mm() helper to simplify code.

Cc: Yoshinori Sato <[email protected]>
Cc: [email protected]
Signed-off-by: Kefeng Wang <[email protected]>
---
arch/h8300/kernel/setup.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c
index 0281f92eea3d..f757056305df 100644
--- a/arch/h8300/kernel/setup.c
+++ b/arch/h8300/kernel/setup.c
@@ -97,10 +97,7 @@ void __init setup_arch(char **cmdline_p)
{
unflatten_and_copy_device_tree();

- init_mm.start_code = (unsigned long) _stext;
- init_mm.end_code = (unsigned long) _etext;
- init_mm.end_data = (unsigned long) _edata;
- init_mm.brk = (unsigned long) 0;
+ setup_initial_init_mm(_stext, _etext, _edata, NULL);

pr_notice("\r\n\nuClinux " CPU "\n");
pr_notice("Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne\n");
--
2.26.2

2021-06-08 08:29:39

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH v3 resend 01/15] mm: add setup_initial_init_mm() helper

Add setup_initial_init_mm() helper to setup kernel text,
data and brk.

Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Kefeng Wang <[email protected]>
---
include/linux/mm.h | 3 +++
mm/init-mm.c | 9 +++++++++
2 files changed, 12 insertions(+)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index c274f75efcf9..02aa057540b7 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -244,6 +244,9 @@ int __add_to_page_cache_locked(struct page *page, struct address_space *mapping,

#define lru_to_page(head) (list_entry((head)->prev, struct page, lru))

+void setup_initial_init_mm(void *start_code, void *end_code,
+ void *end_data, void *brk);
+
/*
* Linux kernel virtual memory manager primitives.
* The idea being to have a "virtual" mm in the same way
diff --git a/mm/init-mm.c b/mm/init-mm.c
index 153162669f80..b4a6f38fb51d 100644
--- a/mm/init-mm.c
+++ b/mm/init-mm.c
@@ -40,3 +40,12 @@ struct mm_struct init_mm = {
.cpu_bitmap = CPU_BITS_NONE,
INIT_MM_CONTEXT(init_mm)
};
+
+void setup_initial_init_mm(void *start_code, void *end_code,
+ void *end_data, void *brk)
+{
+ init_mm.start_code = (unsigned long)start_code;
+ init_mm.end_code = (unsigned long)end_code;
+ init_mm.end_data = (unsigned long)end_data;
+ init_mm.brk = (unsigned long)brk;
+}
--
2.26.2

2021-06-08 08:30:51

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH v3 resend 13/15] s390: convert to setup_initial_init_mm()

Use setup_initial_init_mm() helper to simplify code.

Cc: Heiko Carstens <[email protected]>
Cc: Vasily Gorbik <[email protected]>
Cc: Christian Borntraeger <[email protected]>
Cc: [email protected]
Signed-off-by: Kefeng Wang <[email protected]>
---
arch/s390/kernel/setup.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index 5aab59ad5688..e1793ed43510 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -1119,10 +1119,7 @@ void __init setup_arch(char **cmdline_p)

ROOT_DEV = Root_RAM0;

- init_mm.start_code = (unsigned long) _text;
- init_mm.end_code = (unsigned long) _etext;
- init_mm.end_data = (unsigned long) _edata;
- init_mm.brk = (unsigned long) _end;
+ setup_initial_init_mm(_text, _etext, _edata, _end);

if (IS_ENABLED(CONFIG_EXPOLINE_AUTO))
nospec_auto_detect();
--
2.26.2

2021-06-08 08:31:03

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH v3 resend 07/15] m68k: convert to setup_initial_init_mm()

Use setup_initial_init_mm() helper to simplify code.

Acked-by: Greg Ungerer <[email protected]>
Acked-by: Geert Uytterhoeven <[email protected]>
Cc: Geert Uytterhoeven <[email protected]>
Cc: Greg Ungerer <[email protected]>
Cc: [email protected]
Signed-off-by: Kefeng Wang <[email protected]>
---
arch/m68k/kernel/setup_mm.c | 5 +----
arch/m68k/kernel/setup_no.c | 5 +----
2 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/arch/m68k/kernel/setup_mm.c b/arch/m68k/kernel/setup_mm.c
index 017bac3aab80..4b51bfd38e5f 100644
--- a/arch/m68k/kernel/setup_mm.c
+++ b/arch/m68k/kernel/setup_mm.c
@@ -258,10 +258,7 @@ void __init setup_arch(char **cmdline_p)
}
}

- init_mm.start_code = PAGE_OFFSET;
- init_mm.end_code = (unsigned long)_etext;
- init_mm.end_data = (unsigned long)_edata;
- init_mm.brk = (unsigned long)_end;
+ setup_initial_init_mm((void *)PAGE_OFFSET, _etext, _edata, _end);

#if defined(CONFIG_BOOTPARAM)
strncpy(m68k_command_line, CONFIG_BOOTPARAM_STRING, CL_SIZE);
diff --git a/arch/m68k/kernel/setup_no.c b/arch/m68k/kernel/setup_no.c
index d1b7988efc91..5e4104f07a44 100644
--- a/arch/m68k/kernel/setup_no.c
+++ b/arch/m68k/kernel/setup_no.c
@@ -87,10 +87,7 @@ void __init setup_arch(char **cmdline_p)
memory_start = PAGE_ALIGN(_ramstart);
memory_end = _ramend;

- init_mm.start_code = (unsigned long) &_stext;
- init_mm.end_code = (unsigned long) &_etext;
- init_mm.end_data = (unsigned long) &_edata;
- init_mm.brk = (unsigned long) 0;
+ setup_initial_init_mm(_stext, _etext, _edata, NULL);

config_BSP(&command_line[0], sizeof(command_line));

--
2.26.2

2021-06-08 08:31:13

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH v3 resend 04/15] arm64: convert to setup_initial_init_mm()

Use setup_initial_init_mm() helper to simplify code.

Cc: Catalin Marinas <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: [email protected]
Acked-by: Catalin Marinas <[email protected]>
Signed-off-by: Kefeng Wang <[email protected]>
---
arch/arm64/kernel/setup.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index 61845c0821d9..bfc98f893a1b 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -298,10 +298,7 @@ u64 cpu_logical_map(unsigned int cpu)

void __init __no_sanitize_address setup_arch(char **cmdline_p)
{
- init_mm.start_code = (unsigned long) _stext;
- init_mm.end_code = (unsigned long) _etext;
- init_mm.end_data = (unsigned long) _edata;
- init_mm.brk = (unsigned long) _end;
+ setup_initial_init_mm(_stext, _etext, _edata, _end);

*cmdline_p = boot_command_line;

--
2.26.2

2021-06-08 08:31:14

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH v3 resend 15/15] x86: convert to setup_initial_init_mm()

Use setup_initial_init_mm() helper to simplify code.

Cc: Thomas Gleixner <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: [email protected]
Signed-off-by: Kefeng Wang <[email protected]>
---
arch/x86/kernel/setup.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 1e720626069a..7ca94d062c79 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -870,10 +870,7 @@ void __init setup_arch(char **cmdline_p)

if (!boot_params.hdr.root_flags)
root_mountflags &= ~MS_RDONLY;
- init_mm.start_code = (unsigned long) _text;
- init_mm.end_code = (unsigned long) _etext;
- init_mm.end_data = (unsigned long) _edata;
- init_mm.brk = _brk_end;
+ setup_initial_init_mm(_text, _etext, _edata, (void *)_brk_end);

code_resource.start = __pa_symbol(_text);
code_resource.end = __pa_symbol(_etext)-1;
--
2.26.2

2021-06-08 14:56:19

by Christophe Leroy

[permalink] [raw]
Subject: Re: [PATCH v3 resend 11/15] powerpc: convert to setup_initial_init_mm()



Le 08/06/2021 à 16:36, Souptick Joarder a écrit :
> On Tue, Jun 8, 2021 at 1:56 PM Kefeng Wang <[email protected]> wrote:
>>
>> Use setup_initial_init_mm() helper to simplify code.
>>
>> Note klimit is (unsigned long) _end, with new helper,
>> will use _end directly.
>
> With this change klimit left with no user in this file and can be
> moved to some appropriate header.
> But in a separate series.

I have a patch to remove klimit, see
https://patchwork.ozlabs.org/project/linuxppc-dev/patch/9fa9ba6807c17f93f35a582c199c646c4a8bfd9c.1622800638.git.christophe.leroy@csgroup.eu/

Christophe


>
>>
>> Cc: Michael Ellerman <[email protected]>
>> Cc: Benjamin Herrenschmidt <[email protected]>
>> Cc: [email protected]
>> Signed-off-by: Kefeng Wang <[email protected]>
>> ---
>> arch/powerpc/kernel/setup-common.c | 5 +----
>> 1 file changed, 1 insertion(+), 4 deletions(-)
>>
>> diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
>> index 74a98fff2c2f..96697c6e1e16 100644
>> --- a/arch/powerpc/kernel/setup-common.c
>> +++ b/arch/powerpc/kernel/setup-common.c
>> @@ -927,10 +927,7 @@ void __init setup_arch(char **cmdline_p)
>>
>> klp_init_thread_info(&init_task);
>>
>> - init_mm.start_code = (unsigned long)_stext;
>> - init_mm.end_code = (unsigned long) _etext;
>> - init_mm.end_data = (unsigned long) _edata;
>> - init_mm.brk = klimit;
>> + setup_initial_init_mm(_stext, _etext, _edata, _end);
>>
>> mm_iommu_init(&init_mm);
>> irqstack_early_init();
>> --
>> 2.26.2
>>
>>

2021-06-08 14:57:42

by Souptick Joarder

[permalink] [raw]
Subject: Re: [PATCH v3 resend 01/15] mm: add setup_initial_init_mm() helper

On Tue, Jun 8, 2021 at 1:56 PM Kefeng Wang <[email protected]> wrote:
>
> Add setup_initial_init_mm() helper to setup kernel text,
> data and brk.
>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Signed-off-by: Kefeng Wang <[email protected]>
> ---
> include/linux/mm.h | 3 +++
> mm/init-mm.c | 9 +++++++++
> 2 files changed, 12 insertions(+)
>
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index c274f75efcf9..02aa057540b7 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -244,6 +244,9 @@ int __add_to_page_cache_locked(struct page *page, struct address_space *mapping,
>
> #define lru_to_page(head) (list_entry((head)->prev, struct page, lru))
>
> +void setup_initial_init_mm(void *start_code, void *end_code,
> + void *end_data, void *brk);
> +

Gentle query -> is there any limitation to add inline functions in
setup_arch() functions ?

> /*
> * Linux kernel virtual memory manager primitives.
> * The idea being to have a "virtual" mm in the same way
> diff --git a/mm/init-mm.c b/mm/init-mm.c
> index 153162669f80..b4a6f38fb51d 100644
> --- a/mm/init-mm.c
> +++ b/mm/init-mm.c
> @@ -40,3 +40,12 @@ struct mm_struct init_mm = {
> .cpu_bitmap = CPU_BITS_NONE,
> INIT_MM_CONTEXT(init_mm)
> };
> +
> +void setup_initial_init_mm(void *start_code, void *end_code,
> + void *end_data, void *brk)
> +{
> + init_mm.start_code = (unsigned long)start_code;
> + init_mm.end_code = (unsigned long)end_code;
> + init_mm.end_data = (unsigned long)end_data;
> + init_mm.brk = (unsigned long)brk;
> +}
> --
> 2.26.2
>
>

2021-06-09 02:22:59

by Souptick Joarder

[permalink] [raw]
Subject: Re: [PATCH v3 resend 11/15] powerpc: convert to setup_initial_init_mm()

On Tue, Jun 8, 2021 at 8:24 PM Christophe Leroy
<[email protected]> wrote:
>
>
>
> Le 08/06/2021 à 16:36, Souptick Joarder a écrit :
> > On Tue, Jun 8, 2021 at 1:56 PM Kefeng Wang <[email protected]> wrote:
> >>
> >> Use setup_initial_init_mm() helper to simplify code.
> >>
> >> Note klimit is (unsigned long) _end, with new helper,
> >> will use _end directly.
> >
> > With this change klimit left with no user in this file and can be
> > moved to some appropriate header.
> > But in a separate series.
>
> I have a patch to remove klimit, see
> https://patchwork.ozlabs.org/project/linuxppc-dev/patch/9fa9ba6807c17f93f35a582c199c646c4a8bfd9c.1622800638.git.christophe.leroy@csgroup.eu/

Got it. Thanks :)

>
> Christophe
>
>
> >
> >>
> >> Cc: Michael Ellerman <[email protected]>
> >> Cc: Benjamin Herrenschmidt <[email protected]>
> >> Cc: [email protected]
> >> Signed-off-by: Kefeng Wang <[email protected]>
> >> ---
> >> arch/powerpc/kernel/setup-common.c | 5 +----
> >> 1 file changed, 1 insertion(+), 4 deletions(-)
> >>
> >> diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
> >> index 74a98fff2c2f..96697c6e1e16 100644
> >> --- a/arch/powerpc/kernel/setup-common.c
> >> +++ b/arch/powerpc/kernel/setup-common.c
> >> @@ -927,10 +927,7 @@ void __init setup_arch(char **cmdline_p)
> >>
> >> klp_init_thread_info(&init_task);
> >>
> >> - init_mm.start_code = (unsigned long)_stext;
> >> - init_mm.end_code = (unsigned long) _etext;
> >> - init_mm.end_data = (unsigned long) _edata;
> >> - init_mm.brk = klimit;
> >> + setup_initial_init_mm(_stext, _etext, _edata, _end);
> >>
> >> mm_iommu_init(&init_mm);
> >> irqstack_early_init();
> >> --
> >> 2.26.2
> >>
> >>

2021-06-09 03:08:46

by Souptick Joarder

[permalink] [raw]
Subject: Re: [PATCH v3 resend 11/15] powerpc: convert to setup_initial_init_mm()

On Tue, Jun 8, 2021 at 1:56 PM Kefeng Wang <[email protected]> wrote:
>
> Use setup_initial_init_mm() helper to simplify code.
>
> Note klimit is (unsigned long) _end, with new helper,
> will use _end directly.

With this change klimit left with no user in this file and can be
moved to some appropriate header.
But in a separate series.

>
> Cc: Michael Ellerman <[email protected]>
> Cc: Benjamin Herrenschmidt <[email protected]>
> Cc: [email protected]
> Signed-off-by: Kefeng Wang <[email protected]>
> ---
> arch/powerpc/kernel/setup-common.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
> index 74a98fff2c2f..96697c6e1e16 100644
> --- a/arch/powerpc/kernel/setup-common.c
> +++ b/arch/powerpc/kernel/setup-common.c
> @@ -927,10 +927,7 @@ void __init setup_arch(char **cmdline_p)
>
> klp_init_thread_info(&init_task);
>
> - init_mm.start_code = (unsigned long)_stext;
> - init_mm.end_code = (unsigned long) _etext;
> - init_mm.end_data = (unsigned long) _edata;
> - init_mm.brk = klimit;
> + setup_initial_init_mm(_stext, _etext, _edata, _end);
>
> mm_iommu_init(&init_mm);
> irqstack_early_init();
> --
> 2.26.2
>
>

2021-06-09 03:58:00

by Christophe Leroy

[permalink] [raw]
Subject: Re: [PATCH v3 resend 01/15] mm: add setup_initial_init_mm() helper



Le 08/06/2021 à 16:53, Souptick Joarder a écrit :
> On Tue, Jun 8, 2021 at 1:56 PM Kefeng Wang <[email protected]> wrote:
>>
>> Add setup_initial_init_mm() helper to setup kernel text,
>> data and brk.
>>
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected]
>> Signed-off-by: Kefeng Wang <[email protected]>
>> ---
>> include/linux/mm.h | 3 +++
>> mm/init-mm.c | 9 +++++++++
>> 2 files changed, 12 insertions(+)
>>
>> diff --git a/include/linux/mm.h b/include/linux/mm.h
>> index c274f75efcf9..02aa057540b7 100644
>> --- a/include/linux/mm.h
>> +++ b/include/linux/mm.h
>> @@ -244,6 +244,9 @@ int __add_to_page_cache_locked(struct page *page, struct address_space *mapping,
>>
>> #define lru_to_page(head) (list_entry((head)->prev, struct page, lru))
>>
>> +void setup_initial_init_mm(void *start_code, void *end_code,
>> + void *end_data, void *brk);
>> +
>
> Gentle query -> is there any limitation to add inline functions in
> setup_arch() functions ?

Kefeng just followed comment from Mike I guess, see
https://patchwork.ozlabs.org/project/linuxppc-dev/patch/[email protected]/#2696253

Christophe

2021-06-09 04:00:04

by Souptick Joarder

[permalink] [raw]
Subject: Re: [PATCH v3 resend 01/15] mm: add setup_initial_init_mm() helper

On Tue, Jun 8, 2021 at 8:27 PM Christophe Leroy
<[email protected]> wrote:
>
>
>
> Le 08/06/2021 à 16:53, Souptick Joarder a écrit :
> > On Tue, Jun 8, 2021 at 1:56 PM Kefeng Wang <[email protected]> wrote:
> >>
> >> Add setup_initial_init_mm() helper to setup kernel text,
> >> data and brk.
> >>
> >> Cc: [email protected]
> >> Cc: [email protected]
> >> Cc: [email protected]
> >> Cc: [email protected]
> >> Cc: [email protected]
> >> Cc: [email protected]
> >> Cc: [email protected]
> >> Cc: [email protected]
> >> Cc: [email protected]
> >> Cc: [email protected]
> >> Cc: [email protected]
> >> Signed-off-by: Kefeng Wang <[email protected]>
> >> ---
> >> include/linux/mm.h | 3 +++
> >> mm/init-mm.c | 9 +++++++++
> >> 2 files changed, 12 insertions(+)
> >>
> >> diff --git a/include/linux/mm.h b/include/linux/mm.h
> >> index c274f75efcf9..02aa057540b7 100644
> >> --- a/include/linux/mm.h
> >> +++ b/include/linux/mm.h
> >> @@ -244,6 +244,9 @@ int __add_to_page_cache_locked(struct page *page, struct address_space *mapping,
> >>
> >> #define lru_to_page(head) (list_entry((head)->prev, struct page, lru))
> >>
> >> +void setup_initial_init_mm(void *start_code, void *end_code,
> >> + void *end_data, void *brk);
> >> +
> >
> > Gentle query -> is there any limitation to add inline functions in
> > setup_arch() functions ?
>
> Kefeng just followed comment from Mike I guess, see
> https://patchwork.ozlabs.org/project/linuxppc-dev/patch/[email protected]/#2696253

Ok.
>
> Christophe
>