OSDN Git Service

uclinux-h8/linux.git
7 years agoMerge remote-tracking branches 'regulator/topic/s2mpa01', 'regulator/topic/supplies...
Mark Brown [Sun, 19 Feb 2017 16:40:41 +0000 (16:40 +0000)]
Merge remote-tracking branches 'regulator/topic/s2mpa01', 'regulator/topic/supplies' and 'regulator/topic/tps65217' into regulator-next

7 years agoMerge remote-tracking branches 'regulator/topic/pv88080', 'regulator/topic/pv88090...
Mark Brown [Sun, 19 Feb 2017 16:40:37 +0000 (16:40 +0000)]
Merge remote-tracking branches 'regulator/topic/pv88080', 'regulator/topic/pv88090', 'regulator/topic/qcom-smd', 'regulator/topic/rc5t583' and 'regulator/topic/rn5t618' into regulator-next

7 years agoMerge remote-tracking branches 'regulator/topic/pbias', 'regulator/topic/pcap', ...
Mark Brown [Sun, 19 Feb 2017 16:40:35 +0000 (16:40 +0000)]
Merge remote-tracking branches 'regulator/topic/pbias', 'regulator/topic/pcap', 'regulator/topic/pcf50633', 'regulator/topic/pfuze100' and 'regulator/topic/pv88060' into regulator-next

7 years agoMerge remote-tracking branches 'regulator/topic/max77802', 'regulator/topic/max8907...
Mark Brown [Sun, 19 Feb 2017 16:40:32 +0000 (16:40 +0000)]
Merge remote-tracking branches 'regulator/topic/max77802', 'regulator/topic/max8907', 'regulator/topic/max8925', 'regulator/topic/max8952' and 'regulator/topic/palmas' into regulator-next

7 years agoMerge remote-tracking branches 'regulator/topic/ltc3676', 'regulator/topic/max14577...
Mark Brown [Sun, 19 Feb 2017 16:40:30 +0000 (16:40 +0000)]
Merge remote-tracking branches 'regulator/topic/ltc3676', 'regulator/topic/max14577', 'regulator/topic/max77620', 'regulator/topic/max77686' and 'regulator/topic/max77693' into regulator-next

7 years agoMerge remote-tracking branches 'regulator/topic/cpcap', 'regulator/topic/fan53555...
Mark Brown [Sun, 19 Feb 2017 16:40:28 +0000 (16:40 +0000)]
Merge remote-tracking branches 'regulator/topic/cpcap', 'regulator/topic/fan53555', 'regulator/topic/gpio', 'regulator/topic/hi655x' and 'regulator/topic/lp8755' into regulator-next

7 years agoMerge remote-tracking branches 'regulator/topic/anatop', 'regulator/topic/arizona...
Mark Brown [Sun, 19 Feb 2017 16:40:26 +0000 (16:40 +0000)]
Merge remote-tracking branches 'regulator/topic/anatop', 'regulator/topic/arizona', 'regulator/topic/as3711' and 'regulator/topic/bcm590xx' into regulator-next

7 years agoMerge remote-tracking branches 'regulator/topic/88pm800', 'regulator/topic/88pm8607...
Mark Brown [Sun, 19 Feb 2017 16:40:24 +0000 (16:40 +0000)]
Merge remote-tracking branches 'regulator/topic/88pm800', 'regulator/topic/88pm8607', 'regulator/topic/aat2870', 'regulator/topic/act8945a' and 'regulator/topic/ad5938' into regulator-next

7 years agoMerge remote-tracking branch 'regulator/topic/core' into regulator-next
Mark Brown [Sun, 19 Feb 2017 16:40:23 +0000 (16:40 +0000)]
Merge remote-tracking branch 'regulator/topic/core' into regulator-next

7 years agoMerge remote-tracking branches 'regulator/fix/debugfs' and 'regulator/fix/tps65086...
Mark Brown [Sun, 19 Feb 2017 16:40:22 +0000 (16:40 +0000)]
Merge remote-tracking branches 'regulator/fix/debugfs' and 'regulator/fix/tps65086' into regulator-linus

7 years agoMerge remote-tracking branch 'regulator/fix/core' into regulator-linus
Mark Brown [Sun, 19 Feb 2017 16:40:21 +0000 (16:40 +0000)]
Merge remote-tracking branch 'regulator/fix/core' into regulator-linus

7 years agoMerge tag 'regulator-fix-v4.10-rc6' into regulator-linus
Mark Brown [Sun, 19 Feb 2017 16:40:20 +0000 (16:40 +0000)]
Merge tag 'regulator-fix-v4.10-rc6' into regulator-linus

regulator: Fixes for v4.10

Three changes here, two run of the mill driver specific fixes and a
change from Mark Rutland which reverts some new device specific ACPI
binding code which was added during the merge window as there are
concerns about this sending the wrong signal about usage of regulators
in ACPI systems.

# gpg: Signature made Fri 03 Feb 2017 11:48:10 GMT
# gpg:                using RSA key ADE668AA675718B59FE29FEA24D68B725D5487D0
# gpg:                issuer "broonie@kernel.org"
# gpg: key 0D9EACE2CD7BEEBC: no public key for trusted key - skipped
# gpg: key 0D9EACE2CD7BEEBC marked as ultimately trusted
# gpg: key CCB0A420AF88CD16: no public key for trusted key - skipped
# gpg: key CCB0A420AF88CD16 marked as ultimately trusted
# gpg: key 162614E316005C11: no public key for trusted key - skipped
# gpg: key 162614E316005C11 marked as ultimately trusted
# gpg: key A730C53A5621E907: no public key for trusted key - skipped
# gpg: key A730C53A5621E907 marked as ultimately trusted
# gpg: key 276568D75C6153AD: no public key for trusted key - skipped
# gpg: key 276568D75C6153AD marked as ultimately trusted
# gpg: Good signature from "Mark Brown <broonie@sirena.org.uk>" [ultimate]
# gpg:                 aka "Mark Brown <broonie@debian.org>" [ultimate]
# gpg:                 aka "Mark Brown <broonie@kernel.org>" [ultimate]
# gpg:                 aka "Mark Brown <broonie@tardis.ed.ac.uk>" [ultimate]
# gpg:                 aka "Mark Brown <broonie@linaro.org>" [ultimate]
# gpg:                 aka "Mark Brown <Mark.Brown@linaro.org>" [ultimate]

7 years agoregulator: core: Resolve supplies before disabling unused regulators
Javier Martinez Canillas [Thu, 16 Feb 2017 17:30:02 +0000 (14:30 -0300)]
regulator: core: Resolve supplies before disabling unused regulators

