15 Nov, 2007

40 commits

  • Add the field names to marker example format string.

    Signed-off-by: Mathieu Desnoyers
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mathieu Desnoyers
     
  • Describes the format string standard further: Use of field names before the
    type specifiers..

    Signed-off-by: Mathieu Desnoyers
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mathieu Desnoyers
     
  • Upon module load, we must take the markers mutex. It implies that the marker
    mutex must be nested inside the module mutex.

    It implies changing the nesting order : now the marker mutex nests inside the
    module mutex. Make the necessary changes to reverse the order in which the
    mutexes are taken.

    Includes some cleanup from Dave Hansen .

    Signed-off-by: Mathieu Desnoyers
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mathieu Desnoyers
     
  • I found a few bugs in the BFS driver. Detailed description of the bugs as
    well as the steps to reproduce the errors are given in the kernel bugzilla.
    Please follow these links for more information:

    http://bugzilla.kernel.org/show_bug.cgi?id=9363
    http://bugzilla.kernel.org/show_bug.cgi?id=9364
    http://bugzilla.kernel.org/show_bug.cgi?id=9365
    http://bugzilla.kernel.org/show_bug.cgi?id=9366

    This patch fixes the bugs described above. Besides, the patch introduces
    coding style changes to make the BFS driver conform to the requirements
    specified for Linux kernel code. Finally, I made a few cosmetic changes
    such as removal of trivial debug output.

    Also, the patch removes the fields `si_lf_ioff' and `si_lf_sblk' of the
    in-core superblock structure. These fields are initialized but never
    actually used.

    If you are wondering why I need BFS, here is the answer: I am using this
    driver in the context of Linux kernel classes I am teaching in the Moscow
    State University and in the International Institute of Information
    Technology in Pune, India.

    Signed-off-by: Dmitri Vorobiev
    Cc: Tigran Aivazian
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dmitri Vorobiev
     
  • Revert 62d0df64065e7c135d0002f069444fbdfc64768f.

    This was originally intended as a simple initial example of how to create a
    control groups subsystem; it wasn't intended for mainline, but I didn't make
    this clear enough to Andrew.

    The CFS cgroup subsystem now has better functionality for the per-cgroup usage
    accounting (based directly on CFS stats) than the "usage" status file in this
    patch, and the "load" status file is rather simplistic - although having a
    per-cgroup load average report would be a useful feature, I don't believe this
    patch actually provides it. If it gets into the final 2.6.24 we'd probably
    have to support this interface for ever.

    Cc: Paul Menage
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • For administrative purpose, we want to query actual block usage for
    hugetlbfs file via fstat. Currently, hugetlbfs always return 0. Fix that
    up since kernel already has all the information to track it properly.

    Signed-off-by: Ken Chen
    Acked-by: Adam Litke
    Cc: Badari Pulavarty
    Cc: David Gibson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ken Chen
     
  • return_unused_surplus_pages() can become static.

    Signed-off-by: Adrian Bunk
    Acked-by: Adam Litke
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • When a MAP_SHARED mmap of a hugetlbfs file succeeds, huge pages are reserved
    to guarantee no problems will occur later when instantiating pages. If quotas
    are in force, page instantiation could fail due to a race with another process
    or an oversized (but approved) shared mapping.

    To prevent these scenarios, debit the quota for the full reservation amount up
    front and credit the unused quota when the reservation is released.

    Signed-off-by: Adam Litke
    Cc: Ken Chen
    Cc: Andy Whitcroft
    Cc: Dave Hansen
    Cc: David Gibson
    Cc: William Lee Irwin III
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adam Litke
     
  • Add a second parameter 'delta' to hugetlb_get_quota and hugetlb_put_quota to
    allow bulk updating of the sbinfo->free_blocks counter. This will be used by
    the next patch in the series.

    Signed-off-by: Adam Litke
    Cc: Ken Chen
    Cc: Andy Whitcroft
    Cc: Dave Hansen
    Cc: David Gibson
    Cc: William Lee Irwin III
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adam Litke
     
  • Now that quota is credited by free_huge_page(), calls to hugetlb_get_quota()
    seem out of place. The alloc/free API is unbalanced because we handle the
    hugetlb_put_quota() but expect the caller to open-code hugetlb_get_quota().
    Move the get inside alloc_huge_page to clean up this disparity.

    This patch has been kept apart from the previous patch because of the somewhat
    dodgy ERR_PTR() use herein. Moving the quota logic means that
    alloc_huge_page() has two failure modes. Quota failure must result in a
    SIGBUS while a standard allocation failure is OOM. Unfortunately, ERR_PTR()
    doesn't like the small positive errnos we have in VM_FAULT_* so they must be
    negated before they are used.

    Does anyone take issue with the way I am using PTR_ERR. If so, what are your
    thoughts on how to clean this up (without needing an if,else if,else block at
    each alloc_huge_page() callsite)?

    Signed-off-by: Adam Litke
    Cc: Ken Chen
    Cc: Andy Whitcroft
    Cc: Dave Hansen
    Cc: David Gibson
    Cc: William Lee Irwin III
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adam Litke
     
  • The hugetlbfs quota management system was never taught to handle MAP_PRIVATE
    mappings when that support was added. Currently, quota is debited at page
    instantiation and credited at file truncation. This approach works correctly
    for shared pages but is incomplete for private pages. In addition to
    hugetlb_no_page(), private pages can be instantiated by hugetlb_cow(); but
    this function does not respect quotas.

    Private huge pages are treated very much like normal, anonymous pages. They
    are not "backed" by the hugetlbfs file and are not stored in the mapping's
    radix tree. This means that private pages are invisible to
    truncate_hugepages() so that function will not credit the quota.

    This patch (based on a prototype provided by Ken Chen) moves quota crediting
    for all pages into free_huge_page(). page->private is used to store a pointer
    to the mapping to which this page belongs. This is used to credit quota on
    the appropriate hugetlbfs instance.

    Signed-off-by: Adam Litke
    Cc: Ken Chen
    Cc: Ken Chen
    Cc: Andy Whitcroft
    Cc: Dave Hansen
    Cc: David Gibson
    Cc: William Lee Irwin III
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adam Litke
     
  • Hugetlbfs implements a quota system which can limit the amount of memory that
    can be used by the filesystem. Before allocating a new huge page for a file,
    the quota is checked and debited. The quota is then credited when truncating
    the file. I found a few bugs in the code for both MAP_PRIVATE and MAP_SHARED
    mappings. Before detailing the problems and my proposed solutions, we should
    agree on a definition of quotas that properly addresses both private and
    shared pages. Since the purpose of quotas is to limit total memory
    consumption on a per-filesystem basis, I argue that all pages allocated by the
    fs (private and shared) should be charged against quota.

    Private Mappings
    ================

    The current code will debit quota for private pages sometimes, but will never
    credit it. At a minimum, this causes a leak in the quota accounting which
    renders the accounting essentially useless as it is. Shared pages have a one
    to one mapping with a hugetlbfs file and are easy to account by debiting on
    allocation and crediting on truncate. Private pages are anonymous in nature
    and have a many to one relationship with their hugetlbfs files (due to copy on
    write). Because private pages are not indexed by the mapping's radix tree,
    thier quota cannot be credited at file truncation time. Crediting must be
    done when the page is unmapped and freed.

    Shared Pages
    ============

    I discovered an issue concerning the interaction between the MAP_SHARED
    reservation system and quotas. Since quota is not checked until page
    instantiation, an over-quota mmap/reservation will initially succeed. When
    instantiating the first over-quota page, the program will receive SIGBUS.
    This is inconsistent since the reservation is supposed to be a guarantee. The
    solution is to debit the full amount of quota at reservation time and credit
    the unused portion when the reservation is released.

    This patch series brings quotas back in line by making the following
    modifications:
    * Private pages
    - Debit quota in alloc_huge_page()
    - Credit quota in free_huge_page()
    * Shared pages
    - Debit quota for entire reservation at mmap time
    - Credit quota for instantiated pages in free_huge_page()
    - Credit quota for unused reservation at munmap time

    This patch:

    The shared page reservation and dynamic pool resizing features have made the
    allocation of private vs. shared huge pages quite different. By splitting
    out the private/shared-specific portions of the process into their own
    functions, readability is greatly improved. alloc_huge_page now calls the
    proper helper and performs common operations.

    [akpm@linux-foundation.org: coding-style cleanups]
    Signed-off-by: Adam Litke
    Cc: Ken Chen
    Cc: Andy Whitcroft
    Cc: Dave Hansen
    Cc: David Gibson
    Cc: William Lee Irwin III
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adam Litke
     
  • ops.pending when it should be looking at the consistent stack-based
    snapshot of the operations flags.

    Report from Joel:
    Resync done. Patch fix this bug.

    Signed-off-by: Dan Williams
    Tested-by: Joel Bertrand
    Cc:
    Cc: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Williams
     
  • When calling get_user_pages(), a write flag is passed in by the caller to
    indicate if write access is required on the faulted-in pages. Currently,
    follow_hugetlb_page() ignores this flag and always faults pages for
    read-only access. This can cause data corruption because a device driver
    that calls get_user_pages() with write set will not expect COW faults to
    occur on the returned pages.

    This patch passes the write flag down to follow_hugetlb_page() and makes
    sure hugetlb_fault() is called with the right write_access parameter.

    [ezk@cs.sunysb.edu: build fix]
    Signed-off-by: Adam Litke
    Reviewed-by: Ken Chen
    Cc: David Gibson
    Cc: William Lee Irwin III
    Cc: Badari Pulavarty
    Signed-off-by: Erez Zadok
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adam Litke
     
  • Remove annoying build warnings about unused variables in atmel_serial,
    which afflict both AT91 and AVR32 builds.

    Signed-off-by: David Brownell
    Acked-by: Haavard Skinnemoen
    Cc: Andrew Victor
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • When a DMA device is unregistered, its reference count is decremented twice
    for each channel: Once dma_class_dev_release() and once in
    dma_chan_cleanup(). This may result in the DMA device driver's remove()
    function completing before all channels have been cleaned up, causing lots
    of use-after-free fun.

    Fix it by incrementing the device's reference count twice for each
    channel during registration.

    [dan.j.williams@intel.com: kill unnecessary client refcounting]
    Signed-off-by: Haavard Skinnemoen
    Signed-off-by: Dan Williams
    Signed-off-by: Shannon Nelson
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Haavard Skinnemoen
     
  • Move pci_dev_put outside the loops in which it occurs. Within the loop,
    pci_dev_put is done implicitly by pci_get_device.

    The problem was detected using the following semantic patch, and corrected
    by hand.

    @@
    expression dev;
    expression E;
    @@

    - pci_dev_put(dev)
    ... when != dev = E
    - pci_get_device(...,dev)

    Signed-off-by: Julia Lawall
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Julia Lawall
     
  • The pf driver for parallel port floppy drives seems to be broken. At least
    with Imation SuperDisk with EPAT chip, the driver calls pi_connect() and
    pi_disconnect after each transferred sector. At least with EPAT, this
    operation is very expensive - causes drive recalibration. Thus, transferring
    even a single byte (dd if=/dev/pf0 of=/dev/null bs=1 count=1) takes 20
    seconds, making the driver useless.

    The pf_next_buf() function seems to be broken as it returns 1 always (except
    when pf_run is non-zero), causing the loop in do_pf_read_drq (and
    do_pf_write_drq) to be executed only once.

    The following patch fixes this problem. It also fixes swapped descriptions in
    pf_lock() function and removes DBMSG macro, which seems useless.

    Signed-off-by: Ondrej Zary
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ondrej Zary
     
  • Some error paths in txx9spi_probe wrongly return 0. This patch fixes them by
    using the devres interfaces.

    Signed-off-by: Atsushi Nemoto
    Acked-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Atsushi Nemoto
     
  • After 49dce689ad4ef0fd1f970ef762168e4bd46f69a3, device_for_each_child
    iteration hits the master device itself. Do not call spi_unregister_device()
    for the master device.

    Signed-off-by: Atsushi Nemoto
    Acked-by: David Brownell
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Atsushi Nemoto
     
  • Zillions of people are getting my-battery-monitor-doesnt-work problems
    (including me).

    Lessen the damage by making ACPI_PROCFS default to on.

    Cc: Len Brown
    Cc: "Rafael J. Wysocki"
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • i386 and x86-64 registers System RAM as IORESOURCE_MEM | IORESOURCE_BUSY.

    But ia64 registers it as IORESOURCE_MEM only.
    In addition, memory hotplug code registers new memory as IORESOURCE_MEM too.

    This difference causes a failure of memory unplug of x86-64. This patch
    fixes it.

    This patch adds IORESOURCE_BUSY to avoid potential overlap mapping by PCI
    device.

    Signed-off-by: Yasunori Goto
    Signed-off-by: Badari Pulavarty
    Cc: Luck, Tony"
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yasunori Goto
     
  • We allow violation of bdi limits if there is a lot of room on the system.
    Once we hit half the total limit we start enforcing bdi limits and bdi
    ramp-up should happen. Doing it this way avoids many small writeouts on an
    otherwise idle system and should also speed up the ramp-up.

    Signed-off-by: Peter Zijlstra
    Reviewed-by: Fengguang Wu
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Peter Zijlstra
     
  • Update the getdelays utility to become cgroupstats aware. A new -C option has
    been added. It takes in a control group path and prints out a summary of the
    states of tasks in the control group

    Signed-off-by: Balbir Singh
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Balbir Singh
     
  • We should unset migrate type "ISOLATE" when we successfully removed memory.
    But current code has BUG and cannot works well.

    This patch also includes bugfix? to change get_pageblock_flags to
    get_pageblock_migratetype().

    Thanks to Badari Pulavarty for finding this.

    Signed-off-by: KAMEZAWA Hiroyuki
    Acked-by: Badari Pulavarty
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KAMEZAWA Hiroyuki
     
  • We hit the BUG_ON() in mm/rmap.c:vma_address() when trying to migrate via
    mbind(MPOL_MF_MOVE) a non-anon region that spans multiple vmas. For
    anon-regions, we just fail to migrate any pages beyond the 1st vma in the
    range.

    This occurs because do_mbind() collects a list of pages to migrate by
    calling check_range(). check_range() walks the task's mm, spanning vmas as
    necessary, to collect the migratable pages into a list. Then, do_mbind()
    calls migrate_pages() passing the list of pages, a function to allocate new
    pages based on vma policy [new_vma_page()], and a pointer to the first vma
    of the range.

    For each page in the list, new_vma_page() calls page_address_in_vma()
    passing the page and the vma [first in range] to obtain the address to get
    for alloc_page_vma(). The page address is needed to get interleaving
    policy correct. If the pages in the list come from multiple vmas,
    eventually, new_page_address() will pass that page to page_address_in_vma()
    with the incorrect vma. For !PageAnon pages, this will result in a bug
    check in rmap.c:vma_address(). For anon pages, vma_address() will just
    return EFAULT and fail the migration.

    This patch modifies new_vma_page() to check the return value from
    page_address_in_vma(). If the return value is EFAULT, new_vma_page()
    searchs forward via vm_next for the vma that maps the page--i.e., that does
    not return EFAULT. This assumes that the pages in the list handed to
    migrate_pages() is in address order. This is currently case. The patch
    documents this assumption in a new comment block for new_vma_page().

    If new_vma_page() cannot locate the vma mapping the page in a forward
    search in the mm, it will pass a NULL vma to alloc_page_vma(). This will
    result in the allocation using the task policy, if any, else system default
    policy. This situation is unlikely, but the patch documents this behavior
    with a comment.

    Note, this patch results in restarting from the first vma in a multi-vma
    range each time new_vma_page() is called. If this is not acceptable, we
    can make the vma argument a pointer, both in new_vma_page() and it's caller
    unmap_and_move() so that the value held by the loop in migrate_pages()
    always passes down the last vma in which a page was found. This will
    require changes to all new_page_t functions passed to migrate_pages(). Is
    this necessary?

    For this patch to work, we can't bug check in vma_address() for pages
    outside the argument vma. This patch removes the BUG_ON(). All other
    callers [besides new_vma_page()] already check the return status.

    Tested on x86_64, 4 node NUMA platform.

    Signed-off-by: Lee Schermerhorn
    Acked-by: Christoph Lameter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Lee Schermerhorn
     
  • It appears we overlooked support for removing generic proc files
    when we added support for multiple proc super blocks. Handle
    that now.

    [akpm@linux-foundation.org: coding-style cleanups]
    Signed-off-by: Eric W. Biederman
    Acked-by: Pavel Emelyanov
    Cc: Alexey Dobriyan
    Acked-by: Sukadev Bhattiprolu
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • The following is an extra entry to enable the touch screen on the new LG
    C1 EXPRESS DUAL machine.

    Cc: Russell King
    Cc: Bjorn Helgaas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Damian Jurd
     
  • This patch fixes the possible usage of a negative value as an array
    index spotted by the Coverity checker.

    sisfb_validate_mode() could return a negative error code and we must check for
    that prior to using its return value as an array index.

    Signed-off-by: Adrian Bunk
    Cc: Thomas Winischhofer
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This patch fixes a memory leak spotted by the Coverity checker.

    Signed-off-by: Adrian Bunk
    Cc: Rusty Russell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • A relatively recent version of the Geode LX datasheet listed the wrong
    address for one of the MSRs that controls TFT panels, resulting in
    breakage. This patch corrects the MSR address.

    Signed-off-by: Jordan Crouse
    Cc: "Antonino A. Daplas"
    Cc: "H. Peter Anvin"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jordan Crouse
     
  • Forbid user from changing file flags on quota files. User has no bussiness
    in playing with these flags when quota is on. Furthermore there is a
    remote possibility of deadlock due to a lock inversion between quota file's
    i_mutex and transaction's start (i_mutex for quota file is locked only when
    trasaction is started in quota operations) in ext3 and ext4.

    Signed-off-by: Jan Kara
    Cc: LIOU Payphone
    Cc:
    Acked-by: Dave Kleikamp
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Kara
     
  • Attached patch fixes two compilation problems of s1d13xxxfb.c:

    - Fixes outdated dbg() message to fix compilation error with debugging enabled.

    - Do not read kernel command line options when compiled as module.

    Signed-off-by: Stanislav Brabec
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stanislav Brabec
     
  • When I boot with the 'quiet' parameter, I see on the screen:

    [ 0.000000] Initializing cgroup subsys cpuset
    [ 0.000000] Initializing cgroup subsys cpu
    [ 39.036026] Initializing cgroup subsys cpuacct
    [ 39.036080] Initializing cgroup subsys debug
    [ 39.036118] Initializing cgroup subsys ns

    This patch lowers the priority of those messages, adds a "cgroup: " prefix
    to another couple of printks and kills the useless reference to the source
    file.

    Signed-off-by: Diego Calleja
    Cc: Paul Menage
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Diego Calleja
     
  • pud_clear wasn't setting the _PAGE_NEWPAGE bit, fooling tlb_flush into
    thinking that this area of the address space was up-to-date and not unmapping
    whatever was covered by the pud.

    This manifested itself as ldconfig on x86_64 complaining about the first
    library it looked at not being a valid ELF file. A config file is mapped at
    0x4000000, as the only thing mapped under its pud, and unmapped. The
    unmapping caused a pud_clear, which, due to this bug, didn't actually unmap
    the config file data on the host. The first library is then mapped at the
    same location, but is not actually mapped on the host because accesses to it
    cause no page faults. As a result, ldconfig sees the old config file data.

    [akpm@linux-foundation.org: coding-style cleanups]
    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Stupid bug - we need to compare the return value of recvmsg to the value of
    iov_len, not its size. This caused port_helper processes not to be killed on
    shutdown on x86_64 because the pids weren't being passed out properly.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Instruction pointer returned by profile_pc() can be a random value. This
    break the assumption than we can safely set struct op_sample.eip field to a
    magic value to signal to the per-cpu buffer reader side special event like
    task switch ending up in a segfault in get_task_mm() when profile_pc()
    return ~0UL. Fixed by sanitizing the sampled eip and reject/log invalid
    eip.

    Problem reported by Sami Farin, patch tested by him.

    Signed-off-by: Philippe Elie
    Tested-by: Sami Farin
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Philippe Elie
     
  • Variables that are only used in #ifdef CONFIG_X86 should also only be
    declared there.

    Signed-off-by: Frank Lichtenheld
    Cc: Michal Januszewski
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Frank Lichtenheld
     
  • chipsfb uses PCI interfaces and should depend on PCI.

    CC drivers/video/chipsfb.o
    drivers/video/chipsfb.c: In function 'chipsfb_pci_init':
    drivers/video/chipsfb.c:378: error: implicit declaration of function 'pci_request_region'
    drivers/video/chipsfb.c:435: error: implicit declaration of function 'pci_release_region'
    make[2]: *** [drivers/video/chipsfb.o] Error 1
    make[1]: *** [drivers/video] Error 2
    make: *** [drivers] Error 2

    !CONFIG_PCI causes the build to fail.

    Signed-off-by: Randy Dunlap
    Cc: Kamalesh Babulal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • The max_user_freq member is not really meant for RTC drivers to modify, so
    update the rtc documentation so drivers writers know what is expected of
    them when handling periodic events.

    Signed-off-by: Mike Frysinger
    Acked-by: Alessandro Zummo
    Cc: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Frysinger