linux-next: manual merge of the akpm tree with the powerpc tree
Hi all, Today's linux-next merge of the akpm tree got a conflict in: arch/powerpc/kernel/setup-common.c between commit: 56afad885228 ("powerpc: Remove klimit") from the powerpc tree and commit: 6e6e0df2a484 ("powerpc: convert to setup_initial_init_mm()") from the akpm tree. I fixed it up (I just used the latter since it had also decided to use _end directly) 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 pgpcr1WXZsLUw.pgp Description: OpenPGP digital signature
linux-next: manual merge of the akpm tree with the powerpc tree
Hi all, Today's linux-next merge of the akpm tree got conflicts in: arch/powerpc/mm/book3s32/mmu.c arch/powerpc/mm/book3s32/tlb.c arch/powerpc/mm/kasan/kasan_init_32.c arch/powerpc/mm/mem.c arch/powerpc/mm/nohash/40x.c arch/powerpc/mm/pgtable_32.c between commits: 0b1c524caaae ("powerpc/32: refactor pmd_offset(pud_offset(pgd_offset...") 2efc7c085f05 ("powerpc/32: drop get_pteptr()") from the powerpc tree and patch: "powerpc: add support for folded p4d page tables" from the akpm tree. I fixed it up (all the files above no longer need modifiying, and the extra patch is 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/powerpc/mm/book3s32/mmu.c index 39ba53ca5bb5,edef17c97206.. --- a/arch/powerpc/mm/book3s32/mmu.c +++ b/arch/powerpc/mm/book3s32/mmu.c diff --cc arch/powerpc/mm/book3s32/tlb.c index dc9039a170aa,175bc33b41b7.. --- a/arch/powerpc/mm/book3s32/tlb.c +++ b/arch/powerpc/mm/book3s32/tlb.c diff --cc arch/powerpc/mm/kasan/kasan_init_32.c index f19526e7d3dc,88e2e16380b5.. --- a/arch/powerpc/mm/kasan/kasan_init_32.c +++ b/arch/powerpc/mm/kasan/kasan_init_32.c diff --cc arch/powerpc/mm/mem.c index 9b4f5fb719e0,8262b384dcf3.. --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c diff --cc arch/powerpc/mm/nohash/40x.c index 82862723ab42,7aaf7155e350.. --- a/arch/powerpc/mm/nohash/40x.c +++ b/arch/powerpc/mm/nohash/40x.c diff --cc arch/powerpc/mm/pgtable_32.c index f62de06e3d07,5774d4bc94d0.. --- a/arch/powerpc/mm/pgtable_32.c +++ b/arch/powerpc/mm/pgtable_32.c diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h index df7f63d37b74..74f890d6218c 100644 --- a/arch/powerpc/include/asm/pgtable.h +++ b/arch/powerpc/include/asm/pgtable.h @@ -44,12 +44,12 @@ struct mm_struct; #ifdef CONFIG_PPC32 static inline pmd_t *pmd_ptr(struct mm_struct *mm, unsigned long va) { - return pmd_offset(pud_offset(pgd_offset(mm, va), va), va); + return pmd_offset(pud_offset(p4d_offset(pgd_offset(mm, va), va) , va), va); } static inline pmd_t *pmd_ptr_k(unsigned long va) { - return pmd_offset(pud_offset(pgd_offset_k(va), va), va); + return pmd_offset(pud_offset(p4d_offset(pgd_offset_k(va), va) , va), va); } static inline pte_t *virt_to_kpte(unsigned long vaddr) -- Cheers, Stephen Rothwell Just to be clear, below is the new version of "powerpc: add support for folded p4d page tables" (I am not sure it is completely correct, but ppc64_defconfig, 32 and 64 bit allnoconfig, allyesconfig, ppc44x_defconfig and pseries_le_defconfig all build without new warnings): From: Mike Rapoport Date: Wed, 4 Mar 2020 22:32:05 +1100 Subject: [PATCH] powerpc: add support for folded p4d page tables Implement primitives necessary for the 4th level folding, add walks of p4d level where appropriate and replace 5level-fixup.h with pgtable-nop4d.h. Link: http://lkml.kernel.org/r/20200227084608.18223-9-r...@kernel.org Signed-off-by: Mike Rapoport Tested-by: Christophe Leroy[8xx and 83xx] Cc: Arnd Bergmann Cc: Benjamin Herrenschmidt Cc: Brian Cain Cc: Catalin Marinas Cc: Fenghua Yu Cc: Geert Uytterhoeven Cc: Guan Xuetao Cc: James Morse Cc: Jonas Bonn Cc: Julien Thierry Cc: Ley Foon Tan Cc: Marc Zyngier Cc: Michael Ellerman Cc: Paul Mackerras Cc: Rich Felker Cc: Russell King Cc: Stafford Horne Cc: Stefan Kristiansson Cc: Suzuki K Poulose Cc: Tony Luck Cc: Will Deacon Cc: Yoshinori Sato Cc: Anders Roxell Cc: Anshuman Khandual Cc: Naresh Kamboju Cc: Stephen Rothwell Signed-off-by: Andrew Morton Signed-off-by: Stephen Rothwell --- arch/powerpc/include/asm/book3s/32/pgtable.h | 1 - arch/powerpc/include/asm/book3s/64/hash.h | 4 +- arch/powerpc/include/asm/book3s/64/pgalloc.h | 4 +- arch/powerpc/include/asm/book3s/64/pgtable.h | 60 ++- arch/powerpc/include/asm/book3s/64/radix.h| 6 +- arch/powerpc/include/asm/nohash/32/pgtable.h | 1 - arch/powerpc/include/asm/nohash/64/pgalloc.h | 2 +- .../include/asm/nohash/64/pgtable-4k.h| 32 +- arch/powerpc/include/asm/nohash/64/pgtable.h | 6 +- arch/powerpc/include/asm/pgtable.h| 10 ++-- arch/powerpc/kvm/book3s_64_mmu_radix.c| 30 ++ arch/powerpc/lib/code-patching.c | 7 ++- arch/powerpc/mm/book3s64/hash_pgtable.c | 4 +- arch/powerpc/mm/book3s64/radix_pgtable.c | 26 +--- arch/powerpc/mm/book3s64/subpage_prot.c | 6 +- arch/powerpc/mm/hugetlbpage.c | 28 + arch/powerpc/mm/nohash/book3e_pgtable.c | 15 ++--- arch/powerpc/mm/pgtable.c | 30 +++
linux-next: manual merge of the akpm tree with the powerpc tree
Hi all, Today's linux-next merge of the akpm tree got a conflict in: arch/powerpc/mm/pgtable_32.c between commit: 2efc7c085f05 ("powerpc/32: drop get_pteptr()") from the powerpc tree and patch: "powerpc/32: drop get_pteptr()" from the akpm tree. I fixed it up (I just dropped the latter version) 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 pgpF8g8zJblRL.pgp Description: OpenPGP digital signature
linux-next: manual merge of the akpm tree with the powerpc tree
Hi Andrew, Today's linux-next merge of the akpm tree got a conflict in: arch/powerpc/kernel/module_64.c between commit: 9f751b82b491 ("powerpc/module: Add support for R_PPC64_REL32 relocations") from the powerpc tree and patch: "powerpc: factor out relocation code in module_64.c" from the akpm 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/powerpc/kernel/module_64.c index bb1807184bad,61baad036639.. --- a/arch/powerpc/kernel/module_64.c +++ b/arch/powerpc/kernel/module_64.c @@@ -507,6 -507,181 +507,186 @@@ static int restore_r2(u32 *instruction return 1; } + static int elf64_apply_relocate_add_item(const Elf64_Shdr *sechdrs, +const char *strtab, +const Elf64_Rela *rela, +const Elf64_Sym *sym, +unsigned long *location, +unsigned long value, +unsigned long my_r2, +const char *obj_name, +struct module *me) + { + switch (ELF64_R_TYPE(rela->r_info)) { + case R_PPC64_ADDR32: + /* Simply set it */ + *(u32 *)location = value; + break; + + case R_PPC64_ADDR64: + /* Simply set it */ + *(unsigned long *)location = value; + break; + + case R_PPC64_TOC: + *(unsigned long *)location = my_r2; + break; + + case R_PPC64_TOC16: + /* Subtract TOC pointer */ + value -= my_r2; + if (value + 0x8000 > 0x) { + pr_err("%s: bad TOC16 relocation (0x%lx)\n", + obj_name, value); + return -ENOEXEC; + } + *((uint16_t *) location) + = (*((uint16_t *) location) & ~0x) + | (value & 0x); + break; + + case R_PPC64_TOC16_LO: + /* Subtract TOC pointer */ + value -= my_r2; + *((uint16_t *) location) + = (*((uint16_t *) location) & ~0x) + | (value & 0x); + break; + + case R_PPC64_TOC16_DS: + /* Subtract TOC pointer */ + value -= my_r2; + if ((value & 3) != 0 || value + 0x8000 > 0x) { + pr_err("%s: bad TOC16_DS relocation (0x%lx)\n", + obj_name, value); + return -ENOEXEC; + } + *((uint16_t *) location) + = (*((uint16_t *) location) & ~0xfffc) + | (value & 0xfffc); + break; + + case R_PPC64_TOC16_LO_DS: + /* Subtract TOC pointer */ + value -= my_r2; + if ((value & 3) != 0) { + pr_err("%s: bad TOC16_LO_DS relocation (0x%lx)\n", + obj_name, value); + return -ENOEXEC; + } + *((uint16_t *) location) + = (*((uint16_t *) location) & ~0xfffc) + | (value & 0xfffc); + break; + + case R_PPC64_TOC16_HA: + /* Subtract TOC pointer */ + value -= my_r2; + value = ((value + 0x8000) >> 16); + *((uint16_t *) location) + = (*((uint16_t *) location) & ~0x) + | (value & 0x); + break; + + case R_PPC_REL24: + /* FIXME: Handle weak symbols here --RR */ + if (sym->st_shndx == SHN_UNDEF) { + /* External: go via stub */ + value = stub_for_addr(sechdrs, value, me); + if (!value) + return -ENOENT; + if (!restore_r2((u32 *)location + 1, me)) + return -ENOEXEC; + + squash_toc_save_inst(strtab + sym->st_name, value); + } else + value += local_entry_offset(sym); + + /* Convert value to relative */ + value -= (unsigned long)location; + if (value + 0x200 > 0x3ff || (value & 3) != 0) { + pr_err("%s: REL24 %li out of range!\n", +
linux-next: manual merge of the akpm tree with the powerpc tree
Hi Andrew, Today's linux-next merge of the akpm tree got a conflict in: kernel/jump_label.c between commit: e3f91083facb ("jump_label: Make it possible for arches to invoke jump_label_init() earlier") from the powerpc tree and patch: "jump_label: remove bug.h, atomic.h dependencies for HAVE_JUMP_LABEL" from the akpm 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 kernel/jump_label.c index 85b7105fdd86,20400055f177.. --- a/kernel/jump_label.c +++ b/kernel/jump_label.c @@@ -235,9 -279,15 +279,18 @@@ void __init jump_label_init(void struct static_key *key = NULL; struct jump_entry *iter; + /* +* Since we are initializing the static_key.enabled field with +* with the 'raw' int values (to avoid pulling in atomic.h) in +* jump_label.h, let's make sure that is safe. There are only two +* cases to check since we initialize to 0 or 1. +*/ + BUILD_BUG_ON((int)ATOMIC_INIT(0) != 0); + BUILD_BUG_ON((int)ATOMIC_INIT(1) != 1); + + if (static_key_initialized) + return; + jump_label_lock(); jump_label_sort_entries(iter_start, iter_stop); ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: linux-next: manual merge of the akpm tree with the powerpc tree
On Wed, 2013-06-26 at 16:19 +0200, Oleg Nesterov wrote: > > You were cc'ed every time ;) > > > Why didn't it go through the powerpc tree ? > > Because this series needs to update any user of > ptrace_get/put_breakpoints > in arch/ (simply remove these calls), then change the core kernel > code, then > fix arch/86. That's fine. I didn't realize that was a series, thought it was a standalone patch I had missed. Ben. ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: linux-next: manual merge of the akpm tree with the powerpc tree
On 06/26, Benjamin Herrenschmidt wrote: > > On Wed, 2013-06-26 at 16:56 +1000, Stephen Rothwell wrote: > > Today's linux-next merge of the akpm tree got a conflict in > > arch/powerpc/kernel/ptrace.c between commit b0b0aa9c7faf > > ("powerpc/hw_brk: Fix setting of length for exact mode breakpoints") from > > the powerpc tree and commit "ptrace/powerpc: revert "hw_breakpoints: Fix > > racy access to ptrace breakpoints"" from the akpm tree. > > > > I fixed it up (see below) and can carry the fix as necessary (no action > > is required). > > Where does the latter come from ? ptrace-powerpc-revert-hw_breakpoints-fix-racy-access-to-ptrace-breakpoints.patch attached below. You were cc'ed every time ;) > Why didn't it go through the powerpc tree ? Because this series needs to update any user of ptrace_get/put_breakpoints in arch/ (simply remove these calls), then change the core kernel code, then fix arch/86. -- From: Oleg Nesterov Subject: ptrace/powerpc: revert "hw_breakpoints: Fix racy access to ptrace breakpoints" This reverts commit 07fa7a0a8a586 ("hw_breakpoints: Fix racy access to ptrace breakpoints") and removes ptrace_get/put_breakpoints() added by other commits. The patch was fine but we can no longer race with SIGKILL after 9899d11f ("ptrace: ensure arch_ptrace/ptrace_request can never race with SIGKILL"), the __TASK_TRACED tracee can't be woken up and ->ptrace_bps[] can't go away. Signed-off-by: Oleg Nesterov Acked-by: Michael Neuling Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: Frederic Weisbecker Cc: Ingo Molnar Cc: Jan Kratochvil Cc: Paul Mundt Cc: Will Deacon Cc: Prasad Cc: Russell King Signed-off-by: Andrew Morton --- arch/powerpc/kernel/ptrace.c | 20 1 file changed, 20 deletions(-) diff -puN arch/powerpc/kernel/ptrace.c~ptrace-powerpc-revert-hw_breakpoints-fix-racy-access-to-ptrace-breakpoints arch/powerpc/kernel/ptrace.c --- a/arch/powerpc/kernel/ptrace.c~ptrace-powerpc-revert-hw_breakpoints-fix-racy-access-to-ptrace-breakpoints +++ a/arch/powerpc/kernel/ptrace.c @@ -974,16 +974,12 @@ int ptrace_set_debugreg(struct task_stru hw_brk.type = (data & HW_BRK_TYPE_DABR) | HW_BRK_TYPE_PRIV_ALL; hw_brk.len = 8; #ifdef CONFIG_HAVE_HW_BREAKPOINT - if (ptrace_get_breakpoints(task) < 0) - return -ESRCH; - bp = thread->ptrace_bps[0]; if ((!data) || !(hw_brk.type & HW_BRK_TYPE_RDWR)) { if (bp) { unregister_hw_breakpoint(bp); thread->ptrace_bps[0] = NULL; } - ptrace_put_breakpoints(task); return 0; } if (bp) { @@ -996,11 +992,9 @@ int ptrace_set_debugreg(struct task_stru ret = modify_user_hw_breakpoint(bp, &attr); if (ret) { - ptrace_put_breakpoints(task); return ret; } thread->ptrace_bps[0] = bp; - ptrace_put_breakpoints(task); thread->hw_brk = hw_brk; return 0; } @@ -1015,12 +1009,9 @@ int ptrace_set_debugreg(struct task_stru ptrace_triggered, NULL, task); if (IS_ERR(bp)) { thread->ptrace_bps[0] = NULL; - ptrace_put_breakpoints(task); return PTR_ERR(bp); } - ptrace_put_breakpoints(task); - #endif /* CONFIG_HAVE_HW_BREAKPOINT */ task->thread.hw_brk = hw_brk; #else /* CONFIG_PPC_ADV_DEBUG_REGS */ @@ -1439,9 +1430,6 @@ static long ppc_set_hwdebug(struct task_ if (bp_info->trigger_type & PPC_BREAKPOINT_TRIGGER_WRITE) brk.type |= HW_BRK_TYPE_WRITE; #ifdef CONFIG_HAVE_HW_BREAKPOINT - if (ptrace_get_breakpoints(child) < 0) - return -ESRCH; - /* * Check if the request is for 'range' breakpoints. We can * support it if range < 8 bytes. @@ -1449,12 +1437,10 @@ static long ppc_set_hwdebug(struct task_ if (bp_info->addr_mode == PPC_BREAKPOINT_MODE_RANGE_INCLUSIVE) { len = bp_info->addr2 - bp_info->addr; } else if (bp_info->addr_mode != PPC_BREAKPOINT_MODE_EXACT) { - ptrace_put_breakpoints(child); return -EINVAL; } bp = thread->ptrace_bps[0]; if (bp) { - ptrace_put_breakpoints(child); return -ENOSPC; } @@ -1468,11 +1454,9 @@ static long ppc_set_hwdebug(struct task_ ptrace_triggered, NULL, child); if (IS_ERR(bp)) { thread->ptrace_bps[0] = NULL; - ptrace_put_breakpoints(child); return PTR_ERR(bp); } - ptrace_put_breakpoints(child); return 1; #endif /* CONFIG_HAVE_HW_BREAKPOINT */ @@ -1516,16 +1500,12 @@ static long ppc_del_hwdebug(s
Re: linux-next: manual merge of the akpm tree with the powerpc tree
On Wed, 26 Jun 2013 18:10:31 +1000 Benjamin Herrenschmidt wrote: > On Wed, 2013-06-26 at 16:56 +1000, Stephen Rothwell wrote: > > Today's linux-next merge of the akpm tree got a conflict in > > arch/powerpc/kernel/ptrace.c between commit b0b0aa9c7faf > > ("powerpc/hw_brk: Fix setting of length for exact mode breakpoints") from > > the powerpc tree and commit "ptrace/powerpc: revert "hw_breakpoints: Fix > > racy access to ptrace breakpoints"" from the akpm tree. > > > > I fixed it up (see below) and can carry the fix as necessary (no action > > is required). > > Where does the latter come from ? Why didn't it go through the powerpc tree ? um, the most rudimentary search will take you to Oleg's patch series. You were cc'ed on the whole thing two or three times. ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: linux-next: manual merge of the akpm tree with the powerpc tree
On Wed, 2013-06-26 at 16:56 +1000, Stephen Rothwell wrote: > Today's linux-next merge of the akpm tree got a conflict in > arch/powerpc/kernel/ptrace.c between commit b0b0aa9c7faf > ("powerpc/hw_brk: Fix setting of length for exact mode breakpoints") from > the powerpc tree and commit "ptrace/powerpc: revert "hw_breakpoints: Fix > racy access to ptrace breakpoints"" from the akpm tree. > > I fixed it up (see below) and can carry the fix as necessary (no action > is required). Where does the latter come from ? Why didn't it go through the powerpc tree ? Cheers, Ben. ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
linux-next: manual merge of the akpm tree with the powerpc tree
Hi Andrew, Today's linux-next merge of the akpm tree got a conflict in arch/powerpc/kernel/ptrace.c between commit b0b0aa9c7faf ("powerpc/hw_brk: Fix setting of length for exact mode breakpoints") from the powerpc tree and commit "ptrace/powerpc: revert "hw_breakpoints: Fix racy access to ptrace breakpoints"" from the akpm tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc arch/powerpc/kernel/ptrace.c index 64f7bd5,6645e57..000 --- a/arch/powerpc/kernel/ptrace.c +++ b/arch/powerpc/kernel/ptrace.c @@@ -1449,10 -1437,7 +1437,9 @@@ static long ppc_set_hwdebug(struct task */ if (bp_info->addr_mode == PPC_BREAKPOINT_MODE_RANGE_INCLUSIVE) { len = bp_info->addr2 - bp_info->addr; - } else if (bp_info->addr_mode != PPC_BREAKPOINT_MODE_EXACT) { + } else if (bp_info->addr_mode == PPC_BREAKPOINT_MODE_EXACT) + len = 1; + else { - ptrace_put_breakpoints(child); return -EINVAL; } bp = thread->ptrace_bps[0]; pgpPPrjGi10TW.pgp Description: PGP signature ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
linux-next: manual merge of the akpm tree with the powerpc tree
Hi Andrew, Today's linux-next merge of the akpm tree got a conflict in arch/powerpc/platforms/pseries/eeh_event.c between commit 29f8bf1b7f79 ("powerpc/pseries: Cleanup comments in EEH aux components") from the powerpc tree and commit "powerpc/eeh: remove eeh_event_handler() ->daemonize()" from the akpm tree. I fixed it up (see below) and can carry the fix as necessary. -- Cheers, Stephen Rothwells...@canb.auug.org.au diff --cc arch/powerpc/platforms/pseries/eeh_event.c index 4a47525,a6d33c8..000 --- a/arch/powerpc/platforms/pseries/eeh_event.c +++ b/arch/powerpc/platforms/pseries/eeh_event.c @@@ -56,10 -58,10 +56,10 @@@ DEFINE_MUTEX(eeh_event_mutex) static int eeh_event_handler(void * dummy) { unsigned long flags; - struct eeh_event*event; - struct pci_dn *pdn; + struct eeh_event *event; + struct eeh_dev *edev; - daemonize("eehd"); + set_task_comm(current, "eehd"); set_current_state(TASK_INTERRUPTIBLE); spin_lock_irqsave(&eeh_eventlist_lock, flags); pgplE0pIi4Jib.pgp Description: PGP signature ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev