13 Feb, 2007

40 commits

  • This is an attempt of providing an interface for memory scrubbing control in
    EDAC.

    This patch modifies the EDAC Core to provide the Interface for memory
    controller modules to implment.

    The following things are still outstanding:

    - K8 is the first implemenation,

    The patch provide a method of configuring the K8 hardware memory scrubber
    via the 'mcX' sysfs directory. There should be some fallback to a generic
    scrubber implemented in software if the hardware does not support
    scrubbing.

    Or .. the scrubbing sysfs entry should not be visible at all.

    - Only works with SDRAM, not cache,

    The K8 can scrub cache and l2cache also - but I think this is not so
    useful as the cache is busy all the time (one hopes).

    One would also expect that cache scrubbing requires hardware support.

    - Error Handling,

    I would like that errors are returned to the user in "terms of file
    system".

    - Presentation,

    I chose Bandwidth in Bytes/Second as a representation of the scrubbing
    rate for the following reasons:

    I like that the sysfs entries are sort-of textual, related to something
    that makes sense instead of magical values that must be looked up.

    "My People" wants "% main memory scrubbed per hour" others prefer "%
    memory bandwidth used" as representation, "bandwith used" makes it easy to
    calculate both versions in one-liner scripts.

    If one later wants to scrub cache, the scaling becomes wierd for K8
    changing from "blocks of 64 byte memory" to "blocks of 64 cache lines" to
    "blocks of 64 bit". Using "bandwidth used" makes sense in all three cases,
    (I.M.O. anyway ;-).

    - Discovery,

    There is no way to discover the possible settings and what they do
    without reading the code and the documentation.

    *I* do not know how to make that work in a practical way.

    - Bugs(??),

    other tools can set invalid values in the memory scrub control register,
    those will read back as '-1', requiring the user to reset the scrub rate.
    This is how *I* think it should be.

    - Afflicting other areas of code,

    I made changes to edac_mc.c and edac_mc.h which will show up globally -
    this is not nice, it would be better that the memory scrubbing fuctionality
    and interface could be entirely contained within the memory controller it
    applies to.

    Frithiof Jensen

    edac_mc.c and its .h file is a CORE helper module for EDAC
    driver modules. This provides the abstraction for device specific
    drivers. It is fine to modify this CORE to provide help for
    new features of the the drivers

    doug thompson

    Signed-off-by: Frithiof Jensen
    Signed-off-by: doug thompson
    Acked-by: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Frithiof Jensen
     
  • This fix/change returns the offset into the page for the ce/ue error, instead
    of just 0. The e752x dram controller reads 34:6 of the linear address with
    the error.

    Signed-off-by: Mike Chan
    Signed-off-by: doug thompson
    Acked-by: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Chan
     
  • The reading of the DRA registers should be a byte at a time (one register at a
    time) instead of 4 bytes at a time (four registers). Reading a dword at a
    time retrieves erroneous information from all but the first register. A
    change was made to read in each register in a loop prior to using the data in
    those registers.

    Signed-off-by: Brian Pomerantz
    Signed-off-by: Dave Jiang
    Signed-off-by: Doug Thompson
    Cc: Alan Cox
    Cc: Andi Kleen
    Cc: "Eric W. Biederman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Brian Pomerantz
     
  • The fatal vs. non-fatal mask for the sysbus FERR status is incorrect
    according to the E7520 datasheet. This patch corrects the mask to correctly
    handle fatal and non-fatal errors.

    Signed-off-by: Brian Pomerantz
    Signed-off-by: Dave Jiang
    Signed-off-by: Doug Thompson
    Cc: Alan Cox
    Cc: Andi Kleen
    Cc: "Eric W. Biederman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Brian Pomerantz
     
  • Now that I have changed all of the in-tree users remove the old version of
    these functions. This should make it clear to any out of tree users that they
    should be using kill_pgrp kill_pgrp_info or __kill_pgrp_info instead.

    Signed-off-by: Eric W. Biederman
    Cc: Alan Cox
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • Now that I have changed all of the users remove the old version of these
    functions. This should be a clear hint to any out of tree users that they
    should use do_each_pid_task and while_each_pid_task for new code.

    Signed-off-by: Eric W. Biederman
    Cc: Alan Cox
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • There isn't any real advantage to this change except that it allows the old
    functions to be removed. Which is easier on maintenance and puts the code in
    a more uniform style.

    Signed-off-by: Eric W. Biederman
    Cc: Alan Cox
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • Of kernel subsystems that work with pids the tty layer is probably the largest
    consumer. But it has the nice virtue that the assiation with a session only
    lasts until the session leader exits. Which means that no reference counting
    is required. So using struct pid winds up being a simple optimization to
    avoid hash table lookups.

    In the long term the use of pid_nr also ensures that when we have multiple pid
    spaces mixed everything will work correctly.

    Signed-off-by: Eric W. Biederman
    Cc: Alan Cox
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • Every call to is_orphaned_pgrp passed in process_group(current) which is racy
    with respect to another thread changing our process group. It didn't bite us
    because we were dealing with integers and the worse we would get would be a
    stale answer.

    In switching the checks to use struct pid to be a little more efficient and
    prepare the way for pid namespaces this race became apparent.

    So I simplified the calls to the more specialized is_current_pgrp_orphaned so
    I didn't have to worry about making logic changes to avoid the race.

    Signed-off-by: Eric W. Biederman
    Cc: Alan Cox
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • Modify has_stopped_jobs and will_become_orphan_pgrp to use struct pid based
    process groups. This reduces the number of hash tables looks ups and paves
    the way for multiple pid spaces.

    Signed-off-by: Eric W. Biederman
    Cc: Alan Cox
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • To properly implement a pid namespace I need to deal exclusively in terms of
    struct pid, because pid_t values become ambiguous.

    To this end session_of_pgrp is transformed to take and return a struct pid
    pointer. To avoid the need to worry about reference counting I now require my
    caller to hold the appropriate locks. Leaving callers repsonsible for
    increasing the reference count if they need access to the result outside of
    the locks.

    Since session_of_pgrp currently only has one caller and that caller simply
    uses only test the result for equality with another process group, the locking
    change means I don't actually have to acquire the tasklist_lock at all.

    tiocspgrp is also modified to take and release the lock. The logic there is a
    little more complicated but nothing I won't need when I convert pgrp of a tty
    to a struct pid pointer.

    Signed-off-by: Eric W. Biederman
    Cc: Alan Cox
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • The goal is to remove users of the old signal helper functions so they can be
    removed.

    Signed-off-by: Eric W. Biederman
    Cc: Alan Cox
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • I am slowly moving to a model where all process killing is struct pid based
    instead of pid_t based. The sunos compatibility code is one of the last users
    of the old pid_t based kill_pg in the kernel. By being complete I allow for
    the future removal of kill_pg from the kernel, which will ensure I don't miss
    something.

    Signed-off-by: Eric W. Biederman
    Cc: Alan Cox
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • commit 24ec839c431eb79bb8f6abc00c4e1eb3b8c4d517 while fixing the locking for
    signal->tty got the locking wrong for signal->session. This places our
    accesses of signal->session back under the tasklist_lock where they belong.

    Signed-off-by: Eric W. Biederman
    Cc: Alan Cox
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • The code to look at tty_old_pgrp and send SIGHUP and SIGCONT when it is
    present only executes when disassociate_ctty is called from do_exit. Make
    this clear by adding an explict on_exit check, and explicitly setting
    tty_old_pgrp to 0.

    In addition fix the locking by reading tty_old_pgrp under the siglock.

    Signed-off-by: Eric W. Biederman
    Cc: Alan Cox
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • The aim of this patch set is to start wrapping up the struct pid conversions.
    As such this patchset culminates with the removal of kill_pg, kill_pg_info,
    __kill_pg_info, do_each_task_pid, and while_each_task_pid.

    kill_proc, daemonize, and kernel_thread are still in my sights but there is
    still work to get to them.

    The first three are basic cleanups around disassociate_ctty, while working on
    converting it I found several issues. tty_old_pgrp can be a tricky concept to
    wrap your head around.

    1 tty: Make __proc_set_tty static.
    2 tty: Clarify disassociate_ctty
    3 tty: Fix the locking for signal->session in disassociate_ctty

    These just stop using the old helper functions.

    4 signal: Use kill_pgrp not kill_pg in the sunos compatibility code.
    5 signal: Rewrite kill_something_info so it uses newer helpers.

    Then the grind to convert the tty layer and all of it's helper functions to
    struct pid.

    6 pid: Make session_of_pgrp use struct pid instead of pid_t.
    7 pid: Use struct pid for talking about process groups in exit.c
    8 pid: Replace is_orphaned_pgrp with is_current_pgrp_orphaned
    9 tty: Update the tty layer to work with struct pid.

    A final helper function update.

    10 pid: Replace do/while_each_task_pid with do/while_each_pid_task

    And the removal of the functions that are now unused.
    11 pid: Remove now unused do_each_task_pid and while_each_task_pid
    12 pid: Remove the now unused kill_pg kill_pg_info and __kill_pg_info

    All of these should be fairly simple and to the point.

    This patch:

    Currently all users of __proc_set_tty are in tty_io.c so make the function
    static.

    Signed-off-by: Eric W. Biederman
    Cc: Alan Cox
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • This morning I needed to read a Minix V3 filesystem, but unfortunately my
    2.6.19 did not support that, and neither did the downloaded 2.6.20rc4.

    Fortunately, google told me that Daniel Aragones had already done the work,
    patch found at http://www.terra.es/personal2/danarag/

    Unfortunaly, looking at the patch was painful to my eyes, so I polished it
    a bit before applying. The resulting kernel boots, and reads the
    filesystem it needed to read.

    Signed-off-by: Daniel Aragones
    Signed-off-by: Andries Brouwer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andries Brouwer
     
  • This is adds a simple SPI EEPROM driver, providing access to the EEPROM
    through sysfs much like the I2C "eeprom" driver ... except this driver
    supports write access, and multiple EEPROM sizes.

    From: "Tuppa, Walter"

    Since I have EEPROMs on SPI with different address sizing, I made some
    changes to your at25.c to support them. Works perfectly. (Also includes a
    small bugfix for the "what size address" test.)

    Signed-off-by: David Brownell
    Signed-off-by: Walter Tuppa
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • This adds a new "wakealarm" sysfs attribute to RTC class devices which support
    alarm operations and are wakeup-capable:

    - It reads as either empty, or the scheduled alarm time as seconds
    since the POSIX epoch. (That time may already have passed, since
    nothing currently enforces one-shot alarm semantics.)

    - It can be written with an alarm time in the future, again seconds
    since the POSIX epoch, which enables the alarm.

    - It can be written with an alarm time not in the future (such as 0,
    the start of the POSIX epoch) to disable the alarm.

    Usage examples (some need GNU date) after "cd /sys/class/rtc/rtcN":

    alarm after 10 minutes:
    # echo $(( $(cat since_epoch) + 10 * 60 )) > wakealarm
    alarm tuesday evening 10pm:
    # date -d '10pm tuesday' "+%s" > wakealarm
    disable alarm:
    # echo 0 > wakealarm

    This resembles the /proc/acpi/alarm file in that nothing happens when the
    alarm triggers ... except possibly waking the system from sleep. It's also
    like that in a nasty way: not much can be done to prevent one task from
    clobbering another task's alarm settings.

    It differs from that file in that there's no in-kernel date parser.

    Note that a few RTCs ignore rtc_wkalrm.enabled when setting alarms, or aren't
    set up correctly, so they won't yet behave with this attribute.

    Signed-off-by: David Brownell
    Acked-by: Pavel Machek
    Cc: Alessandro Zummo
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • This clarifies some aspects of the SPI programming interface, based on
    feedback from Hans-Peter Nilsson. The in-memory representation of words is
    right-aligned, so for example a twelve bit word is stored using sixteen bits
    with four undefined bits in the MSB. And controller drivers must reject
    protocol tweaking modes they do not support.

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

    David Brownell
     
  • I'd like to assign NULL to kfree()d members of a structure. I can't do
    that without ugly casting (see the PXA patch) when the structure pointed to
    is const-qualified. I don't really see a reason why the cleanup method
    isn't allowed to alter the object it should clean up. :-)

    No, I didn't test the PXA patch, but I verified that the NULL-assignment
    doesn't stop me from doing rmmod/insmodding my own spi_bitbang-based
    driver.

    Signed-off-by: Hans-Peter Nilsson
    Signed-off-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hans-Peter Nilsson
     
  • A small bug-fix for spi_bitbang: it must always call the setup_transfer
    function via the overridable pointer, not assume that its
    spi_bitbang_setup_transfer is sufficient. Otherwise, if all options in the
    transfers are default (0), the overrided function will never be called.

    Granted, the function replacing it must call spi_bitbang_setup_transfer,
    but it might also have other important things to do, even if the second
    argument (the spi_transfer) is NULL. Tested together with the other
    patches on the spi_crisv32_sser and spi_crisv32_gpio drivers (not yet in
    the kernel, will IIUC be submitted as part of the usual
    arch-maintainer-pushes).

    Signed-off-by: Hans-Peter Nilsson
    Signed-off-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hans-Peter Nilsson
     
  • Make the spi_unregister_driver() code fit in with the rest of the header
    file, and only do the action if the driver passed is non-NULL.

    This also makes the code a line smaller.

    Signed-off-by: Ben Dooks
    Signed-off-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ben Dooks
     
  • The spi_register_driver() sets the bus_type field of the spi_driver being
    registered, so there is no need to have it set in the driver itself.

    Signed-off-by: Ben Dooks
    Signed-off-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ben Dooks
     
  • Add wrappers for getting and setting the driver data using spi_device
    instead of using dev_{get|set}_drvdata with &spi->dev, to mirror the
    platform_{get|set}_drvdata.

    Signed-off-by: Ben Dooks
    Signed-off-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ben Dooks
     
  • Add the SPI controller driver for Freescale i.MX(S/L/1).
    Main features summary:

    > Per chip setup via board specific code and/or protocol driver.
    > Per transfer setup.
    > PIO transfers.
    > DMA transfers.
    > Managing of NULL tx / rx buffer for rd only / wr only transfers.

    This patch replace patch-2.6.20-rc4-spi_imx with the following changes:
    > Few cosmetic changes.
    > Function map_dma_buffers now return 0 for success and -1 for failure.
    > Solved a bug inside spi_imx_probe function (wrong error path).
    > Solved a bug inside setup function (bad undo setup for max_speed_hz).
    > For read-only transfers, always write zero bytes.

    This is almost the same as the 'BIS' version sent by Andrea, except for
    updating the 'DUMMY' byte so that read-only transfers shift out zeroes.
    That part of the API changed recently, since some half duplex peripheral
    chips require that semantic.

    Signed-off-by: Andrea Paterniani
    Signed-off-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrea Paterniani
     
  • This adds a SPI driver for the Microwire controller on OMAP1 chips. This
    driver has been used in the Linux-OMAP tree for some time now, including
    with some of those displays using standardized 9-bit commands followed by
    data with 8-bit words.

    Microwire only supports half duplex transfers, but that's all that most SPI
    protocols need. When full duplex, or higher speeds, are needed there are
    several other controllers that can be used on OMAP.

    [akpm@osdl.org: cleanups]
    Signed-off-by: David Brownell
    Signed-off-by: Imre Deak
    Signed-off-by: Juha Yrjola
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • Minor Kconfig cleanup ... put the SPI_S3C24XX entry in the
    correct location (alphabetical order).

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

    David Brownell
     
  • drivers/char/ds1302.c::get_rtc_time() contains local_irq_disable() call
    after local_irq_save(). This looks redundant.

    drivers/char/ds1302.c::rtc_ioctl() contains local_irq_disable() call after
    local_irq_save(). This looks redundant.

    Signed-off-by: Jiri Kosina
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiri Kosina
     
  • This patch adds the line discipline based driver for the Gigaset M101
    wireless RS232 adapter. It also improves the documentation a bit.

    Signed-off-by: Tilman Schmidt
    Signed-off-by: Hansjoerg Lipp
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tilman Schmidt
     
  • Convert:
    BOOL -> bool
    FALSE -> false
    TRUE -> true

    Change a variable ('mContinue') to boolean from char, since it is used
    as boolean.

    Signed-off-by: Richard Knutsson
    Acked-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Richard Knutsson
     
  • - Use timer macros to set function and data members and to modify
    expiration time.
    - Use DEFINE_TIMER for global timers and do not init them at run-time in
    these cases.
    - del_timer_sync is common in most cases -- we want to wait for timer
    function if it's still running.

    Signed-off-by: Jiri Slaby
    Cc: Dave Airlie
    Cc: David Woodhouse
    Cc: Dominik Brodowski
    Cc: Alessandro Zummo
    Cc: Paul Fulghum
    Cc: Kylene Jo Hall
    Cc: Wim Van Sebroeck
    Acked-by: Dmitry Torokhov (Input bits)
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiri Slaby
     
  • specialix, isr have 2 params

    pt_regs are no longer the third parameter of isr, call sx_interrupt without
    it.

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

    Jiri Slaby
     
  • Change __init to __devinit in rtc drivers' probe functions.

    Resolves MODPOST warnings:

    WARNING: drivers/rtc/rtc-ds1553.o - Section mismatch: reference to
    .init.text:ds1553_rtc_probe from .data.rel between 'ds1553_rtc_driver' (at
    offset 0x0) and 'ds1553_nvram_attr'
    WARNING: drivers/rtc/rtc-ds1742.o - Section mismatch: reference to
    .init.text:ds1742_rtc_probe from .data.rel between 'ds1742_rtc_driver' (at
    offset 0x0) and 'ds1742_nvram_attr'

    Signed-off-by: Prarit Bhargava
    Cc: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Prarit Bhargava
     
  • Was ufs_fs.h purposefully not exported to userspace or did it just slip
    through the cracks ? assuming the latter scenario, the attached patch touches
    up the relationship between ufs_fs.h and its sub headers (like ufs_fs_sb.h) so
    that we can export it ... the silo bootloader takes advantage of this header
    for example.

    Signed-off-by: Mike Frysinger
    Cc: Evgeniy Dushistov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Frysinger
     
  • close_files() can sometimes take long enough to trigger the soft lockup
    detector.

    Cc: Eric Dumazet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • Reduce the number of kernel messages the Gigaset drivers produce in case of an
    excessively long device response, from one per character exceeding the limit
    to one per overlong message.

    Signed-off-by: Tilman Schmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tilman Schmidt
     
  • Do not lock the cardstate structure mutex earlier than necessary.

    Signed-off-by: Tilman Schmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tilman Schmidt
     
  • oprofile hunting showed a stall in rw_verify_area(), because of triple
    indirection and potential cache misses.
    (file->f_path.dentry->d_inode->i_flock)

    By moving initialization of 'struct inode' pointer before the pos/count
    sanity tests, we allow the compiler and processor to perform two loads by
    anticipation, reducing stall, without prefetch() hints. Even x86 arch has
    enough registers to not use temporary variables and not increase text size.

    I validated this patch running a bench and studied oprofile changes, and
    absolute perf of the test program.

    Results of my epoll_pipe_bench (source available on request) on a Pentium-M
    1.6 GHz machine

    Before :
    # ./epoll_pipe_bench -l 30 -t 20
    Avg: 436089 evts/sec read_count=8843037 write_count=8843040 21.218390 samples
    per call
    (best value out of 10 runs)

    After :
    # ./epoll_pipe_bench -l 30 -t 20
    Avg: 470980 evts/sec read_count=9549871 write_count=9549894 21.216694 samples
    per call
    (best value out of 10 runs)

    oprofile CPU_CLK_UNHALTED events gave a reduction from 5.3401 % to 2.5851 %
    for the rw_verify_area() function.

    Signed-off-by: Eric Dumazet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Dumazet
     
  • Need to export com20020 symbols for com20020_cs also.

    WARNING: "com20020_found" [drivers/net/pcmcia/com20020_cs.ko] undefined!
    WARNING: "com20020_check" [drivers/net/pcmcia/com20020_cs.ko] undefined!

    Signed-off-by: Randy Dunlap
    Cc: Esben Nielsen
    Cc: Jeff Garzik
    Cc: Dominik Brodowski
    Cc: "David S. Miller"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap