1. 11 Nov, 2010 1 commit
    • Eric Dumazet's avatar
      fixdep: use hash table instead of a single array · 8af27e1d
      Eric Dumazet authored
      I noticed fixdep uses ~2% of cpu time in kernel build, in function
      use_config()
      
      fixdep spends a lot of cpu cycles in linear searches in its internal
      string array. With about 400 stored strings per dep file, this begins to
      be noticeable.
      
      Convert fixdep to use a hash table.
      
      kbuild results on my x86_64 allmodconfig
      
      Before patch :
      
      real	10m30.414s
      user	61m51.456s
      sys	8m28.200s
      
      real	10m12.334s
      user	61m50.236s
      sys	8m30.448s
      
      real	10m42.947s
      user	61m50.028s
      sys	8m32.380s
      
      After:
      
      real	10m8.180s
      user	61m22.506s
      sys	8m32.384s
      
      real	10m35.039s
      user	61m21.654s
      sys	8m32.212s
      
      real	10m14.487s
      user	61m23.498s
      sys	8m32.312s
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      8af27e1d
  2. 28 Oct, 2010 1 commit
  3. 29 Sep, 2010 3 commits
    • Hendrik Brueckner's avatar
      initramfs: fix initramfs size calculation · ffe8018c
      Hendrik Brueckner authored
      The size of a built-in initramfs is calculated in init/initramfs.c by
      "__initramfs_end - __initramfs_start".  Those symbols are defined in the
      linker script include/asm-generic/vmlinux.lds.h:
      
      #define INIT_RAM_FS                                                     \
              . = ALIGN(PAGE_SIZE);                                           \
              VMLINUX_SYMBOL(__initramfs_start) = .;                          \
              *(.init.ramfs)                                                  \
              VMLINUX_SYMBOL(__initramfs_end) = .;
      
      If the initramfs file has an odd number of bytes, the "__initramfs_end"
      symbol points to an odd address, for example, the symbols in the
      System.map might look like:
      
          0000000000572000 T __initramfs_start
          00000000005bcd05 T __initramfs_end	  <-- odd address
      
      At least on s390 this causes a problem:
      
      Certain s390 instructions, especially instructions for loading addresses
      (larl) or branch addresses must be on even addresses.  The compiler loads
      the symbol addresses with the "larl" instruction.  This instruction sets
      the last bit to 0 and, therefore, for odd size files, the calculated size
      is one byte less than it should be:
      
          0000000000540a9c <populate_rootfs>:
            540a9c:     eb cf f0 78 00 24       stmg    %r12,%r15,120(%r15),
            540aa2:     c0 10 00 01 8a af       larl    %r1,572000 <__initramfs_start>
            540aa8:     c0 c0 00 03 e1 2e       larl    %r12,5bcd04 <initramfs_end>
                                                        (Instead of  5bcd05)
            ...
            540abe:     1b c1                   sr      %r12,%r1
      
      To fix the problem, this patch introduces the global variable
      __initramfs_size, which is calculated in the "usr/initramfs_data.S" file.
      The populate_rootfs() function can then use the start marker of the
      .init.ramfs section and the value of __initramfs_size for loading the
      initramfs.  Because the start marker and size is sufficient, the
      __initramfs_end symbol is no longer needed and is removed.
      Signed-off-by: default avatarMichael Holzheu <holzheu@linux.vnet.ibm.com>
      Signed-off-by: default avatarHendrik Brueckner <brueckner@linux.vnet.ibm.com>
      Reviewed-by: default avatarWANG Cong <xiyou.wangcong@gmail.com>
      Acked-by: default avatarMichal Marek <mmarek@suse.cz>
      Acked-by: default avatar"H. Peter Anvin" <hpa@zytor.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      ffe8018c
    • Hendrik Brueckner's avatar
      initramfs: generalize initramfs_data.xxx.S variants · 6ae64e42
      Hendrik Brueckner authored
      Remove initramfs_data.{lzo,lzma,gz,bz2}.S variants and use a common
      implementation in initramfs_data.S.  The common implementation expects the
      file name of the initramfs to be defined in INITRAMFS_IMAGE.
      
      Change the Makefile to set the INITRAMFS_IMAGE define symbol according
      to the selected compression method.
      Signed-off-by: default avatarHendrik Brueckner <brueckner@linux.vnet.ibm.com>
      Cc: WANG Cong <xiyou.wangcong@gmail.com>
      Acked-by: default avatarMichal Marek <mmarek@suse.cz>
      Acked-by: default avatar"H. Peter Anvin" <hpa@zytor.com>
      Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      6ae64e42
    • Jean Sacren's avatar
      scripts/kallsyms: Enable error messages while hush up unnecessary warnings · ef894870
      Jean Sacren authored
      As no error was handled, we wouldn't be able to know when an error does
      occur. The fix preserves error messages while it doesn't let unnecessary
      compiling warnings show up.
      Signed-off-by: default avatarJean Sacren <sakiwit@gmail.com>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      ef894870
  4. 13 Sep, 2010 1 commit
  5. 06 Sep, 2010 2 commits
  6. 03 Sep, 2010 1 commit
  7. 26 Aug, 2010 1 commit
  8. 12 Aug, 2010 1 commit
  9. 10 Aug, 2010 1 commit
  10. 04 Aug, 2010 1 commit
  11. 03 Aug, 2010 5 commits
    • Denys Vlasenko's avatar
      modpost: support objects with more than 64k sections · 1ce53adf
      Denys Vlasenko authored
      This patch makes modpost able to process object files with more than
      64k sections. Needed for huge kernel builds (allyesconfig, for example)
      with -ffunction-sections. 64k sections handling is covered, for example,
      by this document:
      
      "IA-64 gABI Proposal 74: Section Indexes"
      http://www.codesourcery.com/public/cxx-abi/abi/prop-74-sindex.htmlSigned-off-by: default avatarDenys Vlasenko <vda.linux@googlemail.com>
      Signed-off-by: default avatarAnders Kaseorg <andersk@mit.edu>
      Acked-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Andi Kleen <andi@firstfloor.org>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      1ce53adf
    • Uwe Kleine-König's avatar
      4696e295
    • Sam Ravnborg's avatar
      frv: clean up arch/frv/Makefile · c9575dc6
      Sam Ravnborg authored
      - removed a lot of unused variable assignmnets
      - removed unused bootstrap target
      - replaced ARCHMODFLAGS with proper KBUILD_{A,C}FLAGS_MODULE assignmnets
      
      The resuting Makefile has not been tested due to lack of toolchain,
      but these were all trivial changes.
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Cc: David Howells <dhowells@redhat.com>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      c9575dc6
    • Sam Ravnborg's avatar
      kbuild: allow assignment to {A,C}FLAGS_KERNEL on the command line · 80c00ba9
      Sam Ravnborg authored
      It is now possible to assign options to AS and CC
      on the command line - which is only used for built-in code.
      
      {A,C}FLAGS_KERNEL was used both in the top-level Makefile
      in the arch makefiles, thus users had no way to specify
      additional options to AS, CC without overriding
      the original value.
      
      Introduce a new set of variables KBUILD_{A,C}FLAGS_KERNEL
      that is used by arch specific files and free up
      {A,C}FLAGS_KERNEL so they can be assigned on
      the command line.
      
      All arch Makefiles that used the old variables has been updated.
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Hirokazu Takata <takata@linux-m32r.org>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      80c00ba9
    • Sam Ravnborg's avatar
      kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line · 6588169d
      Sam Ravnborg authored
      It is now possible to assign options to AS, CC and LD
      on the command line - which is only used when building modules.
      
      {A,C,LD}FLAGS_MODULE was all used both in the top-level Makefile
      in the arch makefiles, thus users had no way to specify
      additional options to AS, CC, LD when building modules
      without overriding the original value.
      
      Introduce a new set of variables KBUILD_{A,C,LD}FLAGS_MODULE
      that is used by arch specific files and free up
      {A,C,LD}FLAGS_MODULE so they can be assigned on
      the command line.
      
      All arch Makefiles that used the old variables has been updated.
      
      Note: Previously we had a MODFLAGS variable for both
      AS and CC. But in favour of consistency this was dropped.
      So in some cases arch Makefile has one assignmnet replaced by
      two assignmnets.
      
      Note2: MODFLAGS was not documented and is dropped
      without any notice. I do not expect much/any breakage
      from this.
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Cc: Denys Vlasenko <vda.linux@googlemail.com>
      Cc: Haavard Skinnemoen <hskinnemoen@atmel.com>
      Cc: Mike Frysinger <vapier@gentoo.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Chen Liqin <liqin.chen@sunplusct.com>
      Acked-by: Mike Frysinger <vapier@gentoo.org> [blackfin]
      Acked-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com> [avr32]
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      6588169d
  12. 01 Aug, 2010 2 commits
  13. 31 Jul, 2010 5 commits
  14. 30 Jul, 2010 8 commits
  15. 29 Jul, 2010 7 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 · a2dccdb2
      Linus Torvalds authored
      * 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6:
        [S390] etr: fix clock synchronization race
        [S390] Fix IRQ tracing in case of PER
      a2dccdb2
    • Linus Torvalds's avatar
    • Linus Torvalds's avatar
      Merge branch 'fix/hda' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 · e271e872
      Linus Torvalds authored
      * 'fix/hda' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
        ALSA: hda - Add a PC-beep workaround for ASUS P5-V
        ALSA: hda - Assume PC-beep as default for Realtek
        ALSA: hda - Don't register beep input device when no beep is available
        ALSA: hda - Fix pin-detection of Nvidia HDMI
      e271e872
    • David Howells's avatar
      CRED: Fix __task_cred()'s lockdep check and banner comment · 8f92054e
      David Howells authored
      Fix __task_cred()'s lockdep check by removing the following validation
      condition:
      
      	lockdep_tasklist_lock_is_held()
      
      as commit_creds() does not take the tasklist_lock, and nor do most of the
      functions that call it, so this check is pointless and it can prevent
      detection of the RCU lock not being held if the tasklist_lock is held.
      
      Instead, add the following validation condition:
      
      	task->exit_state >= 0
      
      to permit the access if the target task is dead and therefore unable to change
      its own credentials.
      
      Fix __task_cred()'s comment to:
      
       (1) discard the bit that says that the caller must prevent the target task
           from being deleted.  That shouldn't need saying.
      
       (2) Add a comment indicating the result of __task_cred() should not be passed
           directly to get_cred(), but rather than get_task_cred() should be used
           instead.
      
      Also put a note into the documentation to enforce this point there too.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8f92054e
    • David Howells's avatar
      CRED: Fix get_task_cred() and task_state() to not resurrect dead credentials · de09a977
      David Howells authored
      It's possible for get_task_cred() as it currently stands to 'corrupt' a set of
      credentials by incrementing their usage count after their replacement by the
      task being accessed.
      
      What happens is that get_task_cred() can race with commit_creds():
      
      	TASK_1			TASK_2			RCU_CLEANER
      	-->get_task_cred(TASK_2)
      	rcu_read_lock()
      	__cred = __task_cred(TASK_2)
      				-->commit_creds()
      				old_cred = TASK_2->real_cred
      				TASK_2->real_cred = ...
      				put_cred(old_cred)
      				  call_rcu(old_cred)
      		[__cred->usage == 0]
      	get_cred(__cred)
      		[__cred->usage == 1]
      	rcu_read_unlock()
      							-->put_cred_rcu()
      							[__cred->usage == 1]
      							panic()
      
      However, since a tasks credentials are generally not changed very often, we can
      reasonably make use of a loop involving reading the creds pointer and using
      atomic_inc_not_zero() to attempt to increment it if it hasn't already hit zero.
      
      If successful, we can safely return the credentials in the knowledge that, even
      if the task we're accessing has released them, they haven't gone to the RCU
      cleanup code.
      
      We then change task_state() in procfs to use get_task_cred() rather than
      calling get_cred() on the result of __task_cred(), as that suffers from the
      same problem.
      
      Without this change, a BUG_ON in __put_cred() or in put_cred_rcu() can be
      tripped when it is noticed that the usage count is not zero as it ought to be,
      for example:
      
      kernel BUG at kernel/cred.c:168!
      invalid opcode: 0000 [#1] SMP
      last sysfs file: /sys/kernel/mm/ksm/run
      CPU 0
      Pid: 2436, comm: master Not tainted 2.6.33.3-85.fc13.x86_64 #1 0HR330/OptiPlex
      745
      RIP: 0010:[<ffffffff81069881>]  [<ffffffff81069881>] __put_cred+0xc/0x45
      RSP: 0018:ffff88019e7e9eb8  EFLAGS: 00010202
      RAX: 0000000000000001 RBX: ffff880161514480 RCX: 00000000ffffffff
      RDX: 00000000ffffffff RSI: ffff880140c690c0 RDI: ffff880140c690c0
      RBP: ffff88019e7e9eb8 R08: 00000000000000d0 R09: 0000000000000000
      R10: 0000000000000001 R11: 0000000000000040 R12: ffff880140c690c0
      R13: ffff88019e77aea0 R14: 00007fff336b0a5c R15: 0000000000000001
      FS:  00007f12f50d97c0(0000) GS:ffff880007400000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f8f461bc000 CR3: 00000001b26ce000 CR4: 00000000000006f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process master (pid: 2436, threadinfo ffff88019e7e8000, task ffff88019e77aea0)
      Stack:
       ffff88019e7e9ec8 ffffffff810698cd ffff88019e7e9ef8 ffffffff81069b45
      <0> ffff880161514180 ffff880161514480 ffff880161514180 0000000000000000
      <0> ffff88019e7e9f28 ffffffff8106aace 0000000000000001 0000000000000246
      Call Trace:
       [<ffffffff810698cd>] put_cred+0x13/0x15
       [<ffffffff81069b45>] commit_creds+0x16b/0x175
       [<ffffffff8106aace>] set_current_groups+0x47/0x4e
       [<ffffffff8106ac89>] sys_setgroups+0xf6/0x105
       [<ffffffff81009b02>] system_call_fastpath+0x16/0x1b
      Code: 48 8d 71 ff e8 7e 4e 15 00 85 c0 78 0b 8b 75 ec 48 89 df e8 ef 4a 15 00
      48 83 c4 18 5b c9 c3 55 8b 07 8b 07 48 89 e5 85 c0 74 04 <0f> 0b eb fe 65 48 8b
      04 25 00 cc 00 00 48 3b b8 58 04 00 00 75
      RIP  [<ffffffff81069881>] __put_cred+0xc/0x45
       RSP <ffff88019e7e9eb8>
      ---[ end trace df391256a100ebdd ]---
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      de09a977
    • Wim Van Sebroeck's avatar
      watchdog: update MAINTAINERS entry · 230a5cef
      Wim Van Sebroeck authored
      Add Mailing-list and website to watchdog MAINTAINERS entry.
      Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
      230a5cef
    • Takashi Iwai's avatar
      ALSA: hda - Add a PC-beep workaround for ASUS P5-V · dc1eae25
      Takashi Iwai authored
      ASUS P5-V provides a SSID that unexpectedly matches with the value
      compilant with Realtek's specification.  Thus the driver interprets
      it badly, resulting in non-working PC beep.
      
      This patch adds a white-list for such a case; a white-list of known
      devices with working PC beep.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      dc1eae25