+++ /dev/null
-From db57f29d50683afd75c7f8b9908af7669837c3a9 Mon Sep 17 00:00:00 2001
-From: Paul Burton <paulburton@kernel.org>
-Date: Thu, 21 Apr 2016 14:04:54 +0100
-Subject: MIPS: math-emu: Fix m{add,sub}.s shifts
-
-From: Paul Burton <paul.burton@imgtec.com>
-
-commit db57f29d50683afd75c7f8b9908af7669837c3a9 upstream.
-
-The code in _sp_maddf (formerly ieee754sp_madd) appears to have been
-copied verbatim from ieee754sp_add, and although it's adding the
-unpacked "r" & "z" floats it kept using macros that operate on "x" &
-"y". This led to the addition being carried out incorrectly on some
-mismash of the product, accumulator & multiplicand fields. Typically
-this would lead to the assertions "ze == re" & "ze <= SP_EMAX" failing
-since ze & re hadn't been operated upon.
-
-Signed-off-by: Paul Burton <paul.burton@imgtec.com>
-Fixes: e24c3bec3e8e ("MIPS: math-emu: Add support for the MIPS R6 MADDF FPU instruction")
-Cc: Adam Buchbinder <adam.buchbinder@gmail.com>
-Cc: Maciej W. Rozycki <macro@imgtec.com>
-Cc: linux-mips@linux-mips.org
-Cc: linux-kernel@vger.kernel.org
-Patchwork: https://patchwork.linux-mips.org/patch/13159/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- arch/mips/math-emu/ieee754sp.c | 3 ++-
- arch/mips/math-emu/ieee754sp.h | 16 +++++++---------
- arch/mips/math-emu/sp_add.c | 6 ++++--
- arch/mips/math-emu/sp_maddf.c | 13 ++++++++-----
- arch/mips/math-emu/sp_sub.c | 6 ++++--
- 5 files changed, 25 insertions(+), 19 deletions(-)
-
---- a/arch/mips/math-emu/ieee754sp.c
-+++ b/arch/mips/math-emu/ieee754sp.c
-@@ -130,7 +130,8 @@ union ieee754sp ieee754sp_format(int sn,
- } else {
- /* sticky right shift es bits
- */
-- SPXSRSXn(es);
-+ xm = XSPSRS(xm, es);
-+ xe += es;
- assert((xm & (SP_HIDDEN_BIT << 3)) == 0);
- assert(xe == SP_EMIN);
- }
---- a/arch/mips/math-emu/ieee754sp.h
-+++ b/arch/mips/math-emu/ieee754sp.h
-@@ -46,19 +46,17 @@ static inline int ieee754sp_finite(union
- }
-
- /* 3bit extended single precision sticky right shift */
--#define SPXSRSXn(rs) \
-- (xe += rs, \
-- xm = (rs > (SP_FBITS+3))?1:((xm) >> (rs)) | ((xm) << (32-(rs)) != 0))
-+#define XSPSRS(v, rs) \
-+ ((rs > (SP_FBITS+3))?1:((v) >> (rs)) | ((v) << (32-(rs)) != 0))
-
--#define SPXSRSX1() \
-- (xe++, (xm = (xm >> 1) | (xm & 1)))
-+#define XSPSRS1(m) \
-+ ((m >> 1) | (m & 1))
-
--#define SPXSRSYn(rs) \
-- (ye+=rs, \
-- ym = (rs > (SP_FBITS+3))?1:((ym) >> (rs)) | ((ym) << (32-(rs)) != 0))
-+#define SPXSRSX1() \
-+ (xe++, (xm = XSPSRS1(xm)))
-
- #define SPXSRSY1() \
-- (ye++, (ym = (ym >> 1) | (ym & 1)))
-+ (ye++, (ym = XSPSRS1(ym)))
-
- /* convert denormal to normalized with extended exponent */
- #define SPDNORMx(m,e) \
---- a/arch/mips/math-emu/sp_add.c
-+++ b/arch/mips/math-emu/sp_add.c
-@@ -132,13 +132,15 @@ union ieee754sp ieee754sp_add(union ieee
- * Have to shift y fraction right to align.
- */
- s = xe - ye;
-- SPXSRSYn(s);
-+ ym = XSPSRS(ym, s);
-+ ye += s;
- } else if (ye > xe) {
- /*
- * Have to shift x fraction right to align.
- */
- s = ye - xe;
-- SPXSRSXn(s);
-+ xm = XSPSRS(xm, s);
-+ xe += s;
- }
- assert(xe == ye);
- assert(xe <= SP_EMAX);
---- a/arch/mips/math-emu/sp_maddf.c
-+++ b/arch/mips/math-emu/sp_maddf.c
-@@ -208,16 +208,18 @@ union ieee754sp ieee754sp_maddf(union ie
-
- if (ze > re) {
- /*
-- * Have to shift y fraction right to align.
-+ * Have to shift r fraction right to align.
- */
- s = ze - re;
-- SPXSRSYn(s);
-+ rm = XSPSRS(rm, s);
-+ re += s;
- } else if (re > ze) {
- /*
-- * Have to shift x fraction right to align.
-+ * Have to shift z fraction right to align.
- */
- s = re - ze;
-- SPXSRSYn(s);
-+ zm = XSPSRS(zm, s);
-+ ze += s;
- }
- assert(ze == re);
- assert(ze <= SP_EMAX);
-@@ -230,7 +232,8 @@ union ieee754sp ieee754sp_maddf(union ie
- zm = zm + rm;
-
- if (zm >> (SP_FBITS + 1 + 3)) { /* carry out */
-- SPXSRSX1();
-+ zm = XSPSRS1(zm);
-+ ze++;
- }
- } else {
- if (zm >= rm) {
---- a/arch/mips/math-emu/sp_sub.c
-+++ b/arch/mips/math-emu/sp_sub.c
-@@ -134,13 +134,15 @@ union ieee754sp ieee754sp_sub(union ieee
- * have to shift y fraction right to align
- */
- s = xe - ye;
-- SPXSRSYn(s);
-+ ym = XSPSRS(ym, s);
-+ ye += s;
- } else if (ye > xe) {
- /*
- * have to shift x fraction right to align
- */
- s = ye - xe;
-- SPXSRSXn(s);
-+ xm = XSPSRS(xm, s);
-+ xe += s;
- }
- assert(xe == ye);
- assert(xe <= SP_EMAX);
+++ /dev/null
-From 5e3ca2b349b1e2c80b060b51bbf2af37448fad85 Mon Sep 17 00:00:00 2001
-From: Javier Martinez Canillas <javier@osg.samsung.com>
-Date: Wed, 23 Mar 2016 20:59:34 -0300
-Subject: regulator: Try to resolve regulators supplies on registration
-
-From: Javier Martinez Canillas <javier@osg.samsung.com>
-
-commit 5e3ca2b349b1e2c80b060b51bbf2af37448fad85 upstream.
-
-Commit 6261b06de565 ("regulator: Defer lookup of supply to regulator_get")
-moved the regulator supplies lookup logic from the regulators registration
-to the regulators get time.
-
-Unfortunately, that changed the behavior of the regulator core since now a
-parent supply with a child regulator marked as always-on, won't be enabled
-unless a client driver attempts to get the child regulator during boot.
-
-This patch tries to resolve the parent supply for the already registered
-regulators each time that a new regulator is registered. So the regulators
-that have child regulators marked as always on will be enabled regardless
-if a driver gets the child regulator or not.
-
-That was the behavior before the mentioned commit, since parent supplies
-were looked up at regulator registration time instead of during child get.
-
-Since regulator_resolve_supply() checks for rdev->supply, most of the times
-it will be a no-op. Errors aren't checked to keep the possible out of order
-dependencies which was the motivation for the mentioned commit.
-
-Also, the supply being available will be enforced on regulator get anyways
-in case the resolve fails on regulators registration.
-
-Fixes: 6261b06de565 ("regulator: Defer lookup of supply to regulator_get")
-Suggested-by: Mark Brown <broonie@kernel.org>
-Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
-Signed-off-by: Mark Brown <broonie@kernel.org>
-Cc: <stable@vger.kernel.org> # 4.1+
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/regulator/core.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
---- a/drivers/regulator/core.c
-+++ b/drivers/regulator/core.c
-@@ -3822,6 +3822,11 @@ static void rdev_init_debugfs(struct reg
- &rdev->bypass_count);
- }
-
-+static int regulator_register_resolve_supply(struct device *dev, void *data)
-+{
-+ return regulator_resolve_supply(dev_to_rdev(dev));
-+}
-+
- /**
- * regulator_register - register regulator
- * @regulator_desc: regulator to register
-@@ -3968,6 +3973,10 @@ regulator_register(const struct regulato
- }
-
- rdev_init_debugfs(rdev);
-+
-+ /* try to resolve regulators supply since a new one was registered */
-+ class_for_each_device(®ulator_class, NULL, NULL,
-+ regulator_register_resolve_supply);
- out:
- mutex_unlock(®ulator_list_mutex);
- kfree(config);
mips-bmips-adjust-mips-hpt-frequency-for-bcm7435.patch
mips-math-emu-fix-bc1-eq-ne-z-emulation.patch
mips-fix-bc1-eq-ne-z-return-offset-calculation.patch
-mips-math-emu-fix-m-add-sub-.s-shifts.patch
mips-perf-fix-i6400-event-numbers.patch
mips-kvm-fix-translation-of-mfc0-errctl.patch
mips-smp-update-cpu_foreign_map-on-cpu-disable.patch
regulator-core-rely-on-regulator_dev_release-to-free-constraints.patch
net-dsa-mv88e6xxx-fix-port-vlan-maps.patch
at803x-fix-reset-handling.patch
-regulator-try-to-resolve-regulators-supplies-on-registration.patch
cxl-fix-dar-check-use-region_id-instead-of-opencoding.patch
net-ethernet-davinci_emac-fix-platform_data-overwrite.patch
ata-sata_dwc_460ex-remove-incorrect-locking.patch