Commit graph

505646 commits

Author SHA1 Message Date
Viresh Kumar
9225913d38 cpufreq: stats: don't update stats from show_trans_table()
cpufreq_stats_update() updates time_in_state and nothing else. It should ideally
be updated only in two cases:
- User requested for the current value of time_in_state.
- We have switched states and so need to update time for the last state.

Currently, we are also doing this while user asks for the transition table of
frequencies. It wouldn't do any harm, but no good as well. Its useless here.

Remove it.

Reviewed-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 23:06:45 +01:00
Viresh Kumar
c960f9b22d cpufreq: stats: time_in_state can't be NULL in cpufreq_stats_update()
'time_in_state' can't be NULL if 'stats' is valid. These are allocated together
and only if time_in_state is allocated successfully, we update policy->stats.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 23:06:44 +01:00
Viresh Kumar
a685c6d023 cpufreq: stats: create sysfs group once we are ready
Userspace is free to read value of any file from cpufreq/stats directory once
they are created. __cpufreq_stats_create_table() is creating the sysfs files
first and then allocating resources for them. Though it would be quite difficult
to trigger the racy situation here, but for the sake of keeping sensible code
lets create sysfs entries only after we are ready to go.

This also does some makeup to the routine to make it look better.

Reviewed-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 23:06:44 +01:00
Viresh Kumar
d9f354460d cpufreq: remove CPUFREQ_UPDATE_POLICY_CPU notifications
CPUFREQ_UPDATE_POLICY_CPU notifications were used only from cpufreq-stats which
doesn't use it anymore. Remove them.

This also decrements values of other notification macros defined after
CPUFREQ_UPDATE_POLICY_CPU by 1 to remove gaps. Hopefully all users are using
macro's instead of direct numbers and so they wouldn't break as macro values are
changed now.

Reviewed-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 23:06:44 +01:00
Viresh Kumar
c92f2125ac cpufreq: stats: drop 'cpu' field of struct cpufreq_stats
'cpu' field of struct cpufreq_stats isn't used anymore and so can be dropped.
This change makes cpufreq_stats_update_policy_cpu() empty and so that is removed
as well.

Reviewed-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 23:06:44 +01:00
Viresh Kumar
7c418ff099 cpufreq: Remove (now) unused 'last_cpu' from struct cpufreq_policy
'last_cpu' was used only from cpufreq-stats and isn't used anymore. Get rid of
it.

Reviewed-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 23:06:44 +01:00
Viresh Kumar
5094160786 cpufreq: stats: rename 'struct cpufreq_stats' objects as 'stats'
Currently we name objects of 'struct cpufreq_stats' as 'stat' and 'stats'.
Use 'stats' to make it consistent.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 23:06:44 +01:00
Viresh Kumar
a9aaf2915e cpufreq: stats: get rid of per-cpu cpufreq_stats_table
All CPUs sharing a cpufreq policy share stats too. For this reason,
add a stats pointer to struct cpufreq_policy and drop per-CPU variable
cpufreq_stats_table used for accessing cpufreq stats so as to reduce
code complexity.

Reviewed-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 23:06:44 +01:00
Viresh Kumar
2aba0c1bae cpufreq: stats: pass 'stat' to cpufreq_stats_update()
It is better to pass a struct cpufreq_stats pointer to cpufreq_stats_update()
instead of a CPU number, because that's all it needs.

Even if we pass a cpu number to cpufreq_stats_update(), it reads the per-cpu
variable to get 'stats' out of it. So we are doing these operations
unnecessarily:
- First getting the cpu number to pass to cpufreq_stats_update(), stat->cpu.
- And then getting stats from the cpu, per_cpu(cpufreq_stats_table, cpu).

Reviewed-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 23:06:44 +01:00
Viresh Kumar
f93dbbbd10 cpufreq: stats: don't check for freq table while freeing stats
While we allocate stats, we do need to check if freq-table is present
or not as we need to use it then. But while freeing stats, all we need
to know is if stats holds a valid pointer value. There is no use of
testing if cpufreq table is present or not.

Don't check it.

Reviewed-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 23:06:43 +01:00
Viresh Kumar
9531347c61 cpufreq: stats: initialize 'cur_time' on its definition
'cur_time' is defined in the first line and is then assigned a value
in the next line. Initialize it while defining it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 23:06:43 +01:00
Viresh Kumar
43b9cdaf5c cpufreq: stats: remove unused cpufreq_stats_attribute
It was never used, but is there since the first commit. Remove it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 23:06:43 +01:00
Viresh Kumar
b8c674482f cpufreq: stats: return -EEXIST when stats are already allocated
__cpufreq_stats_create_table() is called from:

- cpufreq notifier on creation of a new policy. Stats will always be
  NULL here.
- cpufreq_stats_init() for all CPUs as cpufreq-stats might have been
  initialized after cpufreq driver. For any policy, 'stats' will be
  NULL for the first CPU only and will be valid for all other CPUs
  managed by the same policy.

While we return for other CPUs, we don't return the right error value.
It's not that we would fail with -EBUSY. But generally, this is what
these return values mean:
- EBUSY: we are busy right now, try again. And the retry attempt might
  be immediate.
- EEXIST: We already have what you are trying to create and there is no
  need to create it again, and so no more tries are required.

Reviewed-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 23:06:43 +01:00
Viresh Kumar
00d0b29472 cpufreq: stats: Improve module description string
The MODULE_DESCRIPTION() string is just too long and then is broken into
multiple lines just to make checkpatch happy.

Rewrite it to make it more precise.

Reviewed-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 23:06:43 +01:00
Olof Johansson
8739f728db dts part of core suspend support and limiting of rk3288
sd-card clockspeed to 150mhz
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQEcBAABCAAGBQJUwBx+AAoJEPOmecmc0R2BchUH/28i49EtgL/9L6KYSY8AWb6L
 Cz/msQL88xsy+zS9mGYRb9qi39SpOMS70XWUvVGp939llxzTMvP8/0NYmH6uCxOi
 f7Wjf8vXlhGR01Y9S3cOsL4D7V9+4qSQVzQ/rIFpcR32OaIzN78UuSuqDnAb27/x
 CzaAxol8zM+XxfdxLgWChVJaTPT3WyGC2pUAmzm+2dKviTWV2CoAqavuiWuyqj26
 i0HJHG6dDNfgCt11ScSqwqVLgpQ+cQAQZ1xk4et/Skk/tXz1OCtctQnevFu9ClT5
 MeTnAZvKuNDwmyWMo2V9q1d9DS1s9UY+yXBKRBaF65I+Rmzd94NGxcM7B/NVgCE=
 =C1qi
 -----END PGP SIGNATURE-----

Merge tag 'v3.20-rockchip-dts1' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into next/dt

Merge "ARM: rockchip: soc updates for 3.20" [sic!] from Heiko Stübner:

dts part of core suspend support and limiting of rk3288
sd-card clockspeed to 150mhz

* tag 'v3.20-rockchip-dts1' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip:
  ARM: dts: rockchip: add suspend settings for rk3288-evb-rk808
  ARM: dts: rockchip: add RK3288 suspend support
  ARM: dts: rockchip: set dw_mmc max-freq 150Mhz

Signed-off-by: Olof Johansson <olof@lixom.net>
2015-01-23 14:06:25 -08:00
Olof Johansson
0dcfd9e33d SoC parts of basic suspend support and removal of
Cortex-A9 reference from the machine name.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQEcBAABCAAGBQJUwBuaAAoJEPOmecmc0R2B5KkIAKU75P0FOtAMnuF4vOybgCcE
 lPQKX//fXsjClh56NuIxAtU6sg3HIXrXeD0O8hsTRVBO72RSv5wuzdJtCKCMbtNT
 TFJQe3YXbYHxRwzh/beBX1ff6qKbJyPHxuFkAukfzGDXPin0J4ac0ryWjNrDfpYM
 j+X6o2/Uo/FF/I1tPDztxKlk15bNuPV9IOINbN3tTUr121y/6sc+UkeErtWfRnFt
 +MD9/8tz8nETDmGXzxMjsfTSl6iMjzgesSr7ltMlytXGdIwCzU4NCPO2Y0/MoaUi
 UKtuI2vT3xi9OH6DHNCIIebvaVzN7fp+tNSkhIIKVIomWTOIxgIQJ6BOS+CKgj0=
 =H1k7
 -----END PGP SIGNATURE-----

Merge tag 'v3.20-rockchip-soc1' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into next/soc

Merge "ARM: rockchip: soc updates for v3.20" from Heiko Stübner:

SoC parts of basic suspend support and removal of
Cortex-A9 reference from the machine name.

* tag 'v3.20-rockchip-soc1' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip:
  ARM: rockchip: remove cpu-core name from machine name
  ARM: rockchip: Add pmu-sram binding
  ARM: rockchip: add suspend and resume for RK3288

Signed-off-by: Olof Johansson <olof@lixom.net>
2015-01-23 14:01:47 -08:00
Linus Torvalds
2e3810da41 Three small fixes. Two for x86 and one avoids that sparse bails out.
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.22 (GNU/Linux)
 
 iQEcBAABAgAGBQJUwkVXAAoJEL/70l94x66DwPEH/RPBmxJ+lD0nRyXVECSWxjN6
 DYJvp4HsLV8BhBx/ATjAkjiVPKTUk9vQBjfgl72YatjASP9aNIkBqnN0AOVdVQ2i
 04ZvYaSw3jY0A5PSecdFQZ4u8MAvaRS4AYNOYM3Kpf0EOrIwanXFpEfVRGT8ichT
 uBK/mbN7vDO1SsgAnB00fCew4wFrHIa7fJ8eLNnebDOuC72oUZA+2nKx8ApWq4ca
 ZaziqkI2CFaV2rqJokKDun2arxI2Q6/L87g7qyo+HMd1b+aepLTWYNOs1vH0YoSc
 73aHg+3crIqx75XmnaxKP5SPOr6vpmnloux9yre8u1tvejBIbCMz1g9Mdl0YOmA=
 =YRTn
 -----END PGP SIGNATURE-----

Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm

Pull kvm fixes from Paolo Bonzini:
 "Three small fixes.

  Two for x86 and one avoids that sparse bails out"

* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
  KVM: x86: SYSENTER emulation is broken
  KVM: x86: Fix of previously incomplete fix for CVE-2014-8480
  KVM: fix sparse warning in include/trace/events/kvm.h
2015-01-24 09:58:17 +12:00
Olof Johansson
68f173f515 bcm5301x-dt-2015-01-20: ARM: BCM5301X: dts updates for 3.20
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJUvtb8AAoJEIZ0px9YPRMyTIkQALBIfkhCNnjHh4+xan3iownE
 nnEgow08Q4uz8Se9vhVzuRtcrNE208GoRvKBSbNy3MO8zu/U0FKZ2Smp9IzFppO4
 WNxJ0x8FyhxBIRqitsMSEZ2b7BoI3+HTq2fdD2x0pYeqCE/HIACO+dr1d5ZOygQs
 SCG9wyRwxNFTXJXjrBQraYx2afdn9ed8L1hM9kXOcnDOWpSqzgF1M8hYhbCEUcuP
 WqsCqwuyC3tJ7EbTBPFNpJl44BxA2OoP9ZitjLz31uzSdhEE7iuyOCJ3rYGL/8Az
 r1aDPgZVRoDxkVf+OlQIF2GLv2fGR0E2vn5N790IKF4xxrGU4L7mRlnttU8CoVie
 9LeptTnCVypRqrx5weXKAN9s6+M094xkDoTd4YCs1SimxBFpRHqR1X8FoCEeXYvt
 Tyfwacj4XGmLJdfOyHAOCY3irosNPb94Y8etmaU9nMuYhegSQ621ALEwV7/fhphw
 lBK0ubDAOIQEFU8ACES1O4KzPxOZxWK4wdEPYE9roN2ZCVdUvjIEj9ZWBtYPEcuc
 ML/36XZIo6hXPPzsX61CWturTSt1fK9wCtUhZwGYZz76G6xB99ChA+iZlCnvJMeq
 Gy0ivQrTh1WDtQbUS7a33ompFviYZ8VRlPpPVrDkzXvtLD8GyEiGhBBYbpjnGACa
 G+y8vxweNsxpPz89jUtg
 =1yUE
 -----END PGP SIGNATURE-----

Merge tag 'bcm5301x-dt-2015-01-20' of https://github.com/hauke/linux into next/dt

Merge "ARM: BCM5301X: DT changes for v3.20" from Hauke Mehrtens:

bcm5301x-dt-2015-01-20: ARM: BCM5301X: dts updates for 3.20

* tag 'bcm5301x-dt-2015-01-20' of https://github.com/hauke/linux:
  ARM: BCM5301X: Add DT for Buffalo WZR-900DHP
  ARM: BCM5301X: Add LEDs for Buffalo devices
  ARM: BCM5301X: Drop unused poll-interval from gpio-keys
  ARM: BCM5301X: Add DT for Luxul XWC-1000

Signed-off-by: Olof Johansson <olof@lixom.net>
2015-01-23 13:58:01 -08:00
Linus Torvalds
0ad4989d62 Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm
Pull ARM fixes from Russell King:
 "Another round of small ARM fixes.

  restore_user_regs early stack deallocation is buggy in the presence of
  FIQs which switch to SVC mode, and could lead to corrupted registers
  being returned to a user process given an inopportune FIQ event.

  Another bug was spotted in the ARM perf code where it could lose track
  of perf counter overflows, leading to incorrect perf results.

  Lastly, a bug in arm_add_memory() was spotted where the memory sizes
  aren't properly rounded.  As most people pass properly rounded sizes,
  this hasn't been noticed"

* 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
  ARM: 8292/1: mm: fix size rounding-down of arm_add_memory() function
  ARM: 8255/1: perf: Prevent wraparound during overflow
  ARM: 8266/1: Remove early stack deallocation from restore_user_regs
2015-01-24 09:57:01 +12:00
Linus Torvalds
222713bb1e arm64 fixes:
- Fix cleaning of .dtbs following directory restructuring
 - Fix allmodconfig build breakage in -next due to missing include
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQEcBAABCgAGBQJUwjspAAoJELescNyEwWM0KO4IAI6uyVYrsGZa+j7HUnvr6xQp
 jqqlVyTfl3mxS8o0BfquGHn55CT2S3Vn0pPs8RSy5gvzqqoB2c2N1ULEpRGHFErE
 OpxCpNrCnWnCRKRaV4T0sjU4nPIYQg78G82tJmn2WS52dt1/jl3KRlhcykf9G+o6
 m2fMAe+/V5Q6Zi4GV3ULYGjE7O7Cb/HQskFRe7uhltDbmQFXW1KCcDwwTm4w8uTW
 2uzqz4qn1GtrsP+nS8IW7CCIUZpMRDRWoo28xbRtPgiQwRp4vdzNN5JDno+YG6w+
 WddR8XvJRDCsvrJq6jJoIGmOA+b6WYAaMQ+bubulb7wmCnQzGr2ackvuT9WyB2o=
 =P6S+
 -----END PGP SIGNATURE-----

Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux

Pull two arm64 fixes from Will Deacon:
 "Arm64 fixes seem to come in pairs recently.  We've got a fix for
  removing device-tree blobs when doing a make clean and another one
  addressing a missing include, which fixes build failures in -next for
  allmodconfig (spotted by Mark's buildbot).

  Summary from signed tag:

   - fix cleaning of .dtbs following directory restructuring
   - fix allmodconfig build breakage in -next due to missing include"

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
  arm64: dump: Fix implicit inclusion of definition for PCI_IOBASE
  arm64: Add dtb files to archclean rule
2015-01-24 09:55:13 +12:00
Olof Johansson
b2cb793c2c arm: pxa: pxa for v3.20
This update deals mostly with regulator updates for fixing all the
 cases where a default regulator is needed, with non device-tree
 platforms. There's also a kconfig fix for device-tree pxa.
 
 It should be noticed that all interrupts numbers were shifted by
 16 (number of legacy interrupts).
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJUsDg0AAoJEAP2et0duMsSq/QP+waN8U/ojATeAQ0VMI0aoK9i
 S9TB/aC4irE4UgHp3wR9fuAsKyPjt0Ad7o3VaKcMI++6ft57n4KJEkV8GTxt3tsQ
 /oCgwUO4WZc3w1OowG4X2xb2EiKLV1R9oZ6B0y1FDRgIQTieWaGy4RWYftoiGBl6
 jl7wZXC1+sQuf/ihH9ii6U0RMgID69qLzvMroCsgcywuViXq9Bl9cWm12/aLRjf5
 IqmKQQwJqjIF66/Fhe0mtAMeSBJUTrV8/8k2LG+WPC34z8p7eL2px/Bh6jDXjr7M
 UjudZ9jBAD8CSDL0Hx/lrYgpWJ70+9YBH0zscdnSzq2xU6TbhxcsNmcr9VwqZSY1
 FrEVBzDEIHCBCtf1nYEQq3SvbjMv15n3fPGAAau6CORAD3cNhfUjRhaaTO+NO6Ki
 /U/735Fr1Y6jPt5SUg9E175X0bGsO5lEn1EfLyQ18nbbjFW+xEZE6gXYhMljhI2P
 DhlOOkU92/PXJXC4Mc2kuWToJCuHoPb0wolBj0b/WjtkDIpLaud/rUXIuN0HzeFR
 G1mMYLICv7LI7EpbNdB7KFzz+JCPkVj2Sc5DVJTgqqr5FTUWdfSIDVLY9khEK88U
 il6tx8/jCOI2baNkBHCBVc+TYxZwlFiaCtuX+Cv/cqigADC0OBP1CE/xd/+pO9JX
 WNYb7GNHALm5uXDBTSFt
 =Y1Pw
 -----END PGP SIGNATURE-----

Merge tag 'pxa-for-3.20' of https://github.com/rjarzmik/linux into next/fixes-non-critical

Merge "pxa for v3.20" from Robert Jarzmik:

arm: pxa: pxa for v3.20

This update deals mostly with regulator updates for fixing all the
cases where a default regulator is needed, with non device-tree
platforms. There's also a kconfig fix for device-tree pxa.

It should be noticed that all interrupts numbers were shifted by
16 (number of legacy interrupts).

* tag 'pxa-for-3.20' of https://github.com/rjarzmik/linux:
  hx4700: regulator: declare full constraints
  ARM: pxa: add regulator_has_full_constraints to spitz board file
  ARM: pxa: add regulator_has_full_constraints to poodle board file
  ARM: pxa: add regulator_has_full_constraints to corgi board file
  ARM: pxa: arbitrarily set first interrupt number
  arm: pxa: fix pxa27x device-tree support kconfig

Signed-off-by: Olof Johansson <olof@lixom.net>
2015-01-23 13:54:30 -08:00
Viresh Kumar
818c57126e cpufreq: move some initialization stuff to cpufreq_policy_alloc()
We need to initialize completion and work only on policy allocation and not
really on the policy restore side and so we better move this piece of code to
cpufreq_policy_alloc().

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:35 +01:00
Viresh Kumar
ce1bcfe94d cpufreq: check cpufreq_policy_list instead of scanning policies for all CPUs
CPUFREQ_STICKY flag is set by drivers which don't want to get unregistered
even if cpufreq-core isn't able to initialize policy for any CPU.

When this flag isn't set, we try to unregister the driver. To find out
which CPUs are registered and which are not, we try to check per_cpu
cpufreq_cpu_data for all CPUs. Because we have a list of valid policies
available now, we better check if the list is empty or not instead of
the 'for' loop. That will be much more efficient.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:35 +01:00
Viresh Kumar
39c132eebd cpufreq: limit the scope of l_p_j variables
These variables are just used within adjust_jiffies() and so must be
local to it. Also there is no need of a dummy routine for CONFIG_SMP
case as we can take care of all that with help of macros in the same
routine. It doesn't look that ugly.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:34 +01:00
Viresh Kumar
d7a9771c1a cpufreq: use light-weight cpufreq_cpu_get_raw() in __cpufreq_add_dev()
We just need to check if a 'policy' is already present for the cpu we are
adding. We don't need to take all the locks and do kobject usage updates. Use
the light-weight cpufreq_cpu_get_raw() routine instead.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:34 +01:00
Viresh Kumar
7f0c020ab6 cpufreq: get rid of 'tpolicy' from __cpufreq_add_dev()
There is no need of this separate variable, use 'policy' instead.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:34 +01:00
Viresh Kumar
22a7cfb014 cpufreq: get rid of CONFIG_{HOTPLUG_CPU|SMP} mess
These are messing up more than the benefit they provide. It isn't
a lot of code anyway, that we will compile without them.

Kill them.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:34 +01:00
Viresh Kumar
bc68b7dfda cpufreq: update driver_data->flags only if we are registering driver
We should first check if a cpufreq driver is already registered or not
before updating driver_data->flags.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:34 +01:00
Viresh Kumar
d92d50a462 cpufreq: pass policy to __cpufreq_get()
There is no point finding out the 'policy' again within __cpufreq_get()
when all the callers already have it. Just make them pass policy instead.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:34 +01:00
Viresh Kumar
a1e1dc41c4 cpufreq: pass policy to cpufreq_out_of_sync
There is no point finding out the 'policy' again within cpufreq_out_of_sync()
when all the callers already have it. Just make them pass policy instead.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:34 +01:00
Viresh Kumar
2e1cc3a5d7 cpufreq: No need to check for has_target()
Either we can be setpolicy or target type, nothing else. And so the
else part of setpolicy will automatically be of has_target() type.
And so we don't need to check it again.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:34 +01:00
Viresh Kumar
42f91fa116 cpufreq: s/__find_governor/find_governor
Remove unnecessary from find_governor's name.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:33 +01:00
Viresh Kumar
db5f299574 cpufreq: merge 'if' blocks in __cpufreq_remove_dev_prepare()
There are two 'if' blocks here, checking for !cpufreq_driver->setpolicy and
has_target(). Both are actually doing the same thing, merge them.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:33 +01:00
Viresh Kumar
09347b2905 cpufreq: don't need line break in show_scaling_cur_freq()
No need of an unnecessary line break.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:33 +01:00
Viresh Kumar
f13f1184a1 cpufreq: remove extra parenthesis
We can live without it and so we should.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:33 +01:00
Viresh Kumar
e673f1639b cpufreq: remove dangling comment
It doesn't make any sense at all and is a leftover of some earlier commit.
Remove it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:49:33 +01:00
Olof Johansson
362c9a778c More changes for omap dts files mostly to add support for
dm816x devices and clocks. Also adds a qspi device for
 dra72x-evm.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJUvpqoAAoJEBvUPslcq6Vz2uwQALoPyfwWCDUlxZbZy/yNPq0b
 +l90dAo65hzrsPo9kWswj/lDfFDwTrLjxL9KcRu0gaoQp+UUgDOTuTIVe2ftqU4T
 6C6MqriKlHL6vRYmm5BOrQq+Oc+xjdNSxfnCPOouOQRESJG8Jf7+5DykUkVcgh7n
 PeLaRLLb8AtEg0eBzRl7DtqvCJDU9zq8WkbtEeNso/j7P2uZ3DL/jieS0nyx9n14
 fcHlHmNlBCAUH80DfbpU9QkfAg2G3DAahtdFFBrct/CltdbkprS3efzBGawQpRrh
 XBqWsFCnNz4nzAshFHgKsTmtX94mgzLj89VwvsVtVTnErlC7umbrUiPrj358F72Y
 lZib7jl3BLiVsDWSqIw5iulkpS+ukW1iBCzlp5C87DSXE97XJr7UscbA9EQMesFl
 bHcfq9cbpvMK6hujdx2QuZcSeahjvHSguIrxGtgtcf6Xj4Rx/iDGaTpalA5fxl65
 VJn1FHmC74MYcpwnZSXk8KqVyX6IjlfRnc3C9Nt5GRXLx98h09l62LyIaMq2xAKv
 EvNoKf9T7MKo1ayhCDkja4ObcRU8HhR4v5Z32NkumbqT2jP8TjhzRGuLynMiNV1w
 M3Rv11D2wCo1e30vJjCpBI/cJOa6pdHFiWQrmmDI09wAywhZbmikxUJ0OIf5/H5r
 D+eWlZQSGWvtsRlVRkwI
 =vWKv
 -----END PGP SIGNATURE-----

Merge tag 'omap-for-v3.20/dt-pt2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/dt

Merge "omap device tree changes for v3.20, part 2" from Tony Lindgren:

More changes for omap dts files mostly to add support for
dm816x devices and clocks. Also adds a qspi device for
dra72x-evm.

* tag 'omap-for-v3.20/dt-pt2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: dts: dra72-evm: Add qspi device
  ARM: dts: Add minimal support for dm8168-evm
  ARM: dts: Add basic clocks for dm816x
  ARM: dts: Add basic dm816x device tree configuration

Signed-off-by: Olof Johansson <olof@lixom.net>
2015-01-23 13:48:57 -08:00
Olof Johansson
ce9aead638 Defconfig changes for omap2plus_defconfig to make it more modular,
and to add few more drivers found on various boards.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJUvpayAAoJEBvUPslcq6Vz0uMQANmhwxJhXph/nU3yV3r7yo1M
 1jeNuhfs0OFnlpC2go8XFkdggrmRaqQuo73JFegrZAfoDAJOTn+WQ2k9l+zc2wS/
 0Kv+L1/RytjNSeZVwmJYm2KCTRr3pemw2Cjx42OkQCqDPWexADwkM7IkcoCNjYHX
 cBVOVHORvw4fR621gEa/JxZ6EkYunPyGJvvMR9AfrZ3qgEBZf7hbwXQ6RKfnk/mq
 wC4eoC/GvZYaeM7/dLhOv6SVgHd/uBfAqjfUBwBM51Tsp08Ot0prykwggSbt+SUu
 x2FBMC/pCKPnnisQh3DvbYRdIDZ3rQdgXZ0+crlNm5oWviYzZq5QeGbYtp0eAfO9
 a79TomBZ6HxyZn6V0uYfgj6xdqB58Nce9FP/7e6bKpaiR+ckM7xNXU/VE4sfIKtE
 gmkc3Gd7ReGlMABnS7yZrsCK2/xFKZxV9XSg+DECkjBGfSdEtjbnvVvUxoUQ2gMg
 32ehuaZ1qQpD3aMWJJLXZQLSOZKqEyPNdM30WuMvwKgfn4z3UlxiMUqjY2h5VIqV
 nS/b2v6XLw6W/eAZ4mslzClGH6MlkVOpXGbeKajXBTIoFXs7uVMUc+dAxu3qhXPV
 coA/GS8gj1ors71m5V7/83tz0JDrjWlWR3a09qZQGMKE76JBUuEA58gk1uOGYFDn
 ijucX7zpZY/+Epr/+zuQ
 =v4Ba
 -----END PGP SIGNATURE-----

Merge tag 'omap-for-v3.20/defconfig-modular' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/defconfig

Merge "omap defconfig changes for v3.20" from Tony Lindgren:

Defconfig changes for omap2plus_defconfig to make it more modular,
and to add few more drivers found on various boards.

* tag 'omap-for-v3.20/defconfig-modular' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: omap2plus_defconfig: Enable OHCI & EHCI HCD support
  ARM: omap2plus_defconfig: Enable misc options for BeagleBoard-X15 platform
  ARM: omap2plus_defconfig: Enable pcf857x
  ARM: omap2plus_defconfig: Add NOR flash support
  ARM: omap2plus_defconfig: Enable support for davinci_emac
  ARM: omap2plus_defconfig: enable TPS65218 power button
  ARM: omap2plus_defconfig: reduce zImage size on omap2plus_defconfig

Signed-off-by: Olof Johansson <olof@lixom.net>
2015-01-23 13:46:55 -08:00
Olof Johansson
03773a4c17 We have had omap3517 booting in device tree mode for quite some
time now and we have at least a minimal dts file for the 3517
 based boards. Also almost all the drivers are usable in device
 tree mode. And if there are any drivers not yet supported in device
 tree mode, those can be enabled using pdata quirks.
 
 This leaves omap3430 to omap3730 as the only remaining mach-omap2
 platforms still booting in legacy mode also. For those were are
 printing a warning during the boot to get people to update their
 systems to boot in device tree mode and slowly converting them
 over to device tree based booting.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJUvonzAAoJEBvUPslcq6VzJhUP/jGWiqIod61LIbt9AEeSiava
 IVkgXiF5524+YybCUXzOEDQsvAnrm6G7uL/ur+vKOH5ycVMuuFnxp4RbfOxPJk6f
 bGF5JwRs9olQ2As5jcS3SKMLP7O4479fbUvwhUxSVLRZvzbVUXBkauSD19K7O1mW
 nd/n+0yMbPPP7/V9DC0g2zEsLAl+7zJJYjFfUera9FQjVQ4x9RmmHU/tRPE0gQLp
 nNtZZgBCjXqIi166MeThPamXL7xlmykI2R8kvTWeCMqenGYwGYPqoBFpTQX5APpA
 xWUp2h1mwd1rFZdNsAZ4YSfWm+5u6VKTVBlS8FFTp+IM1BmicdNiLkHaVC6zJO0s
 o4+V6p3aa2yCTFT/ZAVOp4+0jsN8R9ATbdYU8dyAUtYiLMIv1U6TdDhaBLN98r9f
 vX1T7wmL9gfKxpDwS+D4FksLxk/OQ1SX+0jqlaLMoChUWjK6kyx2PxMMLzyK/C++
 bP/FOGt1QDe5mci1O1QxeoO3hHqbpFDb529LAB6dC51EnMJQiUJOew3xAY5K6HOq
 h333PSbj7ZMjK5wVM0COfIb+p/jloG3ga5RCe4E8Es/PuVPx/XRs4piezDkdERuh
 KZEMvIEq+PGmuPl12lXeu7EnziRDwHORgXuKv5/pXAxeW/2VD+STZIzELp+sFQvB
 YBlyjReQVKLH3kWvXLMn
 =unh4
 -----END PGP SIGNATURE-----

Merge tag 'omap-for-v3.20/drop-legacy-3517-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/cleanup

Merge "drop legacy booting for omap3517" from Tony Lindgren:

We have had omap3517 booting in device tree mode for quite some
time now and we have at least a minimal dts file for the 3517
based boards. Also almost all the drivers are usable in device
tree mode. And if there are any drivers not yet supported in device
tree mode, those can be enabled using pdata quirks.

This leaves omap3430 to omap3730 as the only remaining mach-omap2
platforms still booting in legacy mode also. For those were are
printing a warning during the boot to get people to update their
systems to boot in device tree mode and slowly converting them
over to device tree based booting.

* tag 'omap-for-v3.20/drop-legacy-3517-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: OMAP3: Add back Kconfig option MACH_OMAP3517EVM for ASoC
  ARM: OMAP3: Remove legacy support for am35xx-emac
  ARM: OMAP3: Remove cm-t3517 legacy support
  ARM: OMAP3: Remove legacy support for am3517crane
  ARM: OMAP3: Remove legacy support for am3517-evm

Signed-off-by: Olof Johansson <olof@lixom.net>
2015-01-23 13:46:06 -08:00
Alex Williamson
d3d2ab43dd PCI: Add DMA alias quirk for Adaptec 3405
The Adaptec 3405 is actually an Intel 80333 I/O processor where the exposed
device at 0e.0 is actually the address translation unit of the I/O
processor and a hidden, private device at 01.0 masters the DMA for the
device.  Create a fixed alias between the exposed and hidden devfn so we
can enable the IOMMU.

Scenarios like this are potentially likely for any device incorporating
this I/O processor, so this little bit of abstraction with the fixed alias
table should make future additions trivial.

Without this fix, booting a system with the Intel IOMMU enabled and an
Adaptec 3405 at 02:0e.0 results in a flood of errors like this:

  dmar: DRHD: handling fault status reg 3
  dmar: DMAR:[DMA Write] Request device [02:01.0] fault addr ffbff000
  DMAR:[fault reason 02] Present bit in context entry is clear

[bhelgaas: changelog, comment]
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
CC: Adaptec OEM Raid Solutions <aacraid@adaptec.com>
2015-01-23 15:44:45 -06:00
Arnd Bergmann
abc596b9a2 PCI: xilinx: Fix harmless format string warning
The xilinx PCIe driver prints a register value whose type is propagated to
the type returned by the GENMASK() macro.  Unfortunately, that type has
recently changed as the result of a bug fix, so now we get a warning about
the type:

  drivers/pci/host/pcie-xilinx.c: In function 'xilinx_pcie_clear_err_interrupts':
  drivers/pci/host/pcie-xilinx.c:154:3: warning: format '%d' expects argument of type 'int', but argument 4 has type 'long unsigned int' [-Wformat=]

Change the code so we always print the number as an 'unsigned long' type to
avoid the warning.  The original code was fine on 32-bit architectures but
not on 64-bit.  Now it works as expected on both.

Fixes: 00b4d9a141 ("bitops: Fix shift overflow in GENMASK macros")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Maxime Coquelin <maxime.coquelin@st.com>
2015-01-23 15:35:40 -06:00
Krzysztof Kozlowski
04bf1c7f76 PM / OPP: Assert RCU lock in exported functions
Add lockdep asserts for holding the RCU lock when calling
dev_pm_opp_get_freq() and dev_pm_opp_get_voltage() to aid in detecting
RCU misuses.

These are called often after dev_pm_opp_find_freq_ceil/exact() which
already asserts for RCU lock. However one could make an error by
releasing lock too early - just after dev_pm_opp_find_freq_ceil().

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:32:38 +01:00
Krzysztof Kozlowski
f90b8ad83a PM / QoS: Use lockdep asserts to find missing hold of power.lock
Add lockdep asserts for holding the dev->power.lock to non-static
functions which require this. They could be used outside of the file so
asserts may help in detecting locking misuse.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:31:08 +01:00
Nishanth Menon
984f16c849 PM / OPP: Update kernel documentation
kernel doc has gotten bit-rotted over time. Re-sync with Locking and
Return information. document all functions properly and ensure that
./scripts/kernel-doc -v  ./drivers/base/power/opp.c >/dev/null returns
no errors

Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:28:25 +01:00
Nishanth Menon
327854c871 PM / OPP: Ensure consistent naming of static functions
All exported functions use dev_pm_* prefix and all static functions
are now standardized with _ prefix. This is better than having to deal
with multiple function naming styles within the same file.

Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:28:24 +01:00
Nishanth Menon
4679ec3727 PM / OPP: export dev_pm_opp_get_notifier
Allows user drivers such as devfreq to be modules.

Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:28:24 +01:00
Doug Anderson
90de2a4aa9 cpufreq: suspend cpufreq governors on shutdown
We should stop cpufreq governors when we shut down the system.  If we
don't do this, we can end up with this deadlock:

1. cpufreq governor may be running on a CPU other than CPU0.
2. In machine_restart() we call smp_send_stop() which stops CPUs.
   If one of these CPUs was actively running a cpufreq governor
   then it may have the mutex / spinlock needed to access the main
   PMIC in the system (perhaps over I2C)
3. If a machine needs access to the main PMIC in order to shutdown
   then it will never get it since the mutex was lost when the other
   CPU stopped.
4. We'll hang (possibly eventually hitting the hard lockup detector).

Let's avoid the problem by stopping the cpufreq governor at shutdown,
which is a sensible thing to do anyway.

Signed-off-by: Doug Anderson <dianders@chromium.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:20:30 +01:00
Wolfram Sang
a6a919b6ae cpufreq: drop owner assignment from platform_drivers
This platform_driver does not need to set an owner, it will be
populated by the driver core.

Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-01-23 22:19:15 +01:00
Shaohua Li
12cb5ce101 libata: use blk taging
libata uses its own tag management which is duplication and the
implementation is poor. And if we switch to blk-mq, tag is build-in.
It's time to switch to generic taging.

The SAS driver has its own tag management, and looks we can't directly
map the host controler tag to SATA tag. So I just bypassed the SAS case.

I changed the code/variable name for the tag management of libata to
make it self contained. Only sas will use it. Later if libsas implements
its tag management, the tag management code in libata can be deleted
easily.

Cc: Jens Axboe <axboe@fb.com>
Cc: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Shaohua Li <shli@fb.com>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <axboe@fb.com>
2015-01-23 14:19:04 -07:00
Jens Axboe
a4a1cc16a7 Merge branch 'for-3.20/core' into for-3.20/drivers
We need the tagging changes for the libata conversion.
2015-01-23 14:18:49 -07:00