1. 29 1月, 2009 8 次提交
  2. 28 1月, 2009 5 次提交
  3. 27 1月, 2009 16 次提交
  4. 26 1月, 2009 5 次提交
    • R
      x86: fix section mismatch warning · 659d2618
      Rakib Mullick 提交于
      Here function vmi_activate calls a init function activate_vmi , which
      causes the following section mismatch warnings:
      
        LD      arch/x86/kernel/built-in.o
      WARNING: arch/x86/kernel/built-in.o(.text+0x13ba9): Section mismatch
      in reference from the function vmi_activate() to the function
      .init.text:vmi_time_init()
      The function vmi_activate() references
      the function __init vmi_time_init().
      This is often because vmi_activate lacks a __init
      annotation or the annotation of vmi_time_init is wrong.
      
      WARNING: arch/x86/kernel/built-in.o(.text+0x13bd1): Section mismatch
      in reference from the function vmi_activate() to the function
      .devinit.text:vmi_time_bsp_init()
      The function vmi_activate() references
      the function __devinit vmi_time_bsp_init().
      This is often because vmi_activate lacks a __devinit
      annotation or the annotation of vmi_time_bsp_init is wrong.
      
      WARNING: arch/x86/kernel/built-in.o(.text+0x13bdb): Section mismatch
      in reference from the function vmi_activate() to the function
      .devinit.text:vmi_time_ap_init()
      The function vmi_activate() references
      the function __devinit vmi_time_ap_init().
      This is often because vmi_activate lacks a __devinit
      annotation or the annotation of vmi_time_ap_init is wrong.
      
      Fix it by marking vmi_activate() as __init too.
      Signed-off-by: NRakib Mullick <rakib.mullick@gmail.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      659d2618
    • I
      x86: unmask CPUID levels on Intel CPUs, fix · 99fb4d34
      Ingo Molnar 提交于
      Impact: fix boot hang on pre-model-15 Intel CPUs
      
      rdmsrl_safe() does not work in very early bootup code yet, because we
      dont have the pagefault handler installed yet so exception section
      does not get parsed. rdmsr_safe() will just crash and hang the bootup.
      
      So limit the MSR_IA32_MISC_ENABLE MSR read to those CPU types that
      support it.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      99fb4d34
    • T
      libata-sff: fix incorrect EH message · 80ee6f54
      Tejun Heo 提交于
      The EH message for NODEV_HINT path was describing the opposite
      condition.  Fix it.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      80ee6f54
    • E
      x86: work around PAGE_KERNEL_WC not getting WC in iomap_atomic_prot_pfn. · ef5fa0ab
      Eric Anholt 提交于
      In the absence of PAT, PAGE_KERNEL_WC ends up mapping to a memory type that
      gets UC behavior even in the presence of a WC MTRR covering the area in
      question.  By swapping to PAGE_KERNEL_UC_MINUS, we can get the actual
      behavior the caller wanted (WC if you can manage it, UC otherwise).
      
      This recovers the 40% performance improvement of using WC in the DRM
      to upload vertex data.
      Signed-off-by: NEric Anholt <eric@anholt.net>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      ef5fa0ab
    • R
      [ARM] fix section-based ioremap · 24f11ec0
      Russell King 提交于
      Tomi Valkeinen reports:
        Running with latest linux-omap kernel on OMAP3 SDP board, I have
        problem with iounmap(). It looks like iounmap() does not properly
        free large areas. Below is a test which fails for me in 6-7 loops.
      
      	for (i = 0; i < 200; ++i) {
      		vaddr = ioremap(paddr, size);
      		if (!vaddr) {
      			printk("couldn't ioremap\n");
      			break;
      		}
      		iounmap(vaddr);
      	}
      
      The changes to vmalloc.c weren't reflected in the ARM ioremap
      implementation.  Turns out the fix is rather simple.
      Tested-by: NTomi Valkeinen <tomi.valkeinen@nokia.com>
      Tested-by: NMatt Gerassimoff <mgeras@gmail.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      24f11ec0
  5. 25 1月, 2009 2 次提交
  6. 24 1月, 2009 4 次提交
    • R
      [ARM] clkdev: fix clock matching · 409dc360
      Russell King 提交于
      The old matching algorithm was too fuzzy, causing false positives.
      For example, when asked for device D connection C1 and we only find
      device D connection C2, we return that as a valid match despite the
      connection names being different.
      
      Change the algorithm such that:
        An entry with a NULL ID is assumed to be a wildcard.
        If an entry has a device ID, it must match
        If an entry has a connection ID, it must match
      
      However, we maintain the order of precidence while still only doing
      a single pass over all entries: dev+con > dev only > con only.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      409dc360
    • D
      [ARM] 5368/1: arch/arm/mach-davinci/usb.c buildfix · d0e58ae7
      David Brownell 提交于
      From: David Brownell <dbrownell@users.sourceforge.net>
      Subject: ARM/mach-davinci/usb.c buildfix
      
        CC      arch/arm/mach-davinci/usb.o
      arch/arm/mach-davinci/usb.c:60: error: 'IRQ_USBINT' undeclared here (not in a function)
      make[1]: *** [arch/arm/mach-davinci/usb.o] Error 1
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      d0e58ae7
    • R
      [ARM] fix StrongARM-11x0 page copy implementation · 7dd8c4f3
      Russell King 提交于
      Which had the 'from' and 'to' pages reversed.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      7dd8c4f3
    • P
      x86, mm: fix pte_free() · 42ef73fe
      Peter Zijlstra 提交于
      On -rt we were seeing spurious bad page states like:
      
      Bad page state in process 'firefox'
      page:c1bc2380 flags:0x40000000 mapping:c1bc2390 mapcount:0 count:0
      Trying to fix it up, but a reboot is needed
      Backtrace:
      Pid: 503, comm: firefox Not tainted 2.6.26.8-rt13 #3
      [<c043d0f3>] ? printk+0x14/0x19
      [<c0272d4e>] bad_page+0x4e/0x79
      [<c0273831>] free_hot_cold_page+0x5b/0x1d3
      [<c02739f6>] free_hot_page+0xf/0x11
      [<c0273a18>] __free_pages+0x20/0x2b
      [<c027d170>] __pte_alloc+0x87/0x91
      [<c027d25e>] handle_mm_fault+0xe4/0x733
      [<c043f680>] ? rt_mutex_down_read_trylock+0x57/0x63
      [<c043f680>] ? rt_mutex_down_read_trylock+0x57/0x63
      [<c0218875>] do_page_fault+0x36f/0x88a
      
      This is the case where a concurrent fault already installed the PTE and
      we get to free the newly allocated one.
      
      This is due to pgtable_page_ctor() doing the spin_lock_init(&page->ptl)
      which is overlaid with the {private, mapping} struct.
      
      union {
          struct {
              unsigned long private;
              struct address_space *mapping;
          };
          spinlock_t ptl;
          struct kmem_cache *slab;
          struct page *first_page;
      };
      
      Normally the spinlock is small enough to not stomp on page->mapping, but
      PREEMPT_RT=y has huge 'spin'locks.
      
      But lockdep kernels should also be able to trigger this splat, as the
      lock tracking code grows the spinlock to cover page->mapping.
      
      The obvious fix is calling pgtable_page_dtor() like the regular pte free
      path __pte_free_tlb() does.
      
      It seems all architectures except x86 and nm10300 already do this, and
      nm10300 doesn't seem to use pgtable_page_ctor(), which suggests it
      doesn't do SMP or simply doesnt do MMU at all or something.
      Signed-off-by: NPeter Zijlstra <a.p.zijlsta@chello.nl>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Cc: <stable@kernel.org>
      42ef73fe