linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* linux-next: manual merge of the risc-v tree with the risc-v-fixes tree
@ 2020-10-07 23:13 Stephen Rothwell
  0 siblings, 0 replies; 7+ messages in thread
From: Stephen Rothwell @ 2020-10-07 23:13 UTC (permalink / raw)
  To: Palmer Dabbelt, Paul Walmsley, Paul Walmsley
  Cc: Ard Biesheuvel, Atish Patra, Guo Ren, Linux Kernel Mailing List,
	Linux Next Mailing List, Palmer Dabbelt

[-- Attachment #1: Type: text/plain, Size: 1186 bytes --]

Hi all,

Today's linux-next merge of the risc-v tree got a conflict in:

  arch/riscv/kernel/vmlinux.lds.S

between commit:

  84814460eef9 ("riscv: Fixup bootup failure with HARDENED_USERCOPY")

from the risc-v-fixes tree and commit:

  cb7d2dd5612a ("RISC-V: Add PE/COFF header for EFI stub")

from the risc-v tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc arch/riscv/kernel/vmlinux.lds.S
index 34d00d9e6eac,9795359cb9da..000000000000
--- a/arch/riscv/kernel/vmlinux.lds.S
+++ b/arch/riscv/kernel/vmlinux.lds.S
@@@ -66,8 -71,11 +70,13 @@@ SECTION
  		_etext = .;
  	}
  
+ #ifdef CONFIG_EFI
+ 	. = ALIGN(PECOFF_SECTION_ALIGNMENT);
+ 	__pecoff_text_end = .;
+ #endif
+ 
 +	INIT_DATA_SECTION(16)
 +
  	/* Start of data section */
  	_sdata = .;
  	RO_DATA(SECTION_ALIGN)

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: linux-next: manual merge of the risc-v tree with the risc-v-fixes tree
  2023-04-20 13:23 ` Alexandre Ghiti
  2023-04-21 11:40   ` Mark Brown
@ 2023-04-21 11:59   ` Mark Brown
  1 sibling, 0 replies; 7+ messages in thread
From: Mark Brown @ 2023-04-21 11:59 UTC (permalink / raw)
  To: Alexandre Ghiti
  Cc: Palmer Dabbelt, Paul Walmsley, Linux Kernel Mailing List,
	Linux Next Mailing List, Palmer Dabbelt

[-- Attachment #1: Type: text/plain, Size: 301 bytes --]

On Thu, Apr 20, 2023 at 03:23:55PM +0200, Alexandre Ghiti wrote:

> This does not look correct, fixmap setup should not be in
> create_linear_mapping_range() function.
> Please find below the diff I would apply:

There's actually another conflict in the riscv tree come up today so
I'll roll this in.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: linux-next: manual merge of the risc-v tree with the risc-v-fixes tree
  2023-04-20 13:23 ` Alexandre Ghiti
@ 2023-04-21 11:40   ` Mark Brown
  2023-04-21 11:59   ` Mark Brown
  1 sibling, 0 replies; 7+ messages in thread
From: Mark Brown @ 2023-04-21 11:40 UTC (permalink / raw)
  To: Alexandre Ghiti
  Cc: Palmer Dabbelt, Paul Walmsley, Linux Kernel Mailing List,
	Linux Next Mailing List, Palmer Dabbelt

[-- Attachment #1: Type: text/plain, Size: 447 bytes --]

On Thu, Apr 20, 2023 at 03:23:55PM +0200, Alexandre Ghiti wrote:

> This does not look correct, fixmap setup should not be in
> create_linear_mapping_range() function.
> Please find below the diff I would apply:

OK, if it's opportune (basically doesn't require redoing huge amounts of
work) I'll replace the merge with your suggestion but I'm not sure if
that'll happen or not.  Probably best to highlight when sending the pull
request to Linus.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: linux-next: manual merge of the risc-v tree with the risc-v-fixes tree
  2023-04-20 12:40 broonie
@ 2023-04-20 13:23 ` Alexandre Ghiti
  2023-04-21 11:40   ` Mark Brown
  2023-04-21 11:59   ` Mark Brown
  0 siblings, 2 replies; 7+ messages in thread
From: Alexandre Ghiti @ 2023-04-20 13:23 UTC (permalink / raw)
  To: broonie
  Cc: Palmer Dabbelt, Paul Walmsley, Linux Kernel Mailing List,
	Linux Next Mailing List, Palmer Dabbelt

Hi,

On Thu, Apr 20, 2023 at 2:40 PM <broonie@kernel.org> wrote:
>
> Hi all,
>
> Today's linux-next merge of the risc-v tree got a conflict in:
>
>   arch/riscv/mm/init.c
>
> between commit:
>
>   ef69d2559fe91 ("riscv: Move early dtb mapping into the fixmap region")
>
> from the risc-v-fixes tree and commits:
>
>   8589e346bbb67 ("riscv: Move the linear mapping creation in its own function")
>   3335068f87217 ("riscv: Use PUD/P4D/PGD pages for the linear mapping")
>
> from the risc-v tree.
>
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging.  You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.
>
> diff --cc arch/riscv/mm/init.c
> index 0f14f4a8d179a,7bd66795165da..0000000000000
> --- a/arch/riscv/mm/init.c
> +++ b/arch/riscv/mm/init.c
> @@@ -1070,26 -1112,36 +1092,47 @@@ asmlinkage void __init setup_vm(uintptr
>         pt_ops_set_fixmap();
>   }
>
> - static void __init setup_vm_final(void)
> + static void __init create_linear_mapping_range(phys_addr_t start,
> +                                              phys_addr_t end)
>   {
> +       phys_addr_t pa;
>         uintptr_t va, map_size;
> -       phys_addr_t pa, start, end;
> -       u64 i;
>
> -       /* Setup swapper PGD for fixmap */
>  +#if !defined(CONFIG_64BIT)
>  +      /*
>  +       * In 32-bit, the device tree lies in a pgd entry, so it must be copied
>  +       * directly in swapper_pg_dir in addition to the pgd entry that points
>  +       * to fixmap_pte.
>  +       */
>  +      unsigned long idx = pgd_index(__fix_to_virt(FIX_FDT));
>  +
>  +      set_pgd(&swapper_pg_dir[idx], early_pg_dir[idx]);
>  +#endif

This does not look correct, fixmap setup should not be in
create_linear_mapping_range() function.
Please find below the diff I would apply:

diff --cc arch/riscv/mm/init.c
index 0f14f4a8d179,7bd66795165d..a19146ab9341
--- a/arch/riscv/mm/init.c
+++ b/arch/riscv/mm/init.c
@@@ -1070,23 -1112,63 +1092,74 @@@ asmlinkage void __init setup_vm(uintptr
        pt_ops_set_fixmap();
  }

- static void __init setup_vm_final(void)
+ static void __init create_linear_mapping_range(phys_addr_t start,
+                                              phys_addr_t end)
  {
+       phys_addr_t pa;
        uintptr_t va, map_size;
-       phys_addr_t pa, start, end;
+
+       for (pa = start; pa < end; pa += map_size) {
+               va = (uintptr_t)__va(pa);
+               map_size = best_map_size(pa, end - pa);
+
+               create_pgd_mapping(swapper_pg_dir, va, pa, map_size,
+                                  pgprot_from_va(va));
+       }
+ }
+
+ static void __init create_linear_mapping_page_table(void)
+ {
+       phys_addr_t start, end;
        u64 i;

+ #ifdef CONFIG_STRICT_KERNEL_RWX
+       phys_addr_t ktext_start = __pa_symbol(_start);
+       phys_addr_t ktext_size = __init_data_begin - _start;
+       phys_addr_t krodata_start = __pa_symbol(__start_rodata);
+       phys_addr_t krodata_size = _data - __start_rodata;
+
+       /* Isolate kernel text and rodata so they don't get mapped with a PUD */
+       memblock_mark_nomap(ktext_start,  ktext_size);
+       memblock_mark_nomap(krodata_start, krodata_size);
+ #endif
+
+       /* Map all memory banks in the linear mapping */
+       for_each_mem_range(i, &start, &end) {
+               if (start >= end)
+                       break;
+               if (start <= __pa(PAGE_OFFSET) &&
+                   __pa(PAGE_OFFSET) < end)
+                       start = __pa(PAGE_OFFSET);
+               if (end >= __pa(PAGE_OFFSET) + memory_limit)
+                       end = __pa(PAGE_OFFSET) + memory_limit;
+
+               create_linear_mapping_range(start, end);
+       }
+
+ #ifdef CONFIG_STRICT_KERNEL_RWX
+       create_linear_mapping_range(ktext_start, ktext_start + ktext_size);
+       create_linear_mapping_range(krodata_start,
+                                   krodata_start + krodata_size);
+
+       memblock_clear_nomap(ktext_start,  ktext_size);
+       memblock_clear_nomap(krodata_start, krodata_size);
+ #endif
+ }
+
+ static void __init setup_vm_final(void)
+ {
        /* Setup swapper PGD for fixmap */
 +#if !defined(CONFIG_64BIT)
 +      /*
 +       * In 32-bit, the device tree lies in a pgd entry, so it must be copied
 +       * directly in swapper_pg_dir in addition to the pgd entry that points
 +       * to fixmap_pte.
 +       */
 +      unsigned long idx = pgd_index(__fix_to_virt(FIX_FDT));
 +
 +      set_pgd(&swapper_pg_dir[idx], early_pg_dir[idx]);
 +#endif
++
        create_pgd_mapping(swapper_pg_dir, FIXADDR_START,
                           __pa_symbol(fixmap_pgd_next),
                           PGDIR_SIZE, PAGE_TABLE);

> -       create_pgd_mapping(swapper_pg_dir, FIXADDR_START,
> -                          __pa_symbol(fixmap_pgd_next),
> -                          PGDIR_SIZE, PAGE_TABLE);
> ++
> +       for (pa = start; pa < end; pa += map_size) {
> +               va = (uintptr_t)__va(pa);
> +               map_size = best_map_size(pa, end - pa);
> +
> +               create_pgd_mapping(swapper_pg_dir, va, pa, map_size,
> +                                  pgprot_from_va(va));
> +       }
> + }
> +
> + static void __init create_linear_mapping_page_table(void)
> + {
> +       phys_addr_t start, end;
> +       u64 i;
> +
> + #ifdef CONFIG_STRICT_KERNEL_RWX
> +       phys_addr_t ktext_start = __pa_symbol(_start);
> +       phys_addr_t ktext_size = __init_data_begin - _start;
> +       phys_addr_t krodata_start = __pa_symbol(__start_rodata);
> +       phys_addr_t krodata_size = _data - __start_rodata;
> +
> +       /* Isolate kernel text and rodata so they don't get mapped with a PUD */
> +       memblock_mark_nomap(ktext_start,  ktext_size);
> +       memblock_mark_nomap(krodata_start, krodata_size);
> + #endif
>
>         /* Map all memory banks in the linear mapping */
>         for_each_mem_range(i, &start, &end) {

Thanks!

Alex

^ permalink raw reply	[flat|nested] 7+ messages in thread

* linux-next: manual merge of the risc-v tree with the risc-v-fixes tree
@ 2023-04-20 12:40 broonie
  2023-04-20 13:23 ` Alexandre Ghiti
  0 siblings, 1 reply; 7+ messages in thread
