1. 04 Dec, 2018 7 commits
    • Christophe Leroy's avatar
      powerpc/mm: Move pte_fragment_alloc() to a common location · a95d133c
      Christophe Leroy authored
      In preparation of next patch which generalises the use of
      pte_fragment_alloc() for all, this patch moves the related functions
      in a place that is common to all subarches.
      
      The 8xx will need that for supporting 16k pages, as in that mode
      page tables still have a size of 4k.
      
      Since pte_fragment with only once fragment is not different
      from what is done in the general case, we can easily migrate all
      subarchs to pte fragments.
      Reviewed-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
      Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      a95d133c
    • Christophe Leroy's avatar
      powerpc/8xx: Remove PTE_ATOMIC_UPDATES · ddfc20a3
      Christophe Leroy authored
      commit 1bc54c03 ("powerpc: rework 4xx PTE access and TLB miss")
      introduced non atomic PTE updates and started the work of removing
      PTE updates in TLB miss handlers, but kept PTE_ATOMIC_UPDATES for the
      8xx with the following comment:
      /* Until my rework is finished, 8xx still needs atomic PTE updates */
      
      commit fe11dc3f ("powerpc/8xx: Update TLB asm so it behaves as
      linux mm expects") removed all PTE updates done in TLB miss handlers
      
      Therefore, atomic PTE updates are not needed anymore for the 8xx
      Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      ddfc20a3
    • Christophe Leroy's avatar
      powerpc/book3s32: Remove CONFIG_BOOKE dependent code · a43ccc4b
      Christophe Leroy authored
      BOOK3S/32 cannot be BOOKE, so remove useless code
      Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      a43ccc4b
    • Stephen Rothwell's avatar
      powerpc: annotate implicit fall throughs · 8ad94021
      Stephen Rothwell authored
      There is a plan to build the kernel with -Wimplicit-fallthrough and these
      places in the code produced warnings, but because we build arch/powerpc
      with -Werror, they became errors.  Fix them up.
      
      This patch produces no change in behaviour, but should be reviewed in
      case these are actually bugs not intentional fallthoughs.
      Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      8ad94021
    • Breno Leitao's avatar
      powerpc/mm: remove unused function prototype · f91203e7
      Breno Leitao authored
      Commit f384796c ("powerpc/mm: Add support for handling > 512TB address
      in SLB miss") removed function slb_miss_bad_addr(struct pt_regs *regs), but
      kept its declaration in the prototype file. This patch simply removes the
      function definition.
      Signed-off-by: default avatarBreno Leitao <leitao@debian.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      f91203e7
    • Breno Leitao's avatar
      powerpc/pseries/cpuidle: Fix preempt warning · 2b038cbc
      Breno Leitao authored
      When booting a pseries kernel with PREEMPT enabled, it dumps the
      following warning:
      
         BUG: using smp_processor_id() in preemptible [00000000] code: swapper/0/1
         caller is pseries_processor_idle_init+0x5c/0x22c
         CPU: 13 PID: 1 Comm: swapper/0 Not tainted 4.20.0-rc3-00090-g12201a0128bc-dirty #828
         Call Trace:
         [c000000429437ab0] [c0000000009c8878] dump_stack+0xec/0x164 (unreliable)
         [c000000429437b00] [c0000000005f2f24] check_preemption_disabled+0x154/0x160
         [c000000429437b90] [c000000000cab8e8] pseries_processor_idle_init+0x5c/0x22c
         [c000000429437c10] [c000000000010ed4] do_one_initcall+0x64/0x300
         [c000000429437ce0] [c000000000c54500] kernel_init_freeable+0x3f0/0x500
         [c000000429437db0] [c0000000000112dc] kernel_init+0x2c/0x160
         [c000000429437e20] [c00000000000c1d0] ret_from_kernel_thread+0x5c/0x6c
      
      This happens because the code calls get_lppaca() which calls
      get_paca() and it checks if preemption is disabled through
      check_preemption_disabled().
      
      Preemption should be disabled because the per CPU variable may make no
      sense if there is a preemption (and a CPU switch) after it reads the
      per CPU data and when it is used.
      
      In this device driver specifically, it is not a problem, because this
      code just needs to have access to one lppaca struct, and it does not
      matter if it is the current per CPU lppaca struct or not (i.e. when
      there is a preemption and a CPU migration).
      
      That said, the most appropriate fix seems to be related to avoiding
      the debug_smp_processor_id() call at get_paca(), instead of calling
      preempt_disable() before get_paca().
      Signed-off-by: default avatarBreno Leitao <leitao@debian.org>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      2b038cbc
    • Breno Leitao's avatar
      powerpc/xmon: Fix invocation inside lock region · 8d4a8622
      Breno Leitao authored
      Currently xmon needs to get devtree_lock (through rtas_token()) during its
      invocation (at crash time). If there is a crash while devtree_lock is being
      held, then xmon tries to get the lock but spins forever and never get into
      the interactive debugger, as in the following case:
      
      	int *ptr = NULL;
      	raw_spin_lock_irqsave(&devtree_lock, flags);
      	*ptr = 0xdeadbeef;
      
      This patch avoids calling rtas_token(), thus trying to get the same lock,
      at crash time. This new mechanism proposes getting the token at
      initialization time (xmon_init()) and just consuming it at crash time.
      
      This would allow xmon to be possible invoked independent of devtree_lock
      being held or not.
      Signed-off-by: default avatarBreno Leitao <leitao@debian.org>
      Reviewed-by: default avatarThiago Jung Bauermann <bauerman@linux.ibm.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      8d4a8622
  2. 26 Nov, 2018 17 commits
  3. 25 Nov, 2018 16 commits