1. 04 Apr, 2013 19 commits
  2. 03 Apr, 2013 7 commits
  3. 02 Apr, 2013 2 commits
    • Mike Turquette's avatar
      clk: allow reentrant calls into the clk framework · 533ddeb1
      Mike Turquette authored
      Reentrancy into the clock framework is necessary for clock operations
      that result in nested calls to the clk api.  A common example is a clock
      that is prepared via an i2c transaction, such as a clock inside of a
      discrete audio chip or a power management IC.  The i2c subsystem itself
      will use the clk api resulting in a deadlock:
      
      clk_prepare(audio_clk)
      	i2c_transfer(..)
      		clk_prepare(i2c_controller_clk)
      
      The ability to reenter the clock framework prevents this deadlock.
      
      Other use cases exist such as allowing .set_rate callbacks to call
      clk_set_parent to achieve the best rate, or to save power in certain
      configurations.  Yet another example is performing pinctrl operations
      from a clk_ops callback.  Calls into the pinctrl subsystem may call
      clk_{un}prepare on an unrelated clock.  Allowing for nested calls to
      reenter the clock framework enables both of these use cases.
      
      Reentrancy is implemented by two global pointers that track the owner
      currently holding a global lock.  One pointer tracks the owner during
      sleepable, mutex-protected operations and the other one tracks the owner
      during non-interruptible, spinlock-protected operations.
      
      When the clk framework is entered we try to hold the global lock.  If it
      is held we compare the current task against the current owner; a match
      implies a nested call and we reenter.  If the values do not match then
      we block on the lock until it is released.
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      Cc: Rajagopal Venkat <rajagopal.venkat@linaro.org>
      Cc: David Brown <davidb@codeaurora.org>
      Tested-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Reviewed-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      533ddeb1
    • Mike Turquette's avatar
      clk: abstract locking out into helper functions · eab89f69
      Mike Turquette authored
      Create locking helpers for the global mutex and global spinlock.  The
      definitions of these helpers will be expanded upon in the next patch
      which introduces reentrancy into the locking scheme.
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      Cc: Rajagopal Venkat <rajagopal.venkat@linaro.org>
      Cc: David Brown <davidb@codeaurora.org>
      Tested-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Reviewed-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      eab89f69
  4. 27 Mar, 2013 6 commits
  5. 26 Mar, 2013 1 commit
    • Prashant Gaikwad's avatar
      clk: Add composite clock type · ece70094
      Prashant Gaikwad authored
      Not all clocks are required to be decomposed into basic clock
      types but at the same time want to use the functionality
      provided by these basic clock types instead of duplicating.
      
      For example, Tegra SoC has ~100 clocks which can be decomposed
      into Mux -> Div -> Gate clock types making the clock count to
      ~300. Also, parent change operation can not be performed on gate
      clock which forces to use mux clock in driver if want to change
      the parent.
      
      Instead aggregate the basic clock types functionality into one
      clock and just use this clock for all operations. This clock
      type re-uses the functionality of basic clock types and not
      limited to basic clock types but any hardware-specific
      implementation.
      Signed-off-by: default avatarPrashant Gaikwad <pgaikwad@nvidia.com>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      ece70094
  6. 23 Mar, 2013 5 commits
    • Linus Torvalds's avatar
      Linux 3.9-rc4 · 8bb96604
      Linus Torvalds authored
      8bb96604
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending · a607a114
      Linus Torvalds authored
      Pull SCSI target fixes from Nicholas Bellinger:
       "These are mostly minor fixes this time around.  The iscsi-target CHAP
        big-endian bugfix and bump FD_MAX_SECTORS=2048 default patch to allow
        1MB sized I/Os for FILEIO backends on >= v3.5 code are both CC'ed to
        stable.
      
        Also, there is a persistent reservations regression that has recently
        been reported for >= v3.8.x code, that is currently being tracked down
        for v3.9."
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
        target/pscsi: Reject cross page boundary case in pscsi_map_sg
        target/file: Bump FD_MAX_SECTORS to 2048 to handle 1M sized I/Os
        tcm_vhost: Flush vhost_work in vhost_scsi_flush()
        tcm_vhost: Add missed lock in vhost_scsi_clear_endpoint()
        target: fix possible memory leak in core_tpg_register()
        target/iscsi: Fix mutual CHAP auth on big-endian arches
        target_core_sbc: use noop for SYNCHRONIZE_CACHE
      a607a114
    • Linus Torvalds's avatar
      Merge tag 'md-3.9-fixes' of git://neil.brown.name/md · 22c3f2ff
      Linus Torvalds authored
      Pull md fixes from NeilBrown:
       "A few bugfixes for md
      
         - recent regressions in raid5
         - recent regressions in dmraid
         - a few instances of CONFIG_MULTICORE_RAID456 linger
      
        Several tagged for -stable"
      
      * tag 'md-3.9-fixes' of git://neil.brown.name/md:
        md: remove CONFIG_MULTICORE_RAID456 entirely
        md/raid5: ensure sync and DISCARD don't happen at the same time.
        MD: Prevent sysfs operations on uninitialized kobjects
        MD RAID5: Avoid accessing gendisk or queue structs when not available
        md/raid5: schedule_construction should abort if nothing to do.
      22c3f2ff
    • Linus Torvalds's avatar
      Merge tag 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev · c8c1f167
      Linus Torvalds authored
      Pull libata updates from Jeff Garzik:
       "Simple stuff.  See one-line summaries."
      
      * tag 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
        pata_samsung_cf: use module_platform_driver_probe()
        [libata] Avoid specialized TLA's in ZPODD's Kconfig
        libata-acpi.c: fix copy and paste mistake in ata_acpi_register_power_resource
        sata_fsl: Remove redundant NULL check before kfree
        ahci: Add Device IDs for Intel Wellsburg PCH
        ata_piix: Add MODULE_PARM_DESC to prefer_ms_hyperv
      c8c1f167
    • Linus Torvalds's avatar
      Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · df2a8f39
      Linus Torvalds authored
      Pull i2c fixes from Wolfram Sang:
       "One bugfix for the tegra driver.  Two updates regarding email
        addresses and MAINTAINERS which I like to have up-to-date so people
        can be reached immediately.  While we are here, there is on PCI_ID
        addition."
      
      * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        MAINTAINERS: add maintainer entry for atmel i2c driver
        i2c: Fix my e-mail address in drivers and documentation
        i2c: iSMT: add Intel Avoton DeviceIDs
        i2c: tegra: check the clk_prepare_enable() return value
      df2a8f39