--- /dev/null
+From 36dd5acd196574d41de3e81d8264df475bbb7123 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare@suse.de>
+Date: Mon, 6 Jul 2015 13:07:58 +0200
+Subject: aic94xx: Skip reading user settings if flash is not found
+
+From: Hannes Reinecke <hare@suse.de>
+
+commit 36dd5acd196574d41de3e81d8264df475bbb7123 upstream.
+
+If no user settings are found it's pointless trying to
+read them from flash. So skip that step.
+This also fixes a compilation warning about uninitialized variables in
+aic94xx.
+
+Signed-off-by: Hannes Reinecke <hare@suse.de>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: James Bottomley <JBottomley@Odin.com>
+Cc: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/scsi/aic94xx/aic94xx_sds.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/scsi/aic94xx/aic94xx_sds.c
++++ b/drivers/scsi/aic94xx/aic94xx_sds.c
+@@ -983,7 +983,7 @@ static int asd_process_ctrl_a_user(struc
+ {
+ int err, i;
+ u32 offs, size;
+- struct asd_ll_el *el;
++ struct asd_ll_el *el = NULL;
+ struct asd_ctrla_phy_settings *ps;
+ struct asd_ctrla_phy_settings dflt_ps;
+
+@@ -1004,6 +1004,7 @@ static int asd_process_ctrl_a_user(struc
+
+ size = sizeof(struct asd_ctrla_phy_settings);
+ ps = &dflt_ps;
++ goto out_process;
+ }
+
+ if (size == 0)
+@@ -1028,7 +1029,7 @@ static int asd_process_ctrl_a_user(struc
+ ASD_DPRINTK("couldn't find ctrla phy settings struct\n");
+ goto out2;
+ }
+-
++out_process:
+ err = asd_process_ctrla_phy_settings(asd_ha, ps);
+ if (err) {
+ ASD_DPRINTK("couldn't process ctrla phy settings\n");
--- /dev/null
+From 20e783e39e55c2615fb61d1b3d139ee9edcf6772 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Wed, 28 Jan 2015 17:54:38 +0100
+Subject: ARM: 8296/1: cache-l2x0: clean up aurora cache handling
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit 20e783e39e55c2615fb61d1b3d139ee9edcf6772 upstream.
+
+The aurora cache controller is the only remaining user of a couple
+of functions in this file and are completely unused when that is
+disabled, leading to build warnings:
+
+arch/arm/mm/cache-l2x0.c:167:13: warning: 'l2x0_cache_sync' defined but not used [-Wunused-function]
+arch/arm/mm/cache-l2x0.c:184:13: warning: 'l2x0_flush_all' defined but not used [-Wunused-function]
+arch/arm/mm/cache-l2x0.c:194:13: warning: 'l2x0_disable' defined but not used [-Wunused-function]
+
+With the knowledge that the code is now aurora-specific, we can
+simplify it noticeably:
+
+- The pl310 errata workarounds are not needed on aurora and can be removed
+- As confirmed by Thomas Petazzoni from the data sheet, the cache_wait()
+ macro is never needed.
+- No need to hold the lock across atomic cache sync
+- We can load the l2x0_base into a local variable across operations
+
+There should be no functional change in this patch, but readability
+and the generated object code improves, along with avoiding the
+warnings.
+
+ (on Armada 370 RD and Armada XP GP, boot tested, plus a little bit of
+ DMA traffic by reading data from a SD card)
+
+Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/mm/cache-l2x0.c | 111 ++++++++++++++++-------------------------------
+ 1 file changed, 38 insertions(+), 73 deletions(-)
+
+--- a/arch/arm/mm/cache-l2x0.c
++++ b/arch/arm/mm/cache-l2x0.c
+@@ -136,73 +136,6 @@ static void l2c_disable(void)
+ dsb(st);
+ }
+
+-#ifdef CONFIG_CACHE_PL310
+-static inline void cache_wait(void __iomem *reg, unsigned long mask)
+-{
+- /* cache operations by line are atomic on PL310 */
+-}
+-#else
+-#define cache_wait l2c_wait_mask
+-#endif
+-
+-static inline void cache_sync(void)
+-{
+- void __iomem *base = l2x0_base;
+-
+- writel_relaxed(0, base + sync_reg_offset);
+- cache_wait(base + L2X0_CACHE_SYNC, 1);
+-}
+-
+-#if defined(CONFIG_PL310_ERRATA_588369) || defined(CONFIG_PL310_ERRATA_727915)
+-static inline void debug_writel(unsigned long val)
+-{
+- l2c_set_debug(l2x0_base, val);
+-}
+-#else
+-/* Optimised out for non-errata case */
+-static inline void debug_writel(unsigned long val)
+-{
+-}
+-#endif
+-
+-static void l2x0_cache_sync(void)
+-{
+- unsigned long flags;
+-
+- raw_spin_lock_irqsave(&l2x0_lock, flags);
+- cache_sync();
+- raw_spin_unlock_irqrestore(&l2x0_lock, flags);
+-}
+-
+-static void __l2x0_flush_all(void)
+-{
+- debug_writel(0x03);
+- __l2c_op_way(l2x0_base + L2X0_CLEAN_INV_WAY);
+- cache_sync();
+- debug_writel(0x00);
+-}
+-
+-static void l2x0_flush_all(void)
+-{
+- unsigned long flags;
+-
+- /* clean all ways */
+- raw_spin_lock_irqsave(&l2x0_lock, flags);
+- __l2x0_flush_all();
+- raw_spin_unlock_irqrestore(&l2x0_lock, flags);
+-}
+-
+-static void l2x0_disable(void)
+-{
+- unsigned long flags;
+-
+- raw_spin_lock_irqsave(&l2x0_lock, flags);
+- __l2x0_flush_all();
+- l2c_write_sec(0, l2x0_base, L2X0_CTRL);
+- dsb(st);
+- raw_spin_unlock_irqrestore(&l2x0_lock, flags);
+-}
+-
+ static void l2c_save(void __iomem *base)
+ {
+ l2x0_saved_regs.aux_ctrl = readl_relaxed(l2x0_base + L2X0_AUX_CTRL);
+@@ -1257,14 +1190,15 @@ static unsigned long calc_range_end(unsi
+ static void aurora_pa_range(unsigned long start, unsigned long end,
+ unsigned long offset)
+ {
++ void __iomem *base = l2x0_base;
+ unsigned long flags;
+
+ raw_spin_lock_irqsave(&l2x0_lock, flags);
+- writel_relaxed(start, l2x0_base + AURORA_RANGE_BASE_ADDR_REG);
+- writel_relaxed(end, l2x0_base + offset);
++ writel_relaxed(start, base + AURORA_RANGE_BASE_ADDR_REG);
++ writel_relaxed(end, base + offset);
+ raw_spin_unlock_irqrestore(&l2x0_lock, flags);
+
+- cache_sync();
++ writel_relaxed(0, base + AURORA_SYNC_REG);
+ }
+
+ static void aurora_inv_range(unsigned long start, unsigned long end)
+@@ -1324,6 +1258,37 @@ static void aurora_flush_range(unsigned
+ }
+ }
+
++static void aurora_flush_all(void)
++{
++ void __iomem *base = l2x0_base;
++ unsigned long flags;
++
++ /* clean all ways */
++ raw_spin_lock_irqsave(&l2x0_lock, flags);
++ __l2c_op_way(base + L2X0_CLEAN_INV_WAY);
++ raw_spin_unlock_irqrestore(&l2x0_lock, flags);
++
++ writel_relaxed(0, base + AURORA_SYNC_REG);
++}
++
++static void aurora_cache_sync(void)
++{
++ writel_relaxed(0, l2x0_base + AURORA_SYNC_REG);
++}
++
++static void aurora_disable(void)
++{
++ void __iomem *base = l2x0_base;
++ unsigned long flags;
++
++ raw_spin_lock_irqsave(&l2x0_lock, flags);
++ __l2c_op_way(base + L2X0_CLEAN_INV_WAY);
++ writel_relaxed(0, base + AURORA_SYNC_REG);
++ l2c_write_sec(0, base, L2X0_CTRL);
++ dsb(st);
++ raw_spin_unlock_irqrestore(&l2x0_lock, flags);
++}
++
+ static void aurora_save(void __iomem *base)
+ {
+ l2x0_saved_regs.ctrl = readl_relaxed(base + L2X0_CTRL);
+@@ -1398,9 +1363,9 @@ static const struct l2c_init_data of_aur
+ .inv_range = aurora_inv_range,
+ .clean_range = aurora_clean_range,
+ .flush_range = aurora_flush_range,
+- .flush_all = l2x0_flush_all,
+- .disable = l2x0_disable,
+- .sync = l2x0_cache_sync,
++ .flush_all = aurora_flush_all,
++ .disable = aurora_disable,
++ .sync = aurora_cache_sync,
+ .resume = aurora_resume,
+ },
+ };
--- /dev/null
+From 22f44150aad7a1d6b074ab6cf59abee61c7187c6 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Tue, 12 May 2015 23:54:25 +0200
+Subject: brcmfmac: avoid gcc-5.1 warning
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit 22f44150aad7a1d6b074ab6cf59abee61c7187c6 upstream.
+
+gcc-5.0 gained a new warning in the fwsignal portion of the brcmfmac
+driver:
+
+drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c: In function 'brcmf_fws_txs_process':
+drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c:1478:8: warning: 'skb' may be used uninitialized in this function [-Wmaybe-uninitialized]
+
+This is a false positive, and marking the brcmf_fws_hanger_poppkt function
+as 'static inline' makes the warning go away. I have checked the object
+file output and while a little code gets moved around, the size of
+the binary remains identical.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c
++++ b/drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c
+@@ -635,7 +635,7 @@ static int brcmf_fws_hanger_pushpkt(stru
+ return 0;
+ }
+
+-static int brcmf_fws_hanger_poppkt(struct brcmf_fws_hanger *h,
++static inline int brcmf_fws_hanger_poppkt(struct brcmf_fws_hanger *h,
+ u32 slot_id, struct sk_buff **pktout,
+ bool remove_item)
+ {
--- /dev/null
+From 6e1103a6e9b19dbdc348077d04a546b626911fc5 Mon Sep 17 00:00:00 2001
+From: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
+Date: Thu, 25 Dec 2014 18:21:41 +0900
+Subject: btrfs: fix state->private cast on 32 bit machines
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
+
+commit 6e1103a6e9b19dbdc348077d04a546b626911fc5 upstream.
+
+Suppress the following warning displayed on building 32bit (i686) kernel.
+
+===============================================================================
+...
+ CC [M] fs/btrfs/extent_io.o
+fs/btrfs/extent_io.c: In function ‘btrfs_free_io_failure_record’:
+fs/btrfs/extent_io.c:2193:13: warning: cast to pointer from integer of
+different size [-Wint-to-pointer-cast]
+ failrec = (struct io_failure_record *)state->private;
+...
+===============================================================================
+
+Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
+Reported-by: Chris Murphy <chris@colorremedies.com>
+Signed-off-by: Chris Mason <clm@fb.com>
+Cc: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/btrfs/extent_io.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/btrfs/extent_io.c
++++ b/fs/btrfs/extent_io.c
+@@ -2163,7 +2163,7 @@ void btrfs_free_io_failure_record(struct
+
+ next = next_state(state);
+
+- failrec = (struct io_failure_record *)state->private;
++ failrec = (struct io_failure_record *)(unsigned long)state->private;
+ free_extent_state(state);
+ kfree(failrec);
+
--- /dev/null
+From 67893f12e5374bbcaaffbc6e570acbc2714ea884 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Tue, 26 Jan 2016 13:08:10 -0500
+Subject: gfs2: avoid uninitialized variable warning
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit 67893f12e5374bbcaaffbc6e570acbc2714ea884 upstream.
+
+We get a bogus warning about a potential uninitialized variable
+use in gfs2, because the compiler does not figure out that we
+never use the leaf number if get_leaf_nr() returns an error:
+
+fs/gfs2/dir.c: In function 'get_first_leaf':
+fs/gfs2/dir.c:802:9: warning: 'leaf_no' may be used uninitialized in this function [-Wmaybe-uninitialized]
+fs/gfs2/dir.c: In function 'dir_split_leaf':
+fs/gfs2/dir.c:1021:8: warning: 'leaf_no' may be used uninitialized in this function [-Wmaybe-uninitialized]
+
+Changing the 'if (!error)' to 'if (!IS_ERR_VALUE(error))' is
+sufficient to let gcc understand that this is exactly the same
+condition as in IS_ERR() so it can optimize the code path enough
+to understand it.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Bob Peterson <rpeterso@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/gfs2/dir.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/fs/gfs2/dir.c
++++ b/fs/gfs2/dir.c
+@@ -764,7 +764,7 @@ static int get_first_leaf(struct gfs2_in
+ int error;
+
+ error = get_leaf_nr(dip, index, &leaf_no);
+- if (!error)
++ if (!IS_ERR_VALUE(error))
+ error = get_leaf(dip, leaf_no, bh_out);
+
+ return error;
+@@ -980,7 +980,7 @@ static int dir_split_leaf(struct inode *
+
+ index = name->hash >> (32 - dip->i_depth);
+ error = get_leaf_nr(dip, index, &leaf_no);
+- if (error)
++ if (IS_ERR_VALUE(error))
+ return error;
+
+ /* Get the old leaf block */
--- /dev/null
+From 48dc5fb3ba53b20418de8514700f63d88c5de3a3 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Thu, 28 Jan 2016 22:58:28 +0100
+Subject: hostap: avoid uninitialized variable use in hfa384x_get_rid
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit 48dc5fb3ba53b20418de8514700f63d88c5de3a3 upstream.
+
+The driver reads a value from hfa384x_from_bap(), which may fail,
+and then assigns the value to a local variable. gcc detects that
+in in the failure case, the 'rlen' variable now contains
+uninitialized data:
+
+In file included from ../drivers/net/wireless/intersil/hostap/hostap_pci.c:220:0:
+drivers/net/wireless/intersil/hostap/hostap_hw.c: In function 'hfa384x_get_rid':
+drivers/net/wireless/intersil/hostap/hostap_hw.c:842:5: warning: 'rec' may be used uninitialized in this function [-Wmaybe-uninitialized]
+ if (le16_to_cpu(rec.len) == 0) {
+
+This restructures the function as suggested by Russell King, to
+make it more readable and get more reliable error handling, by
+handling each failure mode using a goto.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/hostap/hostap_hw.c | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+--- a/drivers/net/wireless/hostap/hostap_hw.c
++++ b/drivers/net/wireless/hostap/hostap_hw.c
+@@ -836,25 +836,30 @@ static int hfa384x_get_rid(struct net_de
+ spin_lock_bh(&local->baplock);
+
+ res = hfa384x_setup_bap(dev, BAP0, rid, 0);
+- if (!res)
+- res = hfa384x_from_bap(dev, BAP0, &rec, sizeof(rec));
++ if (res)
++ goto unlock;
++
++ res = hfa384x_from_bap(dev, BAP0, &rec, sizeof(rec));
++ if (res)
++ goto unlock;
+
+ if (le16_to_cpu(rec.len) == 0) {
+ /* RID not available */
+ res = -ENODATA;
++ goto unlock;
+ }
+
+ rlen = (le16_to_cpu(rec.len) - 1) * 2;
+- if (!res && exact_len && rlen != len) {
++ if (exact_len && rlen != len) {
+ printk(KERN_DEBUG "%s: hfa384x_get_rid - RID len mismatch: "
+ "rid=0x%04x, len=%d (expected %d)\n",
+ dev->name, rid, rlen, len);
+ res = -ENODATA;
+ }
+
+- if (!res)
+- res = hfa384x_from_bap(dev, BAP0, buf, len);
++ res = hfa384x_from_bap(dev, BAP0, buf, len);
+
++unlock:
+ spin_unlock_bh(&local->baplock);
+ mutex_unlock(&local->rid_bap_mtx);
+
--- /dev/null
+From 236dec051078a8691950f56949612b4b74107e48 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Thu, 1 Sep 2016 16:14:47 -0700
+Subject: kconfig: tinyconfig: provide whole choice blocks to avoid warnings
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit 236dec051078a8691950f56949612b4b74107e48 upstream.
+
+Using "make tinyconfig" produces a couple of annoying warnings that show
+up for build test machines all the time:
+
+ .config:966:warning: override: NOHIGHMEM changes choice state
+ .config:965:warning: override: SLOB changes choice state
+ .config:963:warning: override: KERNEL_XZ changes choice state
+ .config:962:warning: override: CC_OPTIMIZE_FOR_SIZE changes choice state
+ .config:933:warning: override: SLOB changes choice state
+ .config:930:warning: override: CC_OPTIMIZE_FOR_SIZE changes choice state
+ .config:870:warning: override: SLOB changes choice state
+ .config:868:warning: override: KERNEL_XZ changes choice state
+ .config:867:warning: override: CC_OPTIMIZE_FOR_SIZE changes choice state
+
+I've made a previous attempt at fixing them and we discussed a number of
+alternatives.
+
+I tried changing the Makefile to use "merge_config.sh -n
+$(fragment-list)" but couldn't get that to work properly.
+
+This is yet another approach, based on the observation that we do want
+to see a warning for conflicting 'choice' options, and that we can
+simply make them non-conflicting by listing all other options as
+disabled. This is a trivial patch that we can apply independent of
+plans for other changes.
+
+Link: http://lkml.kernel.org/r/20160829214952.1334674-2-arnd@arndb.de
+Link: https://storage.kernelci.org/mainline/v4.7-rc6/x86-tinyconfig/build.log
+https://patchwork.kernel.org/patch/9212749/
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Reviewed-by: Josh Triplett <josh@joshtriplett.org>
+Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
+Acked-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/configs/tiny.config | 2 ++
+ kernel/configs/tiny.config | 8 ++++++++
+ 2 files changed, 10 insertions(+)
+
+--- a/arch/x86/configs/tiny.config
++++ b/arch/x86/configs/tiny.config
+@@ -1 +1,3 @@
+ CONFIG_NOHIGHMEM=y
++# CONFIG_HIGHMEM4G is not set
++# CONFIG_HIGHMEM64G is not set
+--- a/kernel/configs/tiny.config
++++ b/kernel/configs/tiny.config
+@@ -1,4 +1,12 @@
++# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
+ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
++# CONFIG_KERNEL_GZIP is not set
++# CONFIG_KERNEL_BZIP2 is not set
++# CONFIG_KERNEL_LZMA is not set
+ CONFIG_KERNEL_XZ=y
++# CONFIG_KERNEL_LZO is not set
++# CONFIG_KERNEL_LZ4 is not set
+ CONFIG_OPTIMIZE_INLINING=y
++# CONFIG_SLAB is not set
++# CONFIG_SLUB is not set
+ CONFIG_SLOB=y
--- /dev/null
+From c4a305374bbf36414515d2ae00d588c67051e67d Mon Sep 17 00:00:00 2001
+From: Sergey Ryazanov <ryazanov.s.a@gmail.com>
+Date: Sat, 30 Aug 2014 06:06:25 +0400
+Subject: MIPS: MSP71xx: remove odd locking in PCI config space access code
+
+From: Sergey Ryazanov <ryazanov.s.a@gmail.com>
+
+commit c4a305374bbf36414515d2ae00d588c67051e67d upstream.
+
+Caller (generic PCI code) already do proper locking so no need to add
+another one here.
+
+Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
+Cc: Linux MIPS <linux-mips@linux-mips.org>
+Patchwork: https://patchwork.linux-mips.org/patch/7601/
+Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
+Cc: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/mips/pci/ops-pmcmsp.c | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+--- a/arch/mips/pci/ops-pmcmsp.c
++++ b/arch/mips/pci/ops-pmcmsp.c
+@@ -193,8 +193,6 @@ static void pci_proc_init(void)
+ }
+ #endif /* CONFIG_PROC_FS && PCI_COUNTERS */
+
+-static DEFINE_SPINLOCK(bpci_lock);
+-
+ /*****************************************************************************
+ *
+ * STRUCT: pci_io_resource
+@@ -368,7 +366,6 @@ int msp_pcibios_config_access(unsigned c
+ struct msp_pci_regs *preg = (void *)PCI_BASE_REG;
+ unsigned char bus_num = bus->number;
+ unsigned char dev_fn = (unsigned char)devfn;
+- unsigned long flags;
+ unsigned long intr;
+ unsigned long value;
+ static char pciirqflag;
+@@ -401,10 +398,7 @@ int msp_pcibios_config_access(unsigned c
+ }
+
+ #if defined(CONFIG_PMC_MSP7120_GW) || defined(CONFIG_PMC_MSP7120_EVAL)
+- local_irq_save(flags);
+ vpe_status = dvpe();
+-#else
+- spin_lock_irqsave(&bpci_lock, flags);
+ #endif
+
+ /*
+@@ -457,9 +451,6 @@ int msp_pcibios_config_access(unsigned c
+
+ #if defined(CONFIG_PMC_MSP7120_GW) || defined(CONFIG_PMC_MSP7120_EVAL)
+ evpe(vpe_status);
+- local_irq_restore(flags);
+-#else
+- spin_unlock_irqrestore(&bpci_lock, flags);
+ #endif
+
+ return -1;
+@@ -467,9 +458,6 @@ int msp_pcibios_config_access(unsigned c
+
+ #if defined(CONFIG_PMC_MSP7120_GW) || defined(CONFIG_PMC_MSP7120_EVAL)
+ evpe(vpe_status);
+- local_irq_restore(flags);
+-#else
+- spin_unlock_irqrestore(&bpci_lock, flags);
+ #endif
+
+ return PCIBIOS_SUCCESSFUL;
--- /dev/null
+From 9c48568b3692f1a56cbf1935e4eea835e6b185b1 Mon Sep 17 00:00:00 2001
+From: John Crispin <john@phrozen.org>
+Date: Tue, 20 Dec 2016 19:12:46 +0100
+Subject: MIPS: ralink: Cosmetic change to prom_init().
+
+From: John Crispin <john@phrozen.org>
+
+commit 9c48568b3692f1a56cbf1935e4eea835e6b185b1 upstream.
+
+Over the years the code has been changed various times leading to
+argc/argv being defined in a different function to where we actually
+use the variables. Clean this up by moving them to prom_init_cmdline().
+
+Signed-off-by: John Crispin <john@phrozen.org>
+Cc: linux-mips@linux-mips.org
+Patchwork: https://patchwork.linux-mips.org/patch/14902/
+Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
+Cc: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/mips/ralink/prom.c | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+--- a/arch/mips/ralink/prom.c
++++ b/arch/mips/ralink/prom.c
+@@ -24,8 +24,10 @@ const char *get_system_type(void)
+ return soc_info.sys_type;
+ }
+
+-static __init void prom_init_cmdline(int argc, char **argv)
++static __init void prom_init_cmdline(void)
+ {
++ int argc;
++ char **argv;
+ int i;
+
+ pr_debug("prom: fw_arg0=%08x fw_arg1=%08x fw_arg2=%08x fw_arg3=%08x\n",
+@@ -54,14 +56,11 @@ static __init void prom_init_cmdline(int
+
+ void __init prom_init(void)
+ {
+- int argc;
+- char **argv;
+-
+ prom_soc_init(&soc_info);
+
+ pr_info("SoC Type: %s\n", get_system_type());
+
+- prom_init_cmdline(argc, argv);
++ prom_init_cmdline();
+ }
+
+ void __init prom_free_prom_memory(void)
--- /dev/null
+From 769105aa740dc0428f2585ec99c457d30aaab364 Mon Sep 17 00:00:00 2001
+From: Richard Leitner <dev@g0hl1n.net>
+Date: Mon, 8 Dec 2014 16:28:10 +0100
+Subject: misc: ioc4: simplify wave period measurement in clock_calibrate
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Richard Leitner <dev@g0hl1n.net>
+
+commit 769105aa740dc0428f2585ec99c457d30aaab364 upstream.
+
+The loop for measuring the square wave periods over some cycles is
+refactored to be more easily readable. This includes avoiding a
+"by-hand-implemented" for loop with a "real" one and adding some
+comments.
+
+Furthermore the following compiler warning is avoided by this patch:
+drivers/misc/ioc4.c: In function ‘ioc4_probe’:
+drivers/misc/ioc4.c:194:16: warning: ‘start’ may be used uninitialized
+in this function [-Wmaybe-uninitialized]
+ period = (end - start) /
+ ^
+drivers/misc/ioc4.c:148:11: note: ‘start’ was declared here
+ uint64_t start, end, period;
+ ^
+
+Signed-off-by: Richard Leitner <dev@g0hl1n.net>
+Acked-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/misc/ioc4.c | 31 ++++++++++++++++---------------
+ 1 file changed, 16 insertions(+), 15 deletions(-)
+
+--- a/drivers/misc/ioc4.c
++++ b/drivers/misc/ioc4.c
+@@ -144,9 +144,9 @@ ioc4_clock_calibrate(struct ioc4_driver_
+ {
+ union ioc4_int_out int_out;
+ union ioc4_gpcr gpcr;
+- unsigned int state, last_state = 1;
++ unsigned int state, last_state;
+ uint64_t start, end, period;
+- unsigned int count = 0;
++ unsigned int count;
+
+ /* Enable output */
+ gpcr.raw = 0;
+@@ -167,19 +167,20 @@ ioc4_clock_calibrate(struct ioc4_driver_
+ mmiowb();
+
+ /* Check square wave period averaged over some number of cycles */
+- do {
+- int_out.raw = readl(&idd->idd_misc_regs->int_out.raw);
+- state = int_out.fields.int_out;
+- if (!last_state && state) {
+- count++;
+- if (count == IOC4_CALIBRATE_END) {
+- end = ktime_get_ns();
+- break;
+- } else if (count == IOC4_CALIBRATE_DISCARD)
+- start = ktime_get_ns();
+- }
+- last_state = state;
+- } while (1);
++ start = ktime_get_ns();
++ state = 1; /* make sure the first read isn't a rising edge */
++ for (count = 0; count <= IOC4_CALIBRATE_END; count++) {
++ do { /* wait for a rising edge */
++ last_state = state;
++ int_out.raw = readl(&idd->idd_misc_regs->int_out.raw);
++ state = int_out.fields.int_out;
++ } while (last_state || !state);
++
++ /* discard the first few cycles */
++ if (count == IOC4_CALIBRATE_DISCARD)
++ start = ktime_get_ns();
++ }
++ end = ktime_get_ns();
+
+ /* Calculation rearranged to preserve intermediate precision.
+ * Logically:
--- /dev/null
+From d34712d2e3db9b241d0484a6e3839c6b7ef9df78 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Tue, 24 Feb 2015 10:47:27 +0100
+Subject: mmc: sunxi: avoid invalid pointer calculation
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit d34712d2e3db9b241d0484a6e3839c6b7ef9df78 upstream.
+
+The sunxi mmc driver tries to calculate a dma address by using pointer
+arithmetic, which causes a warning when dma_addr_t is wider than a pointer:
+
+drivers/mmc/host/sunxi-mmc.c: In function 'sunxi_mmc_init_idma_des':
+drivers/mmc/host/sunxi-mmc.c:296:35: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
+ struct sunxi_idma_des *pdes_pa = (struct sunxi_idma_des *)host->sg_dma;
+ ^
+
+To avoid this warning and to simplify the logic, this changes
+the code to avoid the cast and calculate the correct address
+manually. The behavior should be unchanged.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Acked-by: David Lanzendörfer <david.lanzendoerfer@o2s.ch>
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/mmc/host/sunxi-mmc.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/mmc/host/sunxi-mmc.c
++++ b/drivers/mmc/host/sunxi-mmc.c
+@@ -294,7 +294,7 @@ static void sunxi_mmc_init_idma_des(stru
+ struct mmc_data *data)
+ {
+ struct sunxi_idma_des *pdes = (struct sunxi_idma_des *)host->sg_cpu;
+- struct sunxi_idma_des *pdes_pa = (struct sunxi_idma_des *)host->sg_dma;
++ dma_addr_t next_desc = host->sg_dma;
+ int i, max_len = (1 << host->idma_des_size_bits);
+
+ for (i = 0; i < data->sg_len; i++) {
+@@ -306,8 +306,9 @@ static void sunxi_mmc_init_idma_des(stru
+ else
+ pdes[i].buf_size = data->sg[i].length;
+
++ next_desc += sizeof(struct sunxi_idma_des);
+ pdes[i].buf_addr_ptr1 = sg_dma_address(&data->sg[i]);
+- pdes[i].buf_addr_ptr2 = (u32)&pdes_pa[i + 1];
++ pdes[i].buf_addr_ptr2 = (u32)next_desc;
+ }
+
+ pdes[0].config |= SDXC_IDMAC_DES0_FD;
--- /dev/null
+From de92718883ddbcd11b738d36ffcf57617b97fa12 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Thu, 19 Nov 2015 11:42:26 +0100
+Subject: net: tulip: turn compile-time warning into dev_warn()
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit de92718883ddbcd11b738d36ffcf57617b97fa12 upstream.
+
+The tulip driver causes annoying build-time warnings for allmodconfig
+builds for all recent architectures:
+
+dec/tulip/winbond-840.c:910:2: warning: #warning Processor architecture undefined
+dec/tulip/tulip_core.c:101:2: warning: #warning Processor architecture undefined!
+
+This is the last remaining warning for arm64, and I'd like to get rid of
+it. We don't really know the cache line size, architecturally it would
+be at least 16 bytes, but all implementations I found have 64 or 128
+bytes. Configuring tulip for 32-byte lines as we do on ARM32 seems to
+be the safe but slow default, and nobody who cares about performance these
+days would use a tulip chip anyway, so we can just use that.
+
+To save the next person the job of trying to find out what this is for
+and picking a default for their architecture just to kill off the warning,
+I'm now removing the preprocessor #warning and turning it into a pr_warn
+or dev_warn that prints the equivalent information when the driver gets
+loaded.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Acked-by: Grant Grundler <grundler@parisc-linux.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/ethernet/dec/tulip/tulip_core.c | 9 +++++++--
+ drivers/net/ethernet/dec/tulip/winbond-840.c | 2 +-
+ 2 files changed, 8 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/ethernet/dec/tulip/tulip_core.c
++++ b/drivers/net/ethernet/dec/tulip/tulip_core.c
+@@ -98,8 +98,7 @@ static int csr0 = 0x01A00000 | 0x4800;
+ #elif defined(__mips__)
+ static int csr0 = 0x00200000 | 0x4000;
+ #else
+-#warning Processor architecture undefined!
+-static int csr0 = 0x00A00000 | 0x4800;
++static int csr0;
+ #endif
+
+ /* Operational parameters that usually are not changed. */
+@@ -1982,6 +1981,12 @@ static int __init tulip_init (void)
+ pr_info("%s", version);
+ #endif
+
++ if (!csr0) {
++ pr_warn("tulip: unknown CPU architecture, using default csr0\n");
++ /* default to 8 longword cache line alignment */
++ csr0 = 0x00A00000 | 0x4800;
++ }
++
+ /* copy module parms into globals */
+ tulip_rx_copybreak = rx_copybreak;
+ tulip_max_interrupt_work = max_interrupt_work;
+--- a/drivers/net/ethernet/dec/tulip/winbond-840.c
++++ b/drivers/net/ethernet/dec/tulip/winbond-840.c
+@@ -907,7 +907,7 @@ static void init_registers(struct net_de
+ #elif defined(CONFIG_SPARC) || defined (CONFIG_PARISC)
+ i |= 0x4800;
+ #else
+-#warning Processor architecture undefined
++ dev_warn(&dev->dev, "unknown CPU architecture, using default csr0 setting\n");
+ i |= 0x4800;
+ #endif
+ iowrite32(i, ioaddr + PCIBusCfg);
--- /dev/null
+From 57e7c8cef224af166b8ec932b5e383641418c005 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Fri, 29 Jan 2016 12:39:13 +0100
+Subject: net: vxge: avoid unused function warnings
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit 57e7c8cef224af166b8ec932b5e383641418c005 upstream.
+
+When CONFIG_PCI_MSI is disabled, we get warnings about unused functions
+in the vxge driver:
+
+drivers/net/ethernet/neterion/vxge/vxge-main.c:2121:13: warning: 'adaptive_coalesce_tx_interrupts' defined but not used [-Wunused-function]
+drivers/net/ethernet/neterion/vxge/vxge-main.c:2149:13: warning: 'adaptive_coalesce_rx_interrupts' defined but not used [-Wunused-function]
+
+We could add another #ifdef here, but it's nicer to avoid those warnings
+for good by converting the existing #ifdef to if(IS_ENABLED()), which has
+the same effect but provides better compile-time coverage in general,
+and lets the compiler understand better when the function is intentionally
+unused.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/ethernet/neterion/vxge/vxge-main.c | 31 +++++++++----------------
+ 1 file changed, 12 insertions(+), 19 deletions(-)
+
+--- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
++++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
+@@ -2223,8 +2223,6 @@ static irqreturn_t vxge_isr_napi(int irq
+ return IRQ_NONE;
+ }
+
+-#ifdef CONFIG_PCI_MSI
+-
+ static irqreturn_t vxge_tx_msix_handle(int irq, void *dev_id)
+ {
+ struct vxge_fifo *fifo = (struct vxge_fifo *)dev_id;
+@@ -2442,16 +2440,13 @@ static void vxge_rem_msix_isr(struct vxg
+ if (vdev->config.intr_type == MSI_X)
+ pci_disable_msix(vdev->pdev);
+ }
+-#endif
+
+ static void vxge_rem_isr(struct vxgedev *vdev)
+ {
+-#ifdef CONFIG_PCI_MSI
+- if (vdev->config.intr_type == MSI_X) {
++ if (IS_ENABLED(CONFIG_PCI_MSI) &&
++ vdev->config.intr_type == MSI_X) {
+ vxge_rem_msix_isr(vdev);
+- } else
+-#endif
+- if (vdev->config.intr_type == INTA) {
++ } else if (vdev->config.intr_type == INTA) {
+ synchronize_irq(vdev->pdev->irq);
+ free_irq(vdev->pdev->irq, vdev);
+ }
+@@ -2460,11 +2455,10 @@ static void vxge_rem_isr(struct vxgedev
+ static int vxge_add_isr(struct vxgedev *vdev)
+ {
+ int ret = 0;
+-#ifdef CONFIG_PCI_MSI
+ int vp_idx = 0, intr_idx = 0, intr_cnt = 0, msix_idx = 0, irq_req = 0;
+ int pci_fun = PCI_FUNC(vdev->pdev->devfn);
+
+- if (vdev->config.intr_type == MSI_X)
++ if (IS_ENABLED(CONFIG_PCI_MSI) && vdev->config.intr_type == MSI_X)
+ ret = vxge_enable_msix(vdev);
+
+ if (ret) {
+@@ -2475,7 +2469,7 @@ static int vxge_add_isr(struct vxgedev *
+ vdev->config.intr_type = INTA;
+ }
+
+- if (vdev->config.intr_type == MSI_X) {
++ if (IS_ENABLED(CONFIG_PCI_MSI) && vdev->config.intr_type == MSI_X) {
+ for (intr_idx = 0;
+ intr_idx < (vdev->no_of_vpath *
+ VXGE_HW_VPATH_MSIX_ACTIVE); intr_idx++) {
+@@ -2576,9 +2570,8 @@ static int vxge_add_isr(struct vxgedev *
+ vdev->vxge_entries[intr_cnt].in_use = 1;
+ vdev->vxge_entries[intr_cnt].arg = &vdev->vpaths[0];
+ }
+-INTA_MODE:
+-#endif
+
++INTA_MODE:
+ if (vdev->config.intr_type == INTA) {
+ snprintf(vdev->desc[0], VXGE_INTR_STRLEN,
+ "%s:vxge:INTA", vdev->ndev->name);
+@@ -3889,12 +3882,12 @@ static void vxge_device_config_init(stru
+ if (max_mac_vpath > VXGE_MAX_MAC_ADDR_COUNT)
+ max_mac_vpath = VXGE_MAX_MAC_ADDR_COUNT;
+
+-#ifndef CONFIG_PCI_MSI
+- vxge_debug_init(VXGE_ERR,
+- "%s: This Kernel does not support "
+- "MSI-X. Defaulting to INTA", VXGE_DRIVER_NAME);
+- *intr_type = INTA;
+-#endif
++ if (!IS_ENABLED(CONFIG_PCI_MSI)) {
++ vxge_debug_init(VXGE_ERR,
++ "%s: This Kernel does not support "
++ "MSI-X. Defaulting to INTA", VXGE_DRIVER_NAME);
++ *intr_type = INTA;
++ }
+
+ /* Configure whether MSI-X or IRQL. */
+ switch (*intr_type) {
mips-asm-compiler-add-new-macros-to-set-isa-and-arch-asm-annotations.patch
nfsd-work-around-a-gcc-5.1-warning.patch
fix-signed-unsigned-pointer-warning.patch
+brcmfmac-avoid-gcc-5.1-warning.patch
+tty-nozomi-avoid-a-harmless-gcc-warning.patch
+net-vxge-avoid-unused-function-warnings.patch
+misc-ioc4-simplify-wave-period-measurement-in-clock_calibrate.patch
+hostap-avoid-uninitialized-variable-use-in-hfa384x_get_rid.patch
+mips-msp71xx-remove-odd-locking-in-pci-config-space-access-code.patch
+net-tulip-turn-compile-time-warning-into-dev_warn.patch
+mmc-sunxi-avoid-invalid-pointer-calculation.patch
+gfs2-avoid-uninitialized-variable-warning.patch
+btrfs-fix-state-private-cast-on-32-bit-machines.patch
+arm-8296-1-cache-l2x0-clean-up-aurora-cache-handling.patch
+aic94xx-skip-reading-user-settings-if-flash-is-not-found.patch
+mips-ralink-cosmetic-change-to-prom_init.patch
+kconfig-tinyconfig-provide-whole-choice-blocks-to-avoid-warnings.patch
--- /dev/null
+From a4f642a8a3c2838ad09fe8313d45db46600e1478 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Mon, 25 Jan 2016 22:54:56 +0100
+Subject: tty: nozomi: avoid a harmless gcc warning
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit a4f642a8a3c2838ad09fe8313d45db46600e1478 upstream.
+
+The nozomi wireless data driver has its own helper function to
+transfer data from a FIFO, doing an extra byte swap on big-endian
+architectures, presumably to bring the data back into byte-serial
+order after readw() or readl() perform their implicit byteswap.
+
+This helper function is used in the receive_data() function to
+first read the length into a 32-bit variable, which causes
+a compile-time warning:
+
+drivers/tty/nozomi.c: In function 'receive_data':
+drivers/tty/nozomi.c:857:9: warning: 'size' may be used uninitialized in this function [-Wmaybe-uninitialized]
+
+The problem is that gcc is unsure whether the data was actually
+read or not. We know that it is at this point, so we can replace
+it with a single readl() to shut up that warning.
+
+I am leaving the byteswap in there, to preserve the existing
+behavior, even though this seems fishy: Reading the length of
+the data into a cpu-endian variable should normally not use
+a second byteswap on big-endian systems, unless the hardware
+is aware of the CPU endianess.
+
+There appears to be a lot more confusion about endianess in this
+driver, so it probably has not worked on big-endian systems in
+a long time, if ever, and I have no way to test it. It's well
+possible that this driver has not been used by anyone in a while,
+the last patch that looks like it was tested on the hardware is
+from 2008.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/tty/nozomi.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/tty/nozomi.c
++++ b/drivers/tty/nozomi.c
+@@ -823,7 +823,7 @@ static int receive_data(enum port_type i
+ struct tty_struct *tty = tty_port_tty_get(&port->port);
+ int i, ret;
+
+- read_mem32((u32 *) &size, addr, 4);
++ size = __le32_to_cpu(readl(addr));
+ /* DBG1( "%d bytes port: %d", size, index); */
+
+ if (tty && test_bit(TTY_THROTTLED, &tty->flags)) {