1. 26 Jan, 2008 13 commits
  2. 25 Jan, 2008 5 commits
    • Kay Sievers's avatar
      Driver core: change sysdev classes to use dynamic kobject names · af5ca3f4
      Kay Sievers authored
      All kobjects require a dynamically allocated name now. We no longer
      need to keep track if the name is statically assigned, we can just
      unconditionally free() all kobject names on cleanup.
      Signed-off-by: default avatarKay Sievers <kay.sievers@vrfy.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      af5ca3f4
    • Greg Kroah-Hartman's avatar
      firmware: change firmware_kset to firmware_kobj · f62ed9e3
      Greg Kroah-Hartman authored
      There is no firmware "subsystem" it's just a directory in /sys that
      other portions of the kernel want to hook into.  So make it a kobject
      not a kset to help alivate anyone who tries to do some odd kset-like
      things with this.
      
      Cc: Kay Sievers <kay.sievers@vrfy.org>
      Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      f62ed9e3
    • Greg Kroah-Hartman's avatar
      kset: convert s390 ipl.c to use kset_create · d91885be
      Greg Kroah-Hartman authored
      Dynamically create the kset instead of declaring it statically.
      This makes the kobject attributes now work properly that I broke in the
      previous patch.
      
      Cc: Kay Sievers <kay.sievers@vrfy.org>
      Cc: Michael Holzheu <holzheu@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Volker Sameske <sameske@de.ibm.com>
      Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      d91885be
    • Greg Kroah-Hartman's avatar
      kobject: convert s390 ipl.c to kobj_attr interface · 9b949165
      Greg Kroah-Hartman authored
      This makes the code a bit simpler and and gets us one step closer to
      deleting the deprecated subsys_attr code.
      
      NOTE, this needs the next patch in the series in order to work properly.
      This will build, but the sysfs files will not properly operate.
      
      Thanks to Cornelia for the build fix on this patch.
      
      Cc: Kay Sievers <kay.sievers@vrfy.org>
      Cc: Michael Holzheu <holzheu@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Volker Sameske <sameske@de.ibm.com>
      Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      9b949165
    • Greg Kroah-Hartman's avatar
      kobject: remove struct kobj_type from struct kset · 3514faca
      Greg Kroah-Hartman authored
      We don't need a "default" ktype for a kset.  We should set this
      explicitly every time for each kset.  This change is needed so that we
      can make ksets dynamic, and cleans up one of the odd, undocumented
      assumption that the kset/kobject/ktype model has.
      
      This patch is based on a lot of help from Kay Sievers.
      
      Nasty bug in the block code was found by Dave Young
      <hidave.darkstar@gmail.com>
      
      Cc: Kay Sievers <kay.sievers@vrfy.org>
      Cc: Dave Young <hidave.darkstar@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      3514faca
  3. 04 Dec, 2007 2 commits
  4. 20 Nov, 2007 6 commits
  5. 09 Nov, 2007 1 commit
    • Paul Mackerras's avatar
      sched: restore deterministic CPU accounting on powerpc · fa13a5a1
      Paul Mackerras authored
      Since powerpc started using CONFIG_GENERIC_CLOCKEVENTS, the
      deterministic CPU accounting (CONFIG_VIRT_CPU_ACCOUNTING) has been
      broken on powerpc, because we end up counting user time twice: once in
      timer_interrupt() and once in update_process_times().
      
      This fixes the problem by pulling the code in update_process_times
      that updates utime and stime into a separate function called
      account_process_tick.  If CONFIG_VIRT_CPU_ACCOUNTING is not defined,
      there is a version of account_process_tick in kernel/timer.c that
      simply accounts a whole tick to either utime or stime as before.  If
      CONFIG_VIRT_CPU_ACCOUNTING is defined, then arch code gets to
      implement account_process_tick.
      
      This also lets us simplify the s390 code a bit; it means that the s390
      timer interrupt can now call update_process_times even when
      CONFIG_VIRT_CPU_ACCOUNTING is turned on, and can just implement a
      suitable account_process_tick().
      
      account_process_tick() now takes the task_struct * as an argument.
      Tested both with and without CONFIG_VIRT_CPU_ACCOUNTING.
      Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      fa13a5a1
  6. 05 Nov, 2007 4 commits
  7. 22 Oct, 2007 4 commits
    • Martin Schwidefsky's avatar
    • Martin Schwidefsky's avatar
      [S390] tlb flush fix. · ba8a9229
      Martin Schwidefsky authored
      The current tlb flushing code for page table entries violates the
      s390 architecture in a small detail. The relevant section from the
      principles of operation (SA22-7832-02 page 3-47):
      
         "A valid table entry must not be changed while it is attached
         to any CPU and may be used for translation by that CPU except to
         (1) invalidate the entry by using INVALIDATE PAGE TABLE ENTRY or
         INVALIDATE DAT TABLE ENTRY, (2) alter bits 56-63 of a page-table
         entry, or (3) make a change by means of a COMPARE AND SWAP AND
         PURGE instruction that purges the TLB."
      
      That means if one thread of a multithreaded applciation uses a vma
      while another thread does an unmap on it, the page table entries of
      that vma needs to get removed with IPTE, IDTE or CSP. In some strange
      and rare situations a cpu could check-stop (die) because a entry has
      been pushed out of the TLB that is still needed to complete a
      (milli-coded) instruction. I've never seen it happen with the current
      code on any of the supported machines, so right now this is a
      theoretical problem. But I want to fix it nevertheless, to avoid
      headaches in the futures.
      
      To get this implemented correctly without changing common code the
      primitives ptep_get_and_clear, ptep_get_and_clear_full and
      ptep_set_wrprotect need to use the IPTE instruction to invalidate the
      pte before the new pte value gets stored. If IPTE is always used for
      the three primitives three important operations will have a performace
      hit: fork, mprotect and exit_mmap. Time for some workarounds:
      
      * 1: ptep_get_and_clear_full is used in unmap_vmas to remove page
      tables entries in a batched tlb gather operation. If the mmu_gather
      context passed to unmap_vmas has been started with full_mm_flush==1
      or if only one cpu is online or if the only user of a mm_struct is the
      current process then the fullmm indication in the mmu_gather context is
      set to one. All TLBs for mm_struct are flushed by the tlb_gather_mmu
      call. No new TLBs can be created while the unmap is in progress. In
      this case ptep_get_and_clear_full clears the ptes with a simple store.
      
      * 2: ptep_get_and_clear is used in change_protection to clear the
      ptes from the page tables before they are reentered with the new
      access flags. At the end of the update flush_tlb_range clears the
      remaining TLBs. In general the ptep_get_and_clear has to issue IPTE
      for each pte and flush_tlb_range is a nop. But if there is only one
      user of the mm_struct then ptep_get_and_clear uses simple stores
      to do the update and flush_tlb_range will flush the TLBs.
      
      * 3: Similar to 2, ptep_set_wrprotect is used in copy_page_range
      for a fork to make all ptes of a cow mapping read-only. At the end of
      of copy_page_range dup_mmap will flush the TLBs with a call to
      flush_tlb_mm.  Check for mm->mm_users and if there is only one user
      avoid using IPTE in ptep_set_wrprotect and let flush_tlb_mm clear the
      TLBs.
      
      Overall for single threaded programs the tlb flush code now performs
      better, for multi threaded programs it is slightly worse. In particular
      exit_mmap() now does a single IDTE for the mm and then just frees every
      page cache reference and every page table page directly without a delay
      over the mmu_gather structure.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      ba8a9229
    • Michael Holzheu's avatar
      [S390] kernel: Fix dump on panic for DASDs under LPAR. · e3d3683d
      Michael Holzheu authored
      Currently the ccw method is used to ipl the DASD dump record under LPAR.
      This mechanism is not reliable, which can cause dump failures. This fix
      now uses the diag 308 ipl method for all machines, which have diag308
      subcode 5 and 4 support.
      Signed-off-by: default avatarMichael Holzheu <holzheu@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      e3d3683d
    • Heiko Carstens's avatar
      [S390] Add per-cpu idle time / idle count sysfs attributes. · fae8b22d
      Heiko Carstens authored
      Add two new sysfs entries per cpu: idle_count and idle_time.
      idle_count contains the number of times a cpu went into idle state.
      idle_time contains the time a cpu spent in idle state in microseconds.
      This can be used e.g. by powertop to tell how often idle state is
      entered and left.
      
      # cat /sys/devices/system/cpu/cpu0/idle_count
      504
      # cat /sys/devices/system/cpu/cpu0/idle_time
      469734037 us
      
      Cc: Arjan van de Ven <arjan@infradead.org>
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      fae8b22d
  8. 19 Oct, 2007 1 commit
  9. 17 Oct, 2007 1 commit
  10. 16 Oct, 2007 2 commits
  11. 12 Oct, 2007 1 commit