1. 09 6月, 2009 1 次提交
  2. 09 5月, 2009 1 次提交
  3. 27 4月, 2009 1 次提交
    • J
      dma-debug: remove broken dma memory leak detection for 2.6.30 · 314eeac9
      Joerg Roedel 提交于
      The feature needs some more work because the notfier which is used to
      check for pending allocations is called before the device drivers
      ->remove() function. Therefore this feature reports false positives.
      
      A real fix for this issue is to introduce a new notifier event which sent
      _after_ the driver has deinitialized itself. That will done for the next
      kernel version.
      
      [ Impact: reduce the scope of CONFIG_DMA_API_DEBUG=y checks ]
      Signed-off-by: NJoerg Roedel <joerg.roedel@amd.com>
      Cc: iommu@lists.linux-foundation.org
      LKML-Reference: <1240576557-22442-1-git-send-email-joerg.roedel@amd.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      314eeac9
  4. 25 4月, 2009 1 次提交
  5. 23 4月, 2009 1 次提交
  6. 22 4月, 2009 1 次提交
  7. 20 4月, 2009 1 次提交
    • K
      driver: dont update dev_name via device_add path · 8a577ffc
      Kay Sievers 提交于
      notice one system /proc/iomem some entries missed the name for pci_devices
      
      it turns that dev->dev.kobj name is changed after device_add.
      
      for pci code: via acpi_pci_root_driver.ops.add (aka acpi_pci_root_add)
      ==> pci_acpi_scan_root is used to scan pci bus/device, and at the same
      time we read the resource for pci_dev in the pci_read_bases, we have
      res->name = pci_name(pci_dev); pci_name is calling dev_name.
      
      later via acpi_pci_root_driver.ops.start (aka acpi_pci_root_start) ==>
      pci_bus_add_device to add all pci_dev in kobj tree.  pci_bus_add_device
      will call device_add.
      
      actually in device_add
      
              /* first, register with generic layer. */
              error = kobject_add(&dev->kobj, dev->kobj.parent, "%s", dev_name(dev));
              if (error)
                      goto Error;
      
      will get one new name for that kobj, old name is freed.
      
      [Impact: fix corrupted names in /proc/iomem ]
      Signed-off-by: NYinghai Lu <yinghai@kernel.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      8a577ffc
  8. 17 4月, 2009 2 次提交
  9. 12 4月, 2009 1 次提交
    • F
      lockdep: warn about lockdep disabling after kernel taint · 9eeba613
      Frederic Weisbecker 提交于
      Impact: provide useful missing info for developers
      
      Kernel taint can occur in several situations such as warnings,
      load of prorietary or staging modules, bad page, etc...
      
      But when such taint happens, a developer might still be working on
      the kernel, expecting that lockdep is still enabled. But a taint
      disables lockdep without ever warning about it.
      Such a kernel behaviour doesn't really help for kernel development.
      
      This patch adds this missing warning.
      
      Since the taint is done most of the time after the main message that
      explain the real source issue, it seems safe to warn about it inside
      add_taint() so that it appears at last, without hurting the main
      information.
      
      v2: Use a generic helper to disable lockdep instead of an
          open coded xchg().
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <1239412638-6739-1-git-send-email-fweisbec@gmail.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      9eeba613
  10. 08 4月, 2009 1 次提交
  11. 07 4月, 2009 2 次提交
  12. 03 4月, 2009 5 次提交
    • P
      kmemtrace, kbuild: fix slab.h dependency problem in lib/decompress_unlzma.c · e65a1b7c
      Pekka Enberg 提交于
      Impact: cleanup
      
      lib/decompress_unlzma.c depends on slab.h without including it:
      
          CC      lib/decompress_unlzma.o
        lib/decompress_unlzma.c: In function ‘rc_free’:
        lib/decompress_unlzma.c:122: error: implicit declaration of function ‘kfree’
        lib/decompress_unlzma.c: In function ‘unlzma’:
        lib/decompress_unlzma.c:551: error: implicit declaration of function ‘kmalloc’
        lib/decompress_unlzma.c:551: warning: assignment makes pointer from integer without a cast
        make[1]: *** [lib/decompress_unlzma.o] Error 1
        make: *** [lib/] Error 2
      
      It gets included implicitly currently - but this will not be the
      case with upcoming kmemtrace changes.
      Signed-off-by: NPekka Enberg <penberg@cs.helsinki.fi>
      Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
      LKML-Reference: <1237886521.25315.58.camel@penberg-laptop>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e65a1b7c
    • P
      kmemtrace, kbuild: fix slab.h dependency problem in lib/decompress_bunzip2.c · ba56617e
      Pekka Enberg 提交于
      Impact: cleanup
      
      lib/decompress_bunzip2.c depends on slab.h without including it:
      
          CC      lib/decompress_bunzip2.o
        lib/decompress_bunzip2.c: In function ‘start_bunzip’:
        lib/decompress_bunzip2.c:636: error: implicit declaration of function ‘kmalloc’
        lib/decompress_bunzip2.c:636: warning: assignment makes pointer from integer without a cast
        lib/decompress_bunzip2.c: In function ‘bunzip2’:
        lib/decompress_bunzip2.c:682: warning: assignment makes pointer from integer without a cast
        lib/decompress_bunzip2.c:693: warning: assignment makes pointer from integer without a cast
        lib/decompress_bunzip2.c:726: error: implicit declaration of function ‘kfree’
        make[1]: *** [lib/decompress_bunzip2.o] Error 1
        make: *** [lib/] Error 2
      
      It gets included implicitly currently - but this will not be the
      case with upcoming kmemtrace changes.
      Signed-off-by: NPekka Enberg <penberg@cs.helsinki.fi>
      Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
      LKML-Reference: <1237886032.25315.48.camel@penberg-laptop>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      ba56617e
    • P
      kmemtrace, kbuild: fix slab.h dependency problem in lib/decompress_inflate.c · 079effb6
      Pekka Enberg 提交于
      Impact: fix build
      
      lib/decompress_inflate.c depends on slab.h without including it:
      
          CC      lib/decompress_inflate.o
        lib/decompress_inflate.c: In function ‘gunzip’:
        lib/decompress_inflate.c:45: error: implicit declaration of function ‘kmalloc’
        lib/decompress_inflate.c:45: warning: assignment makes pointer from integer without a cast
        lib/decompress_inflate.c:57: warning: assignment makes pointer from integer without a cast
        lib/decompress_inflate.c:65: warning: assignment makes pointer from integer without a cast
        lib/decompress_inflate.c:71: warning: assignment makes pointer from integer without a cast
        lib/decompress_inflate.c:154: error: implicit declaration of function ‘kfree’
        make[1]: *** [lib/decompress_inflate.o] Error 1
        make: *** [lib/] Error 2
      
      It gets included implicitly currently - but this will not be the
      case with upcoming kmemtrace changes.
      Signed-off-by: NPekka Enberg <penberg@cs.helsinki.fi>
      Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
      LKML-Reference: <1237886030.25315.47.camel@penberg-laptop>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      079effb6
    • J
      cpumask: fix slab corruption caused by alloc_cpumask_var_node() · 4f032ac4
      Jack Steiner 提交于
      Fix slab corruption caused by alloc_cpumask_var_node() overwriting the
      tail end of an off-stack cpumask.
      
      The function zeros out cpumask bits beyond the last possible cpu.  The
      starting point for zeroing should be the beginning of the mask offset by a
      byte count derived from the number of possible cpus.  The offset was
      calculated in bits instead of bytes.  This resulted in overwriting the end
      of the cpumask.
      Signed-off-by: NJack Steiner <steiner@sgi.com>
      Acked-by: Mike Travis <travis.sgi.com>
      Acked-by: NIngo Molnar <mingo@elte.hu>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      Cc: <stable@kernel.org>		[2.6.29.x]
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      4f032ac4
    • K
      cgroup: CSS ID support · 38460b48
      KAMEZAWA Hiroyuki 提交于
      Patch for Per-CSS(Cgroup Subsys State) ID and private hierarchy code.
      
      This patch attaches unique ID to each css and provides following.
      
       - css_lookup(subsys, id)
         returns pointer to struct cgroup_subysys_state of id.
       - css_get_next(subsys, id, rootid, depth, foundid)
         returns the next css under "root" by scanning
      
      When cgroup_subsys->use_id is set, an id for css is maintained.
      
      The cgroup framework only parepares
      	- css_id of root css for subsys
      	- id is automatically attached at creation of css.
      	- id is *not* freed automatically. Because the cgroup framework
      	  don't know lifetime of cgroup_subsys_state.
      	  free_css_id() function is provided. This must be called by subsys.
      
      There are several reasons to develop this.
      	- Saving space .... For example, memcg's swap_cgroup is array of
      	  pointers to cgroup. But it is not necessary to be very fast.
      	  By replacing pointers(8bytes per ent) to ID (2byes per ent), we can
      	  reduce much amount of memory usage.
      
      	- Scanning without lock.
      	  CSS_ID provides "scan id under this ROOT" function. By this, scanning
      	  css under root can be written without locks.
      	  ex)
      	  do {
      		rcu_read_lock();
      		next = cgroup_get_next(subsys, id, root, &found);
      		/* check sanity of next here */
      		css_tryget();
      		rcu_read_unlock();
      		id = found + 1
      	 } while(...)
      
      Characteristics:
      	- Each css has unique ID under subsys.
      	- Lifetime of ID is controlled by subsys.
      	- css ID contains "ID" and "Depth in hierarchy" and stack of hierarchy
      	- Allowed ID is 1-65535, ID 0 is UNUSED ID.
      
      Design Choices:
      	- scan-by-ID v.s. scan-by-tree-walk.
      	  As /proc's pid scan does, scan-by-ID is robust when scanning is done
      	  by following kind of routine.
      	  scan -> rest a while(release a lock) -> conitunue from interrupted
      	  memcg's hierarchical reclaim does this.
      
      	- When subsys->use_id is set, # of css in the system is limited to
      	  65535.
      
      [bharata@linux.vnet.ibm.com: remove rcu_read_lock() from css_get_next()]
      Signed-off-by: NKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Acked-by: NPaul Menage <menage@google.com>
      Cc: Li Zefan <lizf@cn.fujitsu.com>
      Cc: Balbir Singh <balbir@in.ibm.com>
      Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
      Signed-off-by: NBharata B Rao <bharata@linux.vnet.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      38460b48
  13. 01 4月, 2009 2 次提交
  14. 31 3月, 2009 1 次提交
    • R
      dma-debug: fix printk formats (i386) · 93c36ed8
      Randy Dunlap 提交于
      Fix printk format warnings in dma-debug:
      
        lib/dma-debug.c:645: warning: format '%016llx' expects type 'long long unsigned int', but argument 6 has type 'dma_addr_t'
        lib/dma-debug.c:662: warning: format '%016llx' expects type 'long long unsigned int', but argument 6 has type 'dma_addr_t'
        lib/dma-debug.c:676: warning: format '%016llx' expects type 'long long unsigned int', but argument 6 has type 'dma_addr_t'
        lib/dma-debug.c:686: warning: format '%016llx' expects type 'long long unsigned int', but argument 6 has type 'dma_addr_t'
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      93c36ed8
  15. 25 3月, 2009 6 次提交
    • G
      Dynamic debug: allow simple quoting of words · 9898abb3
      Greg Banks 提交于
      Allow simple quoting of words in the dynamic debug control language.
      
      This allows more natural specification when using the control language
      to match against printk formats, e.g
      
      #echo -n 'format "Setting node for non-present cpu" +p' >
      	/mnt/debugfs/dynamic_debug/control
      
      instead of
      
      #echo -n 'format Setting\040node\040for\040non-present\040cpu +p' >
      	/mnt/debugfs/dynamic_debug/control
      
      Adjust the dynamic debug documention to describe that and provide a
      new example.  Adjust the existing examples in the documentation to
      reflect the current whitespace escaping behaviour when reading the
      control file.  Fix some minor documentation trailing whitespace.
      Signed-off-by: NGreg Banks <gnb@melbourne.sgi.com>
      Acked-by: NJason Baron <jbaron@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      9898abb3
    • J
      dynamic debug: update docs · 86151fdf
      Jason Baron 提交于
      updates the documentation for 'dynamic debug' feature.
      Signed-off-by: NGreg Banks <gnb@sgi.com>
      Signed-off-by: NJason Baron <jbaron@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      86151fdf
    • J
      dynamic debug: combine dprintk and dynamic printk · e9d376f0
      Jason Baron 提交于
      This patch combines Greg Bank's dprintk() work with the existing dynamic
      printk patchset, we are now calling it 'dynamic debug'.
      
      The new feature of this patchset is a richer /debugfs control file interface,
      (an example output from my system is at the bottom), which allows fined grained
      control over the the debug output. The output can be controlled by function,
      file, module, format string, and line number.
      
      for example, enabled all debug messages in module 'nf_conntrack':
      
      echo -n 'module nf_conntrack +p' > /mnt/debugfs/dynamic_debug/control
      
      to disable them:
      
      echo -n 'module nf_conntrack -p' > /mnt/debugfs/dynamic_debug/control
      
      A further explanation can be found in the documentation patch.
      Signed-off-by: NGreg Banks <gnb@sgi.com>
      Signed-off-by: NJason Baron <jbaron@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      e9d376f0
    • A
      kobject: don't block for each kobject_uevent · f520360d
      Arjan van de Ven 提交于
      Right now, the kobject_uevent code blocks for each uevent that's being
      generated, due to using (for hystoric reasons) UHM_WAIT_EXEC as flag to
      call_usermode_helper().  Specifically, the effect is that each uevent
      that is being sent causes the code to wake up keventd, then block until
      keventd has processed the work. Needless to say, this happens many times
      during the system boot.
      
      This patches changes that to UHN_NO_WAIT (brilliant name for a constant
      btw) so that we only schedule the work to fire the uevent message, but
      do not wait for keventd to process the work.
      
      This removes one of the bottlenecks during boot; each one of them is
      only a small effect, but the sum of them does add up.
      
      [Note, distros that need this are broken, they should be setting
      CONFIG_UEVENT_HELPER_PATH to "", that way this code path will never be
      excuted at all -- gregkh]
      Signed-off-by: NArjan van de Ven <arjan@linux.intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      f520360d
    • M
      Driver core: implement uevent suppress in kobject · f67f129e
      Ming Lei 提交于
      This patch implements uevent suppress in kobject and removes it
      from struct device, based on the following ideas:
      
      1,Uevent sending should be one attribute of kobject, so suppressing it
      in kobject layer is more natural than in device layer. By this way,
      we can do it for other objects embedded with kobject.
      
      2,It may save several bytes for each instance of struct device.(On my
      omap3(32bit ARM) based box, can save 8bytes per device object)
      
      This patch also introduces dev_set|get_uevent_suppress() helpers to
      set and query uevent_suppress attribute in case to help kobject
      as private part of struct device in future.
      
      [This version is against the latest driver-core patch set of Greg,please
      ignore the last version.]
      Signed-off-by: NMing Lei <tom.leiming@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      f67f129e
    • K
      driver core: get rid of struct device's bus_id string array · 1fa5ae85
      Kay Sievers 提交于
      Now that all users of bus_id is gone, we can remove it from struct
      device.
      Signed-off-by: NKay Sievers <kay.sievers@vrfy.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      1fa5ae85
  16. 24 3月, 2009 1 次提交
  17. 19 3月, 2009 1 次提交
  18. 17 3月, 2009 6 次提交
    • J
      dma-debug: add a check dma memory leaks · 41531c8f
      Joerg Roedel 提交于
      Impact: allow architectures to monitor busses for dma mem leakage
      
      This patch adds checking code to detect if a device has pending DMA
      operations when it is about to be unbound from its device driver.
      Signed-off-by: NJoerg Roedel <joerg.roedel@amd.com>
      41531c8f
    • J
      dma-debug: add checks for kernel text and rodata · 2e34bde1
      Joerg Roedel 提交于
      Impact: get notified if a device dma maps illegal areas
      
      This patch adds a check to print a warning message when a device driver
      tries to map a memory area from the kernel text segment or rodata.
      Signed-off-by: NJoerg Roedel <joerg.roedel@amd.com>
      2e34bde1
    • D
      dma-debug: print stacktrace of mapping path on unmap error · 6c132d1b
      David Woodhouse 提交于
      Impact: saves stacktrace of a dma mapping and prints it if there is an  error
      Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
      Signed-off-by: NJoerg Roedel <joerg.roedel@amd.com>
      6c132d1b
    • D
      dma-debug: add function to dump dma mappings · ac26c18b
      David Woodhouse 提交于
      This adds a function to dump the DMA mappings that the debugging code is
      aware of -- either for a single device, or for _all_ devices.
      
      This can be useful for debugging -- sticking a call to it in the DMA
      page fault handler, for example, to see if the faulting address _should_
      be mapped or not, and hence work out whether it's IOMMU bugs we're
      seeing, or driver bugs.
      Signed-off-by: NDavid Woodhouse <David.Woodhouse@intel.com>
      ac26c18b
    • T
      debugobjects: delay free of internal objects · 337fff8b
      Thomas Gleixner 提交于
      Impact: avoid recursive kfree calls, less slab activity on heavy load
      
      debugobjects checks on kfree whether tracked objects are freed. When a
      tracked object is freed debugobjects frees the internal reference
      object as well. The debug object slab cache is marked to not recurse
      into debugobjects when a slab objects is freed, but the recursive call
      can be problematic versus locking in the memory allocator.
      
      Defer the freeing of debug slab objects via schedule_work. The reasons
      not to use RCU are:
      
      1) rcu makes the data structure larger
      2) there is no real need for rcu as nothing references the obj after
         we freed it
      3) under heavy load it is easier to reuse the to be freed objects instead
         of allocating new objects from the slab. This lowered the slab activity
         significantly in a heavy load networking test where lots of timers are
         created/destroyed. The workqueue based delayed free allows us just to
         put the to be freed objects back into the object pool and reuse them
         right away.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      LKML-Reference: <200903162049.58058.nickpiggin@yahoo.com.au>
      337fff8b
    • T
      debugobjects: replace static objects when slab cache becomes available · 1be1cb7b
      Thomas Gleixner 提交于
      Impact: refactor/consolidate object management, prepare for delayed free
      
      debugobjects allocates static reference objects to track objects which
      are initialized or activated before the slab cache becomes
      available. These static reference objects have to be handled
      seperately in free_object(). The handling of these objects is in the
      way of implementing a delayed free functionality. The delayed free is
      required to avoid callbacks into the mm code from
      debug_check_no_obj_freed().
      
      Replace the static object references with dynamic ones after the slab
      cache has been initialized. The static objects are now marked initdata.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      LKML-Reference: <200903162049.58058.nickpiggin@yahoo.com.au>
      1be1cb7b
  19. 14 3月, 2009 2 次提交
  20. 13 3月, 2009 2 次提交
  21. 11 3月, 2009 1 次提交