1. 18 10月, 2007 11 次提交
    • M
      x86: Calgary: fix disable busnum for CalIOC2 · d588ba8c
      Muli Ben-Yehuda 提交于
      The old check we used based on dev->bus->number is wrong for devices on
      CalIOC2.  Instead look whether we have an IOMMU table for that bus - if
      not, translation is disabled.
      
      Thanks to Murillo Fernandes Bernardes <bernarde@br.ibm.com> for
      spotting, suggesting a fix and testing.
      Signed-off-by: NMuli Ben-Yehuda <muli@il.ibm.com>
      Acked-by: NMurillo Fernandes Bernardes <bernarde@br.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      d588ba8c
    • I
      x86: prepare page allocator for high allocations on PAGEALLOC=y · 1e3e1972
      Ingo Molnar 提交于
      To preserve the DMA pool in CONFIG_DEBUG_PAGEALLOC=y kernels, we'll
      allocate pagetables from above the 16MB DMA limit, so we'll have to set
      up boot pagetables to cover 16MB more RAM (worst-case).
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      1e3e1972
    • I
      x86: do not crash on non-Geode PCs in TSC probe · f97586b6
      Ingo Molnar 提交于
      with this fix Geode kernels can be booted (and QA-ed) on generic PCs.
      
      otherwise it crashes and burns during early bootup:
      
      Detected 2160.212 MHz processor.
      general protection fault: 0000 [#1]
      PREEMPT SMP
      Modules linked in:
      CPU:    0
      EIP:    0060:[<c09071f6>]    Not tainted VLI
      EFLAGS: 00010002   (2.6.23-rc9 #90)
      EIP is at tsc_init+0xa6/0x150
      eax: 00000001   ebx: c1dce000   ecx: 00001900   edx: 00000001
      esi: 00051000   edi: 00051000   ebp: c08fdfc4   esp: c08fdfa4
      ds: 007b   es: 007b   fs: 00d8  gs: 0000  ss: 0068
      Process swapper (pid: 0, ti=c08fc000 task=c082a180 task.ti=c08fc000)
      Stack: c076b870 00000870 000000d4 0000001d c0831e80 c1dce000 00051000 00051000
             c08fdfcc c09053f8 c08fdff8 c09045ff 000001e2 c09040a0 00051000 00000020
             0004e500 c0932140 00020800 00099800 c08ed000 01409007 00000000
      Call Trace:
       [<c010517a>] show_trace_log_lvl+0x1a/0x30
       [<c0105246>] show_stack_log_lvl+0xb6/0x100
       [<c0105732>] show_registers+0x212/0x3a0
       [<c0105aa4>] die+0x104/0x220
       [<c0105f5f>] do_general_protection+0x1ef/0x2b0
       [<c06699f2>] error_code+0x72/0x78
       [<c09053f8>] time_init+0x8/0x20
       [<c09045ff>] start_kernel+0x1af/0x320
       [<00000000>] 0x0
       =======================
      Code: 31 d2 b8 00 00 09 3d f7 35 2c 70 9b c0 a3 04 95 8f c0 e8 ce 4e 99 ff b8 e0 45 93 c0 e8 94 b1 c5 ff e8 7f 3d 80 ff b9 00 19 00 00 <0f> 32 f6 c4 01 74 07 83 25 24 ce 82 c0 fd 8b 0d 20 ce 82 c0 b8
      EIP: [<c09071f6>] tsc_init+0xa6/0x150 SS:ESP 0068:c08fdfa4
      Kernel panic - not syncing: Attempted to kill the idle task!
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      f97586b6
    • I
      x86: enable NMI watchdog on nosmp · 3fb450a3
      Ingo Molnar 提交于
      if nosmp has been passed as a boot option, but nmi_watchdog=2 has also
      been enabled then keep minimal local APIC functionality around to make
      the watchdog work.
      
      this allowed me to debug a hard hang that would only occur with a nosmp
      bootup.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      3fb450a3
    • F
      x86: call free_init_pages() with irqs enabled in alternative_instructions() · f68fd5f4
      Fengguang Wu 提交于
      In alternative_instructions(), call free_init_pages() with irqs enabled.
      
      It fixes the warning message in smp_call_function*(), which should not be
      called with irqs disabled.
      
      [    0.310000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
      [    0.310000] CPU: L2 Cache: 512K (64 bytes/line)
      [    0.310000] CPU 0/0 -> Node 0
      [    0.310000] SMP alternatives: switching to UP code
      [    0.310000] Freeing SMP alternatives: 25k freed
      [    0.310000] WARNING: at arch/x86_64/kernel/smp.c:397 smp_call_function_mask()
      [    0.310000]
      [    0.310000] Call Trace:
      [    0.310000]  [<ffffffff8100dbde>] dump_trace+0x3ee/0x4a0
      [    0.310000]  [<ffffffff8100dcd3>] show_trace+0x43/0x70
      [    0.310000]  [<ffffffff8100dd15>] dump_stack+0x15/0x20
      [    0.310000]  [<ffffffff8101cd44>] smp_call_function_mask+0x94/0xa0
      [    0.310000]  [<ffffffff8101d0b2>] smp_call_function+0x32/0x40
      [    0.310000]  [<ffffffff8104277f>] on_each_cpu+0x1f/0x50
      [    0.310000]  [<ffffffff81026eac>] global_flush_tlb+0x8c/0x110
      [    0.310000]  [<ffffffff81025c85>] free_init_pages+0xe5/0xf0
      [    0.310000]  [<ffffffff81549b5e>] alternative_instructions+0x7e/0x150
      [    0.310000]  [<ffffffff8154a2ea>] check_bugs+0x1a/0x20
      [    0.310000]  [<ffffffff81540c4a>] start_kernel+0x2da/0x380
      [    0.310000]  [<ffffffff81540132>] _sinittext+0x132/0x140
      [    0.310000]
      [    0.320000] ACPI: Core revision 20070126
      [    0.560000] Using local APIC timer interrupts.
      [    0.590000] Detected 62.496 MHz APIC timer.
      [    0.590000] Brought up 1 CPUs
      
      [ tglx: arch/x86 adaptation ]
      
      Cc: Laurent Vivier <Laurent.Vivier@bull.net>
      Cc: Andi Kleen <ak@suse.de>
      Signed-off-by: NFengguang Wu <wfg@mail.ustc.edu.cn>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      f68fd5f4
    • A
      x86: return correct error code from child_rip in x86_64 entry.S · 1c5b5cfd
      Andrey Mirkin 提交于
      Right now register edi is just cleared before calling do_exit.
      That is wrong because correct return value will be ignored.
      Value from rax should be copied to rdi instead of clearing edi.
      
      AK: changed to 32bit move because it's strictly an int
      
      [ tglx: arch/x86 adaptation ]
      Signed-off-by: NAndrey Mirkin <major@openvz.org>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      1c5b5cfd
    • S
      i386: fix section mismatch warning in intel.c · d72b1b4f
      Sam Ravnborg 提交于
      Fix following section mismatch warning:
      WARNING: vmlinux.o(.text+0xc88c): Section mismatch: reference to .init.text:trap_init_f00f_bug (between 'init_intel' and 'cpuid4_cache_lookup')
      
      init_intel are __cpuint where trap_init_f00f_bug is __init.
      Fixed by declaring trap_init_f00f_bug __cpuinit.
      
      Moved the defintion of trap_init_f00f_bug to the sole user in init.c
      so the ugly prototype in intel.c could get killed.
      
      Frank van Maarseveen <frankvm@frankvm.com> supplied the .config used
      to reproduce the warning.
      
      [ tglx: arch/x86 adaptation ]
      
      Cc: Frank van Maarseveen <frankvm@frankvm.com>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      d72b1b4f
    • S
      i386: Fix section mismatch · 25d1b516
      Satyam Sharma 提交于
      Fix bugzilla #8679
      
      WARNING: arch/i386/kernel/built-in.o(.data+0x2148): Section mismatch: reference
      to .init.text: (between 'thermal_throttle_cpu_notifier' and 'mtrr_mutex')
      
      comes because struct notifier_block thermal_throttle_cpu_notifier in
      arch/i386/kernel/cpu/mcheck/therm_throt.c goes in .data section but the
      notifier callback function itself has been marked __cpuinit which becomes
      __init == .init.text when HOTPLUG_CPU=n.  The warning is bogus because the
      callback will never be called out if HOTPLUG_CPU=n in the first place (as
      one can see from kernel/cpu.c, the cpu_chain itself is __cpuinitdata :-)
      
      So, let's mark thermal_throttle_cpu_notifier as __cpuinitdata to fix
      the section mismatch warning.
      
      [ tglx: arch/x86 adaptation ]
      Signed-off-by: NSatyam Sharma <satyam@infradead.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      25d1b516
    • L
      i386: export i386 smp_call_function_mask() to modules · 6442eea9
      Laurent Vivier 提交于
      This patch export i386 smp_call_function_mask() with EXPORT_SYMBOL().
      
      This function is needed by KVM to call a function on a set of CPUs.
      
      [ tglx: arch/x86 adaptation ]
      Signed-off-by: NLaurent Vivier <Laurent.Vivier@bull.net>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      6442eea9
    • A
      i386: setup_trampoline() must be __cpuinit · 8957ecab
      Adrian Bunk 提交于
      WARNING: arch/i386/kernel/built-in.o(.text+0xf201): Section mismatch: reference to .init.data:trampoline_end (between 'setup_trampoline' and 'cpu_coregroup_map')
      WARNING: arch/i386/kernel/built-in.o(.text+0xf207): Section mismatch: reference to .init.data:trampoline_data (between 'setup_trampoline' and 'cpu_coregroup_map')
      WARNING: arch/i386/kernel/built-in.o(.text+0xf21a): Section mismatch: reference to .init.data:trampoline_data (between 'setup_trampoline' and 'cpu_coregroup_map')
      
      Harmless but annoying warnings present when building an i386 SMP kernel
      with CONFIG_HOTPLUG_CPU=n and gcc < 4.0 .
      
      [ tglx: arch/x86 adaptation ]
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      8957ecab
    • T
      x86: C1E late detection fix. Really switch off lapic timer · 3dfbc884
      Thomas Gleixner 提交于
      Doh, I completely missed that devices marked DUMMY are not running
      the set_mode function. So we force broadcasting, but we keep the
      local APIC timer running.
      
      Let the clock event layer mark the device _after_ switching it off.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      3dfbc884
  2. 17 10月, 2007 10 次提交
  3. 16 10月, 2007 3 次提交
  4. 15 10月, 2007 4 次提交
    • T
      x86: force timer broadcast on late AMD C1E detection · 89039b37
      Thomas Gleixner 提交于
      The 64bit SMP bootup is slightly different to the 32bit one. It enables
      the boot CPU local APIC timer before all CPUs are brought up. Some AMD C1E
      systems have the C1E feature flag only set in the secondary CPU. Due to
      the early enable of the boot CPU local APIC timer the APIC timer is
      registered as a fully functional device. When we detect the wreckage during
      the bringup of the secondary CPU, we need to force the boot CPU into
      broadcast mode. 
      
      Check the C1E caused APIC timer disable, when the secondary APIC timer is
      initialized. If the boot CPU APIC timer was registered as a functional
      clock event device, then fix this up and utilize the
      CLOCK_EVT_NOTIFY_BROADCAST_FORCE mechanism to force the already
      registered boot CPU APIC timer into broadcast mode.
      
      Tested by force injecting the failure mode.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      89039b37
    • T
      x86: move local APIC timer init to the end of start_secondary() · 3ac508be
      Thomas Gleixner 提交于
      Preparatory patch for the AMD C1E wreckage fixup.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      3ac508be
    • D
      x86: fix missing include for vsyscall · b097976e
      Dave Jones 提交于
       > Maybe I just picked a bad time to try, but...
       > 
       > arch/x86/kernel/alternative.c: In function 'apply_alternatives':
       > arch/x86/kernel/alternative.c:191: error: 'VSYSCALL_START' undeclared (first use in this function)
       > arch/x86/kernel/alternative.c:191: error: (Each undeclared identifier is reported only once
       > arch/x86/kernel/alternative.c:191: error: for each function it appears in.)
       > arch/x86/kernel/alternative.c:191: error: 'VSYSCALL_END' undeclared (first use in this function)
       > make[1]: *** [arch/x86/kernel/alternative.o] Error 1
       > make: *** [arch/x86/kernel] Error 2
      
      Try this.
      
      Include missing header for vsyscall.
      Signed-off-by: NDave Jones <davej@redhat.com>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      b097976e
    • A
      long vs. unsigned long - low-hanging fruits in drivers · 64b33619
      Al Viro 提交于
      deal with signedness of the stuff passed to set_bit() et.al.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      64b33619
  5. 14 10月, 2007 1 次提交
    • D
      Delete filenames in comments. · 835c34a1
      Dave Jones 提交于
      Since the x86 merge, lots of files that referenced their own filenames
      are no longer correct.  Rather than keep them up to date, just delete
      them, as they add no real value.
      
      Additionally:
      - fix up comment formatting in scx200_32.c
      - Remove a credit from myself in setup_64.c from a time when we had no SCM
      - remove longwinded history from tsc_32.c which can be figured out from
        git.
      Signed-off-by: NDave Jones <davej@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      835c34a1
  6. 13 10月, 2007 11 次提交