01 Aug, 2006

40 commits

  • The backlight and lcd subsystems can be notified by the framebuffer layer
    of blanking events. However, these subsystems, as a whole, can function
    independently from the framebuffer layer. But in order to enable to the
    lcd and backlight subsystems, the framebuffer has to be compiled also,
    effectively sucking in a huge amount of unneeded code.

    To prevent dependency problems, separate out the framebuffer notification
    mechanism from the framebuffer layer and permanently link it to the kernel.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • Based on a bug report from Russ Ross

    According to the spec:

    "The remove request asks the file server both to remove the file
    represented by fid and to clunk the fid, even if the remove fails."

    but the Linux client seems to expect the fid to be valid after a failed
    remove attempt. Specifically, I'm getting this behavior when attempting to
    remove a non-empty directory.

    Signed-off-by: Eric Van Hensbergen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Van Hensbergen
     
  • Use preferred email address. Remove sf.net project reference. It is no
    longer used.

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

    Randy Dunlap
     
  • Signed-off-by: Russ Ross
    Signed-off-by: Eric Van Hensbergen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Russ Ross
     
  • For files other than IFREG, nobh option doesn't make sense. Modifications
    to them are journalled and needs buffer heads to do that. Without this
    patch, we get kernel oops in page_buffers().

    Signed-off-by: Badari Pulavarty
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Badari Pulavarty
     
  • kernel/timer.c defines a (per-cpu) pointer to tvec_base_t, but initializes
    it using { &a_tvec_base_t }, which sparse warns about; change this to just
    &a_tvec_base_t.

    Signed-off-by: Josh Triplett
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Josh Triplett
     
  • Commit 7b2fd697427e73c81d5fa659efd91bd07d303b0e in the historical GIT tree
    stopped calling the readdir member of a file_operations struct with the big
    kernel lock held, and fixed up all the readdir functions to do their own
    locking. However, that change added calls to unlock_kernel() in
    vxfs_readdir, but no call to lock_kernel(). Fix this by adding a call to
    lock_kernel().

    Signed-off-by: Josh Triplett
    Cc: Christoph Hellwig
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Josh Triplett
     
  • I spent a long time the other day trying to examine an initrd image on a
    fedora core 5 system because the initrd.txt file is apparently obsolete.
    Here is a patch which I hope will reduce future confusion for others.

    Signed-off-by: Thomas Horsley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Horsley
     
  • Clean up ipc/msg.c to conform to Documentation/CodingStyle. (before it was
    an inconsistent hodepodge of various coding styles)

    Verified that the before/after .o's are identical.

    Signed-off-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • Signed-off-by: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miklos Szeredi
     
  • It is entirely possible (though rare) that jiffies half-wraps around, while a
    dentry/inode remains in the cache. This could mean that the dentry/inode is
    not invalidated for another half wraparound-time.

    To get around this problem, use 64-bit jiffies. The only problem with this is
    that dentry->d_time is 32 bits on 32-bit archs. So use d_fsdata as the high
    32 bits. This is an ugly hack, but far simpler, than having to allocate
    private data just for this purpose.

    Since 64-bit jiffies can be assumed never to wrap around, simple comparison
    can be used, and a zero time value can represent "invalid".

    Signed-off-by: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miklos Szeredi
     
  • An attribute and entry timeout of zero should mean, that the entity is
    invalidated immediately after the operation. Previously invalidation only
    happened at the next clock tick.

    Reported and tested by Craig Davies.

    Signed-off-by: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miklos Szeredi
     
  • CFA needs to be adjusted upwards for push, and downwards for pop.
    arch/i386/kernel/entry.S gets it wrong in one place.

    Signed-off-by: Markus Armbruster
    Acked-by: Jan Beulich
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Markus Armbruster
     
  • The latest toolchains can produce a new ELF section in DSOs and
    dynamically-linked executables. The new section ".gnu.hash" replaces
    ".hash", and allows for more efficient runtime symbol lookups by the
    dynamic linker. The new ld option --hash-style={sysv|gnu|both} controls
    whether to produce the old ".hash", the new ".gnu.hash", or both. In some
    new systems such as Fedora Core 6, gcc by default passes --hash-style=gnu
    to the linker, so that a standard invocation of "gcc -shared" results in
    producing a DSO with only ".gnu.hash". The new ".gnu.hash" sections need
    to be dealt with the same way as ".hash" sections in all respects; only the
    dynamic linker cares about their contents. To work with older dynamic
    linkers (i.e. preexisting releases of glibc), a binary must have the old
    ".hash" section. The --hash-style=both option produces binaries that a new
    dynamic linker can use more efficiently, but an old dynamic linker can
    still handle.

    The new section runs afoul of the custom linker scripts used to build vDSO
    images for the kernel. On ia64, the failure mode for this is a boot-time
    panic because the vDSO's PT_IA_64_UNWIND segment winds up ill-formed.

    This patch addresses the problem in two ways.

    First, it mentions ".gnu.hash" in all the linker scripts alongside ".hash".
    This produces correct vDSO images with --hash-style=sysv (or old tools),
    with --hash-style=gnu, or with --hash-style=both.

    Second, it passes the --hash-style=sysv option when building the vDSO
    images, so that ".gnu.hash" is not actually produced. This is the most
    conservative choice for compatibility with any old userland. There is some
    concern that some ancient glibc builds (though not any known old production
    system) might choke on --hash-style=both binaries. The optimizations
    provided by the new style of hash section do not really matter for a DSO
    with a tiny number of symbols, as the vDSO has. If someone wants to use
    =gnu or =both for their vDSO builds and worry less about that
    compatibility, just change the option and the linker script changes will
    make any choice work fine.

    Signed-off-by: Roland McGrath
    Cc: "Luck, Tony"
    Cc: Kyle McMartin
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Cc: Jeff Dike
    Cc: Andi Kleen
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Roland McGrath
     
  • The geode hwrng leaks an iomapped resource, if hwrng_register() fails.
    This fixes it.

    Signed-off-by: Michael Buesch
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michael Buesch
     
  • The intel hwrng leaks an iomapped resource, if hwrng_register() failes.
    This fixes it.

    Signed-off-by: Michael Buesch
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michael Buesch
     
  • kmem_cache_alloc() was documented twice, but kmem_cache_zalloc() never.
    Fix this obvious typo to get things right.

    Signed-off-by: Rolf Eike Beer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rolf Eike Beer
     
  • In order to prevent Doc Rot, this patch adds a reference to the design
    document for rtmutex.c in rtmutex.c. So when someone needs to update or
    change the design of that file they will know that a document actually
    exists that explains the design (helping them change it), and hopefully
    that they will update the document if they too change the design.

    Signed-off-by: Steven Rostedt
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Steven Rostedt
     
  • There is currently no affected user in the tree, but usage is less
    surprising that way.

    Signed-off-by: Uwe Zeisberger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Uwe Zeisberger
     
  • The recent changes from irqtrace feature has added overheads to
    local_bh_disable and local_bh_enable that reduces UDP performance across
    x86_64 and IA64, even though IA64 does not support the irqtrace feature.
    Patch in question is

    [PATCH]lockdep: irqtrace subsystem, core
    http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=c
    ommit;h=de30a2b355ea85350ca2f58f3b9bf4e5bc007986

    Prior to this patch, local_bh_disable was a short macro. Now it is a
    function which calls __local_bh_disable with added irq flags save and
    restore. The irq flags save and restore were also added to
    local_bh_enable, probably for injecting the trace irqs code.

    This overhead is on the generic code path across all architectures. On a
    IA_64 test machine (Itanium-2 1.6 GHz) running a benchmark like netperf's
    UDP streaming test, the added overhead results in a drop of 3% in
    throughput, as udp_sendmsg calls the local_bh_enable/disable several times.

    Other workloads that have heavy usages of local_bh_enable/disable could
    also be affected. The patch ideally should not have affected IA-64
    performance as it does not have IRQ tracing support. A significant portion
    of the overhead is in the added irq flags save and restore, which I think
    is not needed if IRQ tracing is unused. A suggested patch is attached
    below that recovers the lost performance. However, the "ifdef"s in the
    patch are a bit ugly.

    Signed-off-by: Tim Chen
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tim Chen
     
  • Change "Thrid" into "Third", and realign similarly to other entries.

    Signed-off-by: Pete Zaitcev
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pete Zaitcev
     
  • Signed-off-by: Josh Triplett
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Josh Triplett
     
  • ufs_symlink, in one of its error paths, calls unlock_kernel without ever
    having called lock_kernel(); fix this by creating and jumping to a new
    label out_notlocked rather than the out label used after calling
    lock_kernel().

    Signed-off-by: Josh Triplett
    Cc: Evgeniy Dushistov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Josh Triplett
     
  • The EFS filesystem does not have an entry in MAINTAINERS; add one, giving
    the EFS filesystem and listing the status as Orphan, per the note on that
    page saying "I'm no longer actively maintaining EFS".

    Signed-off-by: Josh Triplett
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Josh Triplett
     
  • If efs_symlink_readpage hits the -ENAMETOOLONG error path, it will call
    unlock_kernel without ever having called lock_kernel(); fix this by
    creating and jumping to a new label fail_notlocked rather than the fail
    label used after calling lock_kernel().

    Signed-off-by: Josh Triplett
    Cc: Marcelo Tosatti
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Josh Triplett
     
  • Commit 398c53a757702e1e3a7a2c24860c7ad26acb53ed (in the historical GIT
    tree) moved the lock_kernel() in coda_open after the allocation of a
    coda_file_info struct, but left an unlock_kernel() in the allocation
    failure error path; remove it.

    Signed-off-by: Josh Triplett
    Acked-by: Jan Harkes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Josh Triplett
     
  • swsusp is unable to suspend my machine (DTK FortisPro TOP-5A notebook) with
    kernel 2.6.17.5 because it's unable to suspend PNP device 00:16 (mouse).

    The problem is in PNP BIOS. pnp_bus_suspend() calls pnp_stop_dev() for the
    device if the device can be disabled according to pnp_can_disable(). The
    problem is that pnpbios_disable_resources() returns -EPERM if the device is
    not dynamic (!pnpbios_is_dynamic()) but insert_device() happily sets
    PNP_DISABLE capability/flag even if the device is not dynamic. So we try
    to disable non-dynamic devices which will fail. This patch prevents
    insert_device() from setting PNP_DISABLE if the device is not dynamic and
    fixes suspend on my system.

    Signed-off-by: Ondrej Zary
    Cc: Pavel Machek
    Cc: "Rafael J. Wysocki"
    Cc: Bjorn Helgaas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ondrej Zary
     
  • This is a real deadlock, a nice complex one:
    (warning: long explanation follows so that Andrew can have a complete
    patch description)

    it's an ABCDA deadlock:

    A iprune_mutex
    B inode->inotify_mutex
    C ih->mutex
    D dev->ev_mutex

    The AB relationship comes straight from invalidate_inodes()

    int invalidate_inodes(struct super_block * sb)
    {
    int busy;
    LIST_HEAD(throw_away);

    mutex_lock(&iprune_mutex);
    spin_lock(&inode_lock);
    inotify_unmount_inodes(&sb->s_inodes);

    where inotify_umount_inodes() takes the
    mutex_lock(&inode->inotify_mutex);

    The BC relationship comes directly from inotify_find_update_watch():
    s32 inotify_find_update_watch(struct inotify_handle *ih, struct inode *inode,
    u32 mask)
    {
    ...
    mutex_lock(&inode->inotify_mutex);
    mutex_lock(&ih->mutex);

    The CD relationship comes from inotify_rm_wd:
    inotify_rm_wd does
    mutex_lock(&inode->inotify_mutex);
    mutex_lock(&ih->mutex)
    and then calls inotify_remove_watch_locked() which calls
    notify_dev_queue_event() which does
    mutex_lock(&dev->ev_mutex);

    (this strictly is a BCD relationship)

    The DA relationship comes from the most interesting part:

    [] shrink_icache_memory+0x42/0x270
    [] shrink_slab+0x11d/0x1c9
    [] try_to_free_pages+0x187/0x244
    [] __alloc_pages+0x1cd/0x2e0
    [] cache_alloc_refill+0x3f8/0x821
    [] kmem_cache_alloc+0x85/0xcb
    [] kernel_event+0x2e/0x122
    [] inotify_dev_queue_event+0xcc/0x140

    inotify_dev_queue_event schedules a kernel_event which does a
    kmem_cache_alloc( , GFP_KERNEL) which may try to shrink slabs, including
    the inode cache .. which then takes iprune_mutex.

    And voila, there is an AB, a BC, a CD relationship (even a direct BCD),
    and also now a DA relationship -> a circular type AB-BA deadlock but
    involving 4 locks.

    The solution is simple: kernel_event() is NOT allowed to use GFP_KERNEL,
    but must use GFP_NOFS to not cause recursion into the VFS.

    Signed-off-by: Arjan van de Ven
    Acked-by: Ingo Molnar
    Acked-by: Robert Love
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     
  • Since I didn't know about the linux-mm mailing list until I spammed all
    those that had their names anywhere in the mm directory, I'm sending this
    patch to add the linux-mm mailing list to the MAINTAINERS file.

    Also, since mm is so broad, it doesn't have a single person to maintain it,
    and thus no maintainer is listed. I also left the status as Maintained,
    since it obviously is.

    Signed-off-by: Steven Rostedt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Steven Rostedt
     
  • Initialize init task's pi_waiters plist. Otherwise cpu hotplug of cpu 0
    might crash, since rt_mutex_getprio() accesses an uninitialized list head.

    call chain which led to crash:

    take_cpu_down
    sched_idle_next
    __setscheduler
    rt_mutex_getprio

    Using PLIST_HEAD_INIT in the INIT_TASK macro doesn't work unfortunately,
    since the pi_waiters member is only conditionally present.

    Cc: Arjan van de Ven
    Cc: Thomas Gleixner
    Acked-by: Ingo Molnar
    Signed-off-by: Heiko Carstens
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     
  • Hide the video drivers for onboard graphics found in early PCI PowerMacs in
    Apple G5 config files.

    drivers/built-in.o: In function `.platinumfb_probe':
    platinumfb.c:(.text+0x377a0): undefined reference to `.nvram_read_byte'
    platinumfb.c:(.text+0x37830): undefined reference to `.nvram_read_byte'
    drivers/built-in.o: In function `.control_init':
    controlfb.c:(.init.text+0x1938): undefined reference to `.nvram_read_byte'
    controlfb.c:(.init.text+0x1968): undefined reference to `.nvram_read_byte'
    drivers/built-in.o: In function `.valkyriefb_init':
    (.init.text+0x2300): undefined reference to `.nvram_read_byte'
    drivers/built-in.o:(.init.text+0x239c): more undefined references to `.nvram_read_byte' follow

    Signed-off-by: Olaf Hering
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Olaf Hering
     
  • Enable mac partition table support per default also for a powermac config.

    Signed-off-by: Olaf Hering
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Olaf Hering
     
  • Values displayed when by cardctl config are horribly wrong for 16bit cards.
    this fixes it up by not using memcpy() since source and target struct are
    very different.

    Signed-off-by: Daniel Ritz
    Cc: Dominik Brodowski
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Daniel Ritz
     
  • the p_dev == NULL checks are wrong. the called functions handle a NULL
    p_dev on their own. w/o this patch output of cardcctl status and cardctl
    config is broken for cardbus cards or when the slot is empty.

    Signed-off-by: Daniel Ritz
    Cc: Dominik Brodowski
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Daniel Ritz
     
  • WARNING: drivers/video/console/mdacon.o - Section mismatch: reference to .init.text: from .text between 'mdacon_startup' (at offset 0x123) and 'mdacon_init'
    WARNING: drivers/video/console/mdacon.o - Section mismatch: reference to .init.text: from .text between 'mdacon_startup' (at offset 0x18b) and 'mdacon_init'

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

    Frederik Deweerdt
     
  • The SGI IOC4 IDE device always shares an interrupt with other devices which
    are part of IOC4. As such, IDEPCI_SHARE_IRQ should always be enabled when
    BLK_DEV_SGIIOC4 is enabled.

    Signed-off-by: Brent Casavant
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Brent Casavant
     
  • A few cleanups to SubmittingPatches:
    - mention SubmitChecklist
    - remove mention of my simple patch script tools
    - remove last-updated line

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

    Randy Dunlap
     
  • kernel/workqueue.c was omitted from generating kernel documentation. This
    adds a new section "Workqueues and Kevents" and adds documentation for some
    of the functions.

    Some functions in this file already had DocBook-style comments, now they
    finally become visible.

    Signed-off-by: Rolf Eike Beer
    Cc: "Randy.Dunlap"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rolf Eike Beer
     
  • Clean up kernel-doc comments in drivers/pci/search.c (line sizes and typos).

    Enable that source file in DocBook/kernel-api.tmpl.

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

    Randy Dunlap
     
  • Ignore __devinit in function definitions so that kernel-doc won't fail on
    them.

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

    Randy Dunlap