1. 05 May, 2014 1 commit
  2. 30 Apr, 2014 26 commits
    • Kumar Gala's avatar
      clk: qcom: Various fixes for MSM8960's global clock controller · 2c07e3c7
      Kumar Gala authored
      * Remove CE2_SLEEP_CLK, doesn't exist on 8960 family SoCs
      * Fix incorrect offset for PMIC_SSBI2_RESET
      * Fix typo:
      	SIC_TIC -> SPS_TIC_H
      	SFAB_ADM0_M2_A_CLK -> SFAB_ADM0_M2_H_CLK
      * Fix naming convention:
      	SFAB_CFPB_S_HCLK -> SFAB_CFPB_S_H_CLK
      	SATA_SRC_CLK -> SATA_CLK_SRC
      Signed-off-by: default avatarKumar Gala <galak@codeaurora.org>
      Reviewed-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      2c07e3c7
    • Kumar Gala's avatar
      clk: qcom: Add basic support for APQ8064 global clock controller clocks · 2d85a713
      Kumar Gala authored
      The APQ8064 and MSM8960 share a significant amount of clock data and
      code between the two SoCs.  Rather than duplicating the data we just add
      support for a unqiue APQ8064 clock table into the MSM8960 code.
      
      For now add just enough clocks to get a basic serial port going on an
      APQ8064 device.
      Signed-off-by: default avatarKumar Gala <galak@codeaurora.org>
      Reviewed-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      [mturquette@linaro.org: trivial conflict due to missing ipq8064 support]
      2d85a713
    • Stephen Boyd's avatar
      clk: qcom: Consolidate common probe code · 49fc825f
      Stephen Boyd authored
      Most of the probe code is the same between all the different
      clock controllers. Consolidate the code into a common.c file.
      This makes changes to the common probe parts easier and reduces
      chances for bugs.
      Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      49fc825f
    • Stephen Boyd's avatar
      clk: Ignore error and NULL pointers passed to clk_{unprepare, disable}() · 63589e92
      Stephen Boyd authored
      This simplifies error paths in drivers that use optional clocks
      by allowing the NULL or error pointer to be passed
      unconditionally.
      Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      63589e92
    • Stephen Boyd's avatar
      clk: Consolidate recalc rate logic · 8f2c2db1
      Stephen Boyd authored
      The same if-else statement exists four times to recalculate the
      rate of a clock. Consolidate this logic into a single function to
      save some lines.
      Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      8f2c2db1
    • Stephen Boyd's avatar
      clk: Don't check for missing ops in clk_set_parent() · 86a61234
      Stephen Boyd authored
      We dereference clk->ops during clock registration so this check
      for NULL ops can't possibly ever be true.
      Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      86a61234
    • Alex Elder's avatar
      ARM: dts: use real clocks for bcm21664 · 8d90c5af
      Alex Elder authored
      Replace the "fake" fixed-rate clocks used previously for the
      bcm21664 family with "real" ones.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Acked-by: default avatarMatt Porter <mporter@linaro.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      8d90c5af
    • Alex Elder's avatar
      clk: bcm21664: use common clock framework · 7d3723ba
      Alex Elder authored
      Define the set of CCUs and provided clocks sufficient to satisfy the
      needs of all the existing clock references for BCM21664.  Replace
      the "fake" fixed-rate clocks used previously with "real" ones.
      
      Note that only the minimal set of these clocks and CCUs is defined
      here.  More clock definitions will need to be added as required by
      the addition of additional drivers.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      7d3723ba
    • Alex Elder's avatar
      ARM: dts: define clock binding for bcm21664 · 7f2ce168
      Alex Elder authored
      Document the device tree binding for Broadcom BCM28164 clock control
      units and clocks.  This SoC uses Kona CCUs, similar to the BCM281XX
      SoC family.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      7f2ce168
    • Alex Elder's avatar
      ARM: dts: revise kona clock binding document · 5bcb5926
      Alex Elder authored
      The next patch defines a binding for a new Broadcom SoC that uses
      Kona style CCUs for its clocks.  Update the generic Kona clock
      binding document so it's more natural to accomodate the definitions
      of additional SoC families.
      
      Specifically:
          - Define the compatible string values generically, referring
            to specific per-model values later in the document.
          - Put the device tree example immediately after the required
            properties listing, before the tables of SoC-specific values.
          - Clearly identify the start of the section defining specific
            values related to the BCM281XX family
          - Add a list of the specific BCM281XX family compatible strings.
          - Reword the description of the table slightly.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      5bcb5926
    • Alex Elder's avatar
      clk: bcm281xx: move compatible string definitions · 0bdab78b
      Alex Elder authored
      The Broadcom 281xx clock code uses a #define for the compatible
      string for it's clock control units (CCUs).  Rather than defining
      those in the C source file, define them in the header file that's
      shared by both the code and the device tree source file (along with
      all the clock ids).
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      0bdab78b
    • Alex Elder's avatar
      clk: bcm281xx: add clock hysteresis support · dc613840
      Alex Elder authored
      Add support for clock gate hysteresis control.  For now, if it's
      defined for a clock, it's enabled.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      dc613840
    • Alex Elder's avatar
      clk: bcm281xx: add clock policy support · a597facc
      Alex Elder authored
      Add support for CCU policy engine control, and also for setting the
      mask bits for bus clocks that require a policy change to get
      activated.  This includes adding validity checking framework for
      CCUs, to validate the policy fields if defined.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      a597facc
    • Alex Elder's avatar
      clk: bcm281xx: define CCU clock data statically · 03548ec0
      Alex Elder authored
      Rather than "manually" setting up each CCU's clock entries at run
      time, define a flexible array of generic Kona clock structures
      within the CCU structure itself.  Each of these entries contains
      generic kona clock information (like its CCU pointer and clock
      framework initialization data).  Each also has a pointer to a
      structure contianing clock type-dependent initialization data
      (like register definitions).
      
      Since we'll iterate over these arrays we need to be sure they have
      slots for all potential clock index values.  (E.g. for the root CCU
      we must have at least BCM281XX_ROOT_CCU_CLOCK_COUNT slots.)  To
      ensure this we always define an extra entry and fill it using the
      special initializer LAST_KONA_CLK.
      
      Just about everything we need to know about a clock can be defined
      statically.  As a result, kona_clk_setup() can be changed to take
      just a kona_clk structure as its argument, and peri_clk_setup() can
      be simplified.  With the information pre-defined we are also able
      to handle most clock setup genericially.  We can do away with the
      CCU-specific callback functions that previously were needed to set
      up the entries in CCU's clock array.
      
      Move the definition of the ccu_data structure down in "clk-kona.h"
      to avoid a forward dependency.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      03548ec0
    • Alex Elder's avatar
      clk: bcm281xx: initialize CCU structures statically · b12151ca
      Alex Elder authored
      We know up front how many CCU's we'll support, so there's no need to
      allocate their data structures dynamically.  Define a macro
      KONA_CCU_COMMON() to simplify the initialization of many of the
      fields in a ccu_data structure.  Pass the address of a statically
      defined CCU structure to kona_dt_ccu_setup() rather than having that
      function allocate one.
      
      We also know at build time how many clocks a given CCU will provide,
      though the number of of them for each CCU is different.  Record the
      number of clocks we need in the CCU's clk_onecell_data struct
      (which is used when we register the CCU with the common clock code
      as a clock provider).  Rename that struct field "clk_data" (because
      "data" alone gets a little confusing).
      
      Use the known clock count to move the allocation of each CCU's
      clocks array into ccu_clks_setup() rather than having each CCU's
      setup callback function do it.
      
      (The real motivation behind all of this is that we'll be doing some
      static initialization of some additional CCU-specific data soon.)
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      b12151ca
    • Alex Elder's avatar
      clk: bcm281xx: change some symbol names · 9d3d87c7
      Alex Elder authored
      As I developed the bcm281xx clock code I understood there were
      restrictions on device tree "compatible" strings names, and as a
      result "bcm11351" was used in places despite the part family being
      more properly called "bcm281xx".  This can be a little confusing.
      
      In some cases I went to far and things using "bcm11351" when that
      was not necessary.
      
      This patch remedies this.  It renames the symbol used to define the
      "compatible" string (but not its value) so it uses "BCM281XX".
      Similarly, the name names provided to the CLK_OF_DECLARE() macro
      are changed, hoping to minimize the number of places that the
      confusing "11351" string is used.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      9d3d87c7
    • Alex Elder's avatar
      clk: bcm281xx: use init_data.name for clock name · e7563252
      Alex Elder authored
      Use the init_data.name field to hold the name of a Kona clock rather
      than duplicating it.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      e7563252
    • Alex Elder's avatar
      clk: bcm281xx: warn if ccu_wait_bit() fails · 4bac65ca
      Alex Elder authored
      Don't let a failure of ccu_wait_bit() go unnoticed.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      4bac65ca
    • Maxime COQUELIN's avatar
      clk: divider: Optimize clk_divider_bestdiv loop · 0e2de78e
      Maxime COQUELIN authored
      Currently, the for-loop used to try all the different dividers to find the
      one that best fit tries all the values from 1 to max_div, incrementing by one.
      In case of power-of-two, or table based divider, the loop isn't optimal.
      
      Instead of incrementing by one, this patch provides directly the next divider.
      Signed-off-by: default avatarMaxime Coquelin <maxime.coquelin@st.com>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      0e2de78e
    • Maxime COQUELIN's avatar
      clk: divider: Add round to closest divider · 774b5143
      Maxime COQUELIN authored
      In some cases, we want to be able to round the divider to the closest one,
      instead than rounding up.
      
      This patch adds a new CLK_DIVIDER_ROUND_CLOSEST flag to specify the divider
      has to round to closest div, keeping rounding up as de default behaviour.
      Signed-off-by: default avatarMaxime Coquelin <maxime.coquelin@st.com>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      774b5143
    • Stephen Boyd's avatar
      clk: Fix slab corruption in clk_unregister() · 874f224c
      Stephen Boyd authored
      When a clock is unregsitered, we iterate over the list of
      children and reparent them to NULL (i.e. orphan list). While
      iterating the list, we should use the safe iterators because the
      children list for this clock is changing when we reparent the
      children to NULL. Failure to iterate safely can lead to slab
      corruption like this:
      
      =============================================================================
      BUG kmalloc-128 (Not tainted): Poison overwritten
      -----------------------------------------------------------------------------
      
      Disabling lock debugging due to kernel taint
      INFO: 0xed0c4900-0xed0c4903. First byte 0x0 instead of 0x6b
      INFO: Allocated in clk_register+0x20/0x1bc age=297 cpu=2 pid=70
       __slab_alloc.isra.39.constprop.42+0x410/0x454
       kmem_cache_alloc_trace+0x200/0x24c
       clk_register+0x20/0x1bc
       devm_clk_register+0x34/0x68
       0xbf0000f0
       platform_drv_probe+0x18/0x48
       driver_probe_device+0x94/0x360
       __driver_attach+0x94/0x98
       bus_for_each_dev+0x54/0x88
       bus_add_driver+0xe8/0x204
       driver_register+0x78/0xf4
       do_one_initcall+0xc4/0x17c
       load_module+0x19ac/0x2294
       SyS_init_module+0xa4/0x110
       ret_fast_syscall+0x0/0x48
      INFO: Freed in clk_unregister+0xd4/0x140 age=23 cpu=2 pid=73
       __slab_free+0x38/0x41c
       clk_unregister+0xd4/0x140
       release_nodes+0x164/0x1d8
       __device_release_driver+0x60/0xb0
       driver_detach+0xb4/0xb8
       bus_remove_driver+0x5c/0xc4
       SyS_delete_module+0x148/0x1d8
       ret_fast_syscall+0x0/0x48
      INFO: Slab 0xeec50b90 objects=25 used=0 fp=0xed0c5400 flags=0x4080
      INFO: Object 0xed0c48c0 @offset=2240 fp=0xed0c4a00
      
      Bytes b4 ed0c48b0: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a  ZZZZZZZZZZZZZZZZ
      Object ed0c48c0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
      Object ed0c48d0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
      Object ed0c48e0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
      Object ed0c48f0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
      Object ed0c4900: 00 00 00 00 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  ....kkkkkkkkkkkk
      Object ed0c4910: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
      Object ed0c4920: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
      Object ed0c4930: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5  kkkkkkkkkkkkkkk.
      Redzone ed0c4940: bb bb bb bb                                      ....
      Padding ed0c49e8: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a  ZZZZZZZZZZZZZZZZ
      Padding ed0c49f8: 5a 5a 5a 5a 5a 5a 5a 5a                          ZZZZZZZZ
      CPU: 3 PID: 75 Comm: mdev Tainted: G    B         3.14.0-11033-g2054ba5ca781 #35
      [<c0014be0>] (unwind_backtrace) from [<c0012240>] (show_stack+0x10/0x14)
      [<c0012240>] (show_stack) from [<c04b74a0>] (dump_stack+0x70/0xbc)
      [<c04b74a0>] (dump_stack) from [<c00f7a78>] (check_bytes_and_report+0xbc/0x100)
      [<c00f7a78>] (check_bytes_and_report) from [<c00f7c48>] (check_object+0x18c/0x218)
      [<c00f7c48>] (check_object) from [<c00f7efc>] (__free_slab+0x104/0x144)
      [<c00f7efc>] (__free_slab) from [<c04b6668>] (__slab_free+0x3dc/0x41c)
      [<c04b6668>] (__slab_free) from [<c014c008>] (load_elf_binary+0x88/0x12b4)
      [<c014c008>] (load_elf_binary) from [<c0105a44>] (search_binary_handler+0x78/0x18c)
      [<c0105a44>] (search_binary_handler) from [<c0106fc0>] (do_execve+0x490/0x5dc)
      [<c0106fc0>] (do_execve) from [<c0036b8c>] (____call_usermodehelper+0x134/0x168)
      [<c0036b8c>] (____call_usermodehelper) from [<c000f048>] (ret_from_fork+0x14/0x2c)
      FIX kmalloc-128: Restoring 0xed0c4900-0xed0c4903=0x6b
      
      Fixes: fcb0ee6a (clk: Implement clk_unregister)
      Cc: Jiada Wang <jiada_wang@mentor.com>
      Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
      Cc: Kyungmin Park <kyungmin.park@samsung.com>
      Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      Cc: stable@vger.kernel.org
      874f224c
    • Stephen Boyd's avatar
      clk: Fix double free due to devm_clk_register() · 293ba3b4
      Stephen Boyd authored
      Now that clk_unregister() frees the struct clk we're
      unregistering we'll free memory twice: first we'll call kfree()
      in __clk_release() with an address kmalloc doesn't know about and
      second we'll call kfree() in the devres layer. Remove the
      allocation of struct clk in devm_clk_register() and let
      clk_release() handle it. This fixes slab errors like:
      
      =============================================================================
      BUG kmalloc-128 (Not tainted): Invalid object pointer 0xed08e8d0
      -----------------------------------------------------------------------------
      
      Disabling lock debugging due to kernel taint
      INFO: Slab 0xeec503f8 objects=25 used=15 fp=0xed08ea00 flags=0x4081
      CPU: 2 PID: 73 Comm: rmmod Tainted: G    B         3.14.0-11032-g526e9c764381 #34
      [<c0014be0>] (unwind_backtrace) from [<c0012240>] (show_stack+0x10/0x14)
      [<c0012240>] (show_stack) from [<c04b74dc>] (dump_stack+0x70/0xbc)
      [<c04b74dc>] (dump_stack) from [<c00f6778>] (slab_err+0x74/0x84)
      [<c00f6778>] (slab_err) from [<c04b6278>] (free_debug_processing+0x2cc/0x31c)
      [<c04b6278>] (free_debug_processing) from [<c04b6300>] (__slab_free+0x38/0x41c)
      [<c04b6300>] (__slab_free) from [<c03931bc>] (clk_unregister+0xd4/0x140)
      [<c03931bc>] (clk_unregister) from [<c02fb774>] (release_nodes+0x164/0x1d8)
      [<c02fb774>] (release_nodes) from [<c02f8698>] (__device_release_driver+0x60/0xb0)
      [<c02f8698>] (__device_release_driver) from [<c02f9080>] (driver_detach+0xb4/0xb8)
      [<c02f9080>] (driver_detach) from [<c02f8480>] (bus_remove_driver+0x5c/0xc4)
      [<c02f8480>] (bus_remove_driver) from [<c008c9b8>] (SyS_delete_module+0x148/0x1d8)
      [<c008c9b8>] (SyS_delete_module) from [<c000ef80>] (ret_fast_syscall+0x0/0x48)
      FIX kmalloc-128: Object at 0xed08e8d0 not freed
      
      Fixes: fcb0ee6a (clk: Implement clk_unregister)
      Cc: Jiada Wang <jiada_wang@mentor.com>
      Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
      Cc: Kyungmin Park <kyungmin.park@samsung.com>
      Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      Cc: stable@vger.kernel.org
      293ba3b4
    • Mike Turquette's avatar
      Merge tag 'socfpga-clk-fix-for-3.15' of... · 2aa6dd07
      Mike Turquette authored
      Merge tag 'socfpga-clk-fix-for-3.15' of git://git.rocketboards.org/linux-socfpga-next into clk-fixes-socfpga
      
      clk: socfpga: clock fix for v3.15
      
      Currently on 3.15-rc1, the SOCFPGA platform is unable to boot. This patch
      fixes the issue and allows the platform to boot.
      2aa6dd07
    • Dinh Nguyen's avatar
      clk: socfpga: fix clock driver for 3.15 · a30d27ed
      Dinh Nguyen authored
      commit [1771b10d clk: respect the clock dependencies in of_clk_init]
      exposed a flaw in the socfpga clock driver and prevents the platform
      from booting on 3.15-rc1.
      
      Because the "altr,clk-mgr" is not really a clock, it should not be using
      CLK_OF_DECLARE, instead we should be mapping the clk-mgr's base address
      one of the functional clock init function. Use the socfpga_pll_init function
      to map the clk_mgr_base_addr as this clock should always be initialized first.
      Signed-off-by: default avatarDinh Nguyen <dinguyen@altera.com>
      Tested-by: default avatarPavel Machek <pavel@denx.de>
      a30d27ed
    • Maxime COQUELIN's avatar
      clk: divider: Fix best div calculation for power-of-two and table dividers · dd23c2cd
      Maxime COQUELIN authored
      The divider returned by clk_divider_bestdiv() is likely to be invalid in case
      of power-of-two and table dividers when CLK_SET_RATE_PARENT flag isn't set.
      
      Fixes boot on STiH416 platform.
      Signed-off-by: default avatarMaxime Coquelin <maxime.coquelin@st.com>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      [mturquette@linaro.org: trivial merge conflict & updated changelog]
      dd23c2cd
    • Alex Elder's avatar
      clk: bcm281xx: don't use unnamed structs or unions · e813d49d
      Alex Elder authored
      The Broadcom Kona clock code, as originally written, made use of
      unnamed union and struct fields.  This is a feature present in C11,
      and is a GNU extension otherwise.  It worked very well for me.
      
      Unfortunately, Russell King reported that this feature was not
      supported in a build environment he used, which meant attempting
      to build this code failed spectacularly.
      
      Add names to these unnamed fields, and update the code accordingly.
      Reported-by: default avatarRussell King <linux@arm.linux.org.uk>
      Tested-by: default avatarMarkus Mayer <markus.mayer@linaro.org>
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarMike Turquette <mturquette@linaro.org>
      e813d49d
  3. 28 Apr, 2014 1 commit
  4. 27 Apr, 2014 11 commits
    • Will Deacon's avatar
      word-at-a-time: avoid undefined behaviour in zero_bytemask macro · ec6931b2
      Will Deacon authored
      The asm-generic, big-endian version of zero_bytemask creates a mask of
      bytes preceding the first zero-byte by left shifting ~0ul based on the
      position of the first zero byte.
      
      Unfortunately, if the first (top) byte is zero, the output of
      prep_zero_mask has only the top bit set, resulting in undefined C
      behaviour as we shift left by an amount equal to the width of the type.
      As it happens, GCC doesn't manage to spot this through the call to fls(),
      but the issue remains if architectures choose to implement their shift
      instructions differently.
      
      An example would be arch/arm/ (AArch32), where LSL Rd, Rn, #32 results
      in Rd == 0x0, whilst on arch/arm64 (AArch64) LSL Xd, Xn, #64 results in
      Xd == Xn.
      
      Rather than check explicitly for the problematic shift, this patch adds
      an extra shift by 1, replacing fls with __fls. Since zero_bytemask is
      never called with a zero argument (has_zero() is used to check the data
      first), we don't need to worry about calling __fls(0), which is
      undefined.
      
      Cc: <stable@vger.kernel.org>
      Cc: Victor Kamensky <victor.kamensky@linaro.org>
      Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ec6931b2
    • Linus Torvalds's avatar
      Merge branch 'safe-dirty-tlb-flush' · ac6c9e2b
      Linus Torvalds authored
      This merges the patch to fix possible loss of dirty bit on munmap() or
      madvice(DONTNEED).  If there are concurrent writers on other CPU's that
      have the unmapped/unneeded page in their TLBs, their writes to the page
      could possibly get lost if a third CPU raced with the TLB flush and did
      a page_mkclean() before the page was fully written.
      
      Admittedly, if you unmap() or madvice(DONTNEED) an area _while_ another
      thread is still busy writing to it, you deserve all the lost writes you
      could get.  But we kernel people hold ourselves to higher quality
      standards than "crazy people deserve to lose", because, well, we've seen
      people do all kinds of crazy things.
      
      So let's get it right, just because we can, and we don't have to worry
      about it.
      
      * safe-dirty-tlb-flush:
        mm: split 'tlb_flush_mmu()' into tlb flushing and memory freeing parts
      ac6c9e2b
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs · 33c0022f
      Linus Torvalds authored
      Pull btrfs fixes from Chris Mason.
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
        Btrfs: limit the path size in send to PATH_MAX
        Btrfs: correctly set profile flags on seqlock retry
        Btrfs: use correct key when repeating search for extent item
        Btrfs: fix inode caching vs tree log
        Btrfs: fix possible memory leaks in open_ctree()
        Btrfs: avoid triggering bug_on() when we fail to start inode caching task
        Btrfs: move btrfs_{set,clear}_and_info() to ctree.h
        btrfs: replace error code from btrfs_drop_extents
        btrfs: Change the hole range to a more accurate value.
        btrfs: fix use-after-free in mount_subvol()
      33c0022f
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm · 2b9d1c05
      Linus Torvalds authored
      Pull arm fixes from Russell King:
       "A number of fixes for the PJ4/iwmmxt changes which arm-soc forced me
        to take during the merge window.  This stuff should have been better
        tested and sorted out *before* the merge window"
      
      * 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
        ARM: 8042/1: iwmmxt: allow to build iWMMXt on Marvell PJ4B
        ARM: 8041/1: pj4: fix cpu_is_pj4 check
        ARM: 8040/1: pj4: properly detect existence of iWMMXt coprocessor
        ARM: 8039/1: pj4: enable iWMMXt only if CONFIG_IWMMXT is set
        ARM: 8038/1: iwmmxt: explicitly check for supported architectures
      2b9d1c05
    • Linus Torvalds's avatar
      Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · afa3cad7
      Linus Torvalds authored
      Pull arm64 fixes from Catalin Marinas:
       - compat renameat2 syscall wiring and __NR_compat_syscalls fix
       - TLB fix for transparent huge pages following switch to generic
         mmu_gather
       - spinlock initialisation for init_mm's context
       - move of_clk_init() earlier
       - Kconfig duplicate entry fix
      
      * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
        arm64: init: Move of_clk_init to time_init
        arm64: initialize spinlock for init_mm's context
        arm64: debug: remove noisy, pointless warning
        arm64: mm: Add THP TLB entries to general mmu_gather
        arm64: add renameat2 compat syscall
        ARM64: Remove duplicated Kconfig entry for "kernel/power/Kconfig"
        arm64: __NR_compat_syscalls fix
      afa3cad7
    • Linus Torvalds's avatar
      Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d9e9e8e2
      Linus Torvalds authored
      Pull irq fixes from Thomas Gleixner:
       "A slighlty large fix for a subtle issue in the CPU hotplug code of
        certain ARM SoCs, where the not yet online cpu needs to setup the cpu
        local timer and needs to set the interrupt affinity to itself.
        Setting interrupt affinity to a not online cpu is prohibited and
        therefor the timer interrupt ends up on the wrong cpu, which leads to
        nasty complications.
      
        The SoC folks tried to hack around that in the SoC code in some more
        than nasty ways.  The proper solution is to have a way to enforce the
        affinity setting to a not online cpu.  The core patch to the genirq
        code provides that facility and the follow up patches make use of it
        in the GIC interrupt controller and the exynos timer driver.
      
        The change to the core code has no implications to existing users,
        except for the rename of the locked function and therefor the
        necessary fixup in mips/cavium.  Aside of that, no runtime impact is
        possible, as none of the existing interrupt chips implements anything
        which depends on the force argument of the irq_set_affinity()
        callback"
      
      * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        clocksource: Exynos_mct: Register clock event after request_irq()
        clocksource: Exynos_mct: Use irq_force_affinity() in cpu bringup
        irqchip: Gic: Support forced affinity setting
        genirq: Allow forcing cpu affinity of interrupts
      d9e9e8e2
    • Linus Torvalds's avatar
      Merge tag 'tty-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty · a8d70698
      Linus Torvalds authored
      Pull tty/serial fixes from Greg KH:
       "Here are a few tty/serial fixes for 3.15-rc3 that resolve a number of
        reported issues in the 8250 and samsung serial drivers, as well as a
        character loss fix for the tty core that was caused by the lock
        removal patches a release ago"
      
      * tag 'tty-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
        serial_core: fix uart PORT_UNKNOWN handling
        serial: samsung: Change barrier() to cpu_relax() in console output
        serial: samsung: don't check config for every character
        serial: samsung: Use the passed in "port", fixing kgdb w/ no console
        serial: 8250: Fix thread unsafe __dma_tx_complete function
        8250_core: Fix unwanted TX chars write
        tty: Fix race condition between __tty_buffer_request_room and flush_to_ldisc
      a8d70698
    • Linus Torvalds's avatar
      Merge tag 'staging-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging · d0c15ad7
      Linus Torvalds authored
      Pull staging / IIO driver fixes from Greg KH:
       "Here are some small staging and IIO driver fixes for 3.15-rc3.
      
        Nothing major at all, just some assorted issues that people have
        reported"
      
      * tag 'staging-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
        staging: comedi: usbdux: bug fix for accessing 'ao_chanlist' in private data
        iio: adc: mxs-lradc: fix warning when buidling on avr32
        iio: cm36651: Fix i2c client leak and possible NULL pointer dereference
        iio: querying buffer scan_mask should return 0/1
        staging:iio:ad2s1200 fix a missing break
        iio: adc: at91_adc: correct default shtim value
        ARM: at91: at91sam9260: change at91_adc name
        ARM: at91: at91sam9g45: change at91_adc name
        iio: cm32181: Fix read integration time function
        iio: adc: at91_adc: Repair broken platform_data support
      d0c15ad7
    • Linus Torvalds's avatar
      Merge tag 'driver-core-3.15-rc3' of... · 005fbcd0
      Linus Torvalds authored
      Merge tag 'driver-core-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
      
      Pull driver core fixes from Greg KH:
       "Here are some kernfs fixes for 3.15-rc3 that resolve some reported
        problems.  Nothing huge, but all needed"
      
      * tag 'driver-core-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
        s390/ccwgroup: Fix memory corruption
        kernfs: add back missing error check in kernfs_fop_mmap()
        kernfs: fix a subdir count leak
      005fbcd0
    • Linus Torvalds's avatar
      Merge tag 'usb-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · fefb8275
      Linus Torvalds authored
      Pull USB fixes from Greg KH:
       "Here are a number of USB fixes for 3.15-rc3.  The majority are gadget
        fixes, as we didn't get any of those in for 3.15-rc2.  The others are
        all over the place, and there's a number of new device id addtions as
        well."
      
      * tag 'usb-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (35 commits)
        usb: option: add and update a number of CMOTech devices
        usb: option: add Alcatel L800MA
        usb: option: add Olivetti Olicard 500
        usb: qcserial: add Sierra Wireless MC7305/MC7355
        usb: qcserial: add Sierra Wireless MC73xx
        usb: qcserial: add Sierra Wireless EM7355
        USB: io_ti: fix firmware download on big-endian machines
        usb/xhci: fix compilation warning when !CONFIG_PCI && !CONFIG_PM
        xhci: extend quirk for Renesas cards
        xhci: Switch Intel Lynx Point ports to EHCI on shutdown.
        usb: xhci: Prefer endpoint context dequeue pointer over stopped_trb
        phy: core: make NULL a valid phy reference if !CONFIG_GENERIC_PHY
        phy: fix kernel oops in phy_lookup()
        phy: restore OMAP_CONTROL_PHY dependencies
        phy: exynos: fix building as a module
        USB: serial: fix sysfs-attribute removal deadlock
        usb: wusbcore: fix panic in wusbhc_chid_set
        usb: wusbcore: convert nested lock to use spin_lock instead of spin_lock_irq
        uwb: don't call spin_unlock_irq in a USB completion handler
        usb: chipidea: coordinate usb phy initialization for different phy type
        ...
      fefb8275
    • Linus Torvalds's avatar
      Merge tag 'pm+acpi-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · e9dba837
      Linus Torvalds authored
      Pull ACPI and power management fixes from Rafael Wysocki:
       "These include a fix for a recent ACPI regression related to device
        notifications, intel_idle fix related to IvyTown support, fix for a
        buffer size issue in ACPICA, PM core fix related to the "freeze" sleep
        state, four fixes for various types of breakage in cpufreq drivers, a
        PNP workaround for a wrong memory region size in ACPI tables, and a
        fix and cleanup for the ACPI tools Makefile.
      
        Specifics:
      
         - Fix for broken ACPI notifications on some systems caused by a
           recent ACPI hotplug commit that blocked the propagation of unknown
           type notifications to device drivers inadvertently.
      
         - intel_idle fix to make the IvyTown C-states handling (added
           recently) work as intended which now is broken due to missing
           braces.  From Christoph Jaeger.
      
         - ACPICA fix to make it allocate buffers of the right sizes for the
           Generic Serial Bus operation region access.  From Lv Zheng.
      
         - PM core fix unblocking cpuidle before entering the "freeze" sleep
           state which causes that state to be able to actually save more
           energy than runtime idle.
      
         - Configuration and build fixes for the highbank and powernv cpufreq
           drivers from Kefeng Wang and Srivatsa S Bhat.
      
         - Coccinelle warning fix related to error pointers for the unicore32
           cpufreq driver from Duan Jiong.
      
         - Integer overflow fix for the ppc-corenet cpufreq driver from Geert
           Uytterhoeven.
      
         - Workaround for BIOSes that don't report the entire Intel MCH area
           in their ACPI tables from Bjorn Helgaas.
      
         - ACPI tools Makefile fix and cleanup from Thomas Renninger"
      
      * tag 'pm+acpi-3.15-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI / notify: Do not block unknown type notifications in root handler
        PNP: Work around BIOS defects in Intel MCH area reporting
        cpufreq: highbank: fix ARM_HIGHBANK_CPUFREQ dependency warning
        cpufreq: ppc: Fix integer overflow in expression
        cpufreq, powernv: Fix build failure on UP
        cpufreq: unicore32: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO
        PM / suspend: Make cpuidle work in the "freeze" state
        intel_idle: fix IVT idle state table setting
        ACPICA: Fix buffer allocation issue for generic_serial_bus region accesses.
        tools/power/acpi: Minor bugfixes
      e9dba837
  5. 26 Apr, 2014 1 commit
    • Chris Mason's avatar
      Btrfs: limit the path size in send to PATH_MAX · cfd4a535
      Chris Mason authored
      fs_path_ensure_buf is used to make sure our path buffers for
      send are big enough for the path names as we construct them.
      The buffer size is limited to 32K by the length field in
      the struct.
      
      But bugs in the path construction can end up trying to build
      a huge buffer, and we'll do invalid memmmoves when the
      buffer length field wraps.
      
      This patch is step one, preventing the overflows.
      Signed-off-by: default avatarChris Mason <clm@fb.com>
      cfd4a535