29 Apr, 2008

40 commits

  • The kernel is sent to tainted within the warn_on_slowpath() function, and
    whenever a warning occurs the new taint flag 'W' is set. This is useful to
    know if a warning occurred before a BUG by preserving the warning as a flag
    in the taint state.

    This does not work on architectures where WARN_ON has its own definition.
    These archs are:
    1. s390
    2. superh
    3. avr32
    4. parisc

    The maintainers of these architectures have been added in the Cc: list
    in this email to alert them to the situation.

    The documentation in oops-tracing.txt has been updated to include the
    new flag.

    Signed-off-by: Nur Hussein
    Cc: Arjan van de Ven
    Cc: "Randy.Dunlap"
    Cc: Ingo Molnar
    Cc: Peter Zijlstra
    Cc: Kyle McMartin
    Cc: Martin Schwidefsky
    Cc: Haavard Skinnemoen
    Cc: Paul Mundt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nur Hussein
     
  • They're defined later on in the same file with bodies and nothing in
    between needs them.

    Signed-off-by: Ilpo Järvinen
    Reviewed-by: Pekka Enberg
    Acked-by: Jan Harkes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ilpo Järvinen
     
  • BITS_PER_LONG is a signed value (32 or 64)

    DIV_ROUND_UP(nr, BITS_PER_LONG) performs signed arithmetic if "nr" is signed too.

    Converting BITS_TO_LONGS(nr) to DIV_ROUND_UP(nr, BITS_PER_BYTE *
    sizeof(long)) makes sure compiler can perform a right shift, even if "nr"
    is a signed value, instead of an expensive integer divide.

    Applying this patch saves 141 bytes on x86 when CONFIG_CC_OPTIMIZE_FOR_SIZE=y
    and speedup bitmap operations.

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

    Eric Dumazet
     
  • Epoll calls rb_set_parent(n, n) to initialize the rb-tree node, but
    rb_set_parent() accesses node's pointer in its code. This creates a
    warning in kmemcheck (reported by Vegard Nossum) about an uninitialized
    memory access. The warning is harmless since the following rb-tree node
    insert is going to overwrite the node data. In any case I think it's
    better to not have that happening at all, and fix it by simplifying the
    code to get rid of a few lines that became superfluous after the previous
    epoll changes.

    Signed-off-by: Davide Libenzi
    Cc: Vegard Nossum
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Davide Libenzi
     
  • Make /dev/kmem a config option; /dev/kmem is VERY rarely used, and when
    used, it's generally for no good (rootkits tend to be the most common
    users). With this config option, users have the choice to disable
    /dev/kmem, saving some size as well.

    A patch to disable /dev/kmem has been in the Fedora and RHEL kernels for
    4+ years now without any known problems or legit users of /dev/kmem.

    [akpm@linux-foundation.org: make CONFIG_DEVKMEM default to y]
    Signed-off-by: Arjan van de Ven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     
  • __FUNCTION__ is gcc-specific, use __func__

    Signed-off-by: Harvey Harrison
    Cc: Greg KH
    Cc: "Rafael J. Wysocki"
    Cc: Len Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     
  • Add __GFP_REPEAT to hugepage allocations. Do so to not necessitate userspace
    putting pressure on the VM by repeated echo's into /proc/sys/vm/nr_hugepages
    to grow the pool. With the previous patch to allow for large-order
    __GFP_REPEAT attempts to loop for a bit (as opposed to indefinitely), this
    increases the likelihood of getting hugepages when the system experiences (or
    recently experienced) load.

    Mel tested the patchset on an x86_32 laptop. With the patches, it was easier
    to use the proc interface to grow the hugepage pool. The following is the
    output of a script that grows the pool as much as possible running on
    2.6.25-rc9.

    Allocating hugepages test
    -------------------------
    Disabling OOM Killer for current test process
    Starting page count: 0
    Attempt 1: 57 pages Progress made with 57 pages
    Attempt 2: 73 pages Progress made with 16 pages
    Attempt 3: 74 pages Progress made with 1 pages
    Attempt 4: 75 pages Progress made with 1 pages
    Attempt 5: 77 pages Progress made with 2 pages

    77 pages was the most it allocated but it took 5 attempts from userspace
    to get it. With the 3 patches in this series applied,

    Allocating hugepages test
    -------------------------
    Disabling OOM Killer for current test process
    Starting page count: 0
    Attempt 1: 75 pages Progress made with 75 pages
    Attempt 2: 76 pages Progress made with 1 pages
    Attempt 3: 79 pages Progress made with 3 pages

    And 79 pages was the most it got. Your patches were able to allocate the
    bulk of possible pages on the first attempt.

    Signed-off-by: Nishanth Aravamudan
    Cc: Andy Whitcroft
    Tested-by: Mel Gorman
    Cc: Dave Hansen
    Cc: Christoph Lameter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nishanth Aravamudan
     
  • Because of page order checks in __alloc_pages(), hugepage (and similarly
    large order) allocations will not retry unless explicitly marked
    __GFP_REPEAT. However, the current retry logic is nearly an infinite
    loop (or until reclaim does no progress whatsoever). For these costly
    allocations, that seems like overkill and could potentially never
    terminate. Mel observed that allowing current __GFP_REPEAT semantics for
    hugepage allocations essentially killed the system. I believe this is
    because we may continue to reclaim small orders of pages all over, but
    never have enough to satisfy the hugepage allocation request. This is
    clearly only a problem for large order allocations, of which hugepages
    are the most obvious (to me).

    Modify try_to_free_pages() to indicate how many pages were reclaimed.
    Use that information in __alloc_pages() to eventually fail a large
    __GFP_REPEAT allocation when we've reclaimed an order of pages equal to
    or greater than the allocation's order. This relies on lumpy reclaim
    functioning as advertised. Due to fragmentation, lumpy reclaim may not
    be able to free up the order needed in one invocation, so multiple
    iterations may be requred. In other words, the more fragmented memory
    is, the more retry attempts __GFP_REPEAT will make (particularly for
    higher order allocations).

    This changes the semantics of __GFP_REPEAT subtly, but *only* for
    allocations > PAGE_ALLOC_COSTLY_ORDER. With this patch, for those size
    allocations, we will try up to some point (at least 1<
    Cc: Andy Whitcroft
    Tested-by: Mel Gorman
    Cc: Dave Hansen
    Cc: Christoph Lameter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nishanth Aravamudan
     
  • The definition and use of __GFP_REPEAT, __GFP_NOFAIL and __GFP_NORETRY in the
    core VM have somewhat differing comments as to their actual semantics.
    Annoyingly, the flags definition has inline and header comments, which might
    be interpreted as not being equivalent. Just add references to the header
    comments in the inline ones so they don't go out of sync in the future. In
    their use in __alloc_pages() clarify that the current implementation treats
    low-order allocations and __GFP_REPEAT allocations as distinct cases.

    To clarify, the flags' semantics are:

    __GFP_NORETRY means try no harder than one run through __alloc_pages

    __GFP_REPEAT means __GFP_NOFAIL

    __GFP_NOFAIL means repeat forever

    order
    Acked-by: Mel Gorman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nishanth Aravamudan
     
  • usemap must be initialized only when pfn is within zone. If not, it corrupts
    memory.

    And this patch also reduces the number of calls to set_pageblock_migratetype()
    from
    (pfn & (pageblock_nr_pages -1)
    to
    !(pfn & (pageblock_nr_pages-1)
    it should be called once per pageblock.

    Signed-off-by: KAMEZAWA Hiroyuki
    Acked-by: Mel Gorman
    Cc: Hugh Dickins
    Cc: Shi Weihua
    Cc: Balbir Singh
    Cc: Pavel Emelyanov
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KAMEZAWA Hiroyuki
     
  • Signed-off-by: Harvey Harrison
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     
  • drivers/media/video/v4l2-common.c:719:16: warning: Using plain integer as NULL pointer
    drivers/media/video/au0828/au0828-dvb.c:122:19: warning: Using plain integer as NULL pointer
    drivers/media/video/ivtv/ivtv-yuv.c:1101:22: warning: Using plain integer as NULL pointer
    drivers/media/video/ivtv/ivtv-yuv.c:1102:23: warning: Using plain integer as NULL pointer
    drivers/media/video/pvrusb2/pvrusb2-audio.c:78:39: warning: Using plain integer as NULL pointer
    drivers/media/video/pvrusb2/pvrusb2-video-v4l.c:84:39: warning: Using plain integer as NULL pointer
    drivers/media/video/pvrusb2/pvrusb2-v4l2.c:1264:9: warning: Using plain integer as NULL pointer
    drivers/media/video/pvrusb2/pvrusb2-context.c:197:28: warning: Using plain integer as NULL pointer
    drivers/media/video/pvrusb2/pvrusb2-cx2584x-v4l.c:126:39: warning: Using plain integer as NULL pointer
    drivers/media/video/pvrusb2/pvrusb2-dvb.c:133:32: warning: Using plain integer as NULL pointer
    drivers/media/video/pvrusb2/pvrusb2-dvb.c:145:31: warning: Using plain integer as NULL pointer
    drivers/media/video/pvrusb2/pvrusb2-dvb.c:177:55: warning: Using plain integer as NULL pointer
    drivers/media/video/videobuf-core.c:100:9: warning: Using plain integer as NULL pointer

    Signed-off-by: Harvey Harrison
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     
  • drivers/scsi/aic7xxx/aic7770_osm.c:53:58: warning: Using plain integer as NULL pointer
    drivers/scsi/aic7xxx/aic7xxx_osm_pci.c:355:47: warning: Using plain integer as NULL pointer
    drivers/scsi/aic7xxx/aic7xxx_osm_pci.c:372:55: warning: Using plain integer as NULL pointer
    drivers/scsi/aha152x.c:997:28: warning: Using plain integer as NULL pointer
    drivers/scsi/aha152x.c:1003:28: warning: Using plain integer as NULL pointer
    drivers/scsi/aha152x.c:1165:46: warning: Using plain integer as NULL pointer
    drivers/scsi/fdomain.c:1446:40: warning: Using plain integer as NULL pointer
    drivers/scsi/sym53c8xx_2/sym_hipd.c:1650:51: warning: Using plain integer as NULL pointer
    drivers/scsi/sym53c8xx_2/sym_hipd.c:3171:42: warning: Using plain integer as NULL pointer
    drivers/scsi/sym53c8xx_2/sym_hipd.c:5732:52: warning: Using plain integer as NULL pointer
    drivers/scsi/ncr53c8xx.c:8189:31: warning: Using plain integer as NULL pointer
    drivers/scsi/ncr53c8xx.c:8225:34: warning: Using plain integer as NULL pointer
    drivers/scsi/dpt_i2o.c:156:32: warning: Using plain integer as NULL pointer
    drivers/scsi/ultrastor.c:954:42: warning: Using plain integer as NULL pointer
    drivers/scsi/ultrastor.c:1104:18: warning: Using plain integer as NULL pointer

    Signed-off-by: Harvey Harrison
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (35 commits)
    siimage: coding style cleanup (take 2)
    ide-cd: clean up cdrom_analyze_sense_data()
    ide-cd: fix test unsigned var < 0
    ide: add TSSTcorp CDDVDW SH-S202H to ivb_list[]
    piix: add Asus Eee 701 controller to short cable list
    ARM: always select HAVE_IDE
    remove the broken ETRAX_IDE driver
    ide: remove ->dma_prdtable field from ide_hwif_t
    ide: remove ->dma_vendor{1,3} fields from ide_hwif_t
    scc_pata: add ->dma_host_set and ->dma_start methods
    ide: skip "VLB sync" if host uses MMIO
    ide: add ide_pad_transfer() helper
    ide: remove ->INW and ->OUTW methods
    ide: use IDE I/O helpers directly in ide_tf_{load,read}()
    ns87415: add ->tf_read method
    scc_pata: add ->tf_{load,read} methods
    ide-h8300: add ->tf_{load,read} methods
    ide-cris: add ->tf_{load,read} methods
    ide: add ->tf_load and ->tf_read methods
    ide: move ide_tf_{load,read} to ide-iops.c
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild:
    kconfig: add named choice group
    kconfig: fix choice dependency check
    kconifg: 'select' considered less evil
    dontdiff: ignore timeconst.h
    dontdiff: add modules.order
    kbuild: fix unportability in gen_initramfs_list.sh
    kbuild: fix help output to show correct arch
    kbuild: show defconfig subdirs in make help
    kconfig: reversed borderlines in inputbox

    Linus Torvalds
     
  • drivers/atm/nicstar.c:418:25: warning: Using plain integer as NULL pointer
    drivers/char/drm/r128_cce.c:820:25: warning: Using plain integer as NULL pointer
    drivers/char/tty_io.c:1183:10: warning: Using plain integer as NULL pointer

    Signed-off-by: Harvey Harrison
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     
  • mm/hugetlb.c:207:11: warning: Using plain integer as NULL pointer

    Signed-off-by: Harvey Harrison
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     
  • kernel/cpuset.c:1268:52: warning: Using plain integer as NULL pointer
    kernel/pid_namespace.c:95:24: warning: Using plain integer as NULL pointer

    Signed-off-by: Harvey Harrison
    Reviewed-by: Paul Jackson
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     
  • init/do_mounts_rd.c:215:13: warning: Using plain integer as NULL pointer
    init/do_mounts_md.c:136:45: warning: Using plain integer as NULL pointer

    Signed-off-by: Harvey Harrison
    Signed-off-by: Linus Torvalds

    Harvey Harrison
     
  • Fix 18 errors and several warnings given by checkpatch.pl:

    - use of C99 // comments;

    - trailing whitespace;

    - 'switch' and 'case' not at the same indentation level;

    - no space before the open parenthesis of the 'if' and 'switch' statements;

    - space between function name and open parenthesis (though I have introduced
    such warnins in some places since the code looks prettier with the spaces);

    - including instead of ;

    - line over 80 characters.

    In addition to these changes, also do the following:

    - make the arrays in sil_set_pio_mode() 'static', and make the arrays in
    sil_set_dma_mode() 'static const';

    - change the string of the 'if' statements into the 'switch' statement in
    sil_pata_udma_filter();

    - drop the needless '==' operators from the 'if' statements where a condition
    is a mere bit test;

    - remove needless initializer for the 'tmp' variable in init_chipset_siimage();

    - beautify groups of the variable initializers and assignment operators;

    - add new line after variable definitions;

    - remove new line between the comment and the statements it refers to;

    - remove needless curly braces and parentheses;

    - fix typos, capitalize acronyms, etc. in the comments...

    Signed-off-by: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Sergei Shtylyov
     
  • [bart: fix handling of bio_sectors(failed_command->bio) == 0]

    Signed-off-by: Roel Kluin
    Cc: Borislav Petkov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Roel Kluin
     
  • valid is unsigned and cannot be below 0.

    Signed-off-by: Roel Kluin
    Cc: Borislav Petkov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Roel Kluin
     
  • Signed-off-by: Bartlomiej Zolnierkiewicz

    Alexander Smal
     
  • Based on ata_piix patch by Dan McGee.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • It's plain wrong for PCMCIA to select HAVE_IDE that implies e.g. the
    availability of an asm/ide.h

    It turns out this was done for ARM, and we can simply always select
    HAVE_IDE on ARM instead of manually tracking which platforms might
    possible have an IDE controller directly or indirectly.

    Signed-off-by: Adrian Bunk
    Cc: Russell King
    Cc: Sam Ravnborg
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Adrian Bunk
     
  • ETRAX_IDE was marked as broken last year with the comment
    "it doesn't even compile currently".

    Remove it since it won't get fixed in the near future.

    On Mon, Apr 14, 2008 at 02:50:19PM +0200, Mikael Starvik wrote:
    > You can remove it for now and we will resubmit a new if/when we get around
    > to fix it.

    [bart: ported it over IDE tree]

    Signed-off-by: Adrian Bunk
    Cc: Mikael Starvik
    Cc: Jesper Nilsson
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Adrian Bunk
     
  • * Use 'hwif->dma_base + {4,8}' instead of hwif->dma_prdtable in
    {ide,scc}_dma_setup().

    * Remove no longer needed ->dma_prdtable field from ide_hwif_t.

    While at it:

    * Use ATA_DMA_TABLE_OFS define.

    Acked-by: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * Use 'hwif->dma_base + {1,3}' instead of hwif->dma_vendor{1,3} in
    pdc202xx_new host driver.

    * Remove no longer needed ->dma_vendor{1,3} fields from ide_hwif_t.

    Acked-by: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • Add ->dma_host_set and ->dma_start methods (+ __scc_dma_end() helper)
    so scc_ide_{in,out}b() can be used directly.

    There should be no functional changes caused by this patch.

    Acked-by: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * Skip "VLB sync" in ata_{in,out}put_data() if host uses MMIO.

    * Use I/O ops directly in ata_vlb_sync() an drop no longer needed
    'ide_drive_t *drive' argument.

    Acked-by: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * Add ide_pad_transfer() helper (which uses ->{in,out}put_data methods
    internally so the transfer is also padded to drive+host requirements)
    and use it instead of ide_atapi_{write_zeros,discard_data}().

    * Remove no longer needed ide_atapi_{write_zeros,discard_data}().

    Cc: Borislav Petkov
    Acked-by: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * Remove no longer used ->INW and ->OUTW methods.

    While at it:

    * scc_pata.c: scc_ide_{out,in}w() is called only in scc_tf_{load,read}()
    so inline it there.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • There should be no functional changes caused by this patch.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • Add ->tf_read method so out{b,w}(), in{b,w}() and superio_ide_inb()
    can be used directly.

    There should be no functional changes caused by this patch.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • Add ->tf_{load,read} methods so scc_ide_{outb,outw,inb,inw}()
    can be used directly.

    There should be no functional changes caused by this patch.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • Add ->tf_{load,read} methods so outb()/inb() and mm_outw()/mm_inw()
    can be used directly.

    There should be no functional changes caused by this patch.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • Add ->tf_{load,read} methods so cris_ide_{outb,outw,inb,inw}()
    can be used directly.

    There should be no functional changes caused by this patch.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * Add ->tf_load and ->tf_read methods to ide_hwif_t and set the default
    methods in default_hwif_transport().

    * Use ->tf_{load,read} instead o calling ide_tf_{load,read}() directly.

    * Make ide_tf_{load,read}() static.

    There should be no functional changes caused by this patch.

    Acked-by: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • Factor out debugging code from ide_tf_load() to ide_tf_dump() helper
    and update ide_tf_load() users accordingly.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz