1. 18 Jun, 2013 3 commits
    • Li Zefan's avatar
      cgroup: fix umount vs cgroup_event_remove() race · 1c8158ee
      Li Zefan authored
       commit 5db9a4d9
       Author: Tejun Heo <tj@kernel.org>
       Date:   Sat Jul 7 16:08:18 2012 -0700
      
           cgroup: fix cgroup hierarchy umount race
      
      This commit fixed a race caused by the dput() in css_dput_fn(), but
      the dput() in cgroup_event_remove() can also lead to the same BUG().
      Signed-off-by: default avatarLi Zefan <lizefan@huawei.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: stable@vger.kernel.org
      1c8158ee
    • Li Zefan's avatar
      cgroup: fix umount vs cgroup_cfts_commit() race · 084457f2
      Li Zefan authored
      cgroup_cfts_commit() uses dget() to keep cgroup alive after cgroup_mutex
      is dropped, but dget() won't prevent cgroupfs from being umounted. When
      the race happens, vfs will see some dentries with non-zero refcnt while
      umount is in process.
      
      Keep running this:
        mount -t cgroup -o blkio xxx /cgroup
        umount /cgroup
      
      And this:
        modprobe cfq-iosched
        rmmod cfs-iosched
      
      After a while, the BUG() in shrink_dcache_for_umount_subtree() may
      be triggered:
      
        BUG: Dentry xxx{i=0,n=blkio.yyy} still in use (1) [umount of cgroup cgroup]
      Signed-off-by: default avatarLi Zefan <lizefan@huawei.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: stable@vger.kernel.org
      084457f2
    • Tejun Heo's avatar
      cgroup: disallow rename(2) if sane_behavior · 6db8e85c
      Tejun Heo authored
      cgroup's rename(2) isn't a proper migration implementation - it can't
      move the cgroup to a different parent in the hierarchy.  All it can do
      is swapping the name string for that cgroup.  This isn't useful and
      can mislead users to think that cgroup supports proper cgroup-level
      migration.  Disallow rename(2) if sane_behavior.
      
      v2: Fail with -EPERM instead of -EINVAL so that it matches the vfs
          return value when ->rename is not implemented as suggested by Li.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      6db8e85c
  2. 14 Jun, 2013 6 commits
    • Tejun Heo's avatar
      cgroup: update sane_behavior documentation · f63674fd
      Tejun Heo authored
      f12dc020 ("cgroup: mark "tasks" cgroup file as insane") and
      cc5943a7 ("cgroup: mark "notify_on_release" and "release_agent"
      cgroup files insane") forgot to update the changed behavior
      documentation in cgroup.h.  Update it.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      f63674fd
    • Tejun Heo's avatar
      cgroup: use percpu refcnt for cgroup_subsys_states · d3daf28d
      Tejun Heo authored
      A css (cgroup_subsys_state) is how each cgroup is represented to a
      controller.  As such, it can be used in hot paths across the various
      subsystems different controllers are associated with.
      
      One of the common operations is reference counting, which up until now
      has been implemented using a global atomic counter and can have
      significant adverse impact on scalability.  For example, css refcnt
      can be gotten and put multiple times by blkcg for each IO request.
      For highops configurations which try to do as much per-cpu as
      possible, the global frequent refcnting can be very expensive.
      
      In general, given the various and hugely diverse paths css's end up
      being used from, we need to make it cheap and highly scalable.  In its
      usage, css refcnting isn't very different from module refcnting.
      
      This patch converts css refcnting to use the recently added
      percpu_ref.  css_get/tryget/put() directly maps to the matching
      percpu_ref operations and the deactivation logic is no longer
      necessary as percpu_ref already has refcnt killing.
      
      The only complication is that as the refcnt is per-cpu,
      percpu_ref_kill() in itself doesn't ensure that further tryget
      operations will fail, which we need to guarantee before invoking
      ->css_offline()'s.  This is resolved collecting kill confirmation
      using percpu_ref_kill_and_confirm() and initiating the offline phase
      of destruction after all css refcnt's are confirmed to be seen as
      killed on all CPUs.  The previous patches already splitted destruction
      into two phases, so percpu_ref_kill_and_confirm() can be hooked up
      easily.
      
      This patch removes css_refcnt() which is used for rcu dereference
      sanity check in css_id().  While we can add a percpu refcnt API to ask
      the same question, css_id() itself is scheduled to be removed fairly
      soon, so let's not bother with it.  Just drop the sanity check and use
      rcu_dereference_raw() instead.
      
      v2: - init_cgroup_css() was calling percpu_ref_init() without checking
            the return value.  This causes two problems - the obvious lack
            of error handling and percpu_ref_init() being called from
            cgroup_init_subsys() before the allocators are up, which
            triggers warnings but doesn't cause actual problems as the
            refcnt isn't used for roots anyway.  Fix both by moving
            percpu_ref_init() to cgroup_create().
      
          - The base references were put too early by
            percpu_ref_kill_and_confirm() and cgroup_offline_fn() put the
            refs one extra time.  This wasn't noticeable because css's go
            through another RCU grace period before being freed.  Update
            cgroup_destroy_locked() to grab an extra reference before
            killing the refcnts.  This problem was noticed by Kent.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarKent Overstreet <koverstreet@google.com>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: Mike Snitzer <snitzer@redhat.com>
      Cc: Vivek Goyal <vgoyal@redhat.com>
      Cc: "Alasdair G. Kergon" <agk@redhat.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Mikulas Patocka <mpatocka@redhat.com>
      Cc: Glauber Costa <glommer@gmail.com>
      d3daf28d
    • Tejun Heo's avatar
      Merge branch 'for-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu into for-3.11 · 2b0e53a7
      Tejun Heo authored
      This is to receive percpu_refcount which will replace atomic_t
      reference count in cgroup_subsys_state.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      2b0e53a7
    • Tejun Heo's avatar
      cgroup: split cgroup destruction into two steps · ea15f8cc
      Tejun Heo authored
      Split cgroup_destroy_locked() into two steps and put the latter half
      into cgroup_offline_fn() which is executed from a work item.  The
      latter half is responsible for offlining the css's, removing the
      cgroup from internal lists, and propagating release notification to
      the parent.  The separation is to allow using percpu refcnt for css.
      
      Note that this allows for other cgroup operations to happen between
      the first and second halves of destruction, including creating a new
      cgroup with the same name.  As the target cgroup is marked DEAD in the
      first half and cgroup internals don't care about the names of cgroups,
      this should be fine.  A comment explaining this will be added by the
      next patch which implements the actual percpu refcnting.
      
      As RCU freeing is guaranteed to happen after the second step of
      destruction, we can use the same work item for both.  This patch
      renames cgroup->free_work to ->destroy_work and uses it for both
      purposes.  INIT_WORK() is now performed right before queueing the work
      item.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      ea15f8cc
    • Tejun Heo's avatar
      cgroup: reorder the operations in cgroup_destroy_locked() · 455050d2
      Tejun Heo authored
      This patch reorders the operations in cgroup_destroy_locked() such
      that the userland visible parts happen before css offlining and
      removal from the ->sibling list.  This will be used to make css use
      percpu refcnt.
      
      While at it, split out CGRP_DEAD related comment from the refcnt
      deactivation one and correct / clarify how different guarantees are
      met.
      
      While this patch changes the specific order of operations, it
      shouldn't cause any noticeable behavior difference.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      455050d2
    • Tejun Heo's avatar
      percpu-refcount: implement percpu_tryget() along with percpu_ref_kill_and_confirm() · dbece3a0
      Tejun Heo authored
      Implement percpu_tryget() which stops giving out references once the
      percpu_ref is visible as killed.  Because the refcnt is per-cpu,
      different CPUs will start to see a refcnt as killed at different
      points in time and tryget() may continue to succeed on subset of cpus
      for a while after percpu_ref_kill() returns.
      
      For use cases where it's necessary to know when all CPUs start to see
      the refcnt as dead, percpu_ref_kill_and_confirm() is added.  The new
      function takes an extra argument @confirm_kill which is invoked when
      the refcnt is guaranteed to be viewed as killed on all CPUs.
      
      While this isn't the prettiest interface, it doesn't force synchronous
      wait and is much safer than requiring the caller to do its own
      call_rcu().
      
      v2: Patch description rephrased to emphasize that tryget() may
          continue to succeed on some CPUs after kill() returns as suggested
          by Kent.
      
      v3: Function comment in percpu_ref_kill_and_confirm() updated warning
          people to not depend on the implied RCU grace period from the
          confirm callback as it's an implementation detail.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Slightly-Grumpily-Acked-by: default avatarKent Overstreet <koverstreet@google.com>
      dbece3a0
  3. 13 Jun, 2013 12 commits
    • Tejun Heo's avatar
      percpu-refcount: implement percpu_ref_cancel_init() · bc497bd3
      Tejun Heo authored
      Normally, percpu_ref_init() initializes and percpu_ref_kill()
      initiates destruction which completes asynchronously.  The
      asynchronous destruction can be problematic in init failure path where
      the caller wants to destroy half-constructed object - distinguishing
      half-constructed objects from the usual release method can be painful
      for complex objects.
      
      This patch implements percpu_ref_cancel_init() which synchronously
      destroys the percpu_ref without invoking release.  To avoid
      unintentional misuses, the function requires the ref to have finished
      percpu_ref_init() but never used and triggers WARN otherwise.
      
      v2: Explain the weird name and usage restriction in the function
          comment.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarKent Overstreet <koverstreet@google.com>
      bc497bd3
    • Tejun Heo's avatar
      percpu-refcount: add __must_check to percpu_ref_init() and don't use... · acac7883
      Tejun Heo authored
      percpu-refcount: add __must_check to percpu_ref_init() and don't use ACCESS_ONCE() in percpu_ref_kill_rcu()
      
      Two small changes.
      
      * Unlike most init functions, percpu_ref_init() allocates memory and
        may fail.  Let's mark it with __must_check in case the caller
        forgets.
      
      * percpu_ref_kill_rcu() is unnecessarily using ACCESS_ONCE() to
        dereference @ref->pcpu_count, which can be misleading.  The pointer
        is guaranteed to be valid and visible and can't change underneath
        the function.  Drop ACCESS_ONCE().
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      acac7883
    • Tejun Heo's avatar
      cgroup: remove cgroup->count and use · 6f3d828f
      Tejun Heo authored
      cgroup->count tracks the number of css_sets associated with the cgroup
      and used only to verify that no css_set is associated when the cgroup
      is being destroyed.  It's superflous as the destruction path can
      simply check whether cgroup->cset_links is empty instead.
      
      Drop cgroup->count and check ->cset_links directly from
      cgroup_destroy_locked().
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      6f3d828f
    • Tejun Heo's avatar
      cgroup: drop unnecessary RCU dancing from __put_css_set() · ddd69148
      Tejun Heo authored
      __put_css_set() does RCU read access on @cgrp across dropping
      @cgrp->count so that it can continue accessing @cgrp even if the count
      reached zero and destruction of the cgroup commenced.  Given that both
      sides - __css_put() and cgroup_destroy_locked() - are cold paths, this
      is unnecessary.  Just making cgroup_destroy_locked() grab css_set_lock
      while checking @cgrp->count is enough.
      
      Remove the RCU read locking from __put_css_set() and make
      cgroup_destroy_locked() read-lock css_set_lock when checking
      @cgrp->count.  This will also allow removing @cgrp->count.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      ddd69148
    • Tejun Heo's avatar
      cgroup: rename CGRP_REMOVED to CGRP_DEAD · 54766d4a
      Tejun Heo authored
      We will add another flag indicating that the cgroup is in the process
      of being killed.  REMOVING / REMOVED is more difficult to distinguish
      and cgroup_is_removing()/cgroup_is_removed() are a bit awkward.  Also,
      later percpu_ref usage will involve "kill"ing the refcnt.
      
       s/CGRP_REMOVED/CGRP_DEAD/
       s/cgroup_is_removed()/cgroup_is_dead()
      
      This patch is purely cosmetic.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      54766d4a
    • Tejun Heo's avatar
      cgroup: clean up css_[try]get() and css_put() · 5de0107e
      Tejun Heo authored
      * __css_get() isn't used by anyone.  Fold it into css_get().
      
      * Add proper function comments to all css reference functions.
      
      This patch is purely cosmetic.
      
      v2: Typo fix as per Li.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      5de0107e
    • Tejun Heo's avatar
      cgroup: use kzalloc() instead of kmalloc() · f4f4be2b
      Tejun Heo authored
      There's no point in using kmalloc() instead of the clearing variant
      for trivial stuff.  We can live dangerously elsewhere.  Use kzalloc()
      instead and drop 0 inits.
      
      While at it, do trivial code reorganization in cgroup_file_open().
      
      This patch doesn't introduce any functional changes.
      
      v2: I was caught in the very distant past where list_del() didn't
          poison and the initial version converted list_del()s to
          list_del_init()s too.  Li and Kent took me out of the stasis
          chamber.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Kent Overstreet <koverstreet@google.com>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      f4f4be2b
    • Tejun Heo's avatar
      cgroup: bring some sanity to naming around cg_cgroup_link · 69d0206c
      Tejun Heo authored
      cgroups and css_sets are mapped M:N and this M:N mapping is
      represented by struct cg_cgroup_link which forms linked lists on both
      sides.  The naming around this mapping is already confusing and struct
      cg_cgroup_link exacerbates the situation quite a bit.
      
      >From cgroup side, it starts off ->css_sets and runs through
      ->cgrp_link_list.  From css_set side, it starts off ->cg_links and
      runs through ->cg_link_list.  This is rather reversed as
      cgrp_link_list is used to iterate css_sets and cg_link_list cgroups.
      Also, this is the only place which is still using the confusing "cg"
      for css_sets.  This patch cleans it up a bit.
      
      * s/cgroup->css_sets/cgroup->cset_links/
        s/css_set->cg_links/css_set->cgrp_links/
        s/cgroup_iter->cg_link/cgroup_iter->cset_link/
      
      * s/cg_cgroup_link/cgrp_cset_link/
      
      * s/cgrp_cset_link->cg/cgrp_cset_link->cset/
        s/cgrp_cset_link->cgrp_link_list/cgrp_cset_link->cset_link/
        s/cgrp_cset_link->cg_link_list/cgrp_cset_link->cgrp_link/
      
      * s/init_css_set_link/init_cgrp_cset_link/
        s/free_cg_links/free_cgrp_cset_links/
        s/allocate_cg_links/allocate_cgrp_cset_links/
      
      * s/cgl[12]/link[12]/ in compare_css_sets()
      
      * s/saved_link/tmp_link/ s/tmp/tmp_links/ and a couple similar
        adustments.
      
      * Comment and whiteline adjustments.
      
      After the changes, we have
      
      	list_for_each_entry(link, &cont->cset_links, cset_link) {
      		struct css_set *cset = link->cset;
      
      instead of
      
      	list_for_each_entry(link, &cont->css_sets, cgrp_link_list) {
      		struct css_set *cset = link->cg;
      
      This patch is purely cosmetic.
      
      v2: Fix broken sentences in the patch description.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      69d0206c
    • Tejun Heo's avatar
      cgroup: consistently use @cset for struct css_set variables · 5abb8855
      Tejun Heo authored
      cgroup.c uses @cg for most struct css_set variables, which in itself
      could be a bit confusing, but made much worse by the fact that there
      are places which use @cg for struct cgroup variables.
      compare_css_sets() epitomizes this confusion - @[old_]cg are struct
      css_set while @cg[12] are struct cgroup.
      
      It's not like the whole deal with cgroup, css_set and cg_cgroup_link
      isn't already confusing enough.  Let's give it some sanity by
      uniformly using @cset for all struct css_set variables.
      
      * s/cg/cset/ for all css_set variables.
      
      * s/oldcg/old_cset/ s/oldcgrp/old_cgrp/.  The same for the ones
        prefixed with "new".
      
      * s/cg/cgrp/ for cgroup variables in compare_css_sets().
      
      * s/css/cset/ for the cgroup variable in task_cgroup_from_root().
      
      * Whiteline adjustments.
      
      This patch is purely cosmetic.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      5abb8855
    • Tejun Heo's avatar
      cgroup: remove now unused css_depth() · 3fc3db9a
      Tejun Heo authored
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      3fc3db9a
    • Tejun Heo's avatar
      percpu-refcount: cosmetic updates · ac899061
      Tejun Heo authored
      * s/percpu_ref_release/percpu_ref_func_t/ as it's customary to have _t
        postfix for types and the type is gonna be used for a different type
        of callback too.
      
      * Add @ARG to function comments.
      
      * Drop unnecessary and unaligned indentation from percpu_ref_init()
        function comment.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarKent Overstreet <koverstreet@google.com>
      ac899061
    • Tejun Heo's avatar
      percpu-refcount: consistently use plain (non-sched) RCU · 6a24474d
      Tejun Heo authored
      percpu_ref_get/put() are using preempt_disable/enable() while
      percpu_ref_kill() is using plain call_rcu() instead of
      call_rcu_sched().  This is buggy as grace periods of the two may not
      match.  Fix it by using plain RCU in percpu_ref_get/put().
      
      (I suggested using sched RCU in the first place but there's no actual
       benefit in doing so unless we're gonna introduce different variants
       of get/put to be called while preemption is alredy disabled, which we
       definitely shouldn't.)
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reported-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Acked-by: default avatarKent Overstreet <koverstreet@google.com>
      6a24474d
  4. 05 Jun, 2013 3 commits
    • Tejun Heo's avatar
      cgroup: clean up the cftype array for the base cgroup files · d5c56ced
      Tejun Heo authored
      * Rename it from files[] (really?) to cgroup_base_files[].
      
      * Drop CGROUP_FILE_GENERIC_PREFIX which was defined as "cgroup." and
        used inconsistently.  Just use "cgroup." directly.
      
      * Collect insane files at the end.  Note that only the insane ones are
        missing "cgroup." prefix.
      
      This patch doesn't introduce any functional changes.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      d5c56ced
    • Tejun Heo's avatar
      cgroup: mark "notify_on_release" and "release_agent" cgroup files insane · cc5943a7
      Tejun Heo authored
      The empty cgroup notification mechanism currently implemented in
      cgroup is tragically outdated.  Forking and execing userland process
      stopped being a viable notification mechanism more than a decade ago.
      We're gonna have a saner mechanism.  Let's make it clear that this
      abomination is going away.
      
      Mark "notify_on_release" and "release_agent" with CFTYPE_INSANE.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      cc5943a7
    • Tejun Heo's avatar
      cgroup: mark "tasks" cgroup file as insane · f12dc020
      Tejun Heo authored
      Some resources controlled by cgroup aren't per-task and cgroup core
      allowing threads of a single thread_group to be in different cgroups
      forced memcg do explicitly find the group leader and use it.  This is
      gonna be nasty when transitioning to unified hierarchy and in general
      we don't want and won't support granularity finer than processes.
      
      Mark "tasks" with CFTYPE_INSANE.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Acked-by: default avatarLi Zefan <lizefan@huawei.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: Balbir Singh <bsingharora@gmail.com>
      Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: cgroups@vger.kernel.org
      Cc: Vivek Goyal <vgoyal@redhat.com>
      f12dc020
  5. 03 Jun, 2013 8 commits
  6. 02 Jun, 2013 2 commits
    • Linus Torvalds's avatar
      Linux 3.10-rc4 · d683b96b
      Linus Torvalds authored
      d683b96b
    • Sergei Shtylyov's avatar
      sata_rcar: fix interrupt handling · 52a2a108
      Sergei Shtylyov authored
      The driver's interrupt handling code is too picky in deciding whether it should
      handle an interrupt or not which causes completely unneeded spurious interrupts.
      Thus make sata_rcar_{ata|serr}_interrupt() *void*; add ATA status register read
      to sata_rcar_ata_interrupt() to clear an unexpected ATA interrupt -- it doesn't
      get cleared by writing to the SATAINTSTAT register in the interrupt mode we use.
      
      Also, in sata_rcar_ata_interrupt() we should check SATAINTSTAT register only for
      enabled interrupts and we should clear  only those interrupts  that we have read
      as active first time around, because else we have  a  race and risk clearing  an
      interrupt that  can  occur between read  and write of the  SATAINTSTAT  register
      and never registering it...
      Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: stable@vger.kernel.org
      52a2a108
  7. 01 Jun, 2013 6 commits
    • Linus Torvalds's avatar
      Merge branch 'for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · cc863973
      Linus Torvalds authored
      Pull parisc fixes from Helge Deller:
       "This patcheset includes fixes for:
      
         - the PCI/LBA which brings back the stifb graphics framebuffer
           console
         - possible memory overflows in parisc kernel init code
         - parport support on older GSC machines
         - avoids that users by mistake enable PARPORT_PC_SUPERIO on parisc
         - MAINTAINERS file list updates for parisc."
      
      * 'for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: parport0: fix this legacy no-device port driver!
        parport_pc: disable PARPORT_PC_SUPERIO on parisc architecture
        parisc/PCI: lba: fix: convert to pci_create_root_bus() for correct root bus resources (v2)
        parisc/PCI: Set type for LBA bus_num resource
        MAINTAINERS: update parisc architecture file list
        parisc: kernel: using strlcpy() instead of strcpy()
        parisc: rename "CONFIG_PA7100" to "CONFIG_PA7000"
        parisc: fix kernel BUG at arch/parisc/include/asm/mmzone.h:50
        parisc: memory overflow, 'name' length is too short for using
      cc863973
    • Helge Deller's avatar
      parisc: parport0: fix this legacy no-device port driver! · 4edb3869
      Helge Deller authored
      Fix the above kernel error from parport_announce_port() on 32bit GSC
      machines (e.g. B160L). The parport driver requires now a pointer to the
      device struct.
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      4edb3869
    • Helge Deller's avatar
      parport_pc: disable PARPORT_PC_SUPERIO on parisc architecture · c218c713
      Helge Deller authored
      If enabled, CONFIG_PARPORT_PC_SUPERIO scans on PC-like hardware for
      various super-io chips by accessing i/o ports in a range which will
      crash any parisc hardware at once.
      
      In addition, parisc has it's own incompatible superio chip
      (CONFIG_SUPERIO), so if we disable PARPORT_PC_SUPERIO completely for
      parisc we can avoid that people by accident enable the parport_pc
      superio option too.
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      c218c713
    • Helge Deller's avatar
      parisc/PCI: lba: fix: convert to pci_create_root_bus() for correct root bus resources (v2) · b204a4d2
      Helge Deller authored
      commit dc7dce28
      Author: Bjorn Helgaas <bhelgaas@google.com>
      Date:   Fri Oct 28 16:27:27 2011 -0600
         parisc/PCI: lba: convert to pci_create_root_bus() for correct root bus
                          resources
      
        Supply root bus resources to pci_create_root_bus() so they're correct
        immediately.  This fixes the problem of "early" and "header" quirks seeing
        incorrect root bus resources.
      
      added tests for elmmio_space.start while it should use
      elmmio_space.flags.  This for example led to incorrect resource
      assignments and a non-working stifb framebuffer on most parisc machines.
      
      LBA 10:1: PCI host bridge to bus 0000:01
      pci_bus 0000:01: root bus resource [io  0x12000-0x13fff] (bus address [0x2000-0x3fff])
      pci_bus 0000:01: root bus resource [mem 0xfffffffffa000000-0xfffffffffbffffff] (bus address [0xfa000000-0xfbffffff])
      pci_bus 0000:01: root bus resource [mem 0xfffffffff4800000-0xfffffffff4ffffff] (bus address [0xf4800000-0xf4ffffff])
      pci_bus 0000:01: root bus resource [??? 0x00000001 flags 0x0]
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      Acked-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      b204a4d2
    • Bjorn Helgaas's avatar
      parisc/PCI: Set type for LBA bus_num resource · b47d4934
      Bjorn Helgaas authored
      The non-PAT resource probing code failed to set the type of the LBA bus_num
      resource (30aa80da "parisc/PCI: register busn_res for root buses" did
      the corresponding thing for the PAT case).
      
      This causes incorrect resource assignments and a non-working stifb
      framebuffer on most parisc machines.
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      b47d4934
    • Helge Deller's avatar
      2b6bac9e