After commit 66d228a2bf03 ("regulator: core: Don't use regulators as
supplies until the parent is bound"), input supplies aren't resolved
if the input supplies parent device has not been bound. This prevent
regulators to hold an invalid reference if its supply parent device
driver probe is deferred.

But this causes issues on some boards where a PMIC's regulator use as
input supply a regulator from another PMIC whose driver is registered
after the driver for the former.

In this case the regulators for the first PMIC will fail to resolve
input supplies on regulators registration (since the other PMIC wasn't
probed yet). And when the core attempts to resolve again latter when
the other PMIC registers its own regulators, it will fail again since
the parent device isn't bound yet.

This will cause some parent supplies to never be resolved and wrongly
be disabled on boot due taking them as unused.

To solve this problem, also attempt to resolve the pending regulators
input supplies before disabling the unused regulators.

Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: Fix regulator_summary for deviceless consumers
Leonard Crestez [Tue, 14 Feb 2017 15:31:03 +0000 (17:31 +0200)]
regulator: Fix regulator_summary for deviceless consumers

It is allowed to call regulator_get with a NULL dev argument
(_regulator_get explicitly checks for it) but this causes an error later
when printing /sys/kernel/debug/regulator_summary.

Fix this by explicitly handling "deviceless" consumers in the debugfs code.

Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org
7 years agoregulator: tps65086: Fix DT node referencing in of_parse_cb
Andrew F. Davis [Fri, 10 Feb 2017 17:55:47 +0000 (11:55 -0600)]
regulator: tps65086: Fix DT node referencing in of_parse_cb

When we check for additional DT properties in the current node we
use the device_node passed in with the configuration data, this
will not point to the correct DT node, use the one passed in
for this purpose.

Fixes: d2a2e729a666 ("regulator: tps65086: Add regulator driver for the TPS65086 PMIC")
Reported-by: Steven Kipisz <s-kipisz2@ti.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
Tested-by: Steven Kipisz <s-kipisz2@ti.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: tps65086: Fix expected switch DT node names
Andrew F. Davis [Fri, 10 Feb 2017 17:55:46 +0000 (11:55 -0600)]
regulator: tps65086: Fix expected switch DT node names

The three load switches are called SWA1, SWB1, and SWB2. The
node names describing properties for these are expected to be
the same, but due to a typo they are not. Fix this here.

Fixes: d2a2e729a666 ("regulator: tps65086: Add regulator driver for the TPS65086 PMIC")
Reported-by: Steven Kipisz <s-kipisz2@ti.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
Tested-by: Steven Kipisz <s-kipisz2@ti.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: core: simplify _regulator_get()
Dmitry Torokhov [Tue, 7 Feb 2017 03:56:14 +0000 (19:56 -0800)]
regulator: core: simplify _regulator_get()

The code in _regulator_get() got a bit confusing over time, with control
flow jumping to a label from couple of places. Let's untangle it a bit by
doing the following:

1. Make handling of missing supplies and substituting them with dummy
regulators more explicit:

- check if we not have full constraints and refuse considering dummy
  regulators with appropriate message;

- use "switch (get_type)" to handle different types of request explicitly
  as well. "Normal" requests will get dummies, exclusive will not and
  will notify user about that; optional will fail silently.

2. Stop jumping to a label in the middle of the function but instead have
proper conditional flow. I believe jumps should be reserved for error
handling, breaking from inner loop, or restarting a loop, but not for
implementing normal conditional flow.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: core: have regulator_dev_lookup() return ERR_PTR-encoded errors
Dmitry Torokhov [Sat, 4 Feb 2017 18:19:21 +0000 (10:19 -0800)]
regulator: core: have regulator_dev_lookup() return ERR_PTR-encoded errors

Instead of returning both regulator_dev structure as return value and
auxiliary error code in 'ret' argument, let's switch to using ERR_PTR
encoded values. This makes it more obvious what is going on at call sites.

Also, let's not unlock the mutex in the middle of a loop, but rather break
out and have single unlock path.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: gpio: correct default type
Hans Holmberg [Fri, 3 Feb 2017 14:29:12 +0000 (15:29 +0100)]
regulator: gpio: correct default type

The driver defaults to voltage, not current, type so correct
this in the device tree binding documentation.

Signed-off-by: Hans Holmberg <hans@pixelmunchies.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: cpcap: Add basic regulator support
Tony Lindgren [Thu, 2 Feb 2017 23:43:57 +0000 (15:43 -0800)]
regulator: cpcap: Add basic regulator support

Many Motorola phones like droid 4 are using a custom PMIC called CPCAP
or 6556002. This PMIC is used with several SoCs, I've noticed at least
omap3, omap4 and Tegra2 based Motorola phones and tablets using it.

Cc: devicetree@vger.kernel.org
Cc: Marcel Partap <mpartap@gmx.net>
Cc: Michael Scott <michael.scott@linaro.org>
Cc: Rob Herring <robh@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: core: fix typo in regulator_bulk_disable()
Dmitry Torokhov [Fri, 3 Feb 2017 23:16:16 +0000 (15:16 -0800)]
regulator: core: fix typo in regulator_bulk_disable()

"re-enable" was misspelled as "reename".

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: core: optimize devm_regulator_bulk_get()
Dmitry Torokhov [Fri, 3 Feb 2017 23:16:18 +0000 (15:16 -0800)]
regulator: core: optimize devm_regulator_bulk_get()

When performing this bulk operation, there is no need to track every supply
individually. It is more efficient to treat entire group as a single
managed resource.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: core: simplify regulator_bulk_force_disable()
Dmitry Torokhov [Fri, 3 Feb 2017 23:16:17 +0000 (15:16 -0800)]
regulator: core: simplify regulator_bulk_force_disable()

There is no need to have two loops there, we can store error for subsequent
reporting.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: core: have _regulator_get() accept get_type argument
Dmitry Torokhov [Fri, 3 Feb 2017 21:56:02 +0000 (13:56 -0800)]
regulator: core: have _regulator_get() accept get_type argument

Instead of separate "exclusive" and "allow_dummy" arguments, that formed 3
valid combinations (normal, exclusive and optional) and an invalid one,
let's accept explicit "get_type", like we did in devm-managed code.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: core: remove dead code in _regulator_get()
Dmitry Torokhov [Fri, 3 Feb 2017 21:56:00 +0000 (13:56 -0800)]
regulator: core: remove dead code in _regulator_get()

There is no point in assigning value to 'ret' before calling
regulator_dev_lookup() as it will clobber 'ret' anyway.

Also, let's explicitly return -PROBE_DEFER when try_module_get() fails,
instead of relying that earlier initialization of "regulator" carries
correct value.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoMerge remote-tracking branches 'regulator/fix/fixed' and 'regulator/fix/twl6040'...
Mark Brown [Fri, 3 Feb 2017 11:39:46 +0000 (12:39 +0100)]
Merge remote-tracking branches 'regulator/fix/fixed' and 'regulator/fix/twl6040' into regulator-linus

7 years agoregulator: rn5t618: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 15:22:23 +0000 (20:52 +0530)]
regulator: rn5t618: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/rn5t618-regulator.o
   text    data     bss     dec     hex filename
    375    5392       0    5767    1687 regulator/rn5t618-regulator.o

File size after: drivers/regulator/rn5t618-regulator.o
   text    data     bss     dec     hex filename
    631    5136       0    5767    1687 regulator/rn5t618-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: rc5t583-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 15:18:51 +0000 (20:48 +0530)]
