1. 23 2月, 2009 5 次提交
    • I
      x86: remove the Voyager 32-bit subarch · 965c7eca
      Ingo Molnar 提交于
      Impact: remove unused/broken code
      
      The Voyager subarch last built successfully on the v2.6.26 kernel
      and has been stale since then and does not build on the v2.6.27,
      v2.6.28 and v2.6.29-rc5 kernels.
      
      No actual users beyond the maintainer reported this breakage.
      Patches were sent and most of the fixes were accepted but the
      discussion around how to do a few remaining issues cleanly
      fizzled out with no resolution and the code remained broken.
      
      In the v2.6.30 x86 tree development cycle 32-bit subarch support
      has been reworked and removed - and the Voyager code, beyond the
      build problems already known, needs serious and significant
      changes and probably a rewrite to support it.
      
      CONFIG_X86_VOYAGER has been marked BROKEN then. The maintainer has
      been notified but no patches have been sent so far to fix it.
      
      While all other subarchs have been converted to the new scheme,
      voyager is still broken. We'd prefer to receive patches which
      clean up the current situation in a constructive way, but even in
      case of removal there is no obstacle to add that support back
      after the issues have been sorted out in a mutually acceptable
      fashion.
      
      So remove this inactive code for now.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      965c7eca
    • R
      x86: improve the help text of X86_EXTENDED_PLATFORM · 8425091f
      Ravikiran G Thirumalai 提交于
      Change the CONFIG_X86_EXTENDED_PLATFORM help text to display the
      32bit/64bit extended platform list. This is as suggested by Ingo.
      Signed-off-by: NRavikiran Thirumalai <kiran@scalex86.org>
      Cc: shai@scalex86.org
      Cc: "Benzi Galili (Benzi@ScaleMP.com)" <benzi@scalemp.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      8425091f
    • R
      PM: Split up sysdev_[suspend|resume] from device_power_[down|up] · 770824bd
      Rafael J. Wysocki 提交于
      Move the sysdev_suspend/resume from the callee to the callers, with
      no real change in semantics, so that we can rework the disabling of
      interrupts during suspend/hibernation.
      
      This is based on an earlier patch from Linus.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      770824bd
    • L
      x86: Add IRQF_TIMER to legacy x86 timer interrupt descriptors · 936577c6
      Linus Torvalds 提交于
      Right now nobody cares, but the suspend/resume code will eventually want
      to suspend device interrupts without suspending the timer, and will
      depend on this flag to know.
      
      The modern x86 timer infrastructure uses the local APIC timers and never
      shows up as a device interrupt at all, so it isn't affected and doesn't
      need any of this.
      
      Cc: Rafael J. Wysocki <rjw@sisk.pl>
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      936577c6
    • S
      x86: select x2apic ops in early apic probe only if x2apic mode is enabled · ef1f87aa
      Suresh Siddha 提交于
      If BIOS hands over the control to OS in legacy xapic mode, select
      legacy xapic related ops in the early apic probe and shift to x2apic
      ops later in the boot sequence, only after enabling x2apic mode.
      
      If BIOS hands over the control in x2apic mode, select x2apic related
      ops in the early apic probe.
      
      This fixes the early boot panic, where we were selecting x2apic ops,
      while the cpu is still in legacy xapic mode.
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      ef1f87aa
  2. 22 2月, 2009 2 次提交
  3. 21 2月, 2009 1 次提交
    • H
      x86, mce: remove incorrect __cpuinit for mce_cpu_features() · cc3ca220
      H. Peter Anvin 提交于
      Impact: Bug fix on UP
      
      Checkin 6ec68bff:
          x86, mce: reinitialize per cpu features on resume
      
      introduced a call to mce_cpu_features() in the resume path, in order
      for the MCE machinery to get properly reinitialized after a resume.
      However, this function (and its successors) was flagged __cpuinit,
      which becomes __init on UP configurations (on SMP suspend/resume
      requires CPU hotplug and so this would not be seen.)
      
      Remove the offending __cpuinit annotations for mce_cpu_features() and
      its successor functions.
      
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      cc3ca220
  4. 20 2月, 2009 2 次提交
    • I
      x86: use the right protections for split-up pagetables · 07a66d7c
      Ingo Molnar 提交于
      Steven Rostedt found a bug in where in his modified kernel
      ftrace was unable to modify the kernel text, due to the PMD
      itself having been marked read-only as well in
      split_large_page().
      
      The fix, suggested by Linus, is to not try to 'clone' the
      reference protection of a huge-page, but to use the standard
      (and permissive) page protection bits of KERNPG_TABLE.
      
      The 'cloning' makes sense for the ptes but it's a confused and
      incorrect concept at the page table level - because the
      pagetable entry is a set of all ptes and hence cannot
      'clone' any single protection attribute - the ptes can be any
      mixture of protections.
      
      With the permissive KERNPG_TABLE, even if the pte protections
      get changed after this point (due to ftrace doing code-patching
      or other similar activities like kprobes), the resulting combined
      protections will still be correct and the pte's restrictive
      (or permissive) protections will control it.
      
      Also update the comment.
      
      This bug was there for a long time but has not caused visible
      problems before as it needs a rather large read-only area to
      trigger. Steve possibly hacked his kernel with some really
      large arrays or so. Anyway, the bug is definitely worth fixing.
      
      [ Huang Ying also experienced problems in this area when writing
        the EFI code, but the real bug in split_large_page() was not
        realized back then. ]
      Reported-by: NSteven Rostedt <rostedt@goodmis.org>
      Reported-by: NHuang Ying <ying.huang@intel.com>
      Acked-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      07a66d7c
    • A
      x86, vmi: TSC going backwards check in vmi clocksource · 48ffc70b
      Alok N Kataria 提交于
      Impact: fix time warps under vmware
      
      Similar to the check for TSC going backwards in the TSC clocksource,
      we also need this check for VMI clocksource.
      Signed-off-by: NAlok N Kataria <akataria@vmware.com>
      Cc: Zachary Amsden <zach@vmware.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Cc: stable@kernel.org
      48ffc70b
  5. 19 2月, 2009 1 次提交
    • K
      mm: clean up for early_pfn_to_nid() · f2dbcfa7
      KAMEZAWA Hiroyuki 提交于
      What's happening is that the assertion in mm/page_alloc.c:move_freepages()
      is triggering:
      
      	BUG_ON(page_zone(start_page) != page_zone(end_page));
      
      Once I knew this is what was happening, I added some annotations:
      
      	if (unlikely(page_zone(start_page) != page_zone(end_page))) {
      		printk(KERN_ERR "move_freepages: Bogus zones: "
      		       "start_page[%p] end_page[%p] zone[%p]\n",
      		       start_page, end_page, zone);
      		printk(KERN_ERR "move_freepages: "
      		       "start_zone[%p] end_zone[%p]\n",
      		       page_zone(start_page), page_zone(end_page));
      		printk(KERN_ERR "move_freepages: "
      		       "start_pfn[0x%lx] end_pfn[0x%lx]\n",
      		       page_to_pfn(start_page), page_to_pfn(end_page));
      		printk(KERN_ERR "move_freepages: "
      		       "start_nid[%d] end_nid[%d]\n",
      		       page_to_nid(start_page), page_to_nid(end_page));
       ...
      
      And here's what I got:
      
      	move_freepages: Bogus zones: start_page[2207d0000] end_page[2207dffc0] zone[fffff8103effcb00]
      	move_freepages: start_zone[fffff8103effcb00] end_zone[fffff8003fffeb00]
      	move_freepages: start_pfn[0x81f600] end_pfn[0x81f7ff]
      	move_freepages: start_nid[1] end_nid[0]
      
      My memory layout on this box is:
      
      [    0.000000] Zone PFN ranges:
      [    0.000000]   Normal   0x00000000 -> 0x0081ff5d
      [    0.000000] Movable zone start PFN for each node
      [    0.000000] early_node_map[8] active PFN ranges
      [    0.000000]     0: 0x00000000 -> 0x00020000
      [    0.000000]     1: 0x00800000 -> 0x0081f7ff
      [    0.000000]     1: 0x0081f800 -> 0x0081fe50
      [    0.000000]     1: 0x0081fed1 -> 0x0081fed8
      [    0.000000]     1: 0x0081feda -> 0x0081fedb
      [    0.000000]     1: 0x0081fedd -> 0x0081fee5
      [    0.000000]     1: 0x0081fee7 -> 0x0081ff51
      [    0.000000]     1: 0x0081ff59 -> 0x0081ff5d
      
      So it's a block move in that 0x81f600-->0x81f7ff region which triggers
      the problem.
      
      This patch:
      
      Declaration of early_pfn_to_nid() is scattered over per-arch include
      files, and it seems it's complicated to know when the declaration is used.
       I think it makes fix-for-memmap-init not easy.
      
      This patch moves all declaration to include/linux/mm.h
      
      After this,
        if !CONFIG_NODES_POPULATES_NODE_MAP && !CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
           -> Use static definition in include/linux/mm.h
        else if !CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
           -> Use generic definition in mm/page_alloc.c
        else
           -> per-arch back end function will be called.
      Signed-off-by: NKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Tested-by: NKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Reported-by: NDavid Miller <davem@davemlloft.net>
      Cc: Mel Gorman <mel@csn.ul.ie>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: <stable@kernel.org>		[2.6.25.x, 2.6.26.x, 2.6.27.x, 2.6.28.x]
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f2dbcfa7
  6. 18 2月, 2009 23 次提交
    • A
      x86, mce: fix ifdef for 64bit thermal apic vector clear on shutdown · 07db1c14
      Andi Kleen 提交于
      Impact: Bugfix
      
      The ifdef for the apic clear on shutdown for the 64bit intel thermal
      vector was incorrect and never triggered. Fix that.
      Signed-off-by: NAndi Kleen <ak@linux.intel.com>
      Acked-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      07db1c14
    • A
      x86, mce: use force_sig_info to kill process in machine check · 380851bc
      Andi Kleen 提交于
      Impact: bug fix (with tolerant == 3)
      
      do_exit cannot be called directly from the exception handler because
      it can sleep and the exception handler runs on the exception stack.
      Use force_sig() instead.
      
      Based on a earlier patch by Ying Huang who debugged the problem.
      Signed-off-by: NAndi Kleen <ak@linux.intel.com>
      Acked-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      380851bc
    • A
      x86, mce: reinitialize per cpu features on resume · 6ec68bff
      Andi Kleen 提交于
      Impact: Bug fix
      
      This fixes a long standing bug in the machine check code. On resume the
      boot CPU wouldn't get its vendor specific state like thermal handling
      reinitialized. This means the boot cpu wouldn't ever get any thermal
      events reported again.
      
      Call the respective initialization functions on resume
      
      v2: Remove ancient init because they don't have a resume device anyways.
          Pointed out by Thomas Gleixner.
      v3: Now fix the Subject too to reflect v2 change
      Signed-off-by: NAndi Kleen <ak@linux.intel.com>
      Acked-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      6ec68bff
    • I
      x86, apic: separate 32-bit setup functionality out of apic_32.c · 9be1b56a
      Ingo Molnar 提交于
      Impact: build fix, cleanup
      
      A couple of arch setup callbacks were mistakenly in apic_32.c, breaking
      the build.
      
      Also simplify the code a bit.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      9be1b56a
    • P
      x86, rcu: fix strange load average and ksoftirqd behavior · bf51935f
      Paul E. McKenney 提交于
      Damien Wyart reported high ksoftirqd CPU usage (20%) on an
      otherwise idle system.
      
      The function-graph trace Damien provided:
      
      >   799.521187 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.521371 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.521555 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.521738 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.521934 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.522068 |   1)  ksoftir-2324  |               |                rcu_check_callbacks() {
      >   799.522208 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.522392 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.522575 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.522759 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.522956 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.523074 |   1)  ksoftir-2324  |               |                  rcu_check_callbacks() {
      >   799.523214 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.523397 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.523579 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.523762 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.523960 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.524079 |   1)  ksoftir-2324  |               |                  rcu_check_callbacks() {
      >   799.524220 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.524403 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.524587 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      >   799.524770 |   1)    <idle>-0    |               |  rcu_check_callbacks() {
      > [ . . . ]
      
      Shows rcu_check_callbacks() being invoked way too often. It should be called
      once per jiffy, and here it is called no less than 22 times in about
      3.5 milliseconds, meaning one call every 160 microseconds or so.
      
      Why do we need to call rcu_pending() and rcu_check_callbacks() from the
      idle loop of 32-bit x86, especially given that no other architecture does
      this?
      
      The following patch removes the call to rcu_pending() and
      rcu_check_callbacks() from the x86 32-bit idle loop in order to
      reduce the softirq load on idle systems.
      Reported-by: NDamien Wyart <damien.wyart@free.fr>
      Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      bf51935f
    • I
      x86, apic: move remaining APIC drivers to arch/x86/kernel/apic/* · 2a05180f
      Ingo Molnar 提交于
      Move the 32-bit extended-arch APIC drivers to arch/x86/kernel/apic/
      too, and rename apic_64.c to probe_64.c.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      2a05180f
    • I
      x86, apic: move APIC drivers to arch/x86/kernel/apic/* · f62bae50
      Ingo Molnar 提交于
      arch/x86/kernel/ is getting a bit crowded, and the APIC
      drivers are scattered into various different files.
      
      Move them to arch/x86/kernel/apic/*, and also remove
      the 'gen' prefix from those which had it.
      
      Also move APIC related functionality: the IO-APIC driver,
      the NMI and the IPI code.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      f62bae50
    • I
      x86, apic: rename 'genapic' to 'apic' · be163a15
      Ingo Molnar 提交于
      Impact: cleanup
      
      Now that all APIC code is consolidated there's nothing 'gen' about
      apics anymore - so rename 'struct genapic' to 'struct apic'.
      
      This shortens the code and is nicer to read as well.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      be163a15
    • I
      x86, apic: remove ->store_NMI_vector() · ab6fb7c0
      Ingo Molnar 提交于
      Impact: cleanup
      
      It's not used by anything anymore.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      ab6fb7c0
    • I
      x86, numaq_32: clean up, misc · cb81eaed
      Ingo Molnar 提交于
      Impact: cleanup
      
       - misc other cleanups that change the md5 signature
       - consolidate global variables
       - remove unnecessary __numaq_mps_oem_check() wrapper
       - make numaq_mps_oem_check static
       - update copyrights
       - misc other cleanups pointed out by checkpatch
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      cb81eaed
    • I
      x86, numaq_32: clean up · 36afc3af
      Ingo Molnar 提交于
      Impact: cleanup
      
      - refactor smp_dump_qct()
      - tidy up include files, remove duplicates
      - misc other cleanups, pointed out by checkpatch
      
      No code changed:
      
      md5:
         9c0bc01a53558c77df0f2ebcda7e11a9  numaq_32.o.before.asm
         9c0bc01a53558c77df0f2ebcda7e11a9  numaq_32.o.after.asm
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      36afc3af
    • I
      x86, es7000: misc cleanups · 7da18ed9
      Ingo Molnar 提交于
      These are cleanups that change the md5 signature:
      
       - asm/ => linux/ include conversion
       - simplify the code flow of find_unisys_acpi_oem_table()
       - move ACPI methods into one #ifdef block
       - remove 0/NULL initialization of statics
       - simplify/standardize printouts
       - update copyrights
       - more cleanups, pointed out by checkpatch
      
      arch/x86/kernel/es7000_32.o:
      
         text	   data	    bss	    dec	    hex	filename
         2693	    192	     44	   2929	    b71	es7000_32.o.before
         2688	    192	     44	   2924	    b6c	es7000_32.o.after
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      7da18ed9
    • I
      x86, es7000: remove dead code, clean up · 352887d1
      Ingo Molnar 提交于
      Impact: cleanup
      
       - a number of structure definitions were stale
       - remove needless wrappers around apic definitions
       - fix details noticed by checkpatch
      
      No code changed:
      
      md5:
         029d8fde0aaf6e934ea63bd8b36430fd  es7000_32.o.before.asm
         029d8fde0aaf6e934ea63bd8b36430fd  es7000_32.o.after.asm
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      352887d1
    • I
      x86, es7000: remove externs · d3185b37
      Ingo Molnar 提交于
      Impact: cleanup
      
      In the subarch times there were a number of externs between
      various bits of the ES7000 code. Now that there's a single
      es7000-platform support file, the externs can be removed and
      the functions can be changed the statics.
      
      Beyond the cleanup factor, this also shrinks the size of the
      kernel image a bit:
      
      arch/x86/kernel/es7000_32.o:
      
         text	   data	    bss	    dec	    hex	filename
         2813	    192	     44	   3049	    be9	es7000_32.o.before
         2693	    192	     44	   2929	    b71	es7000_32.o.after
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      d3185b37
    • I
      x86, apic: remove apicid_cluster() · b9e0d1aa
      Ingo Molnar 提交于
      There were multiple definitions of apicid_cluster() scattered around
      in APIC drivers - but the definitions are equivalent to the already
      existing generic APIC_CLUSTER() method.
      
      So remove apicid_cluster() and change all users to APIC_CLUSTER().
      
      No code changed:
      
      md5:
         1b8244ba8d3d6a454593ce10f09dfa58  summit_32.o.before.asm
         1b8244ba8d3d6a454593ce10f09dfa58  summit_32.o.after.asm
      
      md5:
         a593d98a882bf534622c70d9568497ac  es7000_32.o.before.asm
         a593d98a882bf534622c70d9568497ac  es7000_32.o.after.asm
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      b9e0d1aa
    • I
      x86, es7000: clean up · 2c4ce18c
      Ingo Molnar 提交于
      No code changed:
      
      arch/x86/kernel/es7000_32.o:
      
         text	   data	    bss	    dec	    hex	filename
         2813	    192	     44	   3049	    be9	es7000_32.o.before
         2813	    192	     44	   3049	    be9	es7000_32.o.after
      
      md5:
         a593d98a882bf534622c70d9568497ac  es7000_32.o.before.asm
         a593d98a882bf534622c70d9568497ac  es7000_32.o.after.asm
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      2c4ce18c
    • I
      x86, apic: clean up the cpu_2_logical_apiciddeclaration · 2f205bc4
      Ingo Molnar 提交于
      extern declarations were scattered in 4 files - consolidate them
      into apic.h.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      2f205bc4
    • I
      x86, apic: clean up arch/x86/kernel/bigsmp_32.c · 77313190
      Ingo Molnar 提交于
      Impact: cleanup
      
      - remove unnecessary indirections that were artifacts of the subarch code
      - clean up include file section
      - clean up various small details
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      77313190
    • I
      x86, apic: remove stale references to APIC_DEFINITION · 5c615feb
      Ingo Molnar 提交于
      Impact: cleanup
      
      APIC_DEFINITION was a hack from the x86 subarch times, it has no
      meaning anymore - remove it.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      5c615feb
    • I
      x86, apic: remove duplicate asm/apic.h inclusions · e641f5f5
      Ingo Molnar 提交于
      Impact: cleanup
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e641f5f5
    • I
      x86, apic: remove genapic.h · 7b6aa335
      Ingo Molnar 提交于
      Impact: cleanup
      
      Remove genapic.h and remove all references to it.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      7b6aa335
    • I
      x86, apic: merge genapic.h into apic.h · e2780a68
      Ingo Molnar 提交于
      Impact: cleanup
      
      Reduce the number of include files to worry about.
      Also, most of the users of APIC facilities had to
      include genapic.h already, which embedded apic.h,
      so the distinction was meaningless.
      
      [ include apic.h from genapic.h for compatibility. ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e2780a68
    • I
      remove: genapic prepare · 28aa29ee
      Ingo Molnar 提交于
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      28aa29ee
  7. 17 2月, 2009 4 次提交
  8. 16 2月, 2009 2 次提交