21 Apr, 2010

1 commit

  • blkio + cfq was crashing even when two sequential readers were put in two
    separate cgroups (group_isolation=0).

    The reason being that cfqq can migrate across groups based on its being
    sync-noidle or not, it can happen that at request insertion time, cfqq
    belonged to one cfqg and at request dispatch time, it belonged to root
    group. In this case request stats per cgroup can go wrong and it also runs
    into BUG_ON().

    This patch implements rq stashing away a cfq group pointer and not relying
    on cfqq->cfqg pointer alone for rq stat accounting.

    [ 65.163523] ------------[ cut here ]------------
    [ 65.164301] kernel BUG at block/blk-cgroup.c:117!
    [ 65.164301] invalid opcode: 0000 [#1] SMP
    [ 65.164301] last sysfs file: /sys/devices/pci0000:00/0000:00:05.0/0000:60:00.1/host9/rport-9:0-0/target9:0:0/9:0:0:2/block/sde/stat
    [ 65.164301] CPU 1
    [ 65.164301] Modules linked in: dm_round_robin dm_multipath qla2xxx scsi_transport_fc dm_zero dm_mirror dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan]
    [ 65.164301]
    [ 65.164301] Pid: 4505, comm: fio Not tainted 2.6.34-rc4-blk-for-35 #34 0A98h/HP xw8600 Workstation
    [ 65.164301] RIP: 0010:[] [] blkiocg_update_io_remove_stats+0x5b/0xaf
    [ 65.164301] RSP: 0018:ffff8800ba5a79e8 EFLAGS: 00010046
    [ 65.164301] RAX: 0000000000000096 RBX: ffff8800bb268d60 RCX: 0000000000000000
    [ 65.164301] RDX: ffff8800bb268eb8 RSI: 0000000000000000 RDI: ffff8800bb268e00
    [ 65.164301] RBP: ffff8800ba5a7a08 R08: 0000000000000064 R09: 0000000000000001
    [ 65.164301] R10: 0000000000079640 R11: ffff8800a0bd5bf0 R12: ffff8800bab4af01
    [ 65.164301] R13: ffff8800bab4af00 R14: ffff8800bb1d8928 R15: 0000000000000000
    [ 65.164301] FS: 00007f18f75056f0(0000) GS:ffff880001e40000(0000) knlGS:0000000000000000
    [ 65.164301] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 65.164301] CR2: 000000000040e7f0 CR3: 00000000ba52b000 CR4: 00000000000006e0
    [ 65.164301] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 65.164301] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    [ 65.164301] Process fio (pid: 4505, threadinfo ffff8800ba5a6000, task ffff8800ba45ae80)
    [ 65.164301] Stack:
    [ 65.164301] ffff8800ba5a7a08 ffff8800ba722540 ffff8800bab4af68 ffff8800bab4af68
    [ 65.164301] ffff8800ba5a7a38 ffffffff8121d814 ffff8800ba722540 ffff8800bab4af68
    [ 65.164301] ffff8800ba722540 ffff8800a08f6800 ffff8800ba5a7a68 ffffffff8121d8ca
    [ 65.164301] Call Trace:
    [ 65.164301] [] cfq_remove_request+0xe4/0x116
    [ 65.164301] [] cfq_dispatch_insert+0x84/0xe1
    [ 65.164301] [] cfq_dispatch_requests+0x767/0x8e8
    [ 65.164301] [] ? submit_bio+0xc3/0xcc
    [ 65.164301] [] ? sync_page_killable+0x0/0x35
    [ 65.164301] [] blk_peek_request+0x191/0x1a7
    [ 65.164301] [] ? dm_get_live_table+0x44/0x4f [dm_mod]
    [ 65.164301] [] dm_request_fn+0x38/0x14c [dm_mod]
    [ 65.164301] [] ? sync_page_killable+0x0/0x35
    [ 65.164301] [] __generic_unplug_device+0x32/0x37
    [ 65.164301] [] generic_unplug_device+0x2e/0x3c
    [ 65.164301] [] dm_unplug_all+0x42/0x5b [dm_mod]
    [ 65.164301] [] blk_unplug+0x29/0x2d
    [ 65.164301] [] blk_backing_dev_unplug+0x12/0x14
    [ 65.164301] [] block_sync_page+0x35/0x39
    [ 65.164301] [] sync_page+0x41/0x4a
    [ 65.164301] [] sync_page_killable+0xe/0x35
    [ 65.164301] [] __wait_on_bit_lock+0x46/0x8f
    [ 65.164301] [] __lock_page_killable+0x66/0x6d
    [ 65.164301] [] ? wake_bit_function+0x0/0x33
    [ 65.164301] [] lock_page_killable+0x2c/0x2e
    [ 65.164301] [] generic_file_aio_read+0x361/0x4f0
    [ 65.164301] [] do_sync_read+0xcb/0x108
    [ 65.164301] [] ? security_file_permission+0x16/0x18
    [ 65.164301] [] vfs_read+0xab/0x108
    [ 65.164301] [] sys_read+0x4a/0x6e
    [ 65.164301] [] system_call_fastpath+0x16/0x1b
    [ 65.164301] Code: 00 74 1c 48 8b 8b 60 01 00 00 48 85 c9 75 04 0f 0b eb fe 48 ff c9 48 89 8b 60 01 00 00 eb 1a 48 8b 8b 58 01 00 00 48 85 c9 75 04 0b eb fe 48 ff c9 48 89 8b 58 01 00 00 45 84 e4 74 16 48 8b
    [ 65.164301] RIP [] blkiocg_update_io_remove_stats+0x5b/0xaf
    [ 65.164301] RSP
    [ 65.164301] ---[ end trace 1b2b828753032e68 ]---

    Signed-off-by: Vivek Goyal
    Signed-off-by: Jens Axboe

    Vivek Goyal
     