regulator: rc5t583-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/rc5t583-regulator.o
   text    data     bss     dec     hex filename
    931    3824       0    4755    1293 regulator/rc5t583-regulator.o

File size after: drivers/regulator/rc5t583-regulator.o
   text    data     bss     dec     hex filename
   1187    3568       0    4755    1293 regulator/rc5t583-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: pv88090-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 15:15:39 +0000 (20:45 +0530)]
regulator: pv88090-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/pv88090-regulator.o
   text    data     bss     dec     hex filename
   2829    2032       8    4869    1305 regulator/pv88090-regulator.o

File size after: drivers/regulator/pv88090-regulator.o
   text    data     bss     dec     hex filename
   3341    1520       8    4869    1305 regulator/pv88090-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: pv88080-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 15:14:01 +0000 (20:44 +0530)]
regulator: pv88080-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/pv88080-regulator.o
   text    data     bss     dec     hex filename
   3828    1808       8    5644    160c regulator/pv88080-regulator.o

File size after: drivers/regulator/pv88080-regulator.o
   text    data     bss     dec     hex filename
   4340    1296       8    5644    160c regulator/pv88080-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: pv88060-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 15:10:51 +0000 (20:40 +0530)]
regulator: pv88060-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/pv88060-regulator.o
   text    data     bss     dec     hex filename
   6195     752       8    6955    1b2b regulator/pv88060-regulator.o

File size after: drivers/regulator/pv88060-regulator.o
   text    data     bss     dec     hex filename
   6739     240       8    6987    1b4b regulator/pv88060-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: pfuze100-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 15:08:57 +0000 (20:38 +0530)]
regulator: pfuze100-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/pfuze100-regulator.o
   text    data     bss     dec     hex filename
   3552   12528      16   16096    3ee0 regulator/pfuze100-regulator.o

File size after: drivers/regulator/pfuze100-regulator.o
   text    data     bss     dec     hex filename
   4576   11496      16   16088    3ed8 regulator/pfuze100-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: pcf50633-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 15:00:16 +0000 (20:30 +0530)]
regulator: pcf50633-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/pcf50633-regulator.o
   text    data     bss     dec     hex filename
   2763     464       0    3227     c9b regulator/pcf50633-regulator.o

File size after: drivers/regulator/pcf50633-regulator.o
   text    data     bss     dec     hex filename
   3019     192       0    3211     c8b regulator/pcf50633-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: pcap-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:57:15 +0000 (20:27 +0530)]
regulator: pcap-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/pcap-regulator.o
   text    data     bss     dec     hex filename
   5503     564       0    6067    17b3 regulator/pcap-regulator.o

File size after: drivers/regulator/pcap-regulator.o
   text    data     bss     dec     hex filename
   5759     308       0    6067    17b3 regulator/pcap-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: pbias-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:55:21 +0000 (20:25 +0530)]
regulator: pbias-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/pbias-regulator.o
   text    data     bss     dec     hex filename
   2545     624       0    3169     c61 regulator/pbias-regulator.o

File size after: drivers/regulator/pbias-regulator.o
   text    data     bss     dec     hex filename
   2801     368       0    3169     c61 regulator/pbias-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: palmas-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:53:55 +0000 (20:23 +0530)]
regulator: palmas-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/palmas-regulator.o
   text    data     bss     dec     hex filename
   9752    6296     288   16336    3fd0 regulator/palmas-regulator.o

File size after: drivers/regulator/palmas-regulator.o
   text    data     bss     dec     hex filename
  12856    3480       8   16344    3fd0 regulator/palmas-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: max8952: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:51:04 +0000 (20:21 +0530)]
regulator: max8952: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/max8952.o
   text    data     bss     dec     hex filename
   3048     496       0    3544     dd8 drivers/regulator/max8952.o

File size after: drivers/regulator/max8952.o
   text    data     bss     dec     hex filename
   3304     240       0    3544     dd8 drivers/regulator/max8952.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: max8925-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:49:42 +0000 (20:19 +0530)]
regulator: max8925-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/max8925-regulator.o
   text    data     bss     dec     hex filename
   1356    7184       0    8540    215c regulator/max8925-regulator.o

File size after: drivers/regulator/max8925-regulator.o
   text    data     bss     dec     hex filename
   1868    6664       0    8532    2154 regulator/max8925-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: max8907-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:32:32 +0000 (20:02 +0530)]
regulator: max8907-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/max8907-regulator.o
   text    data     bss     dec     hex filename
   1384    9424     256   11064    2b38 regulator/max8907-regulator.o

File size after: drivers/regulator/max8907-regulator.o
   text    data     bss     dec     hex filename
   2664    8400       0   11064    2b38 regulator/max8907-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: max77802-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:25:54 +0000 (19:55 +0530)]
regulator: max77802-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/max77802-regulator.o
   text    data     bss     dec     hex filename
  11811    1552       0   13363    3433 regulator/max77802-regulator.o

File size after: drivers/regulator/max77802-regulator.o
   text    data     bss     dec     hex filename
  13091     272       0   13363    3433 regulator/max77802-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: max77693-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:24:09 +0000 (19:54 +0530)]
regulator: max77693-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/max77693-regulator.o
   text    data     bss     dec     hex filename
   2230     720       0    2950     b86 regulator/max77693-regulator.o

File size after: drivers/regulator/max77693-regulator.o
   text    data     bss     dec     hex filename
   2486     464       0    2950     b86 regulator/max77693-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: max77686-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:22:24 +0000 (19:52 +0530)]
regulator: max77686-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/max77686-regulator.o
   text    data     bss     dec     hex filename
   9904    1320       0   11224    2bd8 regulator/max77686-regulator.o

File size after: drivers/regulator/max77686-regulator.o
   text    data     bss     dec     hex filename
  10928     280       0   11208    2bc8 regulator/max77686-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: max77620-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:20:37 +0000 (19:50 +0530)]
regulator: max77620-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/max77620-regulator.o
   text    data     bss     dec     hex filename
   4811    6992       0   11803    2e1b regulator/max77620-regulator.o

File size after: drivers/regulator/max77620-regulator.o
   text    data     bss     dec     hex filename
   5075    6720       0   11795    2e13 regulator/max77620-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: max14577-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:18:28 +0000 (19:48 +0530)]
regulator: max14577-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/max14577-regulator.o
   text    data     bss     dec     hex filename
   2646     976       0    3622     e26 regulator/max14577-regulator.o

File size after: drivers/regulator/max14577-regulator.o
   text    data     bss     dec     hex filename
   3414     192       0    3606     e16 regulator/max14577-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: ltc3676: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:15:02 +0000 (19:45 +0530)]
regulator: ltc3676: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/ltc3676.o
   text    data     bss     dec     hex filename
   2369    2808     288    5465    1559 drivers/regulator/ltc3676.o

File size after: drivers/regulator/ltc3676.o
   text    data     bss     dec     hex filename
   3145    2296       8    5449    1549 drivers/regulator/ltc3676.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: ltc3589: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:13:54 +0000 (19:43 +0530)]
