1. 17 Aug, 2006 1 commit
    • David Wilder's avatar
      [POWERPC] Make secondary CPUs call into kdump on reset exception · eac8392f
      David Wilder authored
      In the case of a system hang, the user will invoke soft-reset to
      initiate the kdump boot.  If xmon is enabled, the CPU(s) enter into the
      xmon debugger.   Unfortunately, the secondary CPU(s) will return to the
      hung state when they exit from the debugger (returned from die() ->
      system_reset_exception()).  This causes a problem in kdump since the
      hung CPU(s) will not respond to the IPI sent from kdump.  This patch
      fixes the issue by calling crash_kexec_secondary() directly from
      system_reset_exception() without returning to the previous state.  These
      secondary CPUs wait 5ms until the kdump boot is started by the primary
      CPU.   In the case we exited from the debugger to "recover" (command 'x'
      in xmon) the primary and the secondary CPUs will all return from die()
      -> system_reset_exception() ->crash_kexec_secondary() wait 5ms, then
      return to the previous state.  A kdump boot is not started in this case.
      Signed-off-by: default avatarHaren Myneni <haren@us.ibm.com>
      Signed-off-by: default avatarDavid Wilder <dwilder@us.ibm.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      eac8392f
  2. 08 Aug, 2006 2 commits
    • Haren Myneni's avatar
      [POWERPC] Fix might-sleep warning on removing cpus · 81b73dd9
      Haren Myneni authored
      Noticing the following might_sleep warning (dump_stack()) during kdump
      testing when CONFIG_DEBUG_SPINLOCK_SLEEP is enabled. All secondary CPUs
      will be calling rtas_set_indicator with interrupts disabled to remove
      them from global interrupt queue.
      
      BUG: sleeping function called from invalid context at
      arch/powerpc/kernel/rtas.c:463
      in_atomic():1, irqs_disabled():1
      Call Trace:
      [C00000000FFFB970] [C000000000010234] .show_stack+0x68/0x1b0 (unreliable)
      [C00000000FFFBA10] [C000000000059354] .__might_sleep+0xd8/0xf4
      [C00000000FFFBA90] [C00000000001D1BC] .rtas_busy_delay+0x20/0x5c
      [C00000000FFFBB20] [C00000000001D8A8] .rtas_set_indicator+0x6c/0xcc
      [C00000000FFFBBC0] [C000000000048BF4] .xics_teardown_cpu+0x118/0x134
      [C00000000FFFBC40] [C00000000004539C]
      .pseries_kexec_cpu_down_xics+0x74/0x8c
      [C00000000FFFBCC0] [C00000000002DF08] .crash_ipi_callback+0x15c/0x188
      [C00000000FFFBD50] [C0000000000296EC] .smp_message_recv+0x84/0xdc
      [C00000000FFFBDC0] [C000000000048E08] .xics_ipi_dispatch+0xf0/0x130
      [C00000000FFFBE50] [C00000000009EF10] .handle_IRQ_event+0x7c/0xf8
      [C00000000FFFBF00] [C0000000000A0A14] .handle_percpu_irq+0x90/0x10c
      [C00000000FFFBF90] [C00000000002659C] .call_handle_irq+0x1c/0x2c
      [C00000000058B9C0] [C00000000000CA10] .do_IRQ+0xf4/0x1a4
      [C00000000058BA50] [C0000000000044EC] hardware_interrupt_entry+0xc/0x10
       --- Exception: 501 at .plpar_hcall_norets+0x14/0x1c
         LR = .pseries_dedicated_idle_sleep+0x190/0x1d4
      [C00000000058BD40] [C00000000058BDE0] 0xc00000000058bde0 (unreliable)
      [C00000000058BDF0] [C00000000001270C] .cpu_idle+0x10c/0x1e0
      [C00000000058BE70] [C000000000009274] .rest_init+0x44/0x5c
      
      To fix this issue, rtas_set_indicator_fast() is added so that will not
      wait for RTAS 'busy' delay and this new function is used for kdump (in
      xics_teardown_cpu()) and for CPU hotplug ( xics_migrate_irqs_away() and
      xics_setup_cpu()).
      
      Note that the platform architecture spec says that set-indicator
      on the indicator we're using here is not permitted to return the
      busy or extended busy status codes.
      Signed-off-by: default avatarHaren Myneni <haren@us.ibm.com>
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      81b73dd9
    • Sonny Rao's avatar
      [POWERPC] fix PMU initialization on pseries lpar · dcc42f48
      Sonny Rao authored
      We should not be calling power4_enable_pmcs() in
      pseries_lpar_enable_pmcs(); just doing the hypercall is sufficient.
      Prior to 2.6.15 we did not call power4_enable_pmcs() for an lpar.
      
      power4_enable_pmcs() tries to read the hid0 register which is no
      longer legal for an lpar in newer Power processors.
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      dcc42f48
  3. 06 Aug, 2006 37 commits