29 Dec, 2010

3 commits


28 Dec, 2010

1 commit


27 Dec, 2010

1 commit

  • In arch/x86/kernel/microcode_intel.c::generic_load_microcode()
    we have this:

    while (leftover) {
    ...
    if (get_ucode_data(mc, ucode_ptr, mc_size) ||
    microcode_sanity_check(mc) < 0) {
    vfree(mc);
    break;
    }
    ...
    }

    if (mc)
    vfree(mc);

    This will cause a double free of 'mc'. This patch fixes that by
    just removing the vfree() call in the loop since 'mc' will be
    freed nicely just after we break out of the loop.

    There's also a second change in the patch. I noticed a lot of
    checks for pointers being NULL before passing them to vfree().
    That's completely redundant since vfree() deals gracefully with
    being passed a NULL pointer. Removing the redundant checks
    yields a nice size decrease for the object file.

    Size before the patch:
    text data bss dec hex filename
    4578 240 1032 5850 16da arch/x86/kernel/microcode_intel.o
    Size after the patch:
    text data bss dec hex filename
    4489 240 984 5713 1651 arch/x86/kernel/microcode_intel.o

    Signed-off-by: Jesper Juhl
    Acked-by: Tigran Aivazian
    Cc: Shaohua Li
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Jesper Juhl
     

25 Dec, 2010

1 commit


24 Dec, 2010

5 commits

  • The master clock initialization for SH7201 was wholly bogus. Users of the
    legacy API must initialize the clock rate through the struct clk itself
    rather than returning the clock frequency. Given that the init function
    itself is void, returning the frequency isn't terribly effective.

    Signed-off-by: Paul Mundt

    Paul Mundt
     
  • With some recent tidying of duplicate register definitions the se7206 IRQ
    code broke:

    arch/sh/boards/mach-se/7206/irq.c: error: 'INTC_ICR' undeclared (first use in this function)
    arch/sh/boards/mach-se/7206/irq.c: error: (Each undeclared identifier is reported only once
    arch/sh/boards/mach-se/7206/irq.c: error: for each function it appears in.)

    Fix it up.

    Signed-off-by: Paul Mundt

    Paul Mundt
     
  • Some of the SH4-202 code was overlooked in the set_rate() API conversion,
    resulting in:

    arch/sh/kernel/cpu/sh4/clock-sh4-202.c: error: too many arguments to function 'clk->ops->set_rate'

    Fix it up.

    Signed-off-by: Paul Mundt

    Paul Mundt
     
  • …nel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

    * 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    perf probe: Fix to support libdwfl older than 0.148
    perf tools: Fix lazy wildcard matching
    perf buildid-list: Fix error return for success
    perf buildid-cache: Fix symbolic link handling
    perf symbols: Stop using vmlinux files with no symbols
    perf probe: Fix use of kernel image path given by 'k' option

    * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, kexec: Limit the crashkernel address appropriately

    Linus Torvalds
     
  • Fix build errors like these (from a randconfig and my defconfig for a custom board):

    src/arch/powerpc/platforms/52xx/mpc52xx_gpt.c:549: error: dereferencing pointer to incomplete type: 1 errors in 1 logs
    src/arch/powerpc/platforms/52xx/mpc52xx_gpt.c:636: error: implicit declaration of function 'nonseekable_open': 1 errors in 1 logs
    src/arch/powerpc/platforms/52xx/mpc52xx_gpt.c:657: error: variable 'mpc52xx_wdt_fops' has initializer but incomplete type: 1 errors in 1 logs
    src/arch/powerpc/platforms/52xx/mpc52xx_gpt.c:658: error: excess elements in struct initializer: 1 errors in 1 logs
    src/arch/powerpc/platforms/52xx/mpc52xx_gpt.c:658: error: unknown field 'owner' specified in initializer: 1 errors in 1 logs
    ...

    Reported-by: Geert Uytterhoeven
    Signed-off-by: Wolfram Sang
    Cc: Grant Likely
    Cc: Benjamin Herrenschmidt
    Cc: Andrew Morton
    Signed-off-by: Grant Likely

    Wolfram Sang
     

22 Dec, 2010

1 commit

  • The AT91 MCI has special SDIO transfer types: SDIO block and SDIO byte
    transfers, but at91_mci driver doesn't use them and handles all SDIO
    transfers as ordinary MMC block transfers. This causes problems for
    multiple-block SDIO transfers (in particular for 256-bytes blocks).

    Fix this situation by checking the opcode for SDIO CMD53 and setting
    the transfer type in the AT91_MCI_CMDR register properly.

    This patch was tested with libertas SDIO driver: problem with TX
    timeouts on big packets was eliminated.

    Signed-off-by: Yauhen Kharuzhy
    Cc:
    Signed-off-by: Nicolas Ferre
    Acked-by: Jean-Christophe PLAGNIOL-VILLARD
    Signed-off-by: Chris Ball

    Yauhen Kharuzhy
     

21 Dec, 2010

3 commits


20 Dec, 2010

1 commit

  • …nel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

    * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86-32: Make sure we can map all of lowmem if we need to
    x86, vt-d: Handle previous faults after enabling fault handling
    x86: Enable the intr-remap fault handling after local APIC setup
    x86, vt-d: Fix the vt-d fault handling irq migration in the x2apic mode
    x86, vt-d: Quirk for masking vtd spec errors to platform error handling logic
    x86, xsave: Use alloc_bootmem_align() instead of alloc_bootmem()
    bootmem: Add alloc_bootmem_align()
    x86, gcc-4.6: Use gcc -m options when building vdso
    x86: HPET: Chose a paranoid safe value for the ETIME check
    x86: io_apic: Avoid unused variable warning when CONFIG_GENERIC_PENDING_IRQ=n

    * 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    perf: Fix off by one in perf_swevent_init()
    perf: Fix duplicate events with multiple-pmu vs software events
    ftrace: Have recordmcount honor endianness in fn_ELF_R_INFO
    scripts/tags.sh: Add magic for trace-events
    tracing: Fix panic when lseek() called on "trace" opened for writing

    Linus Torvalds
     

19 Dec, 2010

3 commits


18 Dec, 2010

