1. 15 5月, 2008 8 次提交
  2. 02 5月, 2008 4 次提交
  3. 01 5月, 2008 4 次提交
  4. 30 4月, 2008 4 次提交
  5. 29 4月, 2008 2 次提交
  6. 22 4月, 2008 4 次提交
    • J
      [IA64] minor irq handler cleanups · 9010eff0
      Jeff Garzik 提交于
      - remove unused 'irq' argument from pfm_do_interrupt_handler()
      
      - remove pointless cast to void*
      
      - add KERN_xxx prefix to printk()
      
      - remove braces around singleton C statement
      
      - in tioce_provider.c, start tioce_dma_consistent() and
        tioce_error_intr_handler() function declarations in column 0
      
      This change's main purpose is to prepare for the patchset in
      jgarzik/misc-2.6.git#irq-remove, that explores removal of the
      never-used 'irq' argument in each interrupt handler.
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      9010eff0
    • H
      [IA64] simplify notify hooks in mca.c · 4fa2f0e6
      Hidetoshi Seto 提交于
      There are many notify_die() and almost all take same style with
      ia64_mca_spin().  This patch defines macros and replace them all,
      to reduce lines and to improve readability.
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      4fa2f0e6
    • H
      [IA64] do notify DIE_MCA_MONARCH_PROCESS for each monarchs · 284e5427
      Hidetoshi Seto 提交于
      There are 3 hooks in MCA handler, but this DIE_MCA_MONARCH_PROCESS
      event does not notified other than for the first monarch.
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      284e5427
    • H
      [IA64] disable interrupts on exit of ia64_trace_syscall · 38477ad7
      Hidetoshi Seto 提交于
      While testing with CONFIG_VIRT_CPU_ACCOUNTING=y, I found that
      I occasionally get very huge system time in some threads.
      
      So I dug the issue and finally noticed that it was caused
      because of an interrupt which interrupt in the following window:
      
      > [arch/ia64/kernel/entry.S: (!CONFIG_PREEMPT && CONFIG_VIRT_CPU_ACCOUNTING)]
      >
      > ENTRY(ia64_leave_syscall)
      >    :
      > (pUStk) rsm psr.i
      >         cmp.eq pLvSys,p0=r0,r0          // pLvSys=1: leave from syscall
      > (pUStk) cmp.eq.unc p6,p0=r0,r0          // p6 <- pUStk
      > .work_processed_syscall:
      >         adds r2=PT(LOADRS)+16,r12
      > (pUStk) mov.m r22=ar.itc                        // fetch time at leave
      >         adds r18=TI_FLAGS+IA64_TASK_SIZE,r13
      >         ;;
      > <<< window: from here >>>
      > (p6)    ld4 r31=[r18]  // load current_thread_info()->flags
      >         ld8 r19=[r2],PT(B6)-PT(LOADRS)
      >         adds r3=PT(AR_BSPSTORE)+16,r12
      >         ;;
      >         mov r16=ar.bsp
      >         ld8 r18=[r2],PT(R9)-PT(B6)
      > (p6)    and r15=TIF_WORK_MASK,r31  // any work other than TIF_SYSCALL_TRACE?
      >         ;;
      >         ld8 r23=[r3],PT(R11)-PT(AR_BSPSTORE)
      > (p6)    cmp4.ne.unc p6,p0=r15, r0               // any special work pending?
      > (p6)    br.cond.spnt .work_pending_syscall
      >         ;;
      >         ld8 r9=[r2],PT(CR_IPSR)-PT(R9)
      >         ld8 r11=[r3],PT(CR_IIP)-PT(R11)
      > (pNonSys) break 0 // bug check: we shouldn't be here if pNonSys is TRUE!
      >         ;;
      >         invala
      > <<< window: to here >>>
      >         rsm psr.i | psr.ic // turn off interrupts and interruption collection
      
      If pUStk is true, it means we are going to return user mode, hence we fetch
      ar.itc to get time at leave from system.
      It seems that it is not possible to interrupt the window if pUStk is true,
      because interrupts are disabled early.  And also disabling interrupt makes
      sense because it is safe for referring current_thread_info()->flags.
      
      However interrupting the window while pUStk is true was possible.
      The route was:
      ia64_trace_syscall
      -> .work_pending_syscall_end
      -> .work_processed_syscall
      Only in case entering the window from this route, interrupts are enabled
      during in the window even if pUStk is true.  I suppose interrupts must be
      disabled here anyway if pUStk is true.
      I'm not sure but afraid that what kind of bad effect were there, other
      than crazy system time which I found.
      
      FYI, there was a commit 6f6d7582 that
      points out a bug at same point(exit of ia64_trace_syscall) in 2006.
      It can be said that there was an another bug.
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      38477ad7
  7. 19 4月, 2008 1 次提交
  8. 17 4月, 2008 1 次提交
  9. 16 4月, 2008 1 次提交
    • T
      [IA64] kdump: Add crash_save_vmcoreinfo for INIT · 072f042d
      Takao Indoh 提交于
      This patch fixes the problem that kdump by INIT does not work if we use
      makedumpfile. The problem is that after INIT is issued, 2nd kernel
      starts and makedumpfile fails with the following error message.
      
      /proc/vmcore doesn't contain vmcoreinfo.
      '-x' or '-i' must be specified.
      
      makedumpfile Failed.
      
      The cause of this problem is that kernel does not call
      crash_save_vmcoreinfo. When kdump starts by panic or sysrq-trigger,
      crash_save_vmcoreinfo is called by crash_kexec. But this function is not
      called when kdump starts by INIT. The Attached patch fixes this.
      
      This patch just adds crash_save_vmcoreinfo into machine_kdump_on_init so
      that crash_save_vmcoreinfo can be called when kdump starts by INIT.
      I tested this patch with linux-2.6.25-rc9 and I confirmed it worked.
      Signed-off-by: NTakao Indoh <indou.takao@jp.fujitsu.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      072f042d
  10. 12 4月, 2008 1 次提交
    • Z
      [IA64] Fix NUMA configuration issue · 98075d24
      Zoltan Menyhart 提交于
      There is a NUMA memory configuration issue in 2.6.24:
      
      A 2-node machine of ours has got the following memory layout:
      
      Node 0:	0 - 2 Gbytes
      Node 0:	4 - 8 Gbytes
      Node 1:	8 - 16 Gbytes
      Node 0:	16 - 18 Gbytes
      
      "efi_memmap_init()" merges the three last ranges into one.
      
      "register_active_ranges()" is called as follows:
      
      efi_memmap_walk(register_active_ranges, NULL);
      
      i.e. once for the 4 - 18 Gbytes range. It picks up the node
      number from the start address, and registers all the memory for
      the node #0.
      
      "register_active_ranges()" should be called as follows to
      make sure there is no merged address range at its entry:
      
      efi_memmap_walk(filter_memory, register_active_ranges);
      
      "filter_memory()" is similar to "filter_rsvd_memory()",
      but the reserved memory ranges are not filtered out.
      Signed-off-by: NZoltan Menyhart <Zoltan.Menyhart@bull.net>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      98075d24
  11. 10 4月, 2008 7 次提交
    • S
      [IA64] arch/ia64/kernel/: use time_* macros · 5cf1f7ce
      S.Caglar Onur 提交于
      The functions time_before, time_before_eq, time_after, and time_after_eq are
      more robust for comparing jiffies against other values.
      
      So use the time_after() & time_before() macros, defined at linux/jiffies.h,
      which deal with wrapping correctly
      
      [akpm@linux-foundation.org: coding-style fixes]
      Signed-off-by: NS.Caglar Onur <caglar@pardus.org.tr>
      Reviewed-by: NKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      5cf1f7ce
    • M
      [IA64] kprobes: kprobe-booster for ia64 · 34e1ceb1
      Masami Hiramatsu 提交于
      Add kprobe-booster support on ia64.
      
      Kprobe-booster improves the performance of kprobes by eliminating single-step,
      where possible.  Currently, kprobe-booster is implemented on x86 and x86-64.
      This is an ia64 port.
      
      On ia64, kprobe-booster executes a copied bundle directly, instead of single
      stepping.  Bundles which have B or X unit and which may cause an exception
      (including break) are not executed directly.  And also, to prevent hitting
      break exceptions on the copied bundle, only the hindmost kprobe is executed
      directly if several kprobes share a bundle and are placed in different slots.
      Note: set_brl_inst() is used for preparing an instruction buffer(it does not
      modify any active code), so it does not need any atomic operation.
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
      Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
      Cc: bibo,mao <bibo.mao@intel.com>
      Cc: Rusty Lynch <rusty.lynch@intel.com>
      Cc: Prasanna S Panchamukhi <prasanna@in.ibm.com>
      Cc: Jim Keniston <jkenisto@us.ibm.com>
      Cc: Shaohua Li <shaohua.li@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      34e1ceb1
    • P
      [IA64] fix getpid and set_tid_address fast system calls for pid namespaces · 96ded9da
      Pavel Emelyanov 提交于
      The sys_getpid() and sys_set_tid_address() behavior changed from
      
      	return current->tgid
      
      to
      
      	struct pid *pid;
      	pid = current->pids[PIDTYPE_PID].pid;
      	return pid->numbers[pid->level].nr;
      
      But the fast system calls on ia64 still operate the old way.  Patch them
      appropriately to let ia64 work with pid namespaces.  Besides, this is one more
      step in deprecating of pid and tgid on task_struct.
      
      The fsys_getppid() is to be patched as well, but its logic is much
      more complex now, so I will make it later.
      
      One thing I'm not 100% sure is the trick with the IA64_UPID_SHIFT.  On order
      to access the pid->level's element of an array I have to perform the following
      calculations
      
      	pid + sizeof(struct upid) * pid->level
      
      The problem is that ia64 can only multiply float point registers, while all
      the offsets I have in code are in rXX ones.  Fortunately, the sizeof(struct
      upid) is 32 bytes on ia64 (and is very unlikely to ever change), so the
      calculations get simpler:
      
      	pid + pid->level << 5
      
      So, I introduce the IA64_UPID_SHIFT and use the shl instruction.  I also
      looked at how gcc compiles the similar place and found that it makes it with
      shift as well.  Is this OK to do so?
      
      Tested with ski emulator with 2.6.24 kernel, but fits 2.6.25-rc4 and
      2.6.25-rc4-mm1 as well.
      Signed-off-by: NPavel Emelyanov <xemul@openvz.org>
      Cc: David Mosberger-Tang <davidm@hpl.hp.com>
      Cc: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Cc: Fenghua Yu <fenghua.yu@intel.com>
      Cc: Amy Griffis <amy.griffis@hp.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      96ded9da
    • L
      [IA64] use goto to jump out do/while_each_thread · 6794c752
      Li Zefan 提交于
      do_each_thread/while_each_thread is a double loop, so
      should use 'goto' rather than 'break' to break out
      the loop.
      Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      6794c752
    • A
      [IA64] Fix unlock ordering in smp_callin · e9145016
      Alan D. Brunelle 提交于
      One should normally unlock in the reverse order of the lock calls,
      and in this case there certainly is no reason not to.
      Signed-off-by: NAlan D. Brunelle <alan.brunelle@hp.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      e9145016
    • H
      [IA64] kdump: crash.c coding style fix · 3975afff
      Hidetoshi Seto 提交于
      Fix indenting of switch statement to follow Documentation/CodingStyle.
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      3975afff
    • H
      [IA64] kdump: add kdump_on_fatal_mca · b0247a55
      Hidetoshi Seto 提交于
      While it is convenient that we can invoke kdump by asserting INIT
      via button on chassis etc., there are some situations that invoking
      kdump on fatal MCA is not welcomed rather than rebooting fast without
      dump.
      
      This patch adds a new flag 'kdump_on_fatal_mca' that is independent
      from 'kdump_on_init' currently available.  Adding this flag enable
      us to turning on/off of kdump depend on the event, INIT and/or fatal
      MCA.  Default for this flag is to take the dump.
      Signed-off-by: NHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      b0247a55
  12. 09 4月, 2008 1 次提交
    • H
      [IA64] Minimize per_cpu reservations. · 2c6e6db4
      holt@sgi.com 提交于
      This attached patch significantly shrinks boot memory allocation on ia64.
      It does this by not allocating per_cpu areas for cpus that can never
      exist.
      
      In the case where acpi does not have any numa node description of the
      cpus, I defaulted to assigning the first 32 round-robin on the known
      nodes..  For the !CONFIG_ACPI  I used for_each_possible_cpu().
      Signed-off-by: NRobin Holt <holt@sgi.com>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      2c6e6db4
  13. 05 4月, 2008 2 次提交