From: broonie @ 2023-04-20 12:40 UTC (permalink / raw)
  To: Palmer Dabbelt, Paul Walmsley
  Cc: Alexandre Ghiti, Linux Kernel Mailing List,
	Linux Next Mailing List, Palmer Dabbelt

Hi all,

Today's linux-next merge of the risc-v tree got a conflict in:

  arch/riscv/mm/init.c

between commit:

  ef69d2559fe91 ("riscv: Move early dtb mapping into the fixmap region")

from the risc-v-fixes tree and commits:

  8589e346bbb67 ("riscv: Move the linear mapping creation in its own function")
  3335068f87217 ("riscv: Use PUD/P4D/PGD pages for the linear mapping")

from the risc-v tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

diff --cc arch/riscv/mm/init.c
index 0f14f4a8d179a,7bd66795165da..0000000000000
--- a/arch/riscv/mm/init.c
+++ b/arch/riscv/mm/init.c
@@@ -1070,26 -1112,36 +1092,47 @@@ asmlinkage void __init setup_vm(uintptr
  	pt_ops_set_fixmap();
  }
  
- static void __init setup_vm_final(void)
+ static void __init create_linear_mapping_range(phys_addr_t start,
+ 					       phys_addr_t end)
  {
+ 	phys_addr_t pa;
  	uintptr_t va, map_size;
- 	phys_addr_t pa, start, end;
- 	u64 i;
  
- 	/* Setup swapper PGD for fixmap */
 +#if !defined(CONFIG_64BIT)
 +	/*
 +	 * In 32-bit, the device tree lies in a pgd entry, so it must be copied
 +	 * directly in swapper_pg_dir in addition to the pgd entry that points
 +	 * to fixmap_pte.
 +	 */
 +	unsigned long idx = pgd_index(__fix_to_virt(FIX_FDT));
 +
 +	set_pgd(&swapper_pg_dir[idx], early_pg_dir[idx]);
 +#endif
- 	create_pgd_mapping(swapper_pg_dir, FIXADDR_START,
- 			   __pa_symbol(fixmap_pgd_next),
- 			   PGDIR_SIZE, PAGE_TABLE);
++
+ 	for (pa = start; pa < end; pa += map_size) {
+ 		va = (uintptr_t)__va(pa);
+ 		map_size = best_map_size(pa, end - pa);
+ 
+ 		create_pgd_mapping(swapper_pg_dir, va, pa, map_size,
+ 				   pgprot_from_va(va));
+ 	}
+ }
+ 
+ static void __init create_linear_mapping_page_table(void)
+ {
+ 	phys_addr_t start, end;
+ 	u64 i;
+ 
+ #ifdef CONFIG_STRICT_KERNEL_RWX
+ 	phys_addr_t ktext_start = __pa_symbol(_start);
+ 	phys_addr_t ktext_size = __init_data_begin - _start;
+ 	phys_addr_t krodata_start = __pa_symbol(__start_rodata);
+ 	phys_addr_t krodata_size = _data - __start_rodata;
+ 
+ 	/* Isolate kernel text and rodata so they don't get mapped with a PUD */
+ 	memblock_mark_nomap(ktext_start,  ktext_size);
+ 	memblock_mark_nomap(krodata_start, krodata_size);
+ #endif
  
  	/* Map all memory banks in the linear mapping */
  	for_each_mem_range(i, &start, &end) {

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: linux-next: manual merge of the risc-v tree with the risc-v-fixes tree
  2021-06-09  0:26 Stephen Rothwell
@ 2021-06-09  0:37 ` Palmer Dabbelt
  0 siblings, 0 replies; 7+ messages in thread
From: Palmer Dabbelt @ 2021-06-09  0:37 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Paul Walmsley, jszhang, linux-kernel, linux-next, vitaly.wool

On Tue, 08 Jun 2021 17:26:08 PDT (-0700), Stephen Rothwell wrote:
> Hi all,
>
> Today's linux-next merge of the risc-v tree got a conflict in:
>
>   arch/riscv/mm/init.c
>
> between commit:
>
>   8700a6b6fee2 ("riscv: fix typo in init.c")
>
> from the risc-v-fixes tree and commit:
>
>   010623568222 ("riscv: mm: init: Consolidate vars, functions")
>
> from the risc-v tree.
>
> Note that 8700a6b6fee2 supposedly fixes 010623568222, but 010623568222
> is not an ancestor of 8700a6b6fee2.
>
> I fixed it up (I just used the version from 8700a6b6fee2) and can
> carry the fix as necessary. This is now fixed as far as linux-next is
> concerned, but any non trivial conflicts should be mentioned to your
> upstream maintainer when your tree is submitted for merging.  You may
> also want to consider cooperating with the maintainer of the conflicting
> tree to minimise any particularly complex conflicts.

Sorry about that, this one was supposed to go on for-next not fixes.  It 
was causing my mail client to crash so I was kind of focused on that 
instead of the actual code...

It's on for-nex now.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* linux-next: manual merge of the risc-v tree with the risc-v-fixes tree
@ 2021-06-09  0:26 Stephen Rothwell
  2021-06-09  0:37 ` Palmer Dabbelt
  0 siblings, 1 reply; 7+ messages in thread
From: Stephen Rothwell @ 2021-06-09  0:26 UTC (permalink / raw)
  To: Palmer Dabbelt, Paul Walmsley
  Cc: Jisheng Zhang, Linux Kernel Mailing List,
	Linux Next Mailing List, Palmer Dabbelt, Vitaly Wool

[-- Attachment #1: Type: text/plain, Size: 856 bytes --]

Hi all,

Today's linux-next merge of the risc-v tree got a conflict in:

  arch/riscv/mm/init.c

between commit:

  8700a6b6fee2 ("riscv: fix typo in init.c")

from the risc-v-fixes tree and commit:

  010623568222 ("riscv: mm: init: Consolidate vars, functions")

from the risc-v tree.

Note that 8700a6b6fee2 supposedly fixes 010623568222, but 010623568222
is not an ancestor of 8700a6b6fee2.

I fixed it up (I just used the version from 8700a6b6fee2) and can
carry the fix as necessary. This is now fixed as far as linux-next is
concerned, but any non trivial conflicts should be mentioned to your
upstream maintainer when your tree is submitted for merging.  You may
also want to consider cooperating with the maintainer of the conflicting
tree to minimise any particularly complex conflicts.

-- 
Cheers,
Stephen Rothwell

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-04-21 12:00 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-07 23:13 linux-next: manual merge of the risc-v tree with the risc-v-fixes tree Stephen Rothwell
2021-06-09  0:26 Stephen Rothwell
2021-06-09  0:37 ` Palmer Dabbelt
2023-04-20 12:40 broonie
2023-04-20 13:23 ` Alexandre Ghiti
2023-04-21 11:40   ` Mark Brown
2023-04-21 11:59   ` Mark Brown

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).