11 commits

  • Keep the crash kernel address below 512 MiB for 32 bits and 896 MiB
    for 64 bits. For 32 bits, this retains compatibility with earlier
    kernel releases, and makes it work even if the vmalloc= setting is
    adjusted.

    For 64 bits, we should be able to increase this substantially once a
    hard-coded limit in kexec-tools is fixed.

    Signed-off-by: H. Peter Anvin
    Cc: Vivek Goyal
    Cc: Stanislaw Gruszka
    Cc: Yinghai Lu
    LKML-Reference:

    H. Peter Anvin
     
  • The current tile rt_sigreturn() syscall pattern uses the common idiom
    of loading up pt_regs with all the saved registers from the time of
    the signal, then anticipating the fact that we will clobber the ABI
    "return value" register (r0) as we return from the syscall by setting
    the rt_sigreturn return value to whatever random value was in the pt_regs
    for r0.

    However, this breaks in our 64-bit kernel when running "compat" tasks,
    since we always sign-extend the "return value" register to properly
    handle returned pointers that are in the upper 2GB of the 32-bit compat
    address space. Doing this to the sigreturn path then causes occasional
    random corruption of the 64-bit r0 register.

    Instead, we stop doing the crazy "load the return-value register"
    hack in sigreturn. We already have some sigreturn-specific assembly
    code that we use to pass the pt_regs pointer to C code. We extend that
    code to also set the link register to point to a spot a few instructions
    after the usual syscall return address so we don't clobber the saved r0.
    Now it no longer matters what the rt_sigreturn syscall returns, and the
    pt_regs structure can be cleanly and completely reloaded.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • Previously we were just setting up the "tp" register in the
    new task as started by clone() in libc. However, this is not
    quite right, since in principle a signal might be delivered to
    the new task before it had its TLS set up. (Of course, this race
    window still exists for resetting the libc getpid() cached value
    in the new task, in principle. But in any case, we are now doing
    this exactly the way all other architectures do it.)

    This change is important for 2.6.37 since the tile glibc we will
    be submitting upstream will not set TLS in user space any more,
    so it will only work on a kernel that has this fix. It should
    also be taken for 2.6.36.x in the stable tree if possible.

    Signed-off-by: Chris Metcalf
    Cc: stable

    Chris Metcalf
     
  • Seen with malta_defconfig on Linus' tree:

    CC arch/mips/mm/sc-mips.o
    arch/mips/mm/sc-mips.c: In function 'mips_sc_is_activated':
    arch/mips/mm/sc-mips.c:77: error: 'config2' undeclared (first use in this function)
    arch/mips/mm/sc-mips.c:77: error: (Each undeclared identifier is reported only once
    arch/mips/mm/sc-mips.c:77: error: for each function it appears in.)
    arch/mips/mm/sc-mips.c:81: error: 'tmp' undeclared (first use in this function)
    make[2]: *** [arch/mips/mm/sc-mips.o] Error 1
    make[1]: *** [arch/mips/mm] Error 2
    make: *** [arch/mips] Error 2

    [Ralf: Cosmetic changes to minimize the number of arguments passed to
    mips_sc_is_activated]

    Signed-off-by: Kevin Cernekee
    Patchwork: https://patchwork.linux-mips.org/patch/1752/
    Signed-off-by: Ralf Baechle

    Kevin Cernekee
     
  • This prevents allocation of the last 2MB before 4GB.

    The experiment described here shows Windows 7 ignoring the last 1MB:
    https://bugzilla.kernel.org/show_bug.cgi?id=23542#c27

    This patch ignores the top 2MB instead of just 1MB because H. Peter Anvin
    says "There will be ROM at the top of the 32-bit address space; it's a fact
    of the architecture, and on at least older systems it was common to have a
    shadow 1 MiB below."

    Acked-by: H. Peter Anvin
    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • When we allocate address space, e.g., to assign it to a PCI device, don't
    allocate anything mentioned in the BIOS E820 memory map.

    On recent machines (2008 and newer), we assign PCI resources from the
    windows described by the ACPI PCI host bridge _CRS. On many Dell
    machines, these windows overlap some E820 reserved areas, e.g.,

    BIOS-e820: 00000000bfe4dc00 - 00000000c0000000 (reserved)
    pci_root PNP0A03:00: host bridge window [mem 0xbff00000-0xdfffffff]

    If we put devices at 0xbff00000, they don't work, probably because
    that's really RAM, not I/O memory. This patch prevents that by removing
    the 0xbfe4dc00-0xbfffffff area from the "available" resource.

    I'm not very happy with this solution because Windows solves the problem
    differently (it seems to ignore E820 reserved areas and it allocates
    top-down instead of bottom-up; details at comment 45 of the bugzilla
    below). That means we're vulnerable to BIOS defects that Windows would not
    trip over. For example, if BIOS described a device in ACPI but didn't
    mention it in E820, Windows would work fine but Linux would fail.

    Reference: https://bugzilla.kernel.org/show_bug.cgi?id=16228
    Acked-by: H. Peter Anvin
    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • This implements arch_remove_reservations() so allocate_resource() can
    avoid any arch-specific reserved areas. This currently just avoids the
    BIOS area (the first 1MB), but could be used for E820 reserved areas if
    that turns out to be necessary.

    We previously avoided this area in pcibios_align_resource(). This patch
    moves the test from that PCI-specific path to a generic path, so *all*
    resource allocations will avoid this area.

    Acked-by: H. Peter Anvin
    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • This reverts commit dc9887dc02e37bcf83f4e792aa14b07782ef54cf.

    Acked-by: H. Peter Anvin
    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • This reverts commit 1af3c2e45e7a641e774bbb84fa428f2f0bf2d9c9.

    Acked-by: H. Peter Anvin
    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • * 'for_linus' of git://github.com/at91linux/linux-2.6-at91:
    at91: Refactor Stamp9G20 and PControl G20 board file
    at91: Fix uhpck clock rate in upll case

    Linus Torvalds
     
  • * 'kvm-updates/2.6.37' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: Fix preemption counter leak in kvm_timer_init()
    KVM: enlarge number of possible CPUID leaves
    KVM: SVM: Do not report xsave in supported cpuid
    KVM: Fix OSXSAVE after migration

    Linus Torvalds
     

17 Dec, 2010

10 commits

  • As PControl G20 is a carrier board for the Stamp9G20 SoM, some code can
    be shared. Therefore board-stamp9g20.c is refactored to allow reusing the
    SoM initialization and board-pcontrol-g20.c is modified to use it.

    Signed-off-by: Christian Glindkamp
    Signed-off-by: Nicolas Ferre

    Christian Glindkamp
     
  • The uhpck clock should be divided from the utmi clock, not its parent
    (main). This change is mostly cosmetic as the uhpck rate value is not
    used anywhere except for the debugfs clock output.

    Signed-off-by: Ryan Mallon
    Signed-off-by: Nicolas Ferre

    Ryan Mallon
     
  • Fix interrupt priority level handling on SH-Mobile ARM.

    SH-Mobile ARM platforms using multiple interrupt priority
    levels need this patch to fix a potential dead lock that
    may occur if multiple interrupts with different levels
    are pending simultaneously.

    The default INTC configuration is to use the same priority
    level for all interrupts, so this issue does not trigger by
    default. It is however common for board code to override the
    interrupt priority for certain interrupt sources depending
    on the application. Without this fix such boards may lock up.

    In detail, this patch updates the INTC code in entry-macro.S
    to make sure that the INTLVLA register gets set as expected.

    To trigger this bug modify the board specific code to adjust
    the interrupt priority level for the ethernet chip. After
    changing the priority level simply use flood ping to drown
    the board with interrupts.

    This patch applies to INTCA-based processors such as sh7372,
    sh7377 and sh7372. GIC-based processors are not affected.

    Suitable for v2.6.37-rc and stable from v2.6.34 to v2.6.36.

    Cc: stable@kernel.org
    Signed-off-by: Magnus Damm
    Tested-by: Kuninori Morimoto
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • Turn down the warning noise from the compiler,
    basically a SH-Mobile specific version of the
    patch located in the RMK patch tracker:

    6484/1: "fix compile warning in mm/init.c",

    Without this patch the following warning triggers:

    CC arch/arm/kernel/sys_arm.o
    arch/arm/mm/init.c: In function 'mem_init':
    arch/arm/mm/init.c:606: warning: format '%08lx' expects type 'long unsigned int', but argument 12 has type 'unsigned int'
    CC arch/arm/kernel/traps.o

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • This patch adds new entries required by the new version of MAX8998
    driver. Without them, the driver fails to init. See commit 50f19a4596

    Signed-off-by: Marek Szyprowski
    Signed-off-by: Kyungmin Park
    Signed-off-by: Kukjin Kim

    Marek Szyprowski
     
  • S3C2416 PM code uses low-level sleep routines from S3C2412 code,
    but these routines are compiled only for S3C2412 SoC.

    Split S3C2412_PM to two parts: S3C2412_PM, S3C2412_PM_SLEEP and
    select last in S3C2416's Kconfig.

    Signed-off-by: Yauhen Kharuzhy
    Signed-off-by: Kukjin Kim

    Yauhen Kharuzhy
     
  • Should be CONFIG_S3C_DEV_NAND instead of CONFIG_S3C_DEVICE_NAND.

    Cc: Ben Dooks
    Signed-off-by: Kukjin Kim

    Kukjin Kim
     
  • A relocatable kernel can be anywhere in lowmem -- and in the case of a
    kdump kernel, is likely to be fairly high. Since the early page
    tables map everything from address zero up we need to make sure we
    allocate enough brk that we can map all of lowmem if we need to.

    Reported-by: Stanislaw Gruszka
    Signed-off-by: H. Peter Anvin
    Tested-by: Yinghai Lu
    LKML-Reference:

    H. Peter Anvin
     
  • * 'upstream' of git://git.linux-mips.org/pub/scm/upstream-linus: (28 commits)
    MIPS: Add a CONFIG_FORCE_MAX_ZONEORDER Kconfig option.
    MIPS: LD/SD o32 macro GAS fix update
    MIPS: Alchemy: fix build with SERIAL_8250=n
    MIPS: Rename mips_dma_cache_sync back to dma_cache_sync
    MIPS: MT: Fix typo in comment.
    SSB: Fix nvram_get on BCM47xx platform
    MIPS: BCM47xx: Swap serial console if ttyS1 was specified.
    MIPS: BCM47xx: Use sscanf for parsing mac address
    MIPS: BCM47xx: Fill values for b43 into SSB sprom
    MIPS: BCM47xx: Do not read config from CFE
    MIPS: FDT size is a be32
    MIPS: Fix CP0 COUNTER clockevent race
    MIPS: Fix regression on BCM4710 processor detection
    MIPS: JZ4740: Fix pcm device name
    MIPS: Separate two consecutive loads in memset.S
    MIPS: Send proper signal and siginfo on FP emulator faults.
    MIPS: AR7: Fix loops per jiffies on TNETD7200 devices
    MIPS: AR7: Fix double ar7_gpio_init declaration
    MIPS: Rework GENERIC_HARDIRQS Kconfig.
    MIPS: Alchemy: Add return value check for strict_strtoul()
    ...

    Linus Torvalds
     
  • For huge page support with base page size of 16K or 32K, we have to
    increase the MAX_ORDER so that huge pages can be allocated.

    [Ralf: I don't think a user should have to configure obscure constants like
    this but for the time being this will have to suffice.]

    Signed-off-by: David Daney
    To: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/1685/
    Signed-off-by: Ralf Baechle

    David Daney