20 Oct, 2008

40 commits

  • Change lock_kernel()/unlock_kernel() to local fb mutex. Each frame buffer
    instance has its own mutex.

    The one line try_to_load() function is unrolled to request_module() in two
    places for readability.

    [righi.andrea@gmail.com: fb: fix NULL pointer BUG dereference in fb_open()]
    Signed-off-by: Krzysztof Helt
    Signed-off-by: Andrea Righi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • Framebuffer is heavily BKL dependant at the moment so just wrap the ioctl
    handler in the driver as we push down.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Alan Cox
    Cc: Krzysztof Helt
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alan Cox
     
  • We can get the following oops from gpio_get_value_cansleep() when a GPIO
    controller doesn't provide a get() callback:

    Unable to handle kernel paging request for instruction fetch
    Faulting instruction address: 0x00000000
    Oops: Kernel access of bad area, sig: 11 [#1]
    [...]
    NIP [00000000] 0x0
    LR [c0182fb0] gpio_get_value_cansleep+0x40/0x50
    Call Trace:
    [c7b79e80] [c0183f28] gpio_value_show+0x5c/0x94
    [c7b79ea0] [c01a584c] dev_attr_show+0x30/0x7c
    [c7b79eb0] [c00d6b48] fill_read_buffer+0x68/0xe0
    [c7b79ed0] [c00d6c54] sysfs_read_file+0x94/0xbc
    [c7b79ef0] [c008f24c] vfs_read+0xb4/0x16c
    [c7b79f10] [c008f580] sys_read+0x4c/0x90
    [c7b79f40] [c0013a14] ret_from_syscall+0x0/0x38

    It's OK to request the value of *any* GPIO; most GPIOs are bidirectional,
    so configuring them as outputs just enables an output driver and doesn't
    disable the input logic.

    So the problem is that gpio_get_value_cansleep() isn't making the same
    sanity check that gpio_get_value() does: making sure this GPIO isn't one
    of the atypical "no input logic" cases.

    Reported-by: Anton Vorontsov
    Signed-off-by: David Brownell
    Cc: [2.6.27.x, 2.6.26.x, 2.6.25.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • gpiolib can export GPIOs to userspace via sysfs. This patch modifies the
    gpio_value_show() so that any non-zero value is explicitly printed as "1",
    rather than whatever numerical value the lower-level driver returns.

    Signed-off-by: Steve Falco
    Signed-off-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Steven A. Falco
     
  • Teach rtc-cmos about the second bank of registers found on most modern x86
    systems, giving access to 128 bytes more NVRAM.

    This version only sees that extra NVRAM when both register banks are
    provided as part of *one* PNP resource. Since BIOS on some systems
    presents them using two IO resources, and nothing merges them, this can't
    always show all the NVRAM. (We're supposed to be able to use PNP id
    PNP0b01 too, but BIOS tables doesn't often seem to use that particular
    option.)

    Signed-off-by: David Brownell
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Bjorn Helgaas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • In function sn_sal_switch_to_asynch(): drivers/serial/sn_console.c:713:

    HZ * SN_SAL_UART_FIFO_DEPTH / SN_SAL_UART_FIFO_SPEED_CPS;

    After preprocessing (see defines in patch) this becomes HZ * 16 / 9600 / 10
    (associativity from left to right), not equivalent to HZ * 16 / 960.

    Looks-obviously-right-to: Tony Luck
    Cc: Jes Sorensen
    Acked-by: Pat Gefre
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    roel kluin
     
  • This patch makes the needlessly global probe_serial_gsc() static.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • readl/writel are not expected to accept iomap return value. Replace
    bogus mapping by standard ioremap.

    Signed-off-by: Jiri Slaby
    Cc:
    Acked-by: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiri Slaby
     
  • The read fail ratio is sensitive to the delay between the first byte
    written and the first byte read; apparently the sensors cannot be rushed.
    Increasing the minimum wait time, without changing the total wait time,
    improves the fail ratio from a 8% chance that any of the sensors fails in
    one read, down to 0.4%, on a Macbook Air. On a Macbook Pro 3,1, the
    effect is even more apparent. By reducing the number of status polls, the
    ratio is further improved to below 0.1%. Finally, increasing the total
    wait time brings the fail ratio down to virtually zero.

    Signed-off-by: Henrik Rydberg
    Tested-by: Bob McElrath
    Cc: Nicolas Boichat
    Cc: "Mark M. Hoffman"
    Cc: Jean Delvare
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Henrik Rydberg
     
  • Add temperature sensor support for Macbook Pro 3.

    Signed-off-by: Henrik Rydberg
    Cc: Nicolas Boichat
    Cc: Riki Oktarianto
    Cc: Mark M. Hoffman
    Cc: Jean Delvare
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Henrik Rydberg
     
  • Adds temperature sensor support for the Macbook Pro 4.

    Signed-off-by: Henrik Rydberg
    Cc: Nicolas Boichat
    Cc: Riki Oktarianto
    Cc: Mark M. Hoffman
    Cc: Jean Delvare
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Henrik Rydberg
     
  • dmi_system_id.driver_data is already void*.

    Cc: Henrik Rydberg
    Cc: Nicolas Boichat
    Cc: Riki Oktarianto
    Cc: Mark M. Hoffman
    Cc: Jean Delvare
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • This patch adds accelerometer, backlight and temperature sensor support
    for the Macbook Air.

    Signed-off-by: Henrik Rydberg
    Cc: Nicolas Boichat
    Cc: Riki Oktarianto
    Cc: Mark M. Hoffman
    Cc: Jean Delvare
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Henrik Rydberg
     
  • On some recent Macbooks, the package length for the light sensors ALV0 and
    ALV1 has changed from 6 to 10. This patch allows for a variable package
    length encompassing both variants.

    Signed-off-by: Henrik Rydberg
    Cc: Nicolas Boichat
    Cc: Riki Oktarianto
    Cc: Mark M. Hoffman
    Cc: Jean Delvare
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Henrik Rydberg
     
  • The time to wait for a status change while reading or writing to the SMC
    ports is a balance between read reliability and system performance. The
    current setting yields rougly three errors in a thousand when
    simultaneously reading three different temperature values on a Macbook
    Air. This patch increases the setting to a value yielding roughly one
    error in ten thousand, with no noticable system performance degradation.

    Signed-off-by: Henrik Rydberg
    Cc: Nicolas Boichat
    Cc: Riki Oktarianto
    Cc: Mark M. Hoffman
    Cc: Jean Delvare
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Henrik Rydberg
     
  • On many Macbooks since mid 2007, the Pro, C2D and Air models, applesmc
    fails to read some or all SMC ports. This problem has various effects,
    such as flooded logfiles, malfunctioning temperature sensors,
    accelerometers failing to initialize, and difficulties getting backlight
    functionality to work properly.

    The root of the problem seems to be the command protocol. The current
    code sends out a command byte, then repeatedly polls for an ack before
    continuing to send or recieve data. From experiments leading to this
    patch, it seems the command protocol never quite worked or changed so that
    one now sends a command byte, waits a little bit, polls for an ack, and if
    it fails, repeats the whole thing by sending the command byte again.

    This patch implements a send_command function according to the new
    interpretation of the protocol, and should work also for earlier models.

    Signed-off-by: Henrik Rydberg
    Cc: Nicolas Boichat
    Cc: Riki Oktarianto
    Cc: Mark M. Hoffman
    Cc: Jean Delvare
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Henrik Rydberg
     
  • At one single place in the code, the specified number of bytes to read and
    the actual number of bytes read differ by one. This one-liner patch fixes
    that inconsistency.

    Signed-off-by: Henrik Rydberg
    Cc: Nicolas Boichat
    Cc: Riki Oktarianto
    Cc: Mark M. Hoffman
    Cc: Jean Delvare
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Henrik Rydberg
     
  • Adds therm-min/max/crit-alarm callbacks, sensor-device-attribute
    declarations, and refs to those new decls in the macro used to initialize
    the therm_group (of sysfs files)

    The thermistors use voltage channels to measure; so they don't have a
    fault-alarm, but unlike the other voltages, they do have an overtemp,
    which we call crit (by convention).

    [akpm@linux-foundation.org: cleanup]
    Signed-off-by: Jim Cromie
    Cc: Jean Delvare
    Cc: "Mark M. Hoffman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jim Cromie
     
  • temp and vin status register values may be set by chip specifications, set
    again by bios, or by this previously loaded driver. Debug output nicely
    displays modprobe init=\d actions.

    Signed-off-by: Jim Cromie
    Cc: Jean Delvare
    Cc: "Mark M. Hoffman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jim Cromie
     
  • Driver handles 3 logical devices in fixed length array. Give this a
    define-d constant.

    Signed-off-by: Jim Cromie
    Cc: Jean Delvare
    Cc: "Mark M. Hoffman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jim Cromie
     
  • Adds temp-min/max/crit/fault-alarm callbacks, sensor-device-attribute
    declarations, and refs to those new decls in the macro used to initialize
    the temp_group (of sysfs files)

    [akpm@linux-foundation.org: cleanups]
    Signed-off-by: Jim Cromie
    Cc: Jean Delvare
    Cc: "Mark M. Hoffman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jim Cromie
     
  • Adds vin-min/max-alarm callbacks, sensor-device-attribute declarations,
    and refs to those new decls in the macro used to initialize the vin_group
    (of sysfs files)

    [akpm@linux-foundation.org: cleanups]
    Signed-off-by: Jim Cromie
    Cc: Jean Delvare
    Cc: "Mark M. Hoffman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jim Cromie
     
  • Bring hwmon/pc87360 into agreement with
    Documentation/hwmon/sysfs-interface.

    Patchset adds separate limit alarms for voltages and temps, it also adds
    temp[123]_fault files. On my Soekris, temps 1,2 are unused/unconnected,
    so temp[123]_fault = 1,1,0 respectively. This agrees with
    /usr/bin/sensors, which has always shown them as OPEN. Temps 4,5,6 are
    thermistor based, and dont have a fault bit in their status register.

    This patch:

    2 different kinds of constants added:
    - CHAN_ALM_* constants for (later) vin, temp alarm callbacks.
    - CHAN_* conversion constants, used in _init_device, partly for RW1C bits

    Signed-off-by: Jim Cromie
    Cc: Jean Delvare
    Cc: "Mark M. Hoffman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jim Cromie
     
  • Fix for a typo and and replacing incorrect word in the comment.

    Signed-off-by: Ameya Palande
    Cc: "Ashok Raj"
    Cc: "Shaohua Li"
    Cc: "Anil S Keshavamurthy"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ameya Palande
     
  • These comments are useless, remove them.

    Signed-off-by: WANG Cong
    Cc: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    WANG Cong
     
  • On my HP 2510, pressing the (i) button generates an unknown keycode:
    0x213b. So here is a patch adding support for it. However, as it seems
    there is already support for a similar button connected to 0x231b as
    keycode, I wonder if it could be a typo in the driver?

    Signed-off-by: Eric Piel
    Cc: Matthew Garrett
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Piel
     
  • I fell into the trap recently that it only dumps hrtimers instead of
    all timers. Fix the documentation.

    Signed-off-by: Andi Kleen
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • Fix

    arch/um/sys-i386/signal.c: In function 'copy_sc_from_user':
    arch/um/sys-i386/signal.c:182: warning: dereferencing 'void *' pointer
    arch/um/sys-i386/signal.c:182: error: request for member '_fxsr_env' in something not a structure or union

    Signed-off-by: WANG Cong
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    WANG Cong
     
  • Removed duplicated include file in
    arch/m68k/bvme6000/rtc.c.

    Signed-off-by: Huang Weiyi
    Cc: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Huang Weiyi
     
  • Describe why we need the freezer subsystem and how to use it in a
    documentation file. Since the cgroups.txt file is focused on the
    subsystem-agnostic portions of cgroups make a directory and move the old
    cgroups.txt file at the same time.

    Signed-off-by: Matt Helsley
    Cc: Paul Menage
    Cc: containers@lists.linux-foundation.org
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Helsley
     
  • check_if_frozen() sounds like it should return something when in fact it's
    just updating the freezer state.

    Signed-off-by: Matt Helsley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Helsley
     
  • Rename cgroup freezer states to be less generic to avoid any name
    collisions while also better describing what each state is.

    Signed-off-by: Matt Helsley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Helsley
     
  • Don't let frozen tasks or cgroups change. This means frozen tasks can't
    leave their current cgroup for another cgroup. It also means that tasks
    cannot be added to or removed from a cgroup in the FROZEN state. We
    enforce these rules by checking for frozen tasks and cgroups in the
    can_attach() function.

    Signed-off-by: Matt Helsley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Helsley
     
  • When a system is resumed after a suspend, it will also unfreeze frozen
    cgroups.

    This patchs modifies the resume sequence to skip the tasks which are part
    of a frozen control group.

    Signed-off-by: Cedric Le Goater
    Signed-off-by: Matt Helsley
    Acked-by: Serge E. Hallyn
    Tested-by: Matt Helsley
    Acked-by: Rafael J. Wysocki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Helsley
     
  • This patch implements a new freezer subsystem in the control groups
    framework. It provides a way to stop and resume execution of all tasks in
    a cgroup by writing in the cgroup filesystem.

    The freezer subsystem in the container filesystem defines a file named
    freezer.state. Writing "FROZEN" to the state file will freeze all tasks
    in the cgroup. Subsequently writing "RUNNING" will unfreeze the tasks in
    the cgroup. Reading will return the current state.

    * Examples of usage :

    # mkdir /containers/freezer
    # mount -t cgroup -ofreezer freezer /containers
    # mkdir /containers/0
    # echo $some_pid > /containers/0/tasks

    to get status of the freezer subsystem :

    # cat /containers/0/freezer.state
    RUNNING

    to freeze all tasks in the container :

    # echo FROZEN > /containers/0/freezer.state
    # cat /containers/0/freezer.state
    FREEZING
    # cat /containers/0/freezer.state
    FROZEN

    to unfreeze all tasks in the container :

    # echo RUNNING > /containers/0/freezer.state
    # cat /containers/0/freezer.state
    RUNNING

    This is the basic mechanism which should do the right thing for user space
    task in a simple scenario.

    It's important to note that freezing can be incomplete. In that case we
    return EBUSY. This means that some tasks in the cgroup are busy doing
    something that prevents us from completely freezing the cgroup at this
    time. After EBUSY, the cgroup will remain partially frozen -- reflected
    by freezer.state reporting "FREEZING" when read. The state will remain
    "FREEZING" until one of these things happens:

    1) Userspace cancels the freezing operation by writing "RUNNING" to
    the freezer.state file
    2) Userspace retries the freezing operation by writing "FROZEN" to
    the freezer.state file (writing "FREEZING" is not legal
    and returns EIO)
    3) The tasks that blocked the cgroup from entering the "FROZEN"
    state disappear from the cgroup's set of tasks.

    [akpm@linux-foundation.org: coding-style fixes]
    [akpm@linux-foundation.org: export thaw_process]
    Signed-off-by: Cedric Le Goater
    Signed-off-by: Matt Helsley
    Acked-by: Serge E. Hallyn
    Tested-by: Matt Helsley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Helsley
     
  • Now that the TIF_FREEZE flag is available in all architectures, extract
    the refrigerator() and freeze_task() from kernel/power/process.c and make
    it available to all.

    The refrigerator() can now be used in a control group subsystem
    implementing a control group freezer.

    Signed-off-by: Cedric Le Goater
    Signed-off-by: Matt Helsley
    Acked-by: Serge E. Hallyn
    Tested-by: Matt Helsley
    Cc: "Rafael J. Wysocki"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Helsley
     
  • This patch series introduces a cgroup subsystem that utilizes the swsusp
    freezer to freeze a group of tasks. It's immediately useful for batch job
    management scripts. It should also be useful in the future for
    implementing container checkpoint/restart.

    The freezer subsystem in the container filesystem defines a cgroup file
    named freezer.state. Reading freezer.state will return the current state
    of the cgroup. Writing "FROZEN" to the state file will freeze all tasks
    in the cgroup. Subsequently writing "RUNNING" will unfreeze the tasks in
    the cgroup.

    * Examples of usage :

    # mkdir /containers/freezer
    # mount -t cgroup -ofreezer freezer /containers
    # mkdir /containers/0
    # echo $some_pid > /containers/0/tasks

    to get status of the freezer subsystem :

    # cat /containers/0/freezer.state
    RUNNING

    to freeze all tasks in the container :

    # echo FROZEN > /containers/0/freezer.state
    # cat /containers/0/freezer.state
    FREEZING
    # cat /containers/0/freezer.state
    FROZEN

    to unfreeze all tasks in the container :

    # echo RUNNING > /containers/0/freezer.state
    # cat /containers/0/freezer.state
    RUNNING

    This patch:

    The first step in making the refrigerator() available to all
    architectures, even for those without power management.

    The purpose of such a change is to be able to use the refrigerator() in a
    new control group subsystem which will implement a control group freezer.

    [akpm@linux-foundation.org: fix sparc]
    Signed-off-by: Cedric Le Goater
    Signed-off-by: Matt Helsley
    Acked-by: Pavel Machek
    Acked-by: Serge E. Hallyn
    Acked-by: Rafael J. Wysocki
    Acked-by: Nigel Cunningham
    Tested-by: Matt Helsley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Helsley
     
  • To prepare the chunking, move the sys_move_pages() code that is used when
    nodes!=NULL into do_pages_move(). And rename do_move_pages() into
    do_move_page_to_node_array().

    Signed-off-by: Brice Goglin
    Acked-by: Christoph Lameter
    Cc: Nick Piggin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Brice Goglin
     
  • do_pages_stat() does not need any page_to_node entry for real. Just pass
    the pointers to the user-space page address array and to the user-space
    status array, and have do_pages_stat() traverse the former and fill the
    latter directly.

    Signed-off-by: Brice Goglin
    Acked-by: Christoph Lameter
    Cc: Nick Piggin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Brice Goglin
     
  • A patchset reworking sys_move_pages(). It removes the possibly large
    vmalloc by using multiple chunks when migrating large buffers. It also
    dramatically increases the throughput for large buffers since the lookup
    in new_page_node() is now limited to a single chunk, causing the quadratic
    complexity to have a much slower impact. There is no need to use any
    radix-tree-like structure to improve this lookup.

    sys_move_pages() duration on a 4-quadcore-opteron 2347HE (1.9Gz),
    migrating between nodes #2 and #3:

    length move_pages (us) move_pages+patch (us)
    4kB 126 98
    40kB 198 168
    400kB 963 937
    4MB 12503 11930
    40MB 246867 11848

    Patches #1 and #4 are the important ones:
    1) stop returning -ENOENT from sys_move_pages() if nothing got migrated
    2) don't vmalloc a huge page_to_node array for do_pages_stat()
    3) extract do_pages_move() out of sys_move_pages()
    4) rework do_pages_move() to work on page_sized chunks
    5) move_pages: no need to set pp->page to ZERO_PAGE(0) by default

    This patch:

    There is no point in returning -ENOENT from sys_move_pages() if all pages
    were already on the right node, while we return 0 if only 1 page was not.
    Most application don't know where their pages are allocated, so it's not
    an error to try to migrate them anyway.

    Just return 0 and let the status array in user-space be checked if the
    application needs details.

    It will make the upcoming chunked-move_pages() support much easier.

    Signed-off-by: Brice Goglin
    Acked-by: Christoph Lameter
    Cc: Nick Piggin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Brice Goglin