21 Aug, 2005

6 commits


20 Aug, 2005

14 commits

  • Plug a race in TSC synchronization

    We need to do tsc_sync_wait() before the CPU is set online to prevent
    multiple CPUs from doing it in parallel - which won't work because TSC
    sync has global unprotected state.

    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • Don't printk exceptions for ltrace

    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • Linus Torvalds
     
  • Linus Torvalds
     
  • Added missing unlock_kernel() to NFSv4 atomic lookup.

    Signed-off-by: Steve Dickson
    Signed-off-by: Trond Myklebust
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Steve Dickson
     
  • I'm trying to get the nmi working with my laptop (IBM ThinkPad G41) and after
    debugging it a while, I found that the nmi code doesn't want to set it up for
    this particular CPU.

    Here I have:

    $ cat /proc/cpuinfo
    processor : 0
    vendor_id : GenuineIntel
    cpu family : 15
    model : 4
    model name : Mobile Intel(R) Pentium(R) 4 CPU 3.33GHz
    stepping : 1
    cpu MHz : 3320.084
    cache size : 1024 KB
    physical id : 0
    siblings : 2
    core id : 0
    cpu cores : 1
    fdiv_bug : no
    hlt_bug : no
    f00f_bug : no
    coma_bug : no
    fpu : yes
    fpu_exception : yes
    cpuid level : 3
    wp : yes
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
    mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pni
    monitor ds_cpl est tm2 cid xtpr
    bogomips : 6642.39

    processor : 1
    vendor_id : GenuineIntel
    cpu family : 15
    model : 4
    model name : Mobile Intel(R) Pentium(R) 4 CPU 3.33GHz
    stepping : 1
    cpu MHz : 3320.084
    cache size : 1024 KB
    physical id : 0
    siblings : 2
    core id : 0
    cpu cores : 1
    fdiv_bug : no
    hlt_bug : no
    f00f_bug : no
    coma_bug : no
    fpu : yes
    fpu_exception : yes
    cpuid level : 3
    wp : yes
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
    mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pni
    monitor ds_cpl est tm2 cid xtpr
    bogomips : 6637.46

    And the following code shows:

    $ cat linux-2.6.13-rc6/arch/i386/kernel/nmi.c

    [...]

    void setup_apic_nmi_watchdog (void)
    {
    switch (boot_cpu_data.x86_vendor) {
    case X86_VENDOR_AMD:
    if (boot_cpu_data.x86 != 6 && boot_cpu_data.x86 != 15)
    return;
    setup_k7_watchdog();
    break;
    case X86_VENDOR_INTEL:
    switch (boot_cpu_data.x86) {
    case 6:
    if (boot_cpu_data.x86_model > 0xd)
    return;

    setup_p6_watchdog();
    break;
    case 15:
    if (boot_cpu_data.x86_model > 0x3)
    return;

    Here I get boot_cpu_data.x86_model == 0x4. So I decided to change it and
    reboot. I now seem to have a working NMI. So, unless there's something know
    to be bad about this processor and the NMI. I'm submitting the following
    patch.

    Signed-off-by: Steven Rostedt
    Acked-by: Zwane Mwaikambo
    Acked-by: Mikael Pettersson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Steven Rostedt
     
  • This fixes up the symlink functions for the calling convention change:

    * afs, autofs4, befs, devfs, freevxfs, jffs2, jfs, ncpfs, procfs,
    smbfs, sysvfs, ufs, xfs - prototype change for ->follow_link()
    * befs, smbfs, xfs - same for ->put_link()

    Signed-off-by: Linus Torvalds

    Al Viro
     
  • This bug could cause oopses and page state corruption, because ncpfs
    used the generic page-cache symlink handlign functions. But those
    functions only work if the page cache is guaranteed to be "stable", ie a
    page that was installed when the symlink walk was started has to still
    be installed in the page cache at the end of the walk.

    We could have fixed ncpfs to not use the generic helper routines, but it
    is in many ways much cleaner to instead improve on the symlink walking
    helper routines so that they don't require that absolute stability.

    We do this by allowing "follow_link()" to return a error-pointer as a
    cookie, which is fed back to the cleanup "put_link()" routine. This
    also simplifies NFS symlink handling.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • The current calling conventions for ->follow_link() are already fairly
    complex.

    What we have is
    1) you can return -error; then you must release nameidata yourself
    and ->put_link() will _not_ be called.
    2) you can do nd_set_link(nd, ERR_PTR(-error)) and return 0
    3) you can do nd_set_link(nd, path) and return 0
    4) you can return 0 (after having moved nameidata yourself)

    jffs2 follow_link() is broken - it has an exit where it returns
    -EIO and leaks nameidata.

    Signed-off-by: Linus Torvalds

    Al Viro
     
  • sparc_ksyms.c used to declare weak alias to several gcc intrinsics. It
    doesn't work with gcc4 anymore - it wants a declaration for the thing
    we are aliasing to and that's not going to happen for something like
    .mul, etc. Replaced with direct injection of weak alias on the assembler
    level - .weak followed by = ; that works on all
    gcc versions.

    Signed-off-by: Al Viro
    Signed-off-by: David S. Miller

    Al Viro
     
  • GCC 4.x really dislikes the games we are playing in
    unaligned.c, and the cleanest way to fix this is to
    move things into assembler.

    Noted by Al Viro.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • GLIBC 2.3.4 and later changed the STT_REGISTER macro to
    STT_SPARC_REGISTER, so we need to cope with that somehow.

    Original patch from fabbione, reposted by Ben Collins.

    Signed-off-by: David S. Miller

    Ben Colline
     
  • Signed-off-by: David S. Miller

    David S. Miller
     
  • A problem was reported by Grant Grundler on an HP rx8620 using IOX
    Core LAN partno(A7109-6) 5701 copper NIC. The tg3 driver mistakenly
    detects this NIC as having a SerDes PHY and link does not come up as a
    result.

    The problem was caused by an incorrectly programmed eeprom that set the
    NIC_SRAM_DATA_CFG_PHY_TYPE_FIBER bit in the NIC_SRAM_DATA_CFG location.

    This patch will override the NIC_SRAM_DATA_CFG_PHY_TYPE_FIBER bit if a
    valid PHY ID is read from the MII registers on older 570x chips where
    the MII interface is not used on SerDes chips. On newer chips such as
    the 5780 that use MII for both copper and SerDes, SerDes detection must
    rely on the eeprom.

    This patch will make the SerDes detection identical to versions 3.25 and
    older.

    Signed-off-by: Michael Chan
    Acked-by: Grant Grundler
    Signed-off-by: David S. Miller

    Michael Chan
     

19 Aug, 2005

20 commits