14 Apr, 2010

1 commit


10 Apr, 2010

3 commits

  • * 'for-linus' of git://git.kernel.dk/linux-2.6-block: (34 commits)
    cfq-iosched: Fix the incorrect timeslice accounting with forced_dispatch
    loop: Update mtime when writing using aops
    block: expose the statistics in blkio.time and blkio.sectors for the root cgroup
    backing-dev: Handle class_create() failure
    Block: Fix block/elevator.c elevator_get() off-by-one error
    drbd: lc_element_by_index() never returns NULL
    cciss: unlock on error path
    cfq-iosched: Do not merge queues of BE and IDLE classes
    cfq-iosched: Add additional blktrace log messages in CFQ for easier debugging
    i2o: Remove the dangerous kobj_to_i2o_device macro
    block: remove 16 bytes of padding from struct request on 64bits
    cfq-iosched: fix a kbuild regression
    block: make CONFIG_BLK_CGROUP visible
    Remove GENHD_FL_DRIVERFS
    block: Export max number of segments and max segment size in sysfs
    block: Finalize conversion of block limits functions
    block: Fix overrun in lcm() and move it to lib
    vfs: improve writeback_inodes_wb()
    paride: fix off-by-one test
    drbd: fix al-to-on-disk-bitmap for 4k logical_block_size
    ...

    Linus Torvalds
     
  • radix_tree_tag_get() is not safe to use concurrently with radix_tree_tag_set()
    or radix_tree_tag_clear(). The problem is that the double tag_get() in
    radix_tree_tag_get():

    if (!tag_get(node, tag, offset))
    saw_unset_tag = 1;
    if (height == 1) {
    int ret = tag_get(node, tag, offset);

    may see the value change due to the action of set/clear. RCU is no protection
    against this as no pointers are being changed, no nodes are being replaced
    according to a COW protocol - set/clear alter the node directly.

    The documentation in linux/radix-tree.h, however, says that
    radix_tree_tag_get() is an exception to the rule that "any function modifying
    the tree or tags (...) must exclude other modifications, and exclude any
    functions reading the tree".

    The problem is that the next statement in radix_tree_tag_get() checks that the
    tag doesn't vary over time:

    BUG_ON(ret && saw_unset_tag);

    This has been seen happening in FS-Cache:

    https://www.redhat.com/archives/linux-cachefs/2010-April/msg00013.html

    To this end, remove the BUG_ON() from radix_tree_tag_get() and note in various
    comments that the value of the tag may change whilst the RCU read lock is held,
    and thus that the return value of radix_tree_tag_get() may not be relied upon
    unless radix_tree_tag_set/clear() and radix_tree_delete() are excluded from
    running concurrently with it.

    Reported-by: Romain DEGEZ
    Signed-off-by: David Howells
    Acked-by: Nick Piggin
    Signed-off-by: Linus Torvalds

    David Howells
     
  • As suggested by Linus, introduce a kern_ptr_validate() helper that does some
    sanity checks to make sure a pointer is a valid kernel pointer. This is a
    preparational step for fixing SLUB kmem_ptr_validate().

    Cc: Andrew Morton
    Cc: Christoph Lameter
    Cc: David Rientjes
    Cc: Ingo Molnar
    Cc: Matt Mackall
    Cc: Nick Piggin
    Signed-off-by: Pekka Enberg
    Signed-off-by: Linus Torvalds

    Pekka Enberg
     

09 Apr, 2010

3 commits

  • This includes both the number of bios merged into requests belonging to this
    cgroup as well as the number of requests merged together.
    In the past, we've observed different merging behavior across upstream kernels,
    some by design some actual bugs. This stat helps a lot in debugging such
    problems when applications report decreased throughput with a new kernel
    version.

    This needed adding an extra elevator function to capture bios being merged as I
    did not want to pollute elevator code with blkiocg knowledge and hence needed
    the accounting invocation to come from CFQ.

    Signed-off-by: Divyesh Shah
    Signed-off-by: Jens Axboe

    Divyesh Shah
     
  • that include some minor fixes and addresses all comments.

    Changelog: (most based on Vivek Goyal's comments)
    o renamed blkiocg_reset_write to blkiocg_reset_stats
    o more clarification in the documentation on io_service_time and io_wait_time
    o Initialize blkg->stats_lock
    o rename io_add_stat to blkio_add_stat and declare it static
    o use bool for direction and sync
    o derive direction and sync info from existing rq methods
    o use 12 for major:minor string length
    o define io_service_time better to cover the NCQ case
    o add a separate reset_stats interface
    o make the indexed stats a 2d array to simplify macro and function pointer code
    o blkio.time now exports in jiffies as before
    o Added stats description in patch description and
    Documentation/cgroup/blkio-controller.txt
    o Prefix all stats functions with blkio and make them static as applicable
    o replace IO_TYPE_MAX with IO_TYPE_TOTAL
    o Moved #define constant to top of blk-cgroup.c
    o Pass dev_t around instead of char *
    o Add note to documentation file about resetting stats
    o use BLK_CGROUP_MODULE in addition to BLK_CGROUP config option in #ifdef
    statements
    o Avoid struct request specific knowledge in blk-cgroup. blk-cgroup.h now has
    rq_direction() and rq_sync() functions which are used by CFQ and when using
    io-controller at a higher level, bio_* functions can be added.

    Signed-off-by: Divyesh Shah
    Signed-off-by: Jens Axboe

    Divyesh Shah
     
  • Most drives from Seagate, Hitachi, and possibly other brands,
    do not allow LBA28 access to sector number 0x0fffffff (2^28 - 1).
    So instead use LBA48 for such accesses.

    This bug could bite a lot of systems, especially when the user has
    taken care to align partitions to 4KB boundaries. On misaligned systems,
    it is less likely to be encountered, since a 4KB read would end at
    0x10000000 rather than at 0x0fffffff.

    Signed-off-by: Mark Lord
    Signed-off-by: Jeff Garzik

    Mark Lord
     

08 Apr, 2010

3 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6:
    ide: Fix IDE taskfile with cfq scheduler
    ide: Must hold queue lock when requeueing
    ide: Requeue request after DMA timeout

    Linus Torvalds
     
  • Move MULTIPORT feature and related config changes
    out of exported headers, and disable the feature
    at runtime.

    At this point, it seems less risky to keep code around
    until we can enable it than rip it out completely.

    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Rusty Russell

    Michael S. Tsirkin
     
  • …git/x86/linux-2.6-tip

    * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip:
    x86: Fix double enable_IR_x2apic() call on SMP kernel on !SMP boards
    x86: Increase CONFIG_NODES_SHIFT max to 10
    ibft, x86: Change reserve_ibft_region() to find_ibft_region()
    x86, hpet: Fix bug in RTC emulation
    x86, hpet: Erratum workaround for read after write of HPET comparator
    bootmem, x86: Fix 32bit numa system without RAM on node 0
    nobootmem, x86: Fix 32bit numa system without RAM on node 0
    x86: Handle overlapping mptables
    x86: Make e820_remove_range to handle all covered case
    x86-32, resume: do a global tlb flush in S4 resume

    Linus Torvalds
     

07 Apr, 2010

9 commits

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
    ALSA: mixart: range checking proc file
    ALSA: hda - Fix a wrong array range check in patch_realtek.c
    ALSA: ASoC: move dma_data from snd_soc_dai to snd_soc_pcm_stream
    ALSA: hda - Enable amplifiers on Acer Inspire 6530G
    ASoC: Only do WM8994 bias off transition from standby
    ASoC: Don't use DCS_DATAPATH_BUSY for WM hubs devices
    ASoC: Don't do runtime wm_hubs DC servo updates if using offset correction
    ASoC: Support second DC servo readback method for wm_hubs
    ASoC: Avoid wraparound in wm_hubs DC servo correction
    ALSA: echoaudio - Eliminate use after free
    ALSA: i2c: cleanup: change parameter to pointer
    ALSA: hda - Add MSI blacklist for Aopen MZ915-M
    ASoC: OMAP: Fix capture pointer handling for OMAP1510 to work correctly with recent ALSA PCM code
    ALSA: hda - Update document about MSI and interrupts
    ALSA: hda: Fix 0 dB offset for Lenovo Thinkpad models using AD1981
    ALSA: hda - Add missing printk argument in previous patch
    ASoC: Fix passing platform_data to ac97 bus users and fix a leak
    ALSA: hda - Fix ADC/MUX assignment of ALC269 codec
    ALSA: hda - Fix invalid bit values passed to snd_hda_codec_amp_stereo()
    ASoC: wm8994: playback => capture

    Linus Torvalds
     
  • Presently, memcg's FILE_MAPPED accounting has following race with
    move_account (happens at rmdir()).

    increment page->mapcount (rmap.c)
    mem_cgroup_update_file_mapped() move_account()
    lock_page_cgroup()
    check page_mapped() if
    page_mapped(page)>1 {
    FILE_MAPPED -1 from old memcg
    FILE_MAPPED +1 to old memcg
    }
    .....
    overwrite pc->mem_cgroup
    unlock_page_cgroup()
    lock_page_cgroup()
    FILE_MAPPED + 1 to pc->mem_cgroup
    unlock_page_cgroup()

    Then,
    old memcg (-1 file mapped)
    new memcg (+2 file mapped)

    This happens because move_account see page_mapped() which is not guarded
    by lock_page_cgroup(). This patch adds FILE_MAPPED flag to page_cgroup
    and move account information based on it. Now, all checks are synchronous
    with lock_page_cgroup().

    Signed-off-by: KAMEZAWA Hiroyuki
    Reviewed-by: Balbir Singh
    Reviewed-by: Daisuke Nishimura
    Cc: Andrea Righi
    Cc: Andrea Arcangeli
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KAMEZAWA Hiroyuki
     
  • When we look into pagemap using page-types with option -p, the value of
    pfn for hugepages looks wrong (see below.) This is because pte was
    evaluated only once for one vma although it should be updated for each
    hugepage. This patch fixes it.

    $ page-types -p 3277 -Nl -b huge
    voffset offset len flags
    7f21e8a00 11e400 1 ___U___________H_G________________
    7f21e8a01 11e401 1ff ________________TG________________
    ^^^
    7f21e8c00 11e400 1 ___U___________H_G________________
    7f21e8c01 11e401 1ff ________________TG________________
    ^^^

    One hugepage contains 1 head page and 511 tail pages in x86_64 and each
    two lines represent each hugepage. Voffset and offset mean virtual
    address and physical address in the page unit, respectively. The
    different hugepages should not have the same offset value.

    With this patch applied:

    $ page-types -p 3386 -Nl -b huge
    voffset offset len flags
    7fec7a600 112c00 1 ___UD__________H_G________________
    7fec7a601 112c01 1ff ________________TG________________
    ^^^
    7fec7a800 113200 1 ___UD__________H_G________________
    7fec7a801 113201 1ff ________________TG________________
    ^^^
    OK

    More info:

    - This patch modifies walk_page_range()'s hugepage walker. But the
    change only affects pagemap_read(), which is the only caller of hugepage
    callback.

    - Without this patch, hugetlb_entry() callback is called per vma, that
    doesn't match the natural expectation from its name.

    - With this patch, hugetlb_entry() is called per hugepte entry and the
    callback can become much simpler.

    Signed-off-by: Naoya Horiguchi
    Signed-off-by: KAMEZAWA Hiroyuki
    Acked-by: Matt Mackall
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Naoya Horiguchi
     
  • When __ratelimit() returns 1 this means that we can go ahead.

    Signed-off-by: Yong Zhang
    Cc: Ingo Molnar
    Cc: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yong Zhang
     
  • Requested by hch, for consistency now it is exported.

    Cc: Alexander Viro
    Cc: Anton Blanchard
    Cc: Christoph Hellwig
    Cc: Jan Kara
    Cc: Jeff Moyer
    Cc: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • Commit 148f948ba877f4d3cdef036b1ff6d9f68986706a (vfs: Introduce new
    helpers for syncing after writing to O_SYNC file or IS_SYNC inode) broke
    the raw driver.

    We now call through generic_file_aio_write -> generic_write_sync ->
    vfs_fsync_range. vfs_fsync_range has:

    if (!fop || !fop->fsync) {
    ret = -EINVAL;
    goto out;
    }

    But drivers/char/raw.c doesn't set an fsync method.

    We have two options: fix it or remove the raw driver completely. I'm
    happy to do either, the fact this has been broken for so long suggests it
    is rarely used.

    The patch below adds an fsync method to the raw driver. My knowledge of
    the block layer is pretty sketchy so this could do with a once over.

    If we instead decide to remove the raw driver, this patch might still be
    useful as a backport to 2.6.33 and 2.6.32.

    Signed-off-by: Anton Blanchard
    Reviewed-by: Jan Kara
    Cc: Christoph Hellwig
    Cc: Alexander Viro
    Cc: Jens Axboe
    Reviewed-by: Jeff Moyer
    Tested-by: Jeff Moyer
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anton Blanchard
     
  • DECLARE_KFIFO creates a union with a struct kfifo and a buffer array with
    size [size + sizeof(struct kfifo)].

    INIT_KFIFO then sets the buffer pointer in struct kfifo to point to the
    beginning of the buffer array which means that the first call to kfifo_in
    will overwrite members of the struct kfifo.

    Signed-off-by: David Härdeman
    Acked-by: Stefani Seibold
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Härdeman
     
  • Migration has been completed so remove this now. There's one straggler in
    linux-next's drivers/mtd/sm_ftl.c. A patch has been sent.

    Cc: Akinobu Mita
    Cc: Stephen Rothwell
    Cc: David Woodhouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • Takashi Iwai
     

06 Apr, 2010

8 commits

  • * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
    libata: unlock HPA if device shrunk
    libata: disable NCQ on Crucial C300 SSD
    libata: don't whine on spurious IRQ

    Linus Torvalds
     
  • Some BIOSes don't configure HPA during boot but do so while resuming.
    This causes harddrives to shrink during resume making libata detach
    and reattach them. This can be worked around by unlocking HPA if old
    size equals native size.

    Add ATA_DFLAG_UNLOCK_HPA so that HPA unlocking can be controlled
    per-device and update ata_dev_revalidate() such that it sets
    ATA_DFLAG_UNLOCK_HPA and fails with -EIO when the above condition is
    detected.

    This patch fixes the following bug.

    https://bugzilla.kernel.org/show_bug.cgi?id=15396

    Signed-off-by: Tejun Heo
    Reported-by: Oleksandr Yermolenko
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • One of the features of laptop-mode is that it forces a writeout of dirty
    pages if something else triggers a physical read or write from a device.
    The current implementation flushes pages on all devices, rather than only
    the one that triggered the flush. This patch alters the behaviour so that
    only the recently accessed block device is flushed, preventing other
    disks being spun up for no terribly good reason.

    Signed-off-by: Matthew Garrett
    Signed-off-by: Jens Axboe

    Matthew Garrett
     
  • Module refcounting is implemented with a per-cpu counter for speed.
    However there is a race when tallying the counter where a reference may
    be taken by one CPU and released by another. Reference count summation
    may then see the decrement without having seen the previous increment,
    leading to lower than expected count. A module which never has its
    actual reference drop below 1 may return a reference count of 0 due to
    this race.

    Module removal generally runs under stop_machine, which prevents this
    race causing bugs due to removal of in-use modules. However there are
    other real bugs in module.c code and driver code (module_refcount is
    exported) where the callers do not run under stop_machine.

    Fix this by maintaining running per-cpu counters for the number of
    module refcount increments and the number of refcount decrements. The
    increments are tallied after the decrements, so any decrement seen will
    always have its corresponding increment counted. The final refcount is
    the difference of the total increments and decrements, preventing a
    low-refcount from being returned.

    Signed-off-by: Nick Piggin
    Acked-by: Rusty Russell
    Signed-off-by: Linus Torvalds

    Nick Piggin
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
    9p: saving negative to unsigned char
    9p: return on mutex_lock_interruptible()
    9p: Creating files with names too long should fail with ENAMETOOLONG.
    9p: Make sure we are able to clunk the cached fid on umount
    9p: drop nlink remove
    fs/9p: Clunk the fid resulting from partial walk of the name
    9p: documentation update
    9p: Fix setting of protocol flags in v9fs_session_info structure.

    Linus Torvalds
     
  • This fixes a memory corruption when ASoC devices are used in
    full-duplex mode. Specifically for pxa-ssp code, where this pointer
    is dynamically allocated for each direction and destroyed upon each
    stream start.

    All other platforms are fixed blindly, I couldn't even compile-test
    them. Sorry for any breakage I may have caused.

    [Note that this is a backported version for 2.6.34.
    Upstream commit is fd23b7dee]

    Signed-off-by: Daniel Mack
    Reported-by: Sven Neumann
    Reported-by: Michael Hirsch
    Acked-by: Liam Girdwood
    Signed-off-by: Mark Brown

    Daniel Mack
     
  • * 'slabh' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc:
    eeepc-wmi: include slab.h
    staging/otus: include slab.h from usbdrv.h
    percpu: don't implicitly include slab.h from percpu.h
    kmemcheck: Fix build errors due to missing slab.h
    include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
    iwlwifi: don't include iwl-dev.h from iwl-devtrace.h
    x86: don't include slab.h from arch/x86/include/asm/pgtable_32.h

    Fix up trivial conflicts in include/linux/percpu.h due to
    is_kernel_percpu_address() having been introduced since the slab.h
    cleanup with the percpu_up.c splitup.

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:
    module: add stub for is_module_percpu_address
    percpu, module: implement and use is_kernel/module_percpu_address()
    module: encapsulate percpu handling better and record percpu_size

    Linus Torvalds
     

05 Apr, 2010

3 commits


04 Apr, 2010

1 commit


03 Apr, 2010

3 commits


02 Apr, 2010

4 commits

  • We also add start_time_ns and io_start_time_ns fields to struct request
    here to record the time when a request is created and when it is
    dispatched to device. We use ns uints here as ms and jiffies are
    not very useful for non-rotational media.

    Signed-off-by: Divyesh Shah
    Signed-off-by: Jens Axboe

    Divyesh Shah
     
  • Jens Axboe
     
  • This allows arch code could decide the way to reserve the ibft.

    And we should reserve ibft as early as possible, instead of BOOTMEM
    stage, in case the table is in RAM range and is not reserved by BIOS
    (this will often be the case.)

    Move to just after find_smp_config().

    Also when CONFIG_NO_BOOTMEM=y, We will not have reserve_bootmem() anymore.

    -v2: fix typo about ibft pointed by Konrad Rzeszutek Wilk

    Signed-off-by: Yinghai Lu
    LKML-Reference:
    Cc: Pekka Enberg
    Cc: Peter Jones
    Cc: Konrad Rzeszutek Wilk
    CC: Jan Beulich
    Signed-off-by: H. Peter Anvin

    Yinghai Lu
     
  • * 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (76 commits)
    drm/radeon/kms: enable ACPI powermanagement mode on radeon gpus.
    drm/radeon/kms: rs400/480 should set common registers.
    drm/radeon/kms: add sanity check to wptr.
    drm/radeon/kms/evergreen: get DP working
    drm/radeon/kms: add hw_i2c module option
    drm/radeon/kms: use new pre/post_xfer i2c bit algo hooks
    drm/radeon/kms: disable MSI on IGP chips
    drm/radeon/kms: display watermark updates (v2)
    drm/radeon/kms/dp: disable training pattern on the sink at the end of link training
    drm/radeon/kms: minor fixes for eDP with LCD* device tags (v2)
    drm/radeon/kms/dp: remove extraneous training complete call
    drm/radeon/kms/atom: minor fixes to transmitter setup
    drm/radeon/kms: Only restrict BO to visible VRAM size when pinning to VRAM.
    drm: fix build error when SYSRQ is disabled
    drm/radeon/kms: fix macbookpro connector quirk
    drm/radeon/r6xx/r7xx: further safe reg clean up
    drm/radeon: bump the UMS driver version for r6xx/r7xx const buffer support
    drm/radeon/kms: bump the version for r6xx/r7xx const buffer support
    drm/radeon/r6xx/r7xx: CS parser fixes
    drm/radeon/kms: fix some typos in r6xx/r7xx hpd setup
    ...

    Fix up MSI-related conflicts in drivers/gpu/drm/radeon/radeon_irq_kms.c

    Linus Torvalds
     

01 Apr, 2010

1 commit

  • I noticed that my KVM virtual machines were experiencing IDE
    issues resulting in processes stuck on waiting for buffers to
    complete.

    The root cause is of course race conditions in the ancient qemu
    backend that I'm using. However, the fact that the guest isn't
    recovering is a bug.

    I've tracked it down to the change made last year to dequeue
    requests at the start rather than at the end in the IDE layer.

    commit 8f6205cd572fece673da0255d74843680f67f879
    Author: Tejun Heo
    Date: Fri May 8 11:53:59 2009 +0900

    ide: dequeue in-flight request

    The problem is that the function ide_dma_timeout_retry does not
    requeue the current request, causing one request to be lost for
    each DMA timeout.

    This patch fixes this by requeueing the request.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu