Skip to content
  1. Mar 06, 2012
  2. Mar 05, 2012
  3. Mar 03, 2012
  4. Feb 29, 2012
  5. Feb 27, 2012
    • Grant Likely's avatar
      mfd: twl-core: Add IRQ_DOMAIN dependency · 280ad7fd
      Grant Likely authored
      
      
      TWL4030 depends on IRQ_DOMAIN support, so this patch selects it in Kconfig.
      It used to be that CONFIG_IRQ_DOMAIN must only be selected by the architecture,
      but recent cleanups have fixed it so that it is safe to select from anywhere.
      
      Signed-off-by: default avatarBenoit Cousson <b-cousson@ti.com>
      [grant.likely: Changed from a depends to a select]
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Samuel Ortiz <sameo@linux.intel.com>
      280ad7fd
    • Grant Likely's avatar
      devicetree: Add empty of_platform_populate() for !CONFIG_OF_ADDRESS (sparc) · 964dba28
      Grant Likely authored
      
      
      Sparc has its own helpers for translating address ranges when the device
      tree is parsed at boot time, and it isn't able to use of_platform_populate().
      However, there are some device drivers that want to use that function on
      other DT enabled platforms (ie. TWL4030).  This patch adds an empty
      of_platform_populate() implementation that returns an error when
      CONFIG_OF_ADDRESS is not selected.
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Benoit Cousson <b-cousson@ti.com>
      Cc: Samuel Ortiz <sameo@linux.intel.com>
      964dba28
    • Grant Likely's avatar
      irq_domain: Centralize definition of irq_dispose_mapping() · d593f25f
      Grant Likely authored
      
      
      Several architectures define their own empty irq_dispose_mapping().  Since
      the irq_domain code is centralized now, there is little need to do so.  This
      patch removes them and creates a new empty copy when !CONFIG_IRQ_DOMAIN is
      selected.
      
      The patch also means that IRQ_DOMAIN becomes selectable on all architectures.
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Jonas Bonn <jonas@southpole.se>
      Cc: sparclinux@vger.kernel.org
      Cc: linux@lists.openrisc.net
      d593f25f
  6. Feb 25, 2012
    • Grant Likely's avatar
      irq_domain/mips: Allow irq_domain on MIPS · abd2363f
      Grant Likely authored
      
      
      This patch makes IRQ_DOMAIN usable on MIPS.  It uses an ugly workaround
      to preserve current behaviour so that MIPS has time to add irq_domain
      registration to the irq controller drivers.  The workaround will be
      removed in Linux v3.6
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: linux-mips@linux-mips.org
      abd2363f
  7. Feb 24, 2012
  8. Feb 23, 2012
  9. Feb 16, 2012
    • Viresh Kumar's avatar
      gpio/gpio-pl061: No need of thaw and poweroff routines for hibernate · 6e33aced
      Viresh Kumar authored
      
      
      pl061 uses same routines for suspend/freeze/poweroff and resume/thaw/restore.
      We are only saving and restoring register values on these routines.
      
      During hibernation, in freeze() we take a snapshot of gpio registers. In thaw()
      we don't actually need to restore these registers, as power was never shut down
      till now. Similarly, in poweroff() we don't need to take snapshot of these
      registers again, as it was done during freeze() and by now the image is already
      saved on disk.
      
      This patch passes poweroff() and thaw() routines as NULL to avoid this extra
      work done.
      
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@st.com>
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      6e33aced
    • Grant Likely's avatar
      irq_domain/microblaze: Convert microblaze to use irq_domains · 2462bacd
      Grant Likely authored
      
      
      This patch converts Microblaze to use the irq_domain remapper and get
      away from hard coding the offset between hwirq number and the linux irq
      number space.  This also paves the way for multiple interrupt controllers.
      
      v2: Don't enable SPARSE_IRQ and keep NR_IRQS set to 33
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Signed-off-by: default avatarMichal Simek <monstr@monstr.eu>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: John Williams <john.williams@petalogix.com>
      Cc: John Linn <john.linn@xilinx.com>
      2462bacd
    • Grant Likely's avatar
      irq_domain/powerpc: Replace custom xlate functions with library functions · ff8c3ab8
      Grant Likely authored
      
      
      This patch converts a number of the powerpc drivers to use the common library
      of irq_domain xlate functions, dropping a bunch of lines in the process.
      
      v5: - Remove tsi108 changes from patch
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      ff8c3ab8
    • Grant Likely's avatar
      irq_domain/powerpc: constify irq_domain_ops · 9f70b8eb
      Grant Likely authored
      
      
      Make all the irq_domain_ops structures in powerpc 'static const'
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      9f70b8eb
    • Grant Likely's avatar
      irq_domain/c6x: Use library of xlate functions · c1e572e6
      Grant Likely authored
      
      
      The c6x irq controllers don't need to define custom .xlate hooks
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Mark Salter <msalter@redhat.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      c1e572e6
    • Grant Likely's avatar
      irq_domain/c6x: constify irq_domain structures · 15a25980
      Grant Likely authored
      
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Mark Salter <msalter@redhat.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      15a25980
    • Mark Salter's avatar
      irq_domain/c6x: Convert c6x to use generic irq_domain support. · 0bd761e1
      Mark Salter authored
      
      
      The C6X IRQ support was copied almost verbatim from the PowerPC virtual IRQ
      code. The PowerPC code was used as the basis for generic irq_domain support,
      so this patch mostly copies what what done to arch/powerpc by Grant Likely
      in his irq_domain patch series.
      
      Signed-off-by: default avatarMark Salter <msalter@redhat.com>
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Aurelien Jacquiot <a-jacquiot@ti.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      0bd761e1
    • Grant Likely's avatar
      irq_domain: constify irq_domain_ops · a18dc81b
      Grant Likely authored
      
      
      Make irq_domain_ops pointer a constant to make it safer for multiple
      instances to share the same ops pointer and change the irq_domain code
      so that it does not modify the ops.
      
      v4: Fix mismatched type reference in powerpc code
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      a18dc81b
    • Grant Likely's avatar
      irq_domain: Create common xlate functions that device drivers can use · 16b2e6e2
      Grant Likely authored
      
      
      Rather than having each interrupt controller driver creating its own barely
      unique .xlate function for irq_domain, create a library of translators which
      any driver can use directly.
      
      v5: - Remove irq_domain_xlate_pci().  It was incorrect.
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Mark Salter <msalter@redhat.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      16b2e6e2
    • Grant Likely's avatar
      irq_domain: Remove irq_domain_add_simple() · 6b783f7c
      Grant Likely authored
      
      
      irq_domain_add_simple() was a stop-gap measure until complete irq_domain
      support was complete.  This patch removes the irq_domain_add_simple()
      interface.
      
      This patch also drops the explicit irq_domain initialization performed
      by the mach-versatile code because the versatile interrupt controller
      already has irq_domain support built into it.  This was a bug that was
      hanging around quietly for a while, but with the full irq_domain which
      actually verifies that irq_domain ranges are available it would cause
      the registration to fail and the system wouldn't boot.
      
      v4: Fixed number of irqs in mx5 gpio code
      v2: Updated to pass in host_data pointer on irq_domain allocation.
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      6b783f7c
    • Grant Likely's avatar
      irq_domain: Remove 'new' irq_domain in favour of the ppc one · 75294957
      Grant Likely authored
      
      
      This patch removes the simplistic implementation of irq_domains and enables
      the powerpc infrastructure for all irq_domain users.  The powerpc
      infrastructure includes support for complex mappings between Linux and
      hardware irq numbers, and can manage allocation of irq_descs.
      
      This patch also converts the few users of irq_domain_add()/irq_domain_del()
      to call irq_domain_add_legacy() instead.
      
      v3: Fix bug that set up too many irqs in translation range.
      v2: Fix removal of irq_alloc_descs() call in gic driver
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      75294957
    • Benoit Cousson's avatar
      mfd: twl-core.c: Fix the number of interrupts managed by twl4030 · 5769089a
      Benoit Cousson authored
      
      
      TWL4030 does handle 3 different interrupts ranges: 8 for the core, 8 for
      the power events and 18 for the GPIOs.
      
      Change the total number of interrupts managed by TWL4030 from 8 to 34.
      
      Signed-off-by: default avatarBenoit Cousson <b-cousson@ti.com>
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      5769089a
    • Grant Likely's avatar
      of/address: add empty static inlines for !CONFIG_OF · a850a755
      Grant Likely authored
      
      
      As the title says, this patch adds empty implementations for the address
      translation functions so that they can be used when CONFIG_OF is disabled.
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      a850a755
    • Grant Likely's avatar
      irq_domain: Add support for base irq and hwirq in legacy mappings · 1bc04f2c
      Grant Likely authored
      
      
      Add support for a legacy mapping where irq = (hwirq - first_hwirq + first_irq)
      so that a controller driver can allocate a fixed range of irq_descs and use
      a simple calculation to translate back and forth between linux and hw irq
      numbers.  This is needed to use an irq_domain with many of the ARM interrupt
      controller drivers that manage their own irq_desc allocations.  Ultimately
      the goal is to migrate those drivers to use the linear revmap, but doing it
      this way allows each driver to be converted separately which makes the
      migration path easier.
      
      This patch generalizes the IRQ_DOMAIN_MAP_LEGACY method to use
      (first_irq-first_hwirq) as the offset between hwirq and linux irq number,
      and adds checks to make sure that the hwirq number does not exceed range
      assigned to the controller.
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      1bc04f2c
    • Grant Likely's avatar
      irq_domain: Replace irq_alloc_host() with revmap-specific initializers · a8db8cf0
      Grant Likely authored
      
      
      Each revmap type has different arguments for setting up the revmap.
      This patch splits up the generator functions so that each revmap type
      can do its own setup and the user doesn't need to keep track of how
      each revmap type handles the arguments.
      
      This patch also adds a host_data argument to the generators.  There are
      cases where the host_data pointer will be needed before the function returns.
      ie. the legacy map calls the .map callback for each irq before returning.
      
      v2: - Add void *host_data argument to irq_domain_add_*() functions
          - fixed failure to compile
          - Moved IRQ_DOMAIN_MAP_* defines into irqdomain.c
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      a8db8cf0
    • Grant Likely's avatar
      irq_domain: Remove references to old irq_host names · 68700650
      Grant Likely authored
      
      
      No functional changes.  Replaces non-exported references to 'host' with domain.
      Does not change any symbol names referenced by other .c files.
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      68700650
    • Grant Likely's avatar
      irq_domain: remove NO_IRQ from irq domain code · 03848373
      Grant Likely authored
      
      
      zero always means no irq when using irq domains.  Get rid of the NO_IRQ
      references.
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      03848373
    • Grant Likely's avatar
      irq_domain: Move irq_domain code from powerpc to kernel/irq · cc79ca69
      Grant Likely authored
      
      
      This patch only moves the code.  It doesn't make any changes, and the
      code is still only compiled for powerpc.  Follow-on patches will generalize
      the code for other architectures.
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      cc79ca69
    • Grant Likely's avatar
      irq_domain/powerpc: Eliminate virq_is_host() · 6d9285b0
      Grant Likely authored
      
      
      There is only one user, and it is trivial to open-code.
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      6d9285b0
    • Ming Lei's avatar
      Fix circular locking dependency (3.3-rc2) · 864533ce
      Ming Lei authored
      
      
      Hi,
      
      On Wed, Feb 8, 2012 at 8:41 PM, Felipe Balbi <balbi@ti.com> wrote:
      > Hi guys,
      >
      > I have just triggered the folllowing:
      >
      > [   84.860321] ======================================================
      > [   84.860321] [ INFO: possible circular locking dependency detected ]
      > [   84.860321] 3.3.0-rc2-00026-ge4e8a39 #474 Not tainted
      > [   84.860321] -------------------------------------------------------
      > [   84.860321] bash/949 is trying to acquire lock:
      > [   84.860321]  (sysfs_lock){+.+.+.}, at: [<c0275358>] gpio_value_store+0x24/0xcc
      > [   84.860321]
      > [   84.860321] but task is already holding lock:
      > [   84.860321]  (s_active#22){++++.+}, at: [<c016996c>] sysfs_write_file+0xdc/0x184
      > [   84.911468]
      > [   84.911468] which lock already depends on the new lock.
      > [   84.911468]
      > [   84.920043]
      > [   84.920043] the existing dependency chain (in reverse order) is:
      > [   84.920043]
      > [   84.927886] -> #1 (s_active#22){++++.+}:
      > [   84.927886]        [<c008f640>] check_prevs_add+0xdc/0x150
      > [   84.927886]        [<c008fc18>] validate_chain.clone.24+0x564/0x694
      > [   84.927886]        [<c0090cdc>] __lock_acquire+0x49c/0x980
      > [   84.951660]        [<c0091838>] lock_acquire+0x98/0x100
      > [   84.951660]        [<c016a8e8>] sysfs_deactivate+0xb0/0x100
      > [   84.962982]        [<c016b1b4>] sysfs_addrm_finish+0x2c/0x6c
      > [   84.962982]        [<c016b8bc>] sysfs_remove_dir+0x84/0x98
      > [   84.962982]        [<c02590d8>] kobject_del+0x10/0x78
      > [   84.974670]        [<c02c29e8>] device_del+0x140/0x170
      > [   84.974670]        [<c02c2a24>] device_unregister+0xc/0x18
      > [   84.985382]        [<c0276894>] gpio_unexport+0xbc/0xdc
      > [   84.985382]        [<c02768c8>] gpio_free+0x14/0xfc
      > [   85.001708]        [<c0276a28>] unexport_store+0x78/0x8c
      > [   85.001708]        [<c02c5af8>] class_attr_store+0x18/0x24
      > [   85.007293]        [<c0169990>] sysfs_write_file+0x100/0x184
      > [   85.018981]        [<c0109d48>] vfs_write+0xb4/0x148
      > [   85.018981]        [<c0109fd0>] sys_write+0x40/0x70
      > [   85.018981]        [<c0013cc0>] ret_fast_syscall+0x0/0x3c
      > [   85.035003]
      > [   85.035003] -> #0 (sysfs_lock){+.+.+.}:
      > [   85.035003]        [<c008f54c>] check_prev_add+0x680/0x698
      > [   85.035003]        [<c008f640>] check_prevs_add+0xdc/0x150
      > [   85.052093]        [<c008fc18>] validate_chain.clone.24+0x564/0x694
      > [   85.052093]        [<c0090cdc>] __lock_acquire+0x49c/0x980
      > [   85.052093]        [<c0091838>] lock_acquire+0x98/0x100
      > [   85.069885]        [<c047e280>] mutex_lock_nested+0x3c/0x2f4
      > [   85.069885]        [<c0275358>] gpio_value_store+0x24/0xcc
      > [   85.069885]        [<c02c18dc>] dev_attr_store+0x18/0x24
      > [   85.087158]        [<c0169990>] sysfs_write_file+0x100/0x184
      > [   85.087158]        [<c0109d48>] vfs_write+0xb4/0x148
      > [   85.098297]        [<c0109fd0>] sys_write+0x40/0x70
      > [   85.098297]        [<c0013cc0>] ret_fast_syscall+0x0/0x3c
      > [   85.109069]
      > [   85.109069] other info that might help us debug this:
      > [   85.109069]
      > [   85.117462]  Possible unsafe locking scenario:
      > [   85.117462]
      > [   85.117462]        CPU0                    CPU1
      > [   85.128417]        ----                    ----
      > [   85.128417]   lock(s_active#22);
      > [   85.128417]                                lock(sysfs_lock);
      > [   85.128417]                                lock(s_active#22);
      > [   85.142486]   lock(sysfs_lock);
      > [   85.151794]
      > [   85.151794]  *** DEADLOCK ***
      > [   85.151794]
      > [   85.151794] 2 locks held by bash/949:
      > [   85.158020]  #0:  (&buffer->mutex){+.+.+.}, at: [<c01698b8>] sysfs_write_file+0x28/0x184
      > [   85.170349]  #1:  (s_active#22){++++.+}, at: [<c016996c>] sysfs_write_file+0xdc/0x184
      > [   85.170349]
      > [   85.178588] stack backtrace:
      > [   85.178588] [<c001b824>] (unwind_backtrace+0x0/0xf0) from [<c008de64>] (print_circular_bug+0x100/0x114)
      > [   85.193023] [<c008de64>] (print_circular_bug+0x100/0x114) from [<c008f54c>] (check_prev_add+0x680/0x698)
      > [   85.193023] [<c008f54c>] (check_prev_add+0x680/0x698) from [<c008f640>] (check_prevs_add+0xdc/0x150)
      > [   85.212524] [<c008f640>] (check_prevs_add+0xdc/0x150) from [<c008fc18>] (validate_chain.clone.24+0x564/0x694)
      > [   85.212524] [<c008fc18>] (validate_chain.clone.24+0x564/0x694) from [<c0090cdc>] (__lock_acquire+0x49c/0x980)
      > [   85.233306] [<c0090cdc>] (__lock_acquire+0x49c/0x980) from [<c0091838>] (lock_acquire+0x98/0x100)
      > [   85.233306] [<c0091838>] (lock_acquire+0x98/0x100) from [<c047e280>] (mutex_lock_nested+0x3c/0x2f4)
      > [   85.242614] [<c047e280>] (mutex_lock_nested+0x3c/0x2f4) from [<c0275358>] (gpio_value_store+0x24/0xcc)
      > [   85.261840] [<c0275358>] (gpio_value_store+0x24/0xcc) from [<c02c18dc>] (dev_attr_store+0x18/0x24)
      > [   85.261840] [<c02c18dc>] (dev_attr_store+0x18/0x24) from [<c0169990>] (sysfs_write_file+0x100/0x184)
      > [   85.271240] [<c0169990>] (sysfs_write_file+0x100/0x184) from [<c0109d48>] (vfs_write+0xb4/0x148)
      > [   85.290008] [<c0109d48>] (vfs_write+0xb4/0x148) from [<c0109fd0>] (sys_write+0x40/0x70)
      > [   85.298400] [<c0109fd0>] (sys_write+0x40/0x70) from [<c0013cc0>] (ret_fast_syscall+0x0/0x3c)
      > -bash: echo: write error: Operation not permitted
      >
      > the way to trigger is:
      >
      > root@legolas:~# cd /sys/class/gpio/
      > root@legolas:/sys/class/gpio# echo 2 > export
      > root@legolas:/sys/class/gpio# echo 2 > unexport
      > root@legolas:/sys/class/gpio# echo 2 > export
      > root@legolas:/sys/class/gpio# cd gpio2/
      > root@legolas:/sys/class/gpio/gpio2# echo 1 > value
      
      Looks 'sysfs_lock' needn't to be held for unregister, so the patch below may
      fix the problem.
      
      Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      864533ce
  10. Feb 15, 2012
    • Grant Likely's avatar
      irq_domain/powerpc: eliminate irq_map; use irq_alloc_desc() instead · 4bbdd45a
      Grant Likely authored
      
      
      This patch drops the powerpc-specific irq_map table and replaces it with
      directly using the irq_alloc_desc()/irq_free_desc() interfaces for allocating
      and freeing irq_desc structures.
      
      This patch is a preparation step for generalizing the powerpc-specific virq
      infrastructure to become irq_domains.
      
      As part of this change, the irq_big_lock is changed to a mutex from a raw
      spinlock.  There is no longer any need to use a spin lock since the irq_desc
      allocation code is now responsible for the critical section of finding
      an unused range of irq numbers.
      
      The radix lookup table is also changed to store the irq_data pointer instead
      of the irq_map entry since the irq_map is removed.  This should end up being
      functionally equivalent since only allocated irq_descs are ever added to the
      radix tree.
      
      v5: - Really don't ever allocate virq 0.  The previous version could still
            do it if hint == 0
          - Respect irq_virq_count setting for NOMAP.  Some NOMAP domains cannot
            use virq values above irq_virq_count.
          - Use numa_node_id() when allocating irq_descs.  Ideally the API should
            obtain that value from the caller, but that touches a lot of call sites
            so will be deferred to a follow-on patch.
          - Fix irq_find_mapping() to include irq numbers lower than
            NUM_ISA_INTERRUPTS.  With the switch to irq_alloc_desc*(), the lowest
            possible allocated irq is now returned by arch_probe_nr_irqs().
      v4: - Fix incorrect access to irq_data structure in debugfs code
          - Don't ever allocate virq 0
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      4bbdd45a
    • Grant Likely's avatar
      irq_domain/powerpc: Use common irq_domain structure instead of irq_host · bae1d8f1
      Grant Likely authored
      
      
      This patch drops the powerpc-specific irq_host structures and uses the common
      irq_domain strucutres defined in linux/irqdomain.h.  It also fixes all
      the users to use the new structure names.
      
      Renaming irq_host to irq_domain has been discussed for a long time, and this
      patch is a step in the process of generalizing the powerpc virq code to be
      usable by all architecture.
      
      An astute reader will notice that this patch actually removes the irq_host
      structure instead of renaming it.  This is because the irq_domain structure
      already exists in include/linux/irqdomain.h and has the needed data members.
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      bae1d8f1
    • Grant Likely's avatar
      irq_domain: convert microblaze from irq_host to irq_domain · 644bd954
      Grant Likely authored
      
      
      Trivial change, microblaze doesn't use irq remapping yet.
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Michal Simek <monstr@monstr.eu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      644bd954
    • Grant Likely's avatar
      irq_domain: Make irq_domain structure match powerpc's irq_host · 7bb69bad
      Grant Likely authored
      
      
      Part of the series to unify the irq remapping mechanisms in the
      kernel.  A follow up patch will copy the powerpc implementation into
      kernel/irq/irqdomain.c, which will be a lot easier if the structures
      are identical.
      
      Where they differ, I've chose to use the powerpc names since there is
      a lot more code using those names.
      
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: default avatarOlof Johansson <olof@lixom.net>
      7bb69bad