1. 22 9月, 2013 2 次提交
    • L
      iio: Add iio_push_buffers_with_timestamp() helper · d2c3d072
      Lars-Peter Clausen 提交于
      Drivers using software buffers often store the timestamp in their data buffer
      before calling iio_push_to_buffers() with that data buffer. Storing the
      timestamp in the buffer usually involves some ugly pointer arithmetic. This
      patch adds a new helper function called iio_push_buffers_with_timestamp() which
      is similar to iio_push_to_buffers but takes an additional timestamp parameter.
      The function will help to hide to uglyness in one central place instead of
      exposing it in every driver. If timestamps are enabled for the IIO device
      iio_push_buffers_with_timestamp() will store the timestamp as the last element
      in buffer, before passing the buffer on to iio_push_buffers(). The buffer needs
      large enough to hold the timestamp in this case. If timestamps are disabled
      iio_push_buffers_with_timestamp() will behave just like iio_push_buffers().
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Cc: Oleksandr Kravchenko <o.v.kravchenko@globallogic.com>
      Cc: Josh Wu <josh.wu@atmel.com>
      Cc: Denis Ciocca <denis.ciocca@gmail.com>
      Cc: Manuel Stahl <manuel.stahl@iis.fraunhofer.de>
      Cc: Ge Gao <ggao@invensense.com>
      Cc: Peter Meerwald <pmeerw@pmeerw.net>
      Cc: Jacek Anaszewski <j.anaszewski@samsung.com>
      Cc: Fabio Estevam <fabio.estevam@freescale.com>
      Cc: Marek Vasut <marex@denx.de>
      Signed-off-by: NJonathan Cameron <jic23@kernel.org>
      d2c3d072
    • Z
      iio: ti_am335x_adc: Add continuous sampling support · ca9a5638
      Zubair Lutfullah 提交于
      Previously the driver had only one-shot reading functionality.
      This patch adds continuous sampling support to the driver.
      
      Continuous sampling starts when buffer is enabled.
      HW IRQ wakes worker thread that pushes samples to userspace.
      Sampling stops when buffer is disabled by userspace.
      
      Patil Rachna (TI) laid the ground work for ADC HW register access.
      Russ Dill (TI) fixed bugs in the driver relevant to FIFOs and IRQs.
      
      I fixed channel scanning so multiple ADC channels can be read
      simultaneously and pushed to userspace.
      Restructured the driver to fit IIO ABI.
      And added INDIO_BUFFER_HARDWARE mode.
      Signed-off-by: NZubair Lutfullah <zubair.lutfullah@gmail.com>
      Acked-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NRuss Dill <Russ.Dill@ti.com>
      Acked-by: NLee Jones <lee.jones@linaro.org>
      Acked-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NJonathan Cameron <jic23@kernel.org>
      ca9a5638
  2. 16 9月, 2013 4 次提交
  3. 15 9月, 2013 2 次提交
    • L
      iio: pressure-core: st: Allow for number of channels to vary · ea01f2c1
      Lee Jones 提交于
      At the moment the number of channels specified is dictated by the first
      sensor supported by the driver. As we add support for more sensors this
      is likely to vary. Instead of using the ARRAY_SIZE() of the LPS331AP's
      channel specifier we'll use a new adaptable 'struct st_sensors' element
      instead.
      Signed-off-by: NLee Jones <lee.jones@linaro.org>
      Acked-by: NDenis Ciocca <denis.ciocca@st.com>
      Signed-off-by: NJonathan Cameron <jic23@kernel.org>
      ea01f2c1
    • P
      iio: Add INT_TIME (integration time) channel info attribute · 899d90bd
      Peter Meerwald 提交于
      Integration time is in seconds; it controls the measurement
      time and influences the gain of a sensor.
      
      There are two typical ways that scaling is implemented in a device:
      1) input amplifier,
      2) reference to the ADC is changed.
      These both result in the accuracy of the ADC varying (by applying its
      sampling over a more relevant range).
      
      Integration time is a way of dealing with noise inherent in the analog
      sensor itself.  In the case of a light sensor, a mixture of photon noise
      and device specific noise.  Photon noise is dealt with by either improving
      the efficiency of the sensor, (more photons actually captured) which is not
      easily varied dynamically, or by integrating the measurement over a longer
      time period.  Note that this can also be thought of as an averaging of a
      number of individual samples and is infact sometimes implemented this way.
      Altering integration time implies that the duration of a measurement changes,
      a fact the device's user may be interested in.
      
      Hence it makes sense to distinguish between integration time and simple
      scale. In some devices both types of control are present and whilst they
      will have similar effects on the amplitude of the reading, their effect
      on the noise of the measurements will differ considerably.
      
      Used by adjd_s311, tsl4531, tcs3472
      The following drivers have similar controls (and could be adapted):
      * tsl2563 (integration time is controlled via CALIBSCALE among other things)
      * tsl2583 (has integration_time device_attr, but driver doesn't use channels yet)
      * tsl2x7x (has integration_time attr)
      Signed-off-by: NPeter Meerwald <pmeerw@pmeerw.net>
      Cc: Jon Brenner <jon.brenner@ams.com>
      Signed-off-by: NJonathan Cameron <jic23@kernel.org>
      899d90bd
  4. 01 9月, 2013 1 次提交
  5. 30 8月, 2013 1 次提交
  6. 18 8月, 2013 1 次提交
  7. 16 8月, 2013 1 次提交
    • J
      Staging: olpc_dcon: replace some magic numbers · 98d4f93c
      Jens Frederich 提交于
      This patch replace some magic numbers. I believe it makes
      the driver more readable.
      
      The magic number 0x26 is the XO system embedded controller
      (EC) command 'DCON power enable/disable'.
      
      Number 0x41, and 0x42 are special memory controller settings
      register.  The 0x41 initialize bit sequence 0x101 means:
      enable memory power down function and special SDRAM clock
      delay for synchronize SDRAM output and clock signal.
      
      The 0x42 initialize squence 0x101 is wrong.  According to
      the specification Bit 8 is reserved, thus not in use.
      I removed it.
      Signed-off-by: NJens Frederich <jfrederich@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      98d4f93c
  8. 09 8月, 2013 1 次提交
  9. 08 8月, 2013 1 次提交
    • T
      SUNRPC: If the rpcbind channel is disconnected, fail the call to unregister · 786615bc
      Trond Myklebust 提交于
      If rpcbind causes our connection to the AF_LOCAL socket to close after
      we've registered a service, then we want to be careful about reconnecting
      since the mount namespace may have changed.
      
      By simply refusing to reconnect the AF_LOCAL socket in the case of
      unregister, we avoid the need to somehow save the mount namespace. While
      this may lead to some services not unregistering properly, it should
      be safe.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      Cc: Nix <nix@esperi.org.uk>
      Cc: Jeff Layton <jlayton@redhat.com>
      Cc: stable@vger.kernel.org # 3.9.x
      786615bc
  10. 07 8月, 2013 1 次提交
  11. 04 8月, 2013 4 次提交
  12. 03 8月, 2013 2 次提交
  13. 02 8月, 2013 1 次提交
  14. 01 8月, 2013 4 次提交
  15. 30 7月, 2013 1 次提交
    • C
      freezer: set PF_SUSPEND_TASK flag on tasks that call freeze_processes · 2b44c4db
      Colin Cross 提交于
      Calling freeze_processes sets a global flag that will cause any
      process that calls try_to_freeze to enter the refrigerator.  It
      skips sending a signal to the current task, but if the current
      task ever hits try_to_freeze, all threads will be frozen and the
      system will deadlock.
      
      Set a new flag, PF_SUSPEND_TASK, on the task that calls
      freeze_processes.  The flag notifies the freezer that the thread
      is involved in suspend and should not be frozen.  Also add a
      WARN_ON in thaw_processes if the caller does not have the
      PF_SUSPEND_TASK flag set to catch if a different task calls
      thaw_processes than the one that called freeze_processes, leaving
      a task with PF_SUSPEND_TASK permanently set on it.
      
      Threads that spawn off a task with PF_SUSPEND_TASK set (which
      swsusp does) will also have PF_SUSPEND_TASK set, preventing them
      from freezing while they are helping with suspend, but they need
      to be dead by the time suspend is triggered, otherwise they may
      run when userspace is expected to be frozen.  Add a WARN_ON in
      thaw_processes if more than one thread has the PF_SUSPEND_TASK
      flag set.
      Reported-and-tested-by: NMichael Leun <lkml20130126@newton.leun.net>
      Signed-off-by: NColin Cross <ccross@android.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      2b44c4db
  16. 29 7月, 2013 1 次提交
    • R
      Revert "cpuidle: Quickly notice prediction failure for repeat mode" · 14851912
      Rafael J. Wysocki 提交于
      Revert commit 69a37bea (cpuidle: Quickly notice prediction failure for
      repeat mode), because it has been identified as the source of a
      significant performance regression in v3.8 and later as explained by
      Jeremy Eder:
      
        We believe we've identified a particular commit to the cpuidle code
        that seems to be impacting performance of variety of workloads.
        The simplest way to reproduce is using netperf TCP_RR test, so
        we're using that, on a pair of Sandy Bridge based servers.  We also
        have data from a large database setup where performance is also
        measurably/positively impacted, though that test data isn't easily
        share-able.
      
        Included below are test results from 3 test kernels:
      
        kernel       reverts
        -----------------------------------------------------------
        1) vanilla   upstream (no reverts)
      
        2) perfteam2 reverts e11538d1
      
        3) test      reverts 69a37bea
                             e11538d1
      
        In summary, netperf TCP_RR numbers improve by approximately 4%
        after reverting 69a37bea.  When
        69a37bea is included, C0 residency
        never seems to get above 40%.  Taking that patch out gets C0 near
        100% quite often, and performance increases.
      
        The below data are histograms representing the %c0 residency @
        1-second sample rates (using turbostat), while under netperf test.
      
        - If you look at the first 4 histograms, you can see %c0 residency
          almost entirely in the 30,40% bin.
        - The last pair, which reverts 69a37bea,
          shows %c0 in the 80,90,100% bins.
      
        Below each kernel name are netperf TCP_RR trans/s numbers for the
        particular kernel that can be disclosed publicly, comparing the 3
        test kernels.  We ran a 4th test with the vanilla kernel where
        we've also set /dev/cpu_dma_latency=0 to show overall impact
        boosting single-threaded TCP_RR performance over 11% above
        baseline.
      
        3.10-rc2 vanilla RX + c0 lock (/dev/cpu_dma_latency=0):
        TCP_RR trans/s 54323.78
      
        -----------------------------------------------------------
        3.10-rc2 vanilla RX (no reverts)
        TCP_RR trans/s 48192.47
      
        Receiver %c0
            0.0000 -    10.0000 [     1]: *
           10.0000 -    20.0000 [     0]:
           20.0000 -    30.0000 [     0]:
           30.0000 -    40.0000 [    59]:
        ***********************************************************
           40.0000 -    50.0000 [     1]: *
           50.0000 -    60.0000 [     0]:
           60.0000 -    70.0000 [     0]:
           70.0000 -    80.0000 [     0]:
           80.0000 -    90.0000 [     0]:
           90.0000 -   100.0000 [     0]:
      
        Sender %c0
            0.0000 -    10.0000 [     1]: *
           10.0000 -    20.0000 [     0]:
           20.0000 -    30.0000 [     0]:
           30.0000 -    40.0000 [    11]: ***********
           40.0000 -    50.0000 [    49]:
        *************************************************
           50.0000 -    60.0000 [     0]:
           60.0000 -    70.0000 [     0]:
           70.0000 -    80.0000 [     0]:
           80.0000 -    90.0000 [     0]:
           90.0000 -   100.0000 [     0]:
      
        -----------------------------------------------------------
        3.10-rc2 perfteam2 RX (reverts commit
        e11538d1)
        TCP_RR trans/s 49698.69
      
        Receiver %c0
            0.0000 -    10.0000 [     1]: *
           10.0000 -    20.0000 [     1]: *
           20.0000 -    30.0000 [     0]:
           30.0000 -    40.0000 [    59]:
        ***********************************************************
           40.0000 -    50.0000 [     0]:
           50.0000 -    60.0000 [     0]:
           60.0000 -    70.0000 [     0]:
           70.0000 -    80.0000 [     0]:
           80.0000 -    90.0000 [     0]:
           90.0000 -   100.0000 [     0]:
      
        Sender %c0
            0.0000 -    10.0000 [     1]: *
           10.0000 -    20.0000 [     0]:
           20.0000 -    30.0000 [     0]:
           30.0000 -    40.0000 [     2]: **
           40.0000 -    50.0000 [    58]:
        **********************************************************
           50.0000 -    60.0000 [     0]:
           60.0000 -    70.0000 [     0]:
           70.0000 -    80.0000 [     0]:
           80.0000 -    90.0000 [     0]:
           90.0000 -   100.0000 [     0]:
      
        -----------------------------------------------------------
        3.10-rc2 test RX (reverts 69a37bea
        and e11538d1)
        TCP_RR trans/s 47766.95
      
        Receiver %c0
            0.0000 -    10.0000 [     1]: *
           10.0000 -    20.0000 [     1]: *
           20.0000 -    30.0000 [     0]:
           30.0000 -    40.0000 [    27]: ***************************
           40.0000 -    50.0000 [     2]: **
           50.0000 -    60.0000 [     0]:
           60.0000 -    70.0000 [     2]: **
           70.0000 -    80.0000 [     0]:
           80.0000 -    90.0000 [     0]:
           90.0000 -   100.0000 [    28]: ****************************
      
        Sender:
            0.0000 -    10.0000 [     1]: *
           10.0000 -    20.0000 [     0]:
           20.0000 -    30.0000 [     0]:
           30.0000 -    40.0000 [    11]: ***********
           40.0000 -    50.0000 [     0]:
           50.0000 -    60.0000 [     1]: *
           60.0000 -    70.0000 [     0]:
           70.0000 -    80.0000 [     3]: ***
           80.0000 -    90.0000 [     7]: *******
           90.0000 -   100.0000 [    38]: **************************************
      
        These results demonstrate gaining back the tendency of the CPU to
        stay in more responsive, performant C-states (and thus yield
        measurably better performance), by reverting commit
        69a37bea.
      Requested-by: NJeremy Eder <jeder@redhat.com>
      Tested-by: NLen Brown <len.brown@intel.com>
      Cc: 3.8+ <stable@vger.kernel.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      14851912
  17. 28 7月, 2013 1 次提交
  18. 26 7月, 2013 1 次提交
  19. 25 7月, 2013 1 次提交
  20. 24 7月, 2013 3 次提交
    • H
      Revert "crypto: crct10dif - Wrap crc_t10dif function all to use crypto transform framework" · e70308ec
      Herbert Xu 提交于
      This reverts commits
          67822649
          39761214
          0b95a7f8
          31d93962
          2d31e518
      
      Unfortunately this change broke boot on some systems that used an
      initrd which does not include the newly created crct10dif modules.
      As these modules are required by sd_mod under certain configurations
      this is a serious problem.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      e70308ec
    • B
      EDAC: Fix lockdep splat · 88d84ac9
      Borislav Petkov 提交于
      Fix the following:
      
      BUG: key ffff88043bdd0330 not in .data!
      ------------[ cut here ]------------
      WARNING: at kernel/lockdep.c:2987 lockdep_init_map+0x565/0x5a0()
      DEBUG_LOCKS_WARN_ON(1)
      Modules linked in: glue_helper sb_edac(+) edac_core snd acpi_cpufreq lrw gf128mul ablk_helper iTCO_wdt evdev i2c_i801 dcdbas button cryptd pcspkr iTCO_vendor_support usb_common lpc_ich mfd_core soundcore mperf processor microcode
      CPU: 2 PID: 599 Comm: modprobe Not tainted 3.10.0 #1
      Hardware name: Dell Inc. Precision T3600/0PTTT9, BIOS A08 01/24/2013
       0000000000000009 ffff880439a1d920 ffffffff8160a9a9 ffff880439a1d958
       ffffffff8103d9e0 ffff88043af4a510 ffffffff81a16e11 0000000000000000
       ffff88043bdd0330 0000000000000000 ffff880439a1d9b8 ffffffff8103dacc
      Call Trace:
        dump_stack
        warn_slowpath_common
        warn_slowpath_fmt
        lockdep_init_map
        ? trace_hardirqs_on_caller
        ? trace_hardirqs_on
        debug_mutex_init
        __mutex_init
        bus_register
        edac_create_sysfs_mci_device
        edac_mc_add_mc
        sbridge_probe
        pci_device_probe
        driver_probe_device
        __driver_attach
        ? driver_probe_device
        bus_for_each_dev
        driver_attach
        bus_add_driver
        driver_register
        __pci_register_driver
        ? 0xffffffffa0010fff
        sbridge_init
        ? 0xffffffffa0010fff
        do_one_initcall
        load_module
        ? unset_module_init_ro_nx
        SyS_init_module
        tracesys
      ---[ end trace d24a70b0d3ddf733 ]---
      EDAC MC0: Giving out device to 'sbridge_edac.c' 'Sandy Bridge Socket#0': DEV 0000:3f:0e.0
      EDAC sbridge: Driver loaded.
      
      What happens is that bus_register needs a statically allocated lock_key
      because the last is handed in to lockdep. However, struct mem_ctl_info
      embeds struct bus_type (the whole struct, not a pointer to it) and the
      whole thing gets dynamically allocated.
      
      Fix this by using a statically allocated struct bus_type for the MC bus.
      Signed-off-by: NBorislav Petkov <bp@suse.de>
      Acked-by: NMauro Carvalho Chehab <mchehab@infradead.org>
      Cc: Markus Trippelsdorf <markus@trippelsdorf.de>
      Cc: stable@kernel.org # v3.10
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      88d84ac9
    • A
      ARM: pxa: propagate errors from regulator_enable() to pxamci · a829abf8
      Arnd Bergmann 提交于
      The em_x270_mci_setpower() and em_x270_usb_hub_init() functions
      call regulator_enable(), which may return an error that must
      be checked.
      
      This changes the em_x270_usb_hub_init() function to bail out
      if it fails, and changes the pxamci_platform_data->setpower
      callback so that the a failed em_x270_mci_setpower call
      can be propagated by the pxamci driver into the mmc core.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Mike Rapoport <mike@compulab.co.il>
      Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
      Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
      Cc: Haojian Zhuang <haojian.zhuang@gmail.com>
      Acked-by: NChris Ball <cjb@laptop.org>
      [olof: fixed order of regulator_enable() and test in em_x270_usb_hub_init]
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      a829abf8
  21. 23 7月, 2013 1 次提交
  22. 22 7月, 2013 1 次提交
  23. 20 7月, 2013 2 次提交
  24. 19 7月, 2013 2 次提交
    • A
      ssb: fix alignment of struct bcma_device_id · b01a60be
      Arnd Bergmann 提交于
      The ARM OABI and EABI disagree on the alignment of structures
      with small members, so module init tools may interpret the
      ssb device table incorrectly, as shown  by this warning when
      building the b43 device driver in an OABI kernel:
      
      FATAL: drivers/net/wireless/b43/b43: sizeof(struct ssb_device_id)=6 is
      not a modulo of the size of section __mod_ssb_device_table=88.
      
      Forcing the default (EABI) alignment on the structure makes this
      problem go away. Since the ssb_device_id may have the same problem,
      better fix both structures.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: John W. Linville <linville@tuxdriver.com>
      Cc: Michael Buesch <mb@bu3sch.de>
      Cc: Larry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      b01a60be
    • E
      vlan: mask vlan prio bits · d4b812de
      Eric Dumazet 提交于
      In commit 48cc32d3
      ("vlan: don't deliver frames for unknown vlans to protocols")
      Florian made sure we set pkt_type to PACKET_OTHERHOST
      if the vlan id is set and we could find a vlan device for this
      particular id.
      
      But we also have a problem if prio bits are set.
      
      Steinar reported an issue on a router receiving IPv6 frames with a
      vlan tag of 4000 (id 0, prio 2), and tunneled into a sit device,
      because skb->vlan_tci is set.
      
      Forwarded frame is completely corrupted : We can see (8100:4000)
      being inserted in the middle of IPv6 source address :
      
      16:48:00.780413 IP6 2001:16d8:8100:4000:ee1c:0:9d9:bc87 >
      9f94:4d95:2001:67c:29f4::: ICMP6, unknown icmp6 type (0), length 64
             0x0000:  0000 0029 8000 c7c3 7103 0001 a0ae e651
             0x0010:  0000 0000 ccce 0b00 0000 0000 1011 1213
             0x0020:  1415 1617 1819 1a1b 1c1d 1e1f 2021 2223
             0x0030:  2425 2627 2829 2a2b 2c2d 2e2f 3031 3233
      
      It seems we are not really ready to properly cope with this right now.
      
      We can probably do better in future kernels :
      vlan_get_ingress_priority() should be a netdev property instead of
      a per vlan_dev one.
      
      For stable kernels, lets clear vlan_tci to fix the bugs.
      Reported-by: NSteinar H. Gunderson <sesse@google.com>
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d4b812de