regulator: ltc3589: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/ltc3589.o
   text    data     bss     dec     hex filename
   2564    3312     288    6164    1814 drivers/regulator/ltc3589.o

File size after: drivers/regulator/ltc3589.o
   text    data     bss     dec     hex filename
   3604    2544       8    6156    180c drivers/regulator/ltc3589.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: lp8755: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:11:30 +0000 (19:41 +0530)]
regulator: lp8755: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/lp8755.o
   text    data     bss     dec     hex filename
   3519    2800       8    6327    18b7 drivers/regulator/lp8755.o

File size after: drivers/regulator/lp8755.o
   text    data     bss     dec     hex filename
   3779    2544       8    6331    18bb drivers/regulator/lp8755.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: hi655x-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:10:08 +0000 (19:40 +0530)]
regulator: hi655x-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/hi655x-regulator.o
   text    data     bss     dec     hex filename
    689    3120       0    3809     ee1 regulator/hi655x-regulator.o

File size after: drivers/regulator/hi655x-regulator.o
   text    data     bss     dec     hex filename
   1201    2608       0    3809     ee1 regulator/hi655x-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: fan53555: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:02:05 +0000 (19:32 +0530)]
regulator: fan53555: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/fan53555.o
   text    data     bss     dec     hex filename
   3512     496       8    4016     fb0 drivers/regulator/fan53555.o

File size after: drivers/regulator/fan53555.o
   text    data     bss     dec     hex filename
   3768     240       8    4016     fb0 drivers/regulator/fan53555.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: bcm590xx-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 14:00:24 +0000 (19:30 +0530)]
regulator: bcm590xx-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/bcm590xx-regulator.o
   text    data     bss     dec     hex filename
   1807    3360       0    5167    142f regulator/bcm590xx-regulator.o

File size after: drivers/regulator/bcm590xx-regulator.o
   text    data     bss     dec     hex filename
   2575    2592       0    5167    142f regulator/bcm590xx-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: axp20x-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 13:58:01 +0000 (19:28 +0530)]
regulator: axp20x-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/axp20x-regulator.o
   text    data     bss     dec     hex filename
  16848    1232       0   18080    46a0 regulator/axp20x-regulator.o

File size after: drivers/regulator/axp20x-regulator.o
   text    data     bss     dec     hex filename
  17888     192       0   18080    46a0 regulator/axp20x-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: as3711-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 13:55:00 +0000 (19:25 +0530)]
regulator: as3711-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/as3711-regulator.o
   text    data     bss     dec     hex filename
   1517    4144       0    5661    161d regulator/as3711-regulator.o

File size after: drivers/regulator/as3711-regulator.o
   text    data     bss     dec     hex filename
   2301    3376       0    5677    162d regulator/as3711-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: arizona-micsupp: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 13:40:00 +0000 (19:10 +0530)]
regulator: arizona-micsupp: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/arizona-micsupp.o
   text    data     bss     dec     hex filename
   1738     464       8    2210     8a2 regulator/arizona-micsupp.o

File size after: drivers/regulator/arizona-micsupp.o
   text    data     bss     dec     hex filename
   1994     192       8    2194     892 regulator/arizona-micsupp.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: arizona-ldo1: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 13:38:41 +0000 (19:08 +0530)]
regulator: arizona-ldo1: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/arizona-ldo1.o
   text    data     bss     dec     hex filename
   1890     720       0    2610     a32 drivers/regulator/arizona-ldo1.o

File size after: drivers/regulator/arizona-ldo1.o
   text    data     bss     dec     hex filename
   2402     192       0    2594     a22 drivers/regulator/arizona-ldo1.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: ad5398: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 13:35:22 +0000 (19:05 +0530)]
regulator: ad5398: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/ad5398.o
   text    data     bss     dec     hex filename
   1707     672       0    2379     94b drivers/regulator/ad5398.o

File size after: drivers/regulator/ad5398.o
   text    data     bss     dec     hex filename
   1963     416       0    2379     94b drivers/regulator/ad5398.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: act8945a-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 13:33:28 +0000 (19:03 +0530)]
regulator: act8945a-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/act8945a-regulator.o
   text    data     bss     dec     hex filename
   3680     464       0    4144    1030 regulator/act8945a-regulator.o

File size after: drivers/regulator/act8945a-regulator.o
   text    data     bss     dec     hex filename
   3936     192       0    4128    1020 regulator/act8945a-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: aat2870-regulator: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 13:30:52 +0000 (19:00 +0530)]
regulator: aat2870-regulator: constify regulator_ops structure

Declare regulator_ops structure as const as it is only stored in the ops
field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/aat2870-regulator.o
   text    data     bss     dec     hex filename
    938    1424       0    2362     93a regulator/aat2870-regulator.o

File size after: drivers/regulator/aat2870-regulator.o
   text    data     bss     dec     hex filename
   1194    1168       0    2362     93a regulator/aat2870-regulator.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: 88pm8607: constify regulator_ops structure
Bhumika Goyal [Sat, 28 Jan 2017 13:28:34 +0000 (18:58 +0530)]
regulator: 88pm8607: constify regulator_ops structure

Declare regulator_ops structures as const as it is only stored in the
ops field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/88pm8607.o
   text    data     bss     dec     hex filename
   3466    5488       0    8954    22fa drivers/regulator/88pm8607.o

File size after: drivers/regulator/88pm8607.o
   text    data     bss     dec     hex filename
   3978    4976       0    8954    22fa drivers/regulator/88pm8607.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: 88pm800: constify regulator_ops structures
Bhumika Goyal [Sat, 28 Jan 2017 13:23:18 +0000 (18:53 +0530)]
regulator: 88pm800: constify regulator_ops structures

Declare regulator_ops structures as const as they are only stored in the
ops field of a regulator_desc structure. This field is of type const, so
regulator_ops structures having this property can be made const too.

File size before: drivers/regulator/88pm800.o
   text    data     bss     dec     hex filename
   1001    6288       0    7289    1c79 drivers/regulator/88pm800.o

File size after: drivers/regulator/88pm800.o
   text    data     bss     dec     hex filename
   1513    5776       0    7289    1c79 drivers/regulator/88pm800.o

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: s2mpa01: reduce stack size for probe function
Arnd Bergmann [Wed, 25 Jan 2017 22:20:59 +0000 (23:20 +0100)]
regulator: s2mpa01: reduce stack size for probe function

In some rare configurations we can run into rather high kernel stack
consumption:

drivers/regulator/s2mpa01.c:397:1: error: the frame size of 1536 bytes is larger than 1152 bytes [-Werror=frame-larger-than=]

This is probably harmless since it happens only in the probe function,
but there is also a relatively simple workaround, moving the regulator
match data into the device specific structure.

As a small downside, we waste a little memory at runtime. An alternative
approach would free the array at the end of the probe function, which in
turn is a little more complicated.

Fixes: f18792714608 ("regulator: Add support for S2MPA01 regulator")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: fixed: Revert support for ACPI interface
Mark Rutland [Wed, 25 Jan 2017 19:30:09 +0000 (19:30 +0000)]
regulator: fixed: Revert support for ACPI interface

