31 Oct, 2008

10 commits

  • Currently, the numa_node of OF-devices will be overwritten during
    device_register, which simply sets the node to -1. On cell machines,
    this means that devices can't find their IOMMU, which is referenced
    through the device's numa node.

    Set the numa node for OF devices with no parent, and use the
    lower-level device_initialize and device_add functions, so that the
    node is preserved.

    We can remove the call to set_dev_node in of_device_alloc, as it
    will be overwritten during register.

    Signed-off-by: Jeremy Kerr
    Signed-off-by: Paul Mackerras

    Jeremy Kerr
     
  • Since VSX support was added, we now have two sizes of ucontext_t;
    the older, smaller size without the extra VSX state, and the new
    larger size with the extra VSX state. A program using the
    sys_swapcontext system call and supplying smaller ucontext_t
    structures will currently get an EINVAL error if the task has
    used VSX (e.g. because of calling library code that uses VSX) and
    the old_ctx argument is non-NULL (i.e. the program is asking for
    its current context to be saved). Thus the program will start
    getting EINVAL errors on calls that previously worked.

    This commit changes this behaviour so that we don't send an EINVAL in
    this case. It will now return the smaller context but the VSX MSR bit
    will always be cleared to indicate that the ucontext_t doesn't include
    the extra VSX state, even if the task has executed VSX instructions.

    Both 32 and 64 bit cases are updated.

    [paulus@samba.org - also fix some access_ok() and get_user() calls]

    Thanks to Ben Herrenschmidt for noticing this problem.

    Signed-off-by: Michael Neuling
    Signed-off-by: Paul Mackerras

    Michael Neuling
     
  • Fixes this warning:
    arch/powerpc/kernel/setup_64.c:447:5: warning: "kernstart_addr" is not defined

    which arises because PHYSICAL_START is no longer a constant when
    CONFIG_RELOCATABLE=y.

    Signed-off-by: Michael Neuling
    Signed-off-by: Paul Mackerras

    Michael Neuling
     
  • Commit 549e8152de8039506f69c677a4546e5427aa6ae7 ("powerpc: Make the
    64-bit kernel as a position-independent executable") added lines to
    vmlinux.lds.S to add the extra sections needed to implement a
    relocatable kernel. However, those lines seem to trigger a bug in
    older versions of GNU ld (such as 2.16.1) when building a
    non-relocatable kernel. Since ld 2.16.1 is still a popular choice for
    cross-toolchains, this adds an #ifdef to vmlinux.lds.S so the added
    lines are only included when building a relocatable kernel.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     
  • The __kdump_flag ABI is overly constraining for future development.

    As of 2.6.27, the kernel entry point has 4 constraints: Offset 0 is
    the starting point for the master (boot) cpu (entered with r3 pointing
    to the device tree structure), offset 0x60 is code for the slave cpus
    (entered with r3 set to their device tree physical id), offset 0x20 is
    used by the iseries hypervisor, and secondary cpus must be well behaved
    when the first 256 bytes are copied to address 0.

    Placing the __kdump_flag at 0x18 is bad because:

    - It was taking the last 8 bytes before the iseries hypervisor data.
    - It was 8 bytes for a boolean flag
    - It had no way of identifying that the flag was present
    - It does leave any room for the master to add any additional code
    before branching, which hurts debug.
    - It will be unnecessarily hard for 32 bit code to be common (8 bytes)

    Now that we have eliminated the use of __kdump_flag in favor of
    the standard is_kdump_kernel(), this flag only controls run without
    relocating the kernel to PHYSICAL_START (0), so rename it __run_at_load.

    Move the flag to 0x5c, 1 word before the secondary cpu entry point at
    0x60. Initialize it with "run0" to say it will run at 0 unless it is
    set to 1. It only exists if we are relocatable.

    Signed-off-by: Milton Miller
    Signed-off-by: Michael Neuling
    Signed-off-by: Paul Mackerras

    Milton Miller
     
  • linux/crash_dump.h defines is_kdump_kernel() to be used by code that
    needs to know if the previous kernel crashed instead of a (clean) boot
    or reboot.

    This updates the just added powerpc code to use it. This is needed
    for the next commit, which will remove __kdump_flag.

    Signed-off-by: Milton Miller
    Signed-off-by: Paul Mackerras

    Milton Miller
     
  • Commit 54622f10a6aabb8bb2bdacf3dd070046f03dc246 ("powerpc: Support for
    relocatable kdump kernel") added a magic flag value in a register to
    tell purgatory that it should be a panic kernel. This part is wrong
    and is reverted by this commit.

    The kernel gets a list of memory blocks and a entry point from user space.
    Its job is to copy the blocks into place and then branch to the designated
    entry point (after turning "off" the mmu).

    The user space tool inserts a trampoline, called purgatory, that runs
    before the user supplied code. Its job is to establish the entry
    environment for the new kernel or other application based on the contents
    of memory. The purgatory code is compiled and embedded in the tool,
    where it is later patched using the elf symbol table using elf symbols.

    Since the tool knows it is creating a purgatory that will run after a
    kernel crash, it should just patch purgatory (or the kernel directly)
    if something needs to happen.

    Signed-off-by: Milton Miller
    Signed-off-by: Paul Mackerras

    Milton Miller
     
  • Paul Mackerras
     
  • Update the PowerPC 44x defconfigs for 2.6.28

    Signed-off-by: Josh Boyer

    Josh Boyer
     
  • Update the PowerPC 40x defconfigs for 2.6.28

    Signed-off-by: Josh Boyer

    Josh Boyer
     

28 Oct, 2008

4 commits


27 Oct, 2008

17 commits

  • .. fix all the worst problems in -rc1

    Linus Torvalds
     
  • If CONFIG_AMIGA_BUILTIN_SERIAL=m, I get the following warnings:

    | drivers/char/amiserial.c: At top level:
    | drivers/char/amiserial.c:2138: warning: data definition has no type or storage class
    | drivers/char/amiserial.c:2138: warning: type defaults to 'int' in declaration of 'console_initcall'
    | drivers/char/amiserial.c:2138: warning: parameter names (without types) in function declaration
    | drivers/char/amiserial.c:2134: warning: 'amiserial_console_init' defined but not used

    because console_initcall() is not defined (nor really sensible) in the
    modular case.

    So disable serial console support if the driver is modular.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • In commit f337b9c58332bdecde965b436e47ea4c94d30da0 ("epoll: drop
    unnecessary test") Thomas found that there is an unnecessary (always
    true) test in ep_send_events(). The callback never inserts into
    ->rdllink while the send loop is performed, and also does the
    ~EP_PRIVATE_BITS test. Given we're holding the mutex during this time,
    the conditions tested inside the loop are always true.

    HOWEVER.

    The test "!ep_is_linked(&epi->rdllink)" wasn't there because we insert
    into ->rdllink, but because the send-events loop might terminate before
    the whole list is scanned (-EFAULT).

    In such cases, when the loop terminates early, and when a (leftover)
    file received an event while we're performing the lockless loop, we need
    such test to avoid to double insert the epoll items. The list_splice()
    done a few steps below, will correctly re-insert the ones that were left
    on "txlist".

    This should fix the kenrel.org bugzilla entry 11831.

    Signed-off-by: Davide Libenzi
    Signed-off-by: Linus Torvalds

    Davide Libenzi
     
  • Some userland apps seem to pass in a "0" for the seconds, and several
    seconds worth of usecs to select(). The old kernels accepted this just
    fine, so the new kernels must too.

    However, due to the upscaling of the microseconds to nanoseconds we had
    some cases where we got math overflow, and depending on the GCC version
    (due to inlining decisions) that actually resulted in an -EINVAL return.

    This patch fixes this by adding the excess microseconds to the seconds
    field.

    Also with thanks to Marcin Slusarz for spotting some implementation bugs
    in the diagnostics patches.

    Reported-by: Carlos R. Mafra
    Signed-off-by: Arjan van de Ven
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     
  • The default for the regulatory compatibility option is wrong;
    if you picked the default you ended up with a non-functional wifi
    system (at least I did on Fedora 9 with iwl4965).
    I don't think even the October 2008 releases of the various distros
    has the new userland so clearly the default is wrong, and also
    we can't just go about deleting this in 2.6.29...

    Change the default to "y" and also adjust the config text a little to
    reflect this.

    This patch fixes regression #11859

    With thanks to Johannes Berg for the diagnostics

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     
  • /scratch/sfr/next/kernel/cgroup.c: In function 'cgroup_tasks_start':
    /scratch/sfr/next/kernel/cgroup.c:2107: warning: unused variable 'i'

    Introduced in commit cc31edceee04a7b87f2be48f9489ebb72d264844 "cgroups:
    convert tasks file to use a seq_file with shared pid array".

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • * 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6:
    hwmon: (abituguru3) enable DMI probing feature on AW9D-MAX
    hwmon: (abituguru3) Cosmetic whitespace fixes
    hwmon: (adt7473) Fix voltage conversion routines
    hwmon: (lm90) Add support for the LM99 16 degree offset
    hwmon: (lm90) Fix handling of hysteresis value
    hwmon-vid: Add support for AMD family 10h CPUs
    hwmon: (w83781d) Fix linking when built-in

    Linus Torvalds
     
  • This reverts commit 7bf6bf4803df1adc927f585168d2135fb019c698.

    The code has both a short existence and an increasing track of failures
    despite some work to amend it for -rc1. It is not just a matter of
    reading the eeprom: sometimes the eeprom is read correctly, then the mac
    address is not written correctly back into the mac registers.

    Some chipsets seem to work reliably but it is not clear at this point if
    the code can simply be made to work on a per-chipset basis and post -rc1
    is not the place where I want to experiment these things.

    Signed-off-by: Francois Romieu
    Signed-off-by: Linus Torvalds

    Francois Romieu
     
  • a) semicolon before the function body is a bad idea
    b) it's const struct foo, not struct const foo
    c) incidentally, it's ecard_remove_driver(), not ecard_unregister_driver()
    d) compiling is occasionally useful.

    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • If you use KCONFIG_ALLCONFIG (even with empty file) you get broken
    allmodconfig/allyesconfig; CONFIG_MODULES gets turned off, with obvious
    massive fallout.

    Breakage had been introduced when conf_set_all_new_symbols() got used
    for allmodconfig et.al.

    What happens is that sym_calc_value(modules_sym) done in
    conf_read_simple() sets SYMBOL_VALID on both modules_sym and MODULES.
    When we get to conf_set_all_new_symbols(), we set sym->def[S_DEF_USER]
    on everything, but it has no effect on sym->curr for the symbols that
    already have SYMBOL_VALID - these are stuck.

    Solution: use sym_clear_all_valid() in there. Note that it makes
    reevaluation of modules_sym redundant - sym_clear_all_valid() will do
    that itself.

    [ Fixes http://bugzilla.kernel.org/show_bug.cgi?id=11512, says Alexey ]

    Signed-off-by: Al Viro
    Cc: Sam Ravnborg
    Cc: Roman Zippel
    Cc: Alexey Dobriyan
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • Switch the AW9D-MAX over from port probing to the preferred DMI
    probe method.

    Signed-off-by: Alistair John Strachan
    Tested-by: Justin Piszcz
    Acked-by: Hans de Goede
    Signed-off-by: Jean Delvare

    Alistair John Strachan
     
  • As the probable result of zealous copy/pasting, many supported boards
    contain sensor names with trailing whitespace. Though this is not a
    huge problem, it is inconsistent with other sensor names, and with
    other similar hwmon drivers.

    Additionally, the DMI nag message added in 2.6.27 was missing a
    space between two sentence fragments -- might as well clean that up
    too.

    Doesn't alter any kernel text, just data.

    Signed-off-by: Alistair John Strachan
    Reported-by: Justin Piszcz
    Acked-by: Hans de Goede
    Signed-off-by: Jean Delvare

    Alistair John Strachan
     
  • Fix voltage conversion routines. Based on an earlier patch from
    Paulius Zaleckas.

    According to the datasheet voltage is scaled with resistors and
    value 192 is nominal voltage. 0 is 0V.

    Signed-off-by: Jean Delvare
    Cc: Paulius Zaleckas
    Cc: Darrick J. Wong

    Jean Delvare
     
  • The LM99 differs from the LM86, LM89 and LM90 in that it reports
    remote temperatures (temp2) 16 degrees lower than they really are. So
    far we have been cheating and handled this in userspace but it really
    should be handled by the driver directly.

    Signed-off-by: Jean Delvare
    Cc: Matthew Garrett

    Jean Delvare
     
  • There are several problems in the way the hysteresis value is handled
    by the lm90 driver:

    * In show_temphyst(), specific handling of the MAX6646 is missing, so
    the hysteresis is reported incorrectly if the critical temperature
    is over 127 degrees C.
    * In set_temphyst(), the new hysteresis register value is written to
    the chip but data->temp_hyst isn't updated accordingly, so there is
    a short period of time (up to 2 seconds) where the old hystereris
    value will be returned while the new one is already active.
    * In set_temphyst(), the critical temperature which is used as a base
    to compute the value of the hysteresis register lacks
    device-specific handling. As a result, the value of the hysteresis
    register might be incorrect for the ADT7461 and MAX6646 chips.

    Fix these 3 bugs.

    Signed-off-by: Jean Delvare
    Cc: Ben Hutchings
    Cc: Nate Case

    Jean Delvare
     
  • The AMD family 10h CPUs use the same VID decoding table as the family
    0Fh CPUs.

    Signed-off-by: Jean Delvare
    Cc: Rudolf Marek

    Jean Delvare
     
  • When w83781d is built-in, the final links fails with the following vague error
    message:

    `.exit.text' referenced in section `.init.text' of drivers/built-in.o: defined
    in discarded section `.exit.text' of drivers/built-in.o

    w83781d_isa_unregister() cannot be marked __exit, as it's also called from
    sensors_w83781d_init(), which is marked __init.

    Signed-off-by: Geert Uytterhoeven
    Cc: Wolfgang Grandegger
    Signed-off-by: Jean Delvare

    Geert Uytterhoeven
     

26 Oct, 2008

4 commits

  • * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
    ext4: Fix duplicate entries returned from getdents() system call
    ext3: Fix duplicate entries returned from getdents() system call

    Linus Torvalds
     
  • This reverts commit a802dd0eb5fc97a50cf1abb1f788a8f6cc5db635 by moving
    the call to init_workqueues() back where it belongs - after SMP has been
    initialized.

    It also moves stop_machine_init() - which needs workqueues - to a later
    phase using a core_initcall() instead of early_initcall(). That should
    satisfy all ordering requirements, and was apparently the reason why
    init_workqueues() was moved to be too early.

    Cc: Heiko Carstens
    Cc: Rusty Russell
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Fix a regression caused by commit d0156417, "ext4: fix ext4_dx_readdir
    hash collision handling", where deleting files in a large directory
    (requiring more than one getdents system call), results in some
    filenames being returned twice. This was caused by a failure to
    update info->curr_hash and info->curr_minor_hash, so that if the
    directory had gotten modified since the last getdents() system call
    (as would be the case if the user is running "rm -r" or "git clean"),
    a directory entry would get returned twice to the userspace.

    Signed-off-by: "Theodore Ts'o"

    This patch fixes the bug reported by Markus Trippelsdorf at:
    http://bugzilla.kernel.org/show_bug.cgi?id=11844

    Signed-off-by: "Theodore Ts'o"
    Tested-by: Markus Trippelsdorf

    Theodore Ts'o
     
  • Fix a regression caused by commit 6a897cf4, "ext3: fix ext3_dx_readdir
    hash collision handling", where deleting files in a large directory
    (requiring more than one getdents system call), results in some
    filenames being returned twice. This was caused by a failure to
    update info->curr_hash and info->curr_minor_hash, so that if the
    directory had gotten modified since the last getdents() system call
    (as would be the case if the user is running "rm -r" or "git clean"),
    a directory entry would get returned twice to the userspace.

    This patch fixes the bug reported by Markus Trippelsdorf at:
    http://bugzilla.kernel.org/show_bug.cgi?id=11844

    Signed-off-by: "Theodore Ts'o"
    Tested-by: Markus Trippelsdorf

    Theodore Ts'o
     

24 Oct, 2008

5 commits

  • The recent commit 2fca5ccf97d2c28bcfce44f5b07d85e74e3cd18e ("libata:
    switch to using block layer tagging support") to enable support for
    block layer tagging in libata was broken for non-NCQ devices

    The block layer initializes the tag field to -1 to detect invalid uses
    of a tag, and if the libata devices does NOT support NCQ, we just used
    that field to index the internal command list. So we need to check for
    -1 first and only use the tag field if it's valid.

    Signed-off-by: Jens Axboe
    Reported-by: Alexander Beregalov
    Tested-by: Paul Mundt
    Tested-by: Dave Young
    Tested-by: Rafael J. Wysocki
    Signed-off-by: Linus Torvalds

    Jens Axboe
     
  • Linus Torvalds
     
  • Fix printk format warning:

    drivers/pci/hotplug/acpiphp_ibm.c:207: warning: format '%08lx' expects type 'long unsigned int', but argument 3 has type 'long long unsigned int'

    Signed-off-by: Randy Dunlap
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6:
    PCI: remove unused resource assignment in pci_read_bridge_bases()
    PCI hotplug: shpchp: message refinement
    PCI hotplug: shpchp: replace printk with dev_printk
    PCI: add routines for debugging and handling lost interrupts
    PCI hotplug: pciehp: message refinement
    PCI: fix ARI code to be compatible with mixed ARI/non-ARI systems
    PCI hotplug: cpqphp: fix kernel NULL pointer dereference

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (29 commits)
    tcp: Restore ordering of TCP options for the sake of inter-operability
    net: Fix disjunct computation of netdev features
    sctp: Fix to handle SHUTDOWN in SHUTDOWN_RECEIVED state
    sctp: Fix to handle SHUTDOWN in SHUTDOWN-PENDING state
    sctp: Add check for the TSN field of the SHUTDOWN chunk
    sctp: Drop ICMP packet too big message with MTU larger than current PMTU
    p54: enable 2.4/5GHz spectrum by eeprom bits.
    orinoco: reduce stack usage in firmware download path
    ath5k: fix suspend-related oops on rmmod
    [netdrvr] fec_mpc52xx: Implement polling, to make netconsole work.
    qlge: Fix MSI/legacy single interrupt bug.
    smc911x: Make the driver safer on SMP
    smc911x: Add IRQ polarity configuration
    smc911x: Allow Kconfig dependency on ARM
    sis190: add identifier for Atheros AR8021 PHY
    8139x: reduce message severity on driver overlap
    igb: add IGB_DCA instead of selecting INTEL_IOATDMA
    igb: fix tx data corruption with transition to L0s on 82575
    ehea: Fix memory hotplug support
    netdev: DM9000: remove BLACKFIN hacking in DM9000 netdev driver
    ...

    Linus Torvalds