1. 22 Feb, 2014 29 commits
  2. 20 Feb, 2014 11 commits
    • Greg Kroah-Hartman's avatar
      Linux 3.12.12 · 00397abb
      Greg Kroah-Hartman authored
      00397abb
    • Stanislaw Gruszka's avatar
      pinctrl: protect pinctrl_list add · 592d4de3
      Stanislaw Gruszka authored
      commit 7b320cb1 upstream.
      
      We have few fedora bug reports about list corruption on pinctrl,
      for example:
      https://bugzilla.redhat.com/show_bug.cgi?id=1051918
      
      Most likely corruption happen due lack of protection of pinctrl_list
      when adding new nodes to it. Patch corrects that.
      
      Fixes: 42fed7ba ("pinctrl: move subsystem mutex to pinctrl_dev struct")
      Signed-off-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
      Acked-by: default avatarStephen Warren <swarren@nvidia.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      592d4de3
    • Tony Prisk's avatar
      pinctrl: vt8500: Change devicetree data parsing · c2ffc4ef
      Tony Prisk authored
      commit f17248ed upstream.
      
      Due to an assumption in the VT8500 pinctrl driver, the value passed
      from devicetree for 'wm,pull' was not explicitly translated before
      being passed to pinconf.
      
      Since v3.10, changes to 'enum pin_config_param', PIN_CONFIG_BIAS_PULL_(UP/DOWN)
      no longer map 1-to-1 with the expected values in devicetree.
      
      This patch adds a small translation between the devicetree values (0..2)
      and the enum pin_config_param equivalent values.
      Signed-off-by: default avatarTony Prisk <linux@prisktech.co.nz>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c2ffc4ef
    • Nicolas Ferre's avatar
      pinctrl: at91: use locked variant of irq_set_handler · 0d6d1f9d
      Nicolas Ferre authored
      commit b0dcfd87 upstream.
      
      When setting the gpio irq type, use the __irq_set_handler_locked()
      variant instead of the irq_set_handler() to prevent false
      spinlock recursion warning.
      Signed-off-by: default avatarNicolas Ferre <nicolas.ferre@atmel.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0d6d1f9d
    • Nitin A Kamble's avatar
      genirq: Generic irq chip requires IRQ_DOMAIN · b18575d9
      Nitin A Kamble authored
      commit 923fa4ea upstream.
      
      The generic_chip.c uses interfaces from irq_domain.c which is
      controlled by the IRQ_DOMAIN config option, but there is no Kconfig
      dependency so the build can fail:
      
      linux/kernel/irq/generic-chip.c:400:11: error:
      'irq_domain_xlate_onetwocell' undeclared here (not in a function)
      
      Select IRQ_DOMAIN when GENERIC_IRQ_CHIP is selected.
      Signed-off-by: default avatarNitin A Kamble <nitin.a.kamble@intel.com>
      Link: http://lkml.kernel.org/r/1391129410-54548-2-git-send-email-nitin.a.kamble@intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b18575d9
    • Peter Oberparleiter's avatar
      x86, hweight: Fix BUG when booting with CONFIG_GCOV_PROFILE_ALL=y · 15b2a2a1
      Peter Oberparleiter authored
      commit 6583327c upstream.
      
      Commit d61931d8, "x86: Add optimized popcnt variants" introduced
      compile flag -fcall-saved-rdi for lib/hweight.c. When combined with
      options -fprofile-arcs and -O2, this flag causes gcc to generate
      broken constructor code. As a result, a 64 bit x86 kernel compiled
      with CONFIG_GCOV_PROFILE_ALL=y prints message "gcov: could not create
      file" and runs into sproadic BUGs during boot.
      
      The gcc people indicate that these kinds of problems are endemic when
      using ad hoc calling conventions.  It is therefore best to treat any
      file compiled with ad hoc calling conventions as an isolated
      environment and avoid things like profiling or coverage analysis,
      since those subsystems assume a "normal" calling conventions.
      
      This patch avoids the bug by excluding lib/hweight.o from coverage
      profiling.
      Reported-by: default avatarMeelis Roos <mroos@linux.ee>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarPeter Oberparleiter <oberpar@linux.vnet.ibm.com>
      Link: http://lkml.kernel.org/r/52F3A30C.7050205@linux.vnet.ibm.comSigned-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      15b2a2a1
    • Hans Verkuil's avatar
      Revert "[media] videobuf_vm_{open,close} race fixes" · 782b0c12
      Hans Verkuil authored
      commit cca36e2e upstream.
      
      This reverts commit a242f426.
      
      That commit actually caused deadlocks, rather then fixing them.
      
      If ext_lock is set to NULL (otherwise videobuf_queue_lock doesn't do
      anything), then you get this deadlock:
      
      The driver's mmap function calls videobuf_mmap_mapper which calls
      videobuf_queue_lock on q. videobuf_mmap_mapper calls  __videobuf_mmap_mapper,
      __videobuf_mmap_mapper calls videobuf_vm_open and videobuf_vm_open
      calls videobuf_queue_lock on q (introduced by above patch): deadlocked.
      
      This affects drivers using dma-contig and dma-vmalloc. Only dma-sg is
      not affected since it doesn't call videobuf_vm_open from __videobuf_mmap_mapper.
      
      Most drivers these days have a non-NULL ext_lock. Those that still use
      NULL there are all fairly obscure drivers, which is why this hasn't been
      seen earlier.
      
      Since everything worked perfectly fine for many years I prefer to just
      revert this patch rather than trying to fix it. videobuf is quite fragile
      and I rather not touch it too much. Work is (slowly) progressing to move
      everything over to vb2 or at the very least use non-NULL ext_lock in
      videobuf.
      Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Cc: Al Viro <viro@ZenIV.linux.org.uk>
      Reported-by: default avatarPete Eberlein <pete@sensoray.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      782b0c12
    • Dave Jones's avatar
      mxl111sf: Fix compile when CONFIG_DVB_USB_MXL111SF is unset · 0f0b9cd9
      Dave Jones authored
      commit 13e1b87c upstream.
      
      Fix the following build error:
      
      drivers/media/usb/dvb-usb-v2/
      mxl111sf-tuner.h:72:9: error: expected ‘;’, ‘,’ or ‘)’ before ‘struct’
               struct mxl111sf_tuner_config *cfg)
      Signed-off-by: default avatarDave Jones <davej@fedoraproject.org>
      Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
      Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0f0b9cd9
    • Dave Jones's avatar
      mxl111sf: Fix unintentional garbage stack read · 09dc446e
      Dave Jones authored
      commit 866e8d8a upstream.
      
      mxl111sf_read_reg takes an address of a variable to write to as an argument.
      drivers/media/usb/dvb-usb-v2/mxl111sf-gpio.c:mxl111sf_config_pin_mux_modes
      passes several uninitialized stack variables to this routine, expecting
      them to be filled in.  In the event that something unexpected happens when
      reading from the chip, we end up doing a pr_debug of the value passed in,
      revealing whatever garbage happened to be on the stack.
      
      Change the pr_debug to match what happens in the 'success' case, where we
      assign buf[1] to *data.
      
      Spotted with Coverity (Bugs 731910 through 731917)
      Signed-off-by: default avatarDave Jones <davej@fedoraproject.org>
      Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
      Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      09dc446e
    • Antti Palosaari's avatar
      af9035: add ID [2040:f900] Hauppauge WinTV-MiniStick 2 · 0d7a951f
      Antti Palosaari authored
      commit f2e4c5e0 upstream.
      
      Add USB ID [2040:f900] for Hauppauge WinTV-MiniStick 2.
      Device is build upon IT9135 chipset.
      Tested-by: default avatarStefan Becker <schtefan@gmx.net>
      Signed-off-by: default avatarAntti Palosaari <crope@iki.fi>
      Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0d7a951f
    • Mel Gorman's avatar
      x86: mm: change tlb_flushall_shift for IvyBridge · 0b2adcc8
      Mel Gorman authored
      commit f98b7a77 upstream.
      
      There was a large performance regression that was bisected to
      commit 611ae8e3 ("x86/tlb: enable tlb flush range support for
      x86").  This patch simply changes the default balance point
      between a local and global flush for IvyBridge.
      
      In the interest of allowing the tests to be reproduced, this
      patch was tested using mmtests 0.15 with the following
      configurations
      
      	configs/config-global-dhp__tlbflush-performance
      	configs/config-global-dhp__scheduler-performance
      	configs/config-global-dhp__network-performance
      
      Results are from two machines
      
      Ivybridge   4 threads:  Intel(R) Core(TM) i3-3240 CPU @ 3.40GHz
      Ivybridge   8 threads:  Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
      
      Page fault microbenchmark showed nothing interesting.
      
      Ebizzy was configured to run multiple iterations and threads.
      Thread counts ranged from 1 to NR_CPUS*2. For each thread count,
      it ran 100 iterations and each iteration lasted 10 seconds.
      
      Ivybridge 4 threads
                          3.13.0-rc7            3.13.0-rc7
                             vanilla           altshift-v3
      Mean   1     6395.44 (  0.00%)     6789.09 (  6.16%)
      Mean   2     7012.85 (  0.00%)     8052.16 ( 14.82%)
      Mean   3     6403.04 (  0.00%)     6973.74 (  8.91%)
      Mean   4     6135.32 (  0.00%)     6582.33 (  7.29%)
      Mean   5     6095.69 (  0.00%)     6526.68 (  7.07%)
      Mean   6     6114.33 (  0.00%)     6416.64 (  4.94%)
      Mean   7     6085.10 (  0.00%)     6448.51 (  5.97%)
      Mean   8     6120.62 (  0.00%)     6462.97 (  5.59%)
      
      Ivybridge 8 threads
                           3.13.0-rc7            3.13.0-rc7
                              vanilla           altshift-v3
      Mean   1      7336.65 (  0.00%)     7787.02 (  6.14%)
      Mean   2      8218.41 (  0.00%)     9484.13 ( 15.40%)
      Mean   3      7973.62 (  0.00%)     8922.01 ( 11.89%)
      Mean   4      7798.33 (  0.00%)     8567.03 (  9.86%)
      Mean   5      7158.72 (  0.00%)     8214.23 ( 14.74%)
      Mean   6      6852.27 (  0.00%)     7952.45 ( 16.06%)
      Mean   7      6774.65 (  0.00%)     7536.35 ( 11.24%)
      Mean   8      6510.50 (  0.00%)     6894.05 (  5.89%)
      Mean   12     6182.90 (  0.00%)     6661.29 (  7.74%)
      Mean   16     6100.09 (  0.00%)     6608.69 (  8.34%)
      
      Ebizzy hits the worst case scenario for TLB range flushing every
      time and it shows for these Ivybridge CPUs at least that the
      default choice is a poor on.  The patch addresses the problem.
      
      Next was a tlbflush microbenchmark written by Alex Shi at
      http://marc.info/?l=linux-kernel&m=133727348217113 .  It
      measures access costs while the TLB is being flushed.  The
      expectation is that if there are always full TLB flushes that
      the benchmark would suffer and it benefits from range flushing
      
      There are 320 iterations of the test per thread count.  The
      number of entries is randomly selected with a min of 1 and max
      of 512.  To ensure a reasonably even spread of entries, the full
      range is broken up into 8 sections and a random number selected
      within that section.
      
      iteration 1, random number between 0-64
      iteration 2, random number between 64-128 etc
      
      This is still a very weak methodology.  When you do not know
      what are typical ranges, random is a reasonable choice but it
      can be easily argued that the opimisation was for smaller ranges
      and an even spread is not representative of any workload that
      matters.  To improve this, we'd need to know the probability
      distribution of TLB flush range sizes for a set of workloads
      that are considered "common", build a synthetic trace and feed
      that into this benchmark.  Even that is not perfect because it
      would not account for the time between flushes but there are
      limits of what can be reasonably done and still be doing
      something useful.  If a representative synthetic trace is
      provided then this benchmark could be revisited and the shift values retuned.
      
      Ivybridge 4 threads
                              3.13.0-rc7            3.13.0-rc7
                                 vanilla           altshift-v3
      Mean       1       10.50 (  0.00%)       10.50 (  0.03%)
      Mean       2       17.59 (  0.00%)       17.18 (  2.34%)
      Mean       3       22.98 (  0.00%)       21.74 (  5.41%)
      Mean       5       47.13 (  0.00%)       46.23 (  1.92%)
      Mean       8       43.30 (  0.00%)       42.56 (  1.72%)
      
      Ivybridge 8 threads
                               3.13.0-rc7            3.13.0-rc7
                                  vanilla           altshift-v3
      Mean       1         9.45 (  0.00%)        9.36 (  0.93%)
      Mean       2         9.37 (  0.00%)        9.70 ( -3.54%)
      Mean       3         9.36 (  0.00%)        9.29 (  0.70%)
      Mean       5        14.49 (  0.00%)       15.04 ( -3.75%)
      Mean       8        41.08 (  0.00%)       38.73 (  5.71%)
      Mean       13       32.04 (  0.00%)       31.24 (  2.49%)
      Mean       16       40.05 (  0.00%)       39.04 (  2.51%)
      
      For both CPUs, average access time is reduced which is good as
      this is the benchmark that was used to tune the shift values in
      the first place albeit it is now known *how* the benchmark was
      used.
      
      The scheduler benchmarks were somewhat inconclusive.  They
      showed gains and losses and makes me reconsider how stable those
      benchmarks really are or if something else might be interfering
      with the test results recently.
      
      Network benchmarks were inconclusive.  Almost all results were
      flat except for netperf-udp tests on the 4 thread machine.
      These results were unstable and showed large variations between
      reboots.  It is unknown if this is a recent problems but I've
      noticed before that netperf-udp results tend to vary.
      
      Based on these results, changing the default for Ivybridge seems
      like a logical choice.
      Signed-off-by: default avatarMel Gorman <mgorman@suse.de>
      Tested-by: default avatarDavidlohr Bueso <davidlohr@hp.com>
      Reviewed-by: default avatarAlex Shi <alex.shi@linaro.org>
      Reviewed-by: default avatarRik van Riel <riel@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/n/tip-cqnadffh1tiqrshthRj3Esge@git.kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0b2adcc8