This reverts commit 13bed58ce874 (regulator: fixed: add support for ACPI
interface).

While there does appear to be a practical need to manage regulators on ACPI
systems, using ad-hoc properties to describe regulators to the kernel presents
a number of problems (especially should ACPI gain first class support for such
things), and there are ongoing discussions as to how to manage this.

Until there is a rough consensus, revert commit 13bed58ce8748d43, which hasn't
been in a released kernel yet as discussed in [1] and the surrounding thread.

[1] http://lkml.kernel.org/r/20170125184949.x2wkoo7kbaaajkjk@sirena.org.uk

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Liam Girdwood <lgirdwood@gmail.com>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Lu Baolu <baolu.lu@linux.intel.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: Rafael J. Wysocki <rafael@kernel.org>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: anatop: Add support for "anatop-enable-bit"
Andrey Smirnov [Tue, 10 Jan 2017 16:30:14 +0000 (08:30 -0800)]
regulator: anatop: Add support for "anatop-enable-bit"

Add code to support support for "anatop-enable-bit" device-tree
property. This property translates to LINREG_ENABLE bit in real hardware
and is present on 1p1, 2p5 and 3p0 regulators on i.MX6 and 1p0d regulator
on i.MX7.

Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: axp20x: AXP806: Fix dcdcb being set instead of dcdce
Rask Ingemann Lambertsen [Sat, 21 Jan 2017 16:11:43 +0000 (17:11 +0100)]
regulator: axp20x: AXP806: Fix dcdcb being set instead of dcdce

A typo or copy-paste bug means that the register access intended for
regulator dcdce goes to dcdcb instead. This patch corrects it.

Fixes: 2ca342d391e3 (regulator: axp20x: Support AXP806 variant)
Signed-off-by: Rask Ingemann Lambertsen <rask@formelder.dk>
Acked-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org
7 years agoregulator: tps65217: Allow DCDC1 and DCDC3 up to 3.3V
MÃ¥ns Andersson [Mon, 23 Jan 2017 10:28:10 +0000 (11:28 +0100)]
regulator: tps65217: Allow DCDC1 and DCDC3 up to 3.3V

The data sheet statement that DCDC1 and DCDC3 only can be set in the range
0.9V - 1.5V refers to storage on its internal EEPROM and therefore cold boot
configuration. After power-on the device can be reconfigured over i2c and
DCDC1/3 set up to 3.3V.

Signed-off-by: MÃ¥ns Andersson <mans.andersson@nibe.se>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: qcom-smd: Add PM8994 regulator support
Rajendra Nayak [Wed, 18 Jan 2017 10:46:37 +0000 (02:46 -0800)]
regulator: qcom-smd: Add PM8994 regulator support

This patch adds support for the PM8994 regulators found on msm8992,
msm8994 and msm8996 platforms.

Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
[bjorn: Add DT binding doc and vdd_lvs1_2 supply]
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: twl6030: fix range comparison, allowing vsel = 59
Colin Ian King [Wed, 11 Jan 2017 15:36:20 +0000 (15:36 +0000)]
regulator: twl6030: fix range comparison, allowing vsel = 59

The range min_uV > 1350000 && min_uV <= 150000 is never reachable
because of a typo in the previous range check and hence vsel = 59
is never reached.  Fix the previous range check to enable the
vsel = 59 setting.

Fixes CoverityScan CID#728454 ("Logially dead code")

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: core: Don't use regulators as supplies until the parent is bound
Jon Hunter [Wed, 11 Jan 2017 17:44:25 +0000 (17:44 +0000)]
regulator: core: Don't use regulators as supplies until the parent is bound

When regulators are successfully registered, we check to see if the
regulator is a supply for any other registered regulator and if so
add the new regulator as the supply for the existing regulator(s).

Some devices, such as Power Management ICs, may register a series of
regulators when probed and there are cases where one of the regulators
may fail to register and defer the probing of the parent device. In this
case any successfully registered regulators would be unregistered so
that they can be re-registered at some time later when the probe is
attempted again. However, if one of the regulators that was registered
was added as a supply to another registered regulator (that did not
belong to the same parent device), then this supply regulator was
unregister again because the parent device is probe deferred, then a
regulator could be holding an invalid reference to a supply regulator
that has been unregistered. This will lead to a system crash if that
regulator is then used.

Although it would be possible to check when unregistering a regulator
if any other regulator in the system is using it as a supply, it still
may not be possible to remove it as a supply if this other regulator is
in use. Therefore, fix this by preventing any regulator from adding
another regulator as a supply if the parent device for the supply
regulator has not been bound and if the parent device for the supply
and the regulator are different. This will allow a parent device that is
registering regulators to be probe deferred and ensure that none of the
regulators it has registered are used as supplies for any other
regulator from another device.

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoregulator: arizona-micsupp: Use SoC component pin control functions
Richard Fitzgerald [Thu, 15 Dec 2016 14:43:49 +0000 (14:43 +0000)]
regulator: arizona-micsupp: Use SoC component pin control functions

The name of a codec pin can have an optional prefix string, which is
defined by the SoC machine driver. The snd_soc_dapm_x_pin functions
take the fully-specified name including the prefix and so the existing
code would fail to find the pin if the audio machine driver had added
a prefix.

Switch to using the snd_soc_component_x_pin equivalent functions that
take a specified SoC component and automatically add the name prefix to
the provided pin name.

Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
7 years agoMerge remote-tracking branches 'regulator/topic/tps65086' and 'regulator/topic/twl...
Mark Brown [Mon, 12 Dec 2016 12:17:31 +0000 (12:17 +0000)]
Merge remote-tracking branches 'regulator/topic/tps65086' and 'regulator/topic/twl' into regulator-next

7 years agoMerge remote-tracking branches 'regulator/topic/gpio', 'regulator/topic/lp873x',...
Mark Brown [Mon, 12 Dec 2016 12:17:27 +0000 (12:17 +0000)]
Merge remote-tracking branches 'regulator/topic/gpio', 'regulator/topic/lp873x', 'regulator/topic/max77620', 'regulator/topic/pwm' and 'regulator/topic/tps6507x' into regulator-next

7 years agoMerge remote-tracking branches 'regulator/topic/arizona', 'regulator/topic/bypass...
Mark Brown [Mon, 12 Dec 2016 12:17:24 +0000 (12:17 +0000)]
Merge remote-tracking branches 'regulator/topic/arizona', 'regulator/topic/bypass', 'regulator/topic/error' and 'regulator/topic/fixed' into regulator-next

7 years agoMerge remote-tracking branch 'regulator/topic/core' into regulator-next
Mark Brown [Mon, 12 Dec 2016 12:17:23 +0000 (12:17 +0000)]
Merge remote-tracking branch 'regulator/topic/core' into regulator-next

7 years agoMerge remote-tracking branches 'regulator/fix/stw481x' and 'regulator/fix/tps65086...
Mark Brown [Mon, 12 Dec 2016 12:17:19 +0000 (12:17 +0000)]
Merge remote-tracking branches 'regulator/fix/stw481x' and 'regulator/fix/tps65086' into regulator-linus

7 years agoMerge remote-tracking branch 'regulator/fix/axp20x' into regulator-linus
Mark Brown [Mon, 12 Dec 2016 12:17:19 +0000 (12:17 +0000)]
Merge remote-tracking branch 'regulator/fix/axp20x' into regulator-linus

7 years agoLinux 4.9 v4.9
Linus Torvalds [Sun, 11 Dec 2016 19:17:54 +0000 (11:17 -0800)]
Linux 4.9

7 years agoMerge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
Linus Torvalds [Sun, 11 Dec 2016 18:17:39 +0000 (10:17 -0800)]
Merge branch 'upstream' of git://git.linux-mips.org/ralf/upstream-linus

Pull MIPS fixes from Ralf Baechle:
 "Two more MIPS fixes for 4.9:

   - RTC: Return -ENODEV so an external RTC will be tried

   - Fix mask of GPE frequency

  These two have been tested on Imagination's automated test system and
  also both received positive reviews on the linux-mips mailing list"

* 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
  MIPS: Lantiq: Fix mask of GPE frequency
  MIPS: Return -ENODEV from weak implementation of rtc_mips_set_time

7 years agoMIPS: Lantiq: Fix mask of GPE frequency
Hauke Mehrtens [Wed, 7 Dec 2016 21:32:00 +0000 (22:32 +0100)]
MIPS: Lantiq: Fix mask of GPE frequency

The hardware documentation says bit 11:10 are used for the GPE
frequency selection. Fix the mask in the define to match these bits.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Thomas Langer <thomas.langer@intel.com>
Cc: linux-mips@linux-mips.org
Cc: john@phrozen.org
Patchwork: https://patchwork.linux-mips.org/patch/14648/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
7 years agoMIPS: Return -ENODEV from weak implementation of rtc_mips_set_time
Luuk Paulussen [Wed, 7 Dec 2016 22:43:34 +0000 (11:43 +1300)]
MIPS: Return -ENODEV from weak implementation of rtc_mips_set_time

The sync_cmos_clock function in kernel/time/ntp.c first tries to update
the internal clock of the cpu by calling the "update_persistent_clock64"
architecture specific function.  If this returns -ENODEV, it then tries
to update an external RTC using "rtc_set_ntp_time".

On the mips architecture, the weak implementation of the underlying
function would return 0 if it wasn't overridden.  This meant that the
sync_cmos_clock function would never try to update an external RTC
(if both CONFIG_GENERIC_CMOS_UPDATE and CONFIG_RTC_SYSTOHC are
configured)

Returning -ENODEV instead, means that an external RTC will be tried.

Signed-off-by: Luuk Paulussen <luuk.paulussen@alliedtelesis.co.nz>
Reviewed-by: Richard Laing <richard.laing@alliedtelesis.co.nz>
Reviewed-by: Scott Parlane <scott.parlane@alliedtelesis.co.nz>
Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14649/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
7 years agoMerge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Linus Torvalds [Sat, 10 Dec 2016 17:47:13 +0000 (09:47 -0800)]
Merge branch 'linus' of git://git./linux/kernel/git/herbert/crypto-2.6

Pull crypto fixes from Herbert Xu:
 "This fixes the following issues:

   - Fix pointer size when caam is used with AArch64 boot loader on
     AArch32 kernel.

   - Fix ahash state corruption in marvell driver.

   - Fix buggy algif_aed tag handling.

   - Prevent mcryptd from being used with incompatible algorithms which
     can cause crashes"

* 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
  crypto: algif_aead - fix uninitialized variable warning
  crypto: mcryptd - Check mcryptd algorithm compatibility
  crypto: algif_aead - fix AEAD tag memory handling
  crypto: caam - fix pointer size for AArch64 boot loader, AArch32 kernel
  crypto: marvell - Don't corrupt state of an STD req for re-stepped ahash
  crypto: marvell - Don't copy hash operation twice into the SRAM

7 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Linus Torvalds [Sat, 10 Dec 2016 17:23:19 +0000 (09:23 -0800)]
Merge git://git./linux/kernel/git/davem/net

Pull networking fixes from David Miller:

 1) Limit the number of can filters to avoid > MAX_ORDER allocations.
    Fix from Marc Kleine-Budde.

 2) Limit GSO max size in netvsc driver to avoid problems with NVGRE
    configurations. From Stephen Hemminger.

 3) Return proper error when memory allocation fails in
    ser_gigaset_init(), from Dan Carpenter.

 4) Missing linkage undo in error paths of ipvlan_link_new(), from Gao
    Feng.

 5) Missing necessayr SET_NETDEV_DEV in lantiq and cpmac drivers, from
    Florian Fainelli.

 6) Handle probe deferral properly in smsc911x driver.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
  net: mlx5: Fix Kconfig help text
  net: smsc911x: back out silently on probe deferrals
  ibmveth: set correct gso_size and gso_type
  net: ethernet: cpmac: Call SET_NETDEV_DEV()
  net: ethernet: lantiq_etop: Call SET_NETDEV_DEV()
  vhost-vsock: fix orphan connection reset
  cxgb4/cxgb4vf: Assign netdev->dev_port with port ID
  driver: ipvlan: Unlink the upper dev when ipvlan_link_new failed
  ser_gigaset: return -ENOMEM on error instead of success
  NET: usb: cdc_mbim: add quirk for supporting Telit LE922A
  can: peak: fix bad memory access and free sequence
  phy: Don't increment MDIO bus refcount unless it's a different owner
  netvsc: reduce maximum GSO size
  drivers: net: cpsw-phy-sel: Clear RGMII_IDMODE on "rgmii" links
  can: raw: raw_setsockopt: limit number of can_filter that can be set

7 years agonet: mlx5: Fix Kconfig help text
Christopher Covington [Fri, 9 Dec 2016 21:53:05 +0000 (16:53 -0500)]
net: mlx5: Fix Kconfig help text

Since the following commit, Infiniband and Ethernet have not been
mutually exclusive.

Fixes: 4aa17b28 mlx5: Enable mutual support for IB and Ethernet
Signed-off-by: Christopher Covington <cov@codeaurora.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
7 years agonet: smsc911x: back out silently on probe deferrals
Linus Walleij [Fri, 9 Dec 2016 13:18:00 +0000 (14:18 +0100)]
net: smsc911x: back out silently on probe deferrals

When trying to get a regulator we may get deferred and we see
this noise:

smsc911x 1b800000.ethernet-ebi2 (unnamed net_device) (uninitialized):
   couldn't get regulators -517

Then the driver continues anyway. Which means that the regulator
may not be properly retrieved and reference counted, and may be
switched off in case noone else is using it.

Fix this by returning silently on deferred probe and let the
system work it out.

Cc: Jeremy Linton <jeremy.linton@arm.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
7 years agoibmveth: set correct gso_size and gso_type
Thomas Falcon [Thu, 8 Dec 2016 22:40:03 +0000 (16:40 -0600)]
ibmveth: set correct gso_size and gso_type

This patch is based on an earlier one submitted
by Jon Maxwell with the following commit message:

"We recently encountered a bug where a few customers using ibmveth on the
same LPAR hit an issue where a TCP session hung when large receive was
enabled. Closer analysis revealed that the session was stuck because the
one side was advertising a zero window repeatedly.

We narrowed this down to the fact the ibmveth driver did not set gso_size
which is translated by TCP into the MSS later up the stack. The MSS is
used to calculate the TCP window size and as that was abnormally large,
it was calculating a zero window, even although the sockets receive buffer
was completely empty."

We rely on the Virtual I/O Server partition in a pseries
environment to provide the MSS through the TCP header checksum
field. The stipulation is that users should not disable checksum
offloading if rx packet aggregation is enabled through VIOS.

Some firmware offerings provide the MSS in the RX buffer.
This is signalled by a bit in the RX queue descriptor.

Reviewed-by: Brian King <brking@linux.vnet.ibm.com>
Reviewed-by: Pradeep Satyanarayana <pradeeps@linux.vnet.ibm.com>
Reviewed-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Reviewed-by: Jonathan Maxwell <jmaxwell37@gmail.com>
Reviewed-by: David Dai <zdai@us.ibm.com>
Signed-off-by: Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
7 years agoMerge branch 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdim...
Linus Torvalds [Fri, 9 Dec 2016 19:27:22 +0000 (11:27 -0800)]
Merge branch 'libnvdimm-fixes' of git://git./linux/kernel/git/nvdimm/nvdimm

Pull libnvdimm fixes from Dan Williams:
 "Several fixes to the DSM (ACPI device specific method) marshaling
  implementation.

  I consider these urgent enough to send for 4.9 consideration since
  they fix the kernel's handling of ARS (Address Range Scrub) commands.
  Especially for platforms without machine-check-recovery capabilities,
  successful execution of ARS commands enables the platform to
  potentially break out of an infinite reboot problem if a media error
  is present in the boot path. There is also a one line fix for a
  device-dax read-only mapping regression.

  Commits 9a901f5495e2 ("acpi, nfit: fix extended status translations
  for ACPI DSMs") and 325896ffdf90 ("device-dax: fix private mapping
  restriction, permit read-only") are true regression fixes for changes
  introduced this cycle.

  Commit efda1b5d87cb ("acpi, nfit, libnvdimm: fix / harden ars_status
  output length handling") fixes the kernel's handling of zero-length
  results, this never would have worked in the past, but we only just
  recently discovered a BIOS implementation that emits this arguably
  spec non-compliant result.

  The remaining two commits are additional fall out from thinking
  through the implications of a zero / truncated length result of the
  ARS Status command.

  In order to mitigate the risk that these changes introduce yet more
  regressions they are backstopped by a new unit test in commit
  a7de92dac9f0 ("tools/testing/nvdimm: unit test acpi_nfit_ctl()") that
  mocks up inputs to acpi_nfit_ctl()"

* 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
  device-dax: fix private mapping restriction, permit read-only
  tools/testing/nvdimm: unit test acpi_nfit_ctl()
  acpi, nfit: fix bus vs dimm confusion in xlat_status
  acpi, nfit: validate ars_status output buffer size
  acpi, nfit, libnvdimm: fix / harden ars_status output length handling
  acpi, nfit: fix extended status translations for ACPI DSMs

7 years agoMerge branch 'for-4.9-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj...
Linus Torvalds [Fri, 9 Dec 2016 19:07:45 +0000 (11:07 -0800)]
Merge branch 'for-4.9-fixes' of git://git./linux/kernel/git/tj/libata

Pull libata fixes from Tejun Heo:
 "This is quite late but SCT Write Same support added during this cycle
  is broken subtly but seriously and it'd be best to disable it before
  v4.9 gets released.

  This contains two commits - one low impact sata_mv fix and the
  mentioned disabling of SCT Write Same"

* 'for-4.9-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
  libata-scsi: disable SCT Write Same for the moment
  ata: sata_mv: check for errors when parsing nr-ports from dt

7 years agoMerge tag 'ceph-for-4.9-rc9' of git://github.com/ceph/ceph-client
Linus Torvalds [Fri, 9 Dec 2016 19:02:40 +0000 (11:02 -0800)]
Merge tag 'ceph-for-4.9-rc9' of git://github.com/ceph/ceph-client

Pull ceph fix from Ilya Dryomov:
 "A fix for an issue with ->d_revalidate() in ceph, causing frequent
  kernel crashes.

  Marked for stable - it goes back to 4.6, but started popping up only
  in 4.8"

* tag 'ceph-for-4.9-rc9' of git://github.com/ceph/ceph-client:
  ceph: don't set req->r_locked_dir in ceph_d_revalidate

7 years agoMerge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Linus Torvalds [Fri, 9 Dec 2016 19:00:39 +0000 (11:00 -0800)]
Merge tag 'armsoc-fixes' of git://git./linux/kernel/git/arm/arm-soc

Pull ARM SoC fixes from Olof Johansson:
 "Final batch of SoC fixes

  A few fixes that have trickled in over the last week, all fixing minor
  errors in devicetrees -- UART pin assignment on Allwinner H3,
  correcting number of SATA ports on a Marvell-based Linkstation
  platform and a display clock fix for Freescale/NXP i.MX7D that fixes a
  freeze when starting up X"

* tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
  ARM: dts: orion5x: fix number of sata port for linkstation ls-gl
  ARM: dts: imx7d: fix LCDIF clock assignment
  dts: sun8i-h3: correct UART3 pin definitions

7 years agoMerge tag 'm68k-for-v4.9-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert...
Linus Torvalds [Fri, 9 Dec 2016 18:54:54 +0000 (10:54 -0800)]
Merge tag 'm68k-for-v4.9-tag2' of git://git./linux/kernel/git/geert/linux-m68k

Pull m68k fixes from Geert Uytterhoeven:

 - build fix for drivers calling ndelay() in a conditional block without
   curly braces

 - defconfig updates

* tag 'm68k-for-v4.9-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
  m68k: Fix ndelay() macro
  m68k/defconfig: Update defconfigs for v4.9-rc1

7 years agoMerge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux
Linus Torvalds [Fri, 9 Dec 2016 18:50:49 +0000 (10:50 -0800)]
Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux

Pull drm fix from Dave Airlie:
 "Just a single fix for amdgpu to just suspend the gpu on 'shutdown'
  instead of shutting it down fully, as for some reason the hw was
  getting upset in some situations"

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
  drm/amdgpu: just suspend the hw on pci shutdown

7 years agoRevert "radix tree test suite: fix compilation"
Linus Torvalds [Fri, 9 Dec 2016 18:41:42 +0000 (10:41 -0800)]
Revert "radix tree test suite: fix compilation"

This reverts commit 53855d10f4567a0577360b6448d52a863929775b.

It shouldn't have come in yet - it depends on the changes in linux-next
that will come in during the next merge window.  As Matthew Wilcox says,
the test suite is broken with the current state without the revert.

Requested-by: Matthew Wilcox <mawilcox@microsoft.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
7 years agoMerge branch 'ethernet-missing-netdev-parent'
David S. Miller [Fri, 9 Dec 2016 02:26:59 +0000 (21:26 -0500)]
Merge branch 'ethernet-missing-netdev-parent'

Florian Fainelli says:

====================
net: ethernet: Make sure we set dev->dev.parent

This patch series builds atop:

ec988ad78ed6d184a7f4ca6b8e962b0e8f1de461 ("phy: Don't increment MDIO
bus refcount unless it's a different owner")

FMAN is the one that potentially needs patching as well (call
SET_NETDEV_DEV), but there appears to be no way that init_phy is
called right now, or there is not such an in-tree user. Madalin, can
you comment on that?
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
7 years agonet: ethernet: cpmac: Call SET_NETDEV_DEV()
Florian Fainelli [Thu, 8 Dec 2016 19:41:25 +0000 (11:41 -0800)]
net: ethernet: cpmac: Call SET_NETDEV_DEV()

The TI CPMAC driver calls into PHYLIB which now checks for
net_device->dev.parent, so make sure we do set it before calling into
any MDIO/PHYLIB related function.

Fixes: ec988ad78ed6 ("phy: Don't increment MDIO bus refcount unless it's a different owner")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
7 years agonet: ethernet: lantiq_etop: Call SET_NETDEV_DEV()
Florian Fainelli [Thu, 8 Dec 2016 19:41:24 +0000 (11:41 -0800)]
net: ethernet: lantiq_etop: Call SET_NETDEV_DEV()

The Lantiq Etop driver calls into PHYLIB which now checks for
net_device->dev.parent, so make sure we do set it before calling into
any MDIO/PHYLIB related function.

Fixes: ec988ad78ed6 ("phy: Don't increment MDIO bus refcount unless it's a different owner")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
7 years agovhost-vsock: fix orphan connection reset
Peng Tao [Thu, 8 Dec 2016 17:10:46 +0000 (01:10 +0800)]
vhost-vsock: fix orphan connection reset

local_addr.svm_cid is host cid. We should check guest cid instead,
which is remote_addr.svm_cid. Otherwise we end up resetting all
connections to all guests.

Cc: stable@vger.kernel.org [4.8+]
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Peng Tao <bergwolf@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
7 years agoMerge branch 'parisc-4.9-5' of git://git.kernel.org/pub/scm/linux/kernel/git/deller...
Linus Torvalds [Thu, 8 Dec 2016 23:40:15 +0000 (15:40 -0800)]
Merge branch 'parisc-4.9-5' of git://git./linux/kernel/git/deller/parisc-linux

Pull parisc fixes from Helge Deller:
 "Three important fixes for the parisc architecture.

  Dave provided two patches: One which purges the TLB before setting a
  PTE entry and a second one which drops unnecessary TLB flushes. Both
  patches have been tested for one week on the debian buildd servers and
  prevent random segmentation faults.

  The patch from me fixes a crash at boot inside the TLB measuring code
  on SMP machines with PA8000-PA8700 CPUs (specifically A500-44 and
  J5000 servers)"

* 'parisc-4.9-5' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
  parisc: Fix TLB related boot crash on SMP machines
  parisc: Remove unnecessary TLB purges from flush_dcache_page_asm and flush_icache_page_asm
  parisc: Purge TLB before setting PTE

7 years agoMerge tag 'linux-can-fixes-for-4.9-20161208' of git://git.kernel.org/pub/scm/linux...
David S. Miller [Thu, 8 Dec 2016 23:22:40 +0000 (18:22 -0500)]
Merge tag 'linux-can-fixes-for-4.9-20161208' of git://git./linux/kernel/git/mkl/linux-can

Marc Kleine-Budde says:

====================
pull-request: can 2016-12-08

this is a pull request for one patch.

Jiho Chu found and fixed a use-after-free error in the cleanup path in
the peak pcan USB CAN driver.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
7 years agocxgb4/cxgb4vf: Assign netdev->dev_port with port ID
Arjun V [Thu, 8 Dec 2016 12:39:23 +0000 (18:09 +0530)]
cxgb4/cxgb4vf: Assign netdev->dev_port with port ID

Added missing dev_port assignment in cxgb4vf driver.
Also made dev_port assignment of cxgb4 in sync with cxgb4vf driver.

Signed-off-by: Casey Leedom <leedom@chelsio.com>
Signed-off-by: Arjun V <arjun@chelsio.com>
Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
7 years agoparisc: Fix TLB related boot crash on SMP machines
Helge Deller [Thu, 8 Dec 2016 20:00:46 +0000 (21:00 +0100)]
parisc: Fix TLB related boot crash on SMP machines

At bootup we run measurements to calculate the best threshold for when we
should be using full TLB flushes instead of just flushing a specific amount of
TLB entries.  This performance test is run over the kernel text segment.

But running this TLB performance test on the kernel text segment turned out to
crash some SMP machines when the kernel text pages were mapped as huge pages.

To avoid those crashes this patch simply skips this test on some SMP machines
and calculates an optimal threshold based on the maximum number of available
TLB entries and number of online CPUs.

On a technical side, this seems to happen:
The TLB measurement code uses flush_tlb_kernel_range() to flush specific TLB
entries with a page size of 4k (pdtlb 0(sr1,addr)). On UP systems this purge
instruction seems to work without problems even if the pages were mapped as
huge pages.  But on SMP systems the TLB purge instruction is broadcasted to
other CPUs. Those CPUs then crash the machine because the page size is not as
expected.  C8000 machines with PA8800/PA8900 CPUs were not affected by this
problem, because the required cache coherency prohibits to use huge pages at
all.  Sadly I didn't found any documentation about this behaviour, so this
finding is purely based on testing with phyiscal SMP machines (A500-44 and
J5000, both were 2-way boxes).

Cc: <stable@vger.kernel.org> # v3.18+
Signed-off-by: Helge Deller <deller@gmx.de>
7 years agoMerge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Linus Torvalds [Thu, 8 Dec 2016 20:04:41 +0000 (12:04 -0800)]
Merge tag 'scsi-fixes' of git://git./linux/kernel/git/jejb/scsi

Pull SCSI fix from James Bottomley:
 "One small fix for a regression in a prior fix (again).

  This time the condition in the prior fix BUG_ON proved to be wrong
  under certain circumstances causing a BUG to trigger where it
  shouldn't in the lpfc driver"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
  scsi: lpfc: fix oops/BUG in lpfc_sli_ringtxcmpl_put()

7 years agodriver: ipvlan: Unlink the upper dev when ipvlan_link_new failed
Gao Feng [Thu, 8 Dec 2016 03:16:58 +0000 (11:16 +0800)]
driver: ipvlan: Unlink the upper dev when ipvlan_link_new failed

When netdev_upper_dev_unlink failed in ipvlan_link_new, need to
unlink the ipvlan dev with upper dev.

Signed-off-by: Gao Feng <fgao@ikuai8.com>
Acked-by: Mahesh Bandewar <maheshb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>