1. 13 10月, 2007 8 次提交
    • K
      [IA64] Fix kernel panic in kdump on INIT · ac542a51
      Kenji Kaneshige 提交于
      Fix the problem that kdump on INIT causes a kernel panic if kdump
      kernel image is not configured. The cause of this problem is
      machine_kexec_on_init() is using printk in INIT context. It should
      use ia64_mca_printk() instead.
      Signed-off-by: NKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      ac542a51
    • S
      [IA64] Remove vector from ia64_machine_kexec() · a62c9fe4
      Simon Horman 提交于
      The use of vector in ia64_machine_kexec() seems spurious,
      and removing it simplifies the code slightly.
      
      As suggested by Alex Williamson <alex.williamson@hp.com>
      
      Cc: Alex Williamson <alex.williamson@hp.com>
      Signed-off-by: NSimon Horman <horms@verge.net.au>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      a62c9fe4
    • R
      [IA64] Fix race when multiple cpus go through MCA · e1b1eb01
      Russ Anderson 提交于
      Additional testing uncovered a situation where the MCA recovery code could
      hang due to a race condition.
      
      According to the SAL spec, SAL sends a rendezvous interrupt to all but the first
      CPU that goes into MCA.  This includes other CPUs that go into MCA at the same
      time.  Those other CPUs will go into the linux MCA handler (rather than the
      slave loop) with the rendezvous interrupt pending.  When all the CPUs have
      completed MCA processing and the last monarch completes, freeing all the CPUs,
      the CPUs with the pended rendezvous interrupt then go into the
      ia64_mca_rendez_int_handler().  In ia64_mca_rendez_int_handler() the CPUs
      get marked as rendezvoused, but then leave the handler (due to no MCA).
      That leaves the CPUs marked as rendezvoused _before_ the next MCA event.
      
      When the next MCA hits, the monarch will mistakenly believe that all the CPUs
      are rendezvoused when they are not, opening up a window where a CPU can get
      stuck in the slave loop.
      
      This patch avoids leaving CPUs marked as rendezvoused when they are not.
      Signed-off-by: NRuss Anderson <rja@sgi.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      e1b1eb01
    • R
      [IA64] Remove needless delay in MCA rendezvous · 2bc5c282
      Russ Anderson 提交于
      While testing the MCA recovery code, noticed that some machines would have a
      five second delay rendezvousing cpus.  What was happening is that
      ia64_wait_for_slaves() would check to see if all the slave CPUs had
      rendezvoused.  If any had not, it would wait 1 millisecond then check again.
      If any CPUs had still not rendezvoused, it would wait 5 seconds before
      checking again.
      
      On some configs the rendezvous takes more than 1 millisecond, causing the code
      to wait the full 5 seconds, even though the last CPU rendezvoused after only
      a few milliseconds.
      
      The fix is to check every 1 millisecond to see if all the cpus have
      rendezvoused.  After 5 seconds the code concludes the CPUs will never
      rendezvous (same as before).
      
      The MCA code is, by definition, not performance critical, but a needless
      delay of 5 seconds is senseless.  The 5 seconds also adds up quickly
      when running the error injection code in a loop.
      
      This patch both simplifies the code and removes the needless delay.
      Signed-off-by: NRuss Anderson <rja@sgi.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      2bc5c282
    • B
      [IA64] add driver for ACPI methods to call native firmware · 28eda5b8
      Bjorn Helgaas 提交于
      This driver for HPQ5001 devices installs a global ACPI OpRegion handler.
      AML methods can use this OpRegion to call native firmware entry points.
      
      ACPI does not define a mechanism for AML methods to call native firmware
      interfaces such as PAL or SAL.  This OpRegion handler adds such a mechanism.
      After the handler is installed, an AML method can call native firmware by
      storing the arguments and firmware entry point to specific offsets in the
      OpRegion.  When AML reads the "return value" offset from the OpRegion, this
      handler loads up the arguments, makes the firmware call, and returns the
      result.
      Signed-off-by: NBjorn Helgaas <bjorn.helgaas@hp.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      28eda5b8
    • B
      [IA64] abstract SAL_CALL wrapper to allow other firmware entry points · edbe7075
      Bjorn Helgaas 提交于
      SAL_CALL() always calls through the ia64_sal function pointer.  I am adding
      new functionality that needs the same conventions as SAL_CALL (FP regs
      saved/restored, sal_lock acquired, etc), but doesn't use the ia64_sal
      function pointer.
      
      This patch pulls the body of SAL_CALL out into a new "IA64_FW_CALL" that
      takes care of these calling conventions, but allows the caller to specify
      either ia64_sal or some other firmware entry point.
      Signed-off-by: NBjorn Helgaas <bjorn.helgaas@hp.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      edbe7075
    • S
      [IA64] perfmon: Remove exit_pfm_fs() · 8e75ad89
      Satyam Sharma 提交于
      Because it is dead code and not referenced by anybody else (that file cannot
      be built modular).
      Signed-off-by: NSatyam Sharma <satyam@infradead.org>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Cc: Stephane Eranian <eranian@hpl.hp.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      8e75ad89
    • S
      [IA64] tree-wide: Misc __cpu{initdata, init, exit} annotations · db6a5cef
      Satyam Sharma 提交于
      * palinfo.c:
      
      palinfo_cpu_notifier is a CPU hotplug notifier_block, and can be
      marked __cpuinitdata, and the callback function palinfo_cpu_callback()
      itself can be marked __cpuinit. create_palinfo_proc_entries() is only
      called from __cpuinit callback or general __init code, therefore a
      candidate for __cpuinit itself. remove_palinfo_proc_entries() is only
      called from __cpuinit callback or general __exit code, therefore a
      candidate for __cpuexit.
      
      * salinfo.c:
      
      The CPU hotplug notifier_block can be __cpuinitdata. The callback
      salinfo_cpu_callback() is incorrectly marked __devinit -- it must
      be __cpuinit instead.
      
      * topology.c:
      
      cache_sysfs_init() is only called at device_initcall() time so marking
      it as __cpuinit is wrong and wasteful. It should be unconditionally
      __init. Also cleanup reference to hotplug notifier callback function
      from this function and replace with cache_add_dev(), which could also
      enable us to use other tricks to replace __cpuinit{data} annotations,
      as recently discussed on this list.
      
      cache_shared_cpu_map_setup() is only ever called from __cpuinit-marked
      functions hence both its definitions (SMP or !SMP) are candidates for
      __cpuinit itself. Also all_cpu_cache_info can be __cpuinitdata because
      only referenced from __cpuinit code.
      Signed-off-by: NSatyam Sharma <satyam@infradead.org>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      db6a5cef
  2. 12 10月, 2007 32 次提交