08 Mar, 2008

18 commits

  • This makes 64-bit ptrace calls setting the 64-bit orig_ax field for a
    32-bit task sign-extend the low 32 bits up to 64. This matches what a
    64-bit debugger expects when tracing a 32-bit task.

    This follows on my "x86_64 ia32 syscall restart fix". This didn't
    matter until that was fixed.

    The debugger ignores or zeros the high half of every register slot it
    sets (including the orig_rax pseudo-register) uniformly. It expects
    that the setting of the low 32 bits always has the same meaning as a
    32-bit debugger setting those same 32 bits with native 32-bit
    facilities.

    This never arose before because the syscall restart check never
    matched any -ERESTART* values due to lack of sign extension. Before
    that fix, even 32-bit ptrace setting orig_eax to -1 failed to trigger
    the restart check anyway. So this was never noticed as a regression
    of 64-bit debuggers vs 32-bit debuggers on the same 64-bit kernel.

    Signed-off-by: Roland McGrath
    [ Changed to just do the sign-extension unconditionally on x86-64,
    since orig_ax is always just a small integer and doesn't need
    the full 64-bit range ]
    Signed-off-by: Linus Torvalds

    Roland McGrath
     
  • This adds another Broadcom BCM2045 based device to the blacklist, with
    these settings the micro dongle works on my system.

    Signed-off-by: Karsten Keil
    Acked-by: Marcel Holtmann
    Signed-off-by: Linus Torvalds

    Karsten Keil
     
  • * 'slab-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/christoph/vm:
    slub: fix typo in Documentation/vm/slub.txt
    slab: NUMA slab allocator migration bugfix
    slub: Do not cross cacheline boundaries for very small objects
    slab - use angle brackets for include of kmalloc_sizes.h
    slab numa fallback logic: Do not pass unfiltered flags to page allocator
    slub statistics: Fix check for DEACTIVATE_REMOTE_FREES

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6:
    ide: update references to Documentation/ide/ide.txt (v2)
    ide: move ide.txt to Documentation/ide/
    ide: fix buggy code in ide_register_hw()
    ide: fix enabling DMA on it821x in "smart" mode
    ide-cd: mark REQ_TYPE_ATA_PC write requests with REQ_RW flag

    Linus Torvalds
     
  • Fix all references to Documentation/ide/ide.txt.
    Add/update ide/00-INDEX file.

    Signed-off-by: Randy Dunlap
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Randy Dunlap
     
  • Cleanup some of Documentation directory:
    Move Documentation/ide.txt to the ide/ sub-directory.
    Fix trailing whitespace while there.

    Signed-off-by: Randy Dunlap
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Randy Dunlap
     
  • Relocating the index to come after finding the hwif pointer.

    Signed-off-by: Peter Teoh
    Reported-by: Adrian Bunk
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Peter Teoh
     
  • ide_tune_dma() should return '1' if IDE_HFLAG_NO_SET_MODE host flag is set.

    Cc: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • On Thursday 06 March 2008, walt wrote:

    > For me, this commit causes the problem it's intended to fix:
    >
    > commit 9f10d9ee0ac6d79d7bc8b9a158bf4a29322d84d3
    > Author: Bartlomiej Zolnierkiewicz
    > Date: Tue Feb 26 21:50:35 2008 +0100
    >
    > ide-cd: fix 'ireason' handling for REQ_TYPE_ATA_PC requests
    >
    > This fixes some hangs caused by not finishing the transfer before ending
    > the request and also makes use of 'ireason == 1' quirk for spurious IRQs.
    >
    > When I mount a CD there is a long delay, and I see this error message:
    >
    > hdc: ide_cd_check_ireason: wrong transfer direction!
    > cdrom: failed setting lba address space
    > hdc: status error: status=0x58 { DriveReady SeekComplete DataRequest }
    > ide: failed opcode was: unknown
    > hdc: drive not ready for command
    >
    >
    > When I revert this commit everything works properly again, including
    > CD burning.

    It turned out that REQ_TYPE_ATA_PC write requests were not marked as such
    (the previous commit assumed them to be).

    Reported-by: walt
    Tested-by: walt
    Reviewed-by: Borislav Petkov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * 'hotfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:
    NFS: Fix dentry revalidation for NFSv4 referrals and mountpoint crossings
    NFS: Fix the fsid revalidation in nfs_update_inode()
    SUNRPC: Fix a nfs4 over rdma transport oops
    NFS: Fix an f_mode/f_flags confusion in fs/nfs/write.c

    Linus Torvalds
     
  • As long as the directory contents haven't changed, we should just let the
    path walk proceed to cross the mountpoint. Apart from being an optimisation
    in the case of 'nohide' mountpoint traversals, it also fixes an issue with
    referrals: referral inodes don't have valid filehandles, so calling
    nfs_revalidate_inode() on them is a bug.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • When we detect that we've crossed a mountpoint on the remote server, we
    must take care not to use that inode to revalidate the fsid on our
    current superblock. To do so, we label the inode as a remote mountpoint,
    and check for that in nfs_update_inode().

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • Prevent an RPC oops when freeing a dynamically allocated RDMA
    buffer, used in certain special-case large metadata operations.

    Signed-off-by: Tom Talpey
    Signed-off-by: James Lentini
    Signed-off-by: Trond Myklebust

    Tom Talpey
     
  • O_SYNC is stored in filp->f_flags.
    Thanks to Al Viro for pointing out the bug.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • The card state mutex was only initialized when a device was connected,
    but used during unload unconditionally, leading to an Oops if a driver
    was loaded and unloaded again without ever connecting a device.

    Fix this by initializing the mutex as soon as the structure is allocated.
    Also add a missing mutex unlock revealed in the same execution path.

    This fixes a possible Oops in 2.6.25-rc that was introduced by commit
    e468c04894f36045cf93d1384183a461014b6840 ("Gigaset: permit module
    unload").

    Thanks to Roland Kletzing for reporting this problem.

    Signed-off-by: Tilman Schmidt
    Tested-by: Roland Kletzing
    Cc: Hansjoerg Lipp
    Cc: Karsten Keil
    Signed-off-by: Linus Torvalds

    Tilman Schmidt
     
  • …linux-2.6-sched-devel

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched-devel:
    sched: don't allow rt_runtime_us to be zero for groups having rt tasks
    sched: rt-group: fixup schedulability constraints calculation
    sched: fix the wrong time slice value for SCHED_FIFO tasks
    sched: export task_nice
    sched: balance RT task resched only on runqueue
    sched: retain vruntime

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86:
    x86-boot: don't request VBE2 information
    x86: re-add reboot fixups
    x86: fix typo in step.c
    x86: fix merge mistake in i387.c
    x86: clear DF before calling signal handler

    Linus Torvalds
     
  • randconfig testing found a bootup lockup in drivers/char/esp.c because
    of a spinlock that wasn't correctly initialized.

    I'm not sure why it became more prominent in 2.6.25-rc4, the bug seems
    rather old and i've been doing allyesconfig bootups for ages with
    CONFIG_ESP enabled.

    This fixes this bootup lockup:

    PM: Adding info for No Bus:ttyP63
    ttyP32 at 0x0240 (irq = 0) is an ESP primary port
    BUG: spinlock lockup on CPU#0, swapper/1, f56dd004
    Pid: 1, comm: swapper Not tainted 2.6.25-rc4-sched-devel.git-x86-latest.git #402 [] _raw_spin_lock+0x134/0x140
    [] _spin_lock_irqsave+0x5e/0x80
    [] ? espserial_init+0x2be/0x6e0
    [] espserial_init+0x2be/0x6e0
    [] kernel_init+0x83/0x260
    [] ? espserial_init+0x0/0x6e0
    [] ? restore_nocheck_notrace+0x0/0xe
    [] ? kernel_init+0x0/0x260
    [] ? kernel_init+0x0/0x260
    [] kernel_thread_helper+0x7/0x10
    =======================

    kzalloc() is not the way to initialize spinlocks anymore.

    Signed-off-by: Ingo Molnar
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     

07 Mar, 2008

22 commits

  • This patch checks if we can set the rt_runtime_us to 0. If there is a
    realtime task in the group, we don't want to set the rt_runtime_us as 0
    or bad things will happen. (that task wont get any CPU time despite
    being TASK_RUNNNG)

    Signed-off-by: Dhaval Giani
    Signed-off-by: Ingo Molnar

    Dhaval Giani
     
  • it was only possible to configure the rt-group scheduling parameters
    beyond the default value in a very small range.

    that's because div64_64() has a different calling convention than
    do_div() :/

    fix a few untidies while we are here; sysctl_sched_rt_period may overflow
    due to that multiplication, so cast to u64 first. Also that RUNTIME_INF
    juggling makes little sense although its an effective NOP.

    Signed-off-by: Peter Zijlstra
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     
  • Function sys_sched_rr_get_interval returns wrong time slice value for
    SCHED_FIFO tasks. The time slice for SCHED_FIFO tasks should be 0.

    Signed-off-by: Miao Xie
    Signed-off-by: Ingo Molnar

    Miao Xie
     
  • The API is trivial, and so is the implementation.

    Signed-off-by: Pavel Roskin
    Signed-off-by: Ingo Molnar

    Pavel Roskin
     
  • Sripathi Kodi reported a crash in the -rt kernel:

    https://bugzilla.redhat.com/show_bug.cgi?id=435674

    this is due to a place that can reschedule a task without holding
    the tasks runqueue lock. This was caused by the RT balancing code
    that pulls RT tasks to the current run queue and will reschedule the
    current task.

    There's a slight chance that the pulling of the RT tasks will release
    the current runqueue's lock and retake it (in the double_lock_balance).
    During this time that the runqueue is released, the current task can
    migrate to another runqueue.

    In the prio_changed_rt code, after the pull, if the current task is of
    lesser priority than one of the RT tasks pulled, resched_task is called
    on the current task. If the current task had migrated in that small
    window, resched_task will be called without holding the runqueue lock
    for the runqueue that the task is on.

    This race condition also exists in the mainline kernel and this patch
    adds a check to make sure the task hasn't migrated before calling
    resched_task.

    Signed-off-by: Steven Rostedt
    Tested-by: Sripathi Kodi
    Acked-by: Peter Zijlstra
    Signed-off-by: Ingo Molnar

    Steven Rostedt
     
  • Kei Tokunaga reported an interactivity problem when moving tasks
    between control groups.

    Tasks would retain their old vruntime when moved between groups, this
    can cause funny lags. Re-set the vruntime on group move to fit within
    the new tree.

    Reported-by: Kei Tokunaga
    Signed-off-by: Peter Zijlstra
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     
  • The new x86 setup code (4fd06960f120) broke booting on an old P3/500MHz
    with an onboard Voodoo3 of mine. After debugging it, it turned out
    to be caused by the fact that the vesa probing now asks for VBE2 data.

    Disassembing the video BIOS shows that it overflows the vesa_general_info
    structure when VBE2 data is requested because the source addresses for the
    information strings which get strcpy'ed to the buffer lie outside the 32K
    BIOS code (and hence contain long sequences of 0xff's).

    E.G.:

    get_vbe_controller_info:
    00002A9C 60 pushaw
    00002A9D 1E push ds
    00002A9E 0E push cs
    00002A9F 1F pop ds
    00002AA0 2BC9 sub cx,cx
    00002AA2 6626813D56424532 cmp dword [es:di],0x32454256 ; "VBE2"
    00002AAA 7501 jnz .1
    00002AAC 41 inc cx
    .1:
    00002AAD 51 push cx
    00002AAE B91400 mov cx,0x14
    00002AB1 BED47F mov si, controller_header
    00002AB4 57 push di
    00002AB5 F3A4 rep movsb ; copy vbe1.2 header

    00002AB7 B9EC00 mov cx,0xec
    00002ABA 2AC0 sub al,al
    00002ABC F3AA rep stosb ; zero pad remainder

    00002ABE 5F pop di
    00002ABF E8EB0D call word get_memory
    00002AC2 C1E002 shl ax,0x2
    00002AC5 26894512 mov [es:di+0x12],ax ; total memory
    00002AC9 26C745040003 mov word [es:di+0x4],0x300 ; VBE version
    00002ACF 268C4D08 mov [es:di+0x8],cs
    00002AD3 268C4D10 mov [es:di+0x10],cs
    00002AD7 59 pop cx
    00002AD8 E361 jcxz .done ; VBE2 requested?
    00002ADA 8D9D0001 lea bx,[di+0x100]
    00002ADE 53 push bx
    00002ADF 87DF xchg bx,di ; di now points to 2nd half
    00002AE1 26C747140001 mov word [es:bx+0x14],0x100 ; sw rev

    00002AE7 26897F06 mov [es:bx+0x6],di ; oem string
    00002AEB 268C4708 mov [es:bx+0x8],es
    00002AEF BE5280 mov si,0x8052 ; oem string
    00002AF2 E87A1B call word strcpy

    00002AF5 26897F0E mov [es:bx+0xe],di ; video mode list
    00002AF9 268C4710 mov [es:bx+0x10],es
    00002AFD B91E00 mov cx,0x1e
    00002B00 BEE87F mov si,vidmodes
    00002B03 F3A5 rep movsw

    00002B05 26897F16 mov [es:bx+0x16],di ; oem vendor
    00002B09 268C4718 mov [es:bx+0x18],es
    00002B0D BE2480 mov si,0x8024 ; oem vendor
    00002B10 E85C1B call word strcpy

    00002B13 26897F1A mov [es:bx+0x1a],di ; oem product
    00002B17 268C471C mov [es:bx+0x1c],es
    00002B1B BE3880 mov si,0x8038 ; oem product
    00002B1E E84E1B call word strcpy

    00002B21 26897F1E mov [es:bx+0x1e],di ; oem product rev
    00002B25 268C4720 mov [es:bx+0x20],es
    00002B29 BE4580 mov si,0x8045 ; oem product rev
    00002B2C E8401B call word strcpy

    00002B2F 58 pop ax
    00002B30 B90001 mov cx,0x100
    00002B33 2BCF sub cx,di
    00002B35 03C8 add cx,ax
    00002B37 2AC0 sub al,al
    00002B39 F3AA rep stosb ; zero pad
    .done:
    00002B3B 1F pop ds
    00002B3C 61 popaw
    00002B3D B84F00 mov ax,0x4f
    00002B40 C3 ret

    (The full BIOS can be found at http://peter.korsgaard.com/vgabios.bin
    if interested).

    The old setup code didn't ask for VBE2 info, and the new code doesn't
    actually do anything with the extra information, so the fix is to simply
    not request it. Other BIOS'es might have the same problem.

    Signed-off-by: Peter Korsgaard
    Signed-off-by: Ingo Molnar

    Peter Korsgaard
     
  • Jan Beulich noticed that the reboot fixups went missing during
    reboot.c unification.

    (commit 4d022e35fd7e07c522c7863fee6f07e53cf3fc14)

    Geode and a few other rare boards with special reboot quirks are
    affected.

    Reported-by: Jan Beulich
    Signed-off-by: Jan Beulich
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • TIF_DEBUGCTLMSR has no meaning in the actual MSR...

    Signed-off-by: Jan Beulich
    Signed-off-by: Ingo Molnar

    Jan Beulich
     
  • convert_fxsr_to_user() in 2.6.24's i387_32.c did this, and
    convert_to_fxsr() also does the inverse, so I assume it's an oversight
    that it is no longer being done.

    [ mingo@elte.hu:

    we encode it this way because there's no space for the 'FPU Last
    Instruction Opcode' (->fop) field in the legacy user_i387_ia32_struct
    that PTRACE_GETFPREGS/PTRACE_SETFPREGS uses.

    it's probably pure legacy - i'd be surprised if any user-space relied on
    the FPU Last Opcode in any way. But indeed we used to do it previously
    so the most conservative thing is to preserve that piece of information.
    ]

    Signed-off-by: Jan Beulich
    Signed-off-by: Ingo Molnar

    Jan Beulich
     
  • The Linux kernel currently does not clear the direction flag before
    calling a signal handler, whereas the x86/x86-64 ABI requires that.

    Linux had this behavior/bug forever, but this becomes a real problem
    with gcc version 4.3, which assumes that the direction flag is
    correctly cleared at the entry of a function.

    This patches changes the setup_frame() functions to clear the
    direction before entering the signal handler.

    Signed-off-by: Aurelien Jarno
    Signed-off-by: Ingo Molnar
    Acked-by: H. Peter Anvin

    Aurelien Jarno
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6.25:
    sh: Fix up the sh64 build.
    sh: Fix up SH7710 VoIP-GW build.
    sh: Flag PMB support as EXPERIMENTAL.
    sh: Update r7780mp defconfig.
    fb: hitfb: Balance probe/remove section annotations.
    sh: hp6xx: Fix up hp6xx_apm build failure.
    fb: pvr2fb: Fix up remaining section mismatch.
    sh: Fix up section mismatches.
    sh: hp6xx: Correct APM output.
    sh: update se7780 defconfig
    sh: replace remaining __FUNCTION__ occurrences
    sh: export copy-page() to modules
    sh_ksyms_32.c update for gcc 4.3
    sh/mm/pg-sh7705.c must #include

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6:
    [Blackfin] arch: current_l1_stack_save is a pointer, so use NULL rather than 0
    [Blackfin] arch: fix atomic and32/xor32 comments and ENDPROC markings
    [Blackfin] arch: fix bug - allow SDH driver to be used as module
    [Blackfin] arch: to kill syscalls missing warning by adding new timerfd syscalls

    Linus Torvalds
     
  • * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
    [IA64] kprobes arch consolidation build fix
    [IA64] update efi region debugging to use MB, GB and TB as well as KB
    [IA64] use dev_printk in video quirk
    [IA64] remove remaining __FUNCTION__ occurrences
    [IA64] remove unnecessary nfs includes from sys_ia32.c
    [IA64] remove CONFIG_SMP ifdef in ia64_send_ipi()
    [IA64] arch_ptrace() cleanup
    [IA64] remove duplicate code from arch_ptrace()
    [IA64] convert sys_ptrace to arch_ptrace
    [IA64] remove find_thread_for_addr()
    [IA64] do not sync RBS when changing PT_AR_BSP or PT_CFM
    [IA64] access user RBS directly

    Linus Torvalds
     
  • slub_debug=,dentry is correct, not dentry_cache.

    Signed-off-by: Itaru Kitayama
    Signed-off-by: Christoph Lameter

    Itaru Kitayama
     
  • NUMA slab allocator cpu migration bugfix

    The NUMA slab allocator (specifically, cache_alloc_refill)
    is not refreshing its local copies of what cpu and what
    numa node it is on, when it drops and reacquires the irq
    block that it inherited from its caller. As a result
    those values become invalid if an attempt to migrate the
    process to another numa node occured while the irq block
    had been dropped.

    The solution is to make cache_alloc_refill reload these
    variables whenever it drops and reacquires the irq block.

    The error is very difficult to hit. When it does occur,
    one gets the following oops + stack traceback bits in
    check_spinlock_acquired:

    kernel BUG at mm/slab.c:2417
    cache_alloc_refill+0xe6
    kmem_cache_alloc+0xd0
    ...

    This patch was developed against 2.6.23, ported to and
    compiled-tested only against 2.6.25-rc4.

    Signed-off-by: Joe Korty
    Signed-off-by: Christoph Lameter

    Joe Korty
     
  • SLUB should pack even small objects nicely into cachelines if that is what
    has been asked for. Use the same algorithm as SLAB for this.

    The effect of this patch for a system with a cacheline size of 64
    bytes is that the 24 byte sized slab caches will now put exactly
    2 objects into a cacheline instead of 3 with some overlap into
    the next cacheline. This reduces the object density in a 4k slab
    from 170 to 128 objects (same as SLAB).

    Signed-off-by: Nick Piggin
    Signed-off-by: Christoph Lameter

    Nick Piggin
     
  • Make them all use angle brackets and the directory name.

    Acked-by: Pekka Enberg
    Signed-off-by: Joe Perches
    Signed-off-by: Christoph Lameter

    Joe Perches
     
  • The NUMA fallback logic should be passing local_flags to kmem_get_pages() and not simply the
    flags passed in.

    Reviewed-by: Pekka Enberg
    Signed-off-by: Christoph Lameter

    Christoph Lameter
     
  • The remote frees are in the freelist of the page and not in the
    percpu freelist.

    Reviewed-by: Pekka Enberg
    Signed-off-by: Christoph Lameter

    Christoph Lameter
     
  • ia64 named their handler kprobes_fault_handler while all other
    arches used kprobe_fault_handler. Change the function definition
    and header declaration.

    Signed-off-by: Harvey Harrison
    Signed-off-by: Tony Luck

    Harvey Harrison
     
  • When EFI_DEBUG is defined to a non-zero value in arch/ia64/kernel/efi.c,
    the efi memory regions are displayed. This patch enhances the
    display code in a few ways:

    1. Use TB, GB and MB as well as KB as units.
    Although this introduces rounding errors (KB doesn't as
    size is always a multiple of 4Kb), it does make
    things a lot more readable.

    Also as the range is also shown, it is possible to note the exact size
    if it is important. In my experience, the size field is mostly useful
    for getting a general idea of the size of a region.

    On the rx2620 that I use, there actually is an 8TB region (though not
    backed by physical memory, and 8TB really is a lot more readable than
    8589934592KB.

    2. pad the size field with leading spaces to further improve readability

    ...
    ... ( 8MB)
    ... ( 928MB)
    ... ( 3MB)
    ...

    vs

    ...
    ... (8MB)
    ... (928MB)
    ... (3MB)
    ...

    3. Pad the attr field out to 64bits using leading zeros,
    to further improve readability.

    ...
    mem05: type= 2, attr=0x0000000000000008, range=[0x0000000004000000-0x000000000481f000) ( 8MB)
    mem06: type= 7, attr=0x0000000000000008, range=[0x000000000481f000-0x000000003e876000) ( 928MB)
    mem07: type= 5, attr=0x8000000000000008, range=[0x000000003e876000-0x000000003eb8e000) ( 3MB)
    mem08: type= 4, attr=0x0000000000000008, range=[0x000000003eb8e000-0x000000003ee7a000) ( 2MB)
    ...

    ...
    mem05: type= 2, attr=0x8, range=[0x0000000004000000-0x000000000481f000) ( 8MB)
    mem06: type= 7, attr=0x8, range=[0x000000000481f000-0x000000003e876000) ( 928MB)
    mem07: type= 5, attr=0x8000000000000008, range=[0x000000003e876000-0x000000003eb8e000) ( 3MB)
    mem08: type= 4, attr=0x8, range=[0x000000003eb8e000-0x000000003ee7a000) ( 2MB)
    ...

    4. Use %d instead of %u for the index field, as i is a signed int.

    N.B: This code is not compiled unless EFI_DEBUG is non 0.

    Signed-off-by: Simon Horman
    Signed-off-by: Tony Luck

    Simon Horman