--- /dev/null
+From 8dbdb8e704db34085f5978c335c10256b0fb9629 Mon Sep 17 00:00:00 2001
+From: Gregory CLEMENT <gregory.clement@free-electrons.com>
+Date: Mon, 23 Jun 2014 16:16:51 +0200
+Subject: ARM: mvebu: Fix the improper use of the compatible string armada38x using a wildcard
+
+From: Gregory CLEMENT <gregory.clement@free-electrons.com>
+
+commit 8dbdb8e704db34085f5978c335c10256b0fb9629 upstream.
+
+Wildcards in compatible strings should be avoid. "marvell,armada38x"
+was recently introduced but was not yet used.
+
+The armada 385 SoC is a superset of the armada 380 SoC (with more CPUs
+and more PCIe slots). So this patch replaces the use of
+"marvell,armada38x" by the "marvell,armada380" string.
+
+Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
+Link: https://lkml.kernel.org/r/1403533011-21339-1-git-send-email-gregory.clement@free-electrons.com
+Acked-by: Andrew Lunn <andrew@lunn.ch>
+Signed-off-by: Jason Cooper <jason@lakedaemon.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Documentation/devicetree/bindings/arm/armada-38x.txt | 14 ++++++++++++--
+ arch/arm/boot/dts/armada-380.dtsi | 2 +-
+ arch/arm/boot/dts/armada-385-db.dts | 2 +-
+ arch/arm/boot/dts/armada-385-rd.dts | 2 +-
+ arch/arm/boot/dts/armada-385.dtsi | 2 +-
+ arch/arm/boot/dts/armada-38x.dtsi | 2 +-
+ 6 files changed, 17 insertions(+), 7 deletions(-)
+
+--- a/Documentation/devicetree/bindings/arm/armada-38x.txt
++++ b/Documentation/devicetree/bindings/arm/armada-38x.txt
+@@ -6,5 +6,15 @@ following property:
+
+ Required root node property:
+
+- - compatible: must contain either "marvell,armada380" or
+- "marvell,armada385" depending on the variant of the SoC being used.
++ - compatible: must contain "marvell,armada380"
++
++In addition, boards using the Marvell Armada 385 SoC shall have the
++following property before the previous one:
++
++Required root node property:
++
++compatible: must contain "marvell,armada385"
++
++Example:
++
++compatible = "marvell,a385-rd", "marvell,armada385", "marvell,armada380";
+--- a/arch/arm/boot/dts/armada-380.dtsi
++++ b/arch/arm/boot/dts/armada-380.dtsi
+@@ -16,7 +16,7 @@
+
+ / {
+ model = "Marvell Armada 380 family SoC";
+- compatible = "marvell,armada380", "marvell,armada38x";
++ compatible = "marvell,armada380";
+
+ cpus {
+ #address-cells = <1>;
+--- a/arch/arm/boot/dts/armada-385-db.dts
++++ b/arch/arm/boot/dts/armada-385-db.dts
+@@ -16,7 +16,7 @@
+
+ / {
+ model = "Marvell Armada 385 Development Board";
+- compatible = "marvell,a385-db", "marvell,armada385", "marvell,armada38x";
++ compatible = "marvell,a385-db", "marvell,armada385", "marvell,armada380";
+
+ chosen {
+ bootargs = "console=ttyS0,115200 earlyprintk";
+--- a/arch/arm/boot/dts/armada-385-rd.dts
++++ b/arch/arm/boot/dts/armada-385-rd.dts
+@@ -17,7 +17,7 @@
+
+ / {
+ model = "Marvell Armada 385 Reference Design";
+- compatible = "marvell,a385-rd", "marvell,armada385", "marvell,armada38x";
++ compatible = "marvell,a385-rd", "marvell,armada385", "marvell,armada380";
+
+ chosen {
+ bootargs = "console=ttyS0,115200 earlyprintk";
+--- a/arch/arm/boot/dts/armada-385.dtsi
++++ b/arch/arm/boot/dts/armada-385.dtsi
+@@ -16,7 +16,7 @@
+
+ / {
+ model = "Marvell Armada 385 family SoC";
+- compatible = "marvell,armada385", "marvell,armada38x";
++ compatible = "marvell,armada385", "marvell,armada380";
+
+ cpus {
+ #address-cells = <1>;
+--- a/arch/arm/boot/dts/armada-38x.dtsi
++++ b/arch/arm/boot/dts/armada-38x.dtsi
+@@ -20,7 +20,7 @@
+
+ / {
+ model = "Marvell Armada 38x family SoC";
+- compatible = "marvell,armada38x";
++ compatible = "marvell,armada380";
+
+ aliases {
+ gpio0 = &gpio0;
--- /dev/null
+From c021f241f4fab2bb4fc4120a38a828a03dd3f970 Mon Sep 17 00:00:00 2001
+From: "David R. Piegdon" <lkml@p23q.org>
+Date: Mon, 16 Jun 2014 23:42:51 +0000
+Subject: ARM: OMAP2+: Fix parser-bug in platform muxing code
+
+From: "David R. Piegdon" <lkml@p23q.org>
+
+commit c021f241f4fab2bb4fc4120a38a828a03dd3f970 upstream.
+
+Fix a parser-bug in the omap2 muxing code where muxtable-entries will be
+wrongly selected if the requested muxname is a *prefix* of their
+m0-entry and they have a matching mN-entry. Fix by additionally checking
+that the length of the m0_entry is equal.
+
+For example muxing of "dss_data2.dss_data2" on omap32xx will fail
+because the prefix "dss_data2" will match the mux-entries "dss_data2" as
+well as "dss_data20", with the suffix "dss_data2" matching m0 (for
+dss_data2) and m4 (for dss_data20). Thus both are recognized as signal
+path candidates:
+
+Relevant muxentries from mux34xx.c:
+ _OMAP3_MUXENTRY(DSS_DATA20, 90,
+ "dss_data20", NULL, "mcspi3_somi", "dss_data2",
+ "gpio_90", NULL, NULL, "safe_mode"),
+ _OMAP3_MUXENTRY(DSS_DATA2, 72,
+ "dss_data2", NULL, NULL, NULL,
+ "gpio_72", NULL, NULL, "safe_mode"),
+
+This will result in a failure to mux the pin at all:
+
+ _omap_mux_get_by_name: Multiple signal paths (2) for dss_data2.dss_data2
+
+Patch should apply to linus' latest master down to rather old linux-2.6
+trees.
+
+Signed-off-by: David R. Piegdon <lkml@p23q.org>
+Cc: stable@vger.kernel.org
+[tony@atomide.com: updated description to include full description]
+Signed-off-by: Tony Lindgren <tony@atomide.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/mach-omap2/mux.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/arch/arm/mach-omap2/mux.c
++++ b/arch/arm/mach-omap2/mux.c
+@@ -183,8 +183,10 @@ static int __init _omap_mux_get_by_name(
+ m0_entry = mux->muxnames[0];
+
+ /* First check for full name in mode0.muxmode format */
+- if (mode0_len && strncmp(muxname, m0_entry, mode0_len))
+- continue;
++ if (mode0_len)
++ if (strncmp(muxname, m0_entry, mode0_len) ||
++ (strlen(m0_entry) != mode0_len))
++ continue;
+
+ /* Then check for muxmode only */
+ for (i = 0; i < OMAP_MUX_NR_MODES; i++) {
--- /dev/null
+From 3906c2b53cd23c2ae03e6ce41432c8e7f0a3cbbb Mon Sep 17 00:00:00 2001
+From: ChiaHao <andy.jhshiu@gmail.com>
+Date: Thu, 12 Jun 2014 15:32:33 +0100
+Subject: arm64: Bug fix in stack alignment exception
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: ChiaHao <andy.jhshiu@gmail.com>
+
+commit 3906c2b53cd23c2ae03e6ce41432c8e7f0a3cbbb upstream.
+
+The value of ESR has been stored into x1, and should be directly pass to
+do_sp_pc_abort function, "MOV x1, x25" is an extra operation and do_sp_pc_abort
+will get the wrong value of ESR.
+
+Signed-off-by: ChiaHao <andy.jhshiu@gmail.com>
+Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm64/kernel/entry.S | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/arch/arm64/kernel/entry.S
++++ b/arch/arm64/kernel/entry.S
+@@ -275,7 +275,6 @@ el1_sp_pc:
+ * Stack or PC alignment exception handling
+ */
+ mrs x0, far_el1
+- mov x1, x25
+ mov x2, sp
+ b do_sp_pc_abort
+ el1_undef:
--- /dev/null
+From 923b8f5044da753e4985ab15c1374ced2cdf616c Mon Sep 17 00:00:00 2001
+From: Steve Capper <steve.capper@linaro.org>
+Date: Wed, 2 Jul 2014 11:46:23 +0100
+Subject: arm64: mm: Make icache synchronisation logic huge page aware
+
+From: Steve Capper <steve.capper@linaro.org>
+
+commit 923b8f5044da753e4985ab15c1374ced2cdf616c upstream.
+
+The __sync_icache_dcache routine will only flush the dcache for the
+first page of a compound page, potentially leading to stale icache
+data residing further on in a hugetlb page.
+
+This patch addresses this issue by taking into consideration the
+order of the page when flushing the dcache.
+
+Reported-by: Mark Brown <broonie@linaro.org>
+Tested-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Steve Capper <steve.capper@linaro.org>
+Acked-by: Will Deacon <will.deacon@arm.com>
+Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm64/mm/flush.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/arch/arm64/mm/flush.c
++++ b/arch/arm64/mm/flush.c
+@@ -79,7 +79,8 @@ void __sync_icache_dcache(pte_t pte, uns
+ return;
+
+ if (!test_and_set_bit(PG_dcache_clean, &page->flags)) {
+- __flush_dcache_area(page_address(page), PAGE_SIZE);
++ __flush_dcache_area(page_address(page),
++ PAGE_SIZE << compound_order(page));
+ __flush_icache_all();
+ } else if (icache_is_aivivt()) {
+ __flush_icache_all();
--- /dev/null
+From 2fc68eb122c7ea6cd5be1fe7d6650c0beb2f4f40 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
+Date: Thu, 12 Jun 2014 22:28:22 +0200
+Subject: b43: fix frequency reported on G-PHY with /new/ firmware
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
+
+commit 2fc68eb122c7ea6cd5be1fe7d6650c0beb2f4f40 upstream.
+
+Support for firmware rev 508+ was added years ago, but we never noticed
+it reports channel in a different way for G-PHY devices. Instead of
+offset from 2400 MHz it simply passes channel id (AKA hw_value).
+
+So far it was (most probably) affecting monitor mode users only, but
+the following recent commit made it noticeable for quite everybody:
+
+commit 3afc2167f60a327a2c1e1e2600ef209a3c2b75b7
+Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Date: Tue Mar 4 16:50:13 2014 +0200
+
+ cfg80211/mac80211: ignore signal if the frame was heard on wrong channel
+
+Reported-by: Aaro Koskinen <aaro.koskinen@iki.fi>
+Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
+Tested-by: Aaro Koskinen <aaro.koskinen@iki.fi>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/b43/xmit.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/wireless/b43/xmit.c
++++ b/drivers/net/wireless/b43/xmit.c
+@@ -811,9 +811,13 @@ void b43_rx(struct b43_wldev *dev, struc
+ break;
+ case B43_PHYTYPE_G:
+ status.band = IEEE80211_BAND_2GHZ;
+- /* chanid is the radio channel cookie value as used
+- * to tune the radio. */
+- status.freq = chanid + 2400;
++ /* Somewhere between 478.104 and 508.1084 firmware for G-PHY
++ * has been modified to be compatible with N-PHY and others.
++ */
++ if (dev->fw.rev >= 508)
++ status.freq = ieee80211_channel_to_frequency(chanid, status.band);
++ else
++ status.freq = chanid + 2400;
+ break;
+ case B43_PHYTYPE_N:
+ case B43_PHYTYPE_LP:
--- /dev/null
+From ce36d9ab3bab06b7b5522f5c8b68fac231b76ffb Mon Sep 17 00:00:00 2001
+From: Steve French <smfrench@gmail.com>
+Date: Sun, 22 Jun 2014 20:38:49 -0500
+Subject: CIFS: fix mount failure with broken pathnames when smb3 mount with mapchars option
+
+From: Steve French <smfrench@gmail.com>
+
+commit ce36d9ab3bab06b7b5522f5c8b68fac231b76ffb upstream.
+
+When we SMB3 mounted with mapchars (to allow reserved characters : \ / > < * ?
+via the Unicode Windows to POSIX remap range) empty paths
+(eg when we open "" to query the root of the SMB3 directory on mount) were not
+null terminated so we sent garbarge as a path name on empty paths which caused
+SMB2/SMB2.1/SMB3 mounts to fail when mapchars was specified. mapchars is
+particularly important since Unix Extensions for SMB3 are not supported (yet)
+
+Signed-off-by: Steve French <smfrench@gmail.com>
+Reviewed-by: David Disseldorp <ddiss@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/cifs/cifs_unicode.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/fs/cifs/cifs_unicode.c
++++ b/fs/cifs/cifs_unicode.c
+@@ -290,7 +290,8 @@ int
+ cifsConvertToUTF16(__le16 *target, const char *source, int srclen,
+ const struct nls_table *cp, int mapChars)
+ {
+- int i, j, charlen;
++ int i, charlen;
++ int j = 0;
+ char src_char;
+ __le16 dst_char;
+ wchar_t tmp;
+@@ -298,12 +299,11 @@ cifsConvertToUTF16(__le16 *target, const
+ if (!mapChars)
+ return cifs_strtoUTF16(target, source, PATH_MAX, cp);
+
+- for (i = 0, j = 0; i < srclen; j++) {
++ for (i = 0; i < srclen; j++) {
+ src_char = source[i];
+ charlen = 1;
+ switch (src_char) {
+ case 0:
+- put_unaligned(0, &target[j]);
+ goto ctoUTF16_out;
+ case ':':
+ dst_char = cpu_to_le16(UNI_COLON);
+@@ -350,6 +350,7 @@ cifsConvertToUTF16(__le16 *target, const
+ }
+
+ ctoUTF16_out:
++ put_unaligned(0, &target[j]); /* Null terminate target unicode string */
+ return j;
+ }
+
--- /dev/null
+From a1d0b84c308d7fdfb67eb76498116a6c2fdda507 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B6rn=20Baumbach?= <bb@sernet.de>
+Date: Tue, 10 Jun 2014 12:03:26 +0200
+Subject: fs/cifs: fix regression in cifs_create_mf_symlink()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: =?UTF-8?q?Bj=C3=B6rn=20Baumbach?= <bb@sernet.de>
+
+commit a1d0b84c308d7fdfb67eb76498116a6c2fdda507 upstream.
+
+commit d81b8a40e2ece0a9ab57b1fe1798e291e75bf8fc
+("CIFS: Cleanup cifs open codepath")
+changed disposition to FILE_OPEN.
+
+Signed-off-by: Björn Baumbach <bb@sernet.de>
+Signed-off-by: Stefan Metzmacher <metze@samba.org>
+Reviewed-by: Stefan Metzmacher <metze@samba.org>
+Cc: Pavel Shilovsky <piastry@etersoft.ru>
+Cc: Steve French <sfrench@samba.org>
+Signed-off-by: Steve French <smfrench@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/cifs/link.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/cifs/link.c
++++ b/fs/cifs/link.c
+@@ -374,7 +374,7 @@ cifs_create_mf_symlink(unsigned int xid,
+ oparms.cifs_sb = cifs_sb;
+ oparms.desired_access = GENERIC_WRITE;
+ oparms.create_options = create_options;
+- oparms.disposition = FILE_OPEN;
++ oparms.disposition = FILE_CREATE;
+ oparms.path = path;
+ oparms.fid = &fid;
+ oparms.reconnect = false;
--- /dev/null
+From 4a705fef986231a3e7a6b1a6d3c37025f021f49f Mon Sep 17 00:00:00 2001
+From: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
+Date: Mon, 23 Jun 2014 13:22:03 -0700
+Subject: hugetlb: fix copy_hugetlb_page_range() to handle migration/hwpoisoned entry
+
+From: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
+
+commit 4a705fef986231a3e7a6b1a6d3c37025f021f49f upstream.
+
+There's a race between fork() and hugepage migration, as a result we try
+to "dereference" a swap entry as a normal pte, causing kernel panic.
+The cause of the problem is that copy_hugetlb_page_range() can't handle
+"swap entry" family (migration entry and hwpoisoned entry) so let's fix
+it.
+
+[akpm@linux-foundation.org: coding-style fixes]
+Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
+Acked-by: Hugh Dickins <hughd@google.com>
+Cc: Christoph Lameter <cl@linux.com>
+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>
+
+---
+ mm/hugetlb.c | 71 +++++++++++++++++++++++++++++++++++------------------------
+ 1 file changed, 43 insertions(+), 28 deletions(-)
+
+--- a/mm/hugetlb.c
++++ b/mm/hugetlb.c
+@@ -2377,6 +2377,31 @@ static void set_huge_ptep_writable(struc
+ update_mmu_cache(vma, address, ptep);
+ }
+
++static int is_hugetlb_entry_migration(pte_t pte)
++{
++ swp_entry_t swp;
++
++ if (huge_pte_none(pte) || pte_present(pte))
++ return 0;
++ swp = pte_to_swp_entry(pte);
++ if (non_swap_entry(swp) && is_migration_entry(swp))
++ return 1;
++ else
++ return 0;
++}
++
++static int is_hugetlb_entry_hwpoisoned(pte_t pte)
++{
++ swp_entry_t swp;
++
++ if (huge_pte_none(pte) || pte_present(pte))
++ return 0;
++ swp = pte_to_swp_entry(pte);
++ if (non_swap_entry(swp) && is_hwpoison_entry(swp))
++ return 1;
++ else
++ return 0;
++}
+
+ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
+ struct vm_area_struct *vma)
+@@ -2416,10 +2441,26 @@ int copy_hugetlb_page_range(struct mm_st
+ dst_ptl = huge_pte_lock(h, dst, dst_pte);
+ src_ptl = huge_pte_lockptr(h, src, src_pte);
+ spin_lock_nested(src_ptl, SINGLE_DEPTH_NESTING);
+- if (!huge_pte_none(huge_ptep_get(src_pte))) {
++ entry = huge_ptep_get(src_pte);
++ if (huge_pte_none(entry)) { /* skip none entry */
++ ;
++ } else if (unlikely(is_hugetlb_entry_migration(entry) ||
++ is_hugetlb_entry_hwpoisoned(entry))) {
++ swp_entry_t swp_entry = pte_to_swp_entry(entry);
++
++ if (is_write_migration_entry(swp_entry) && cow) {
++ /*
++ * COW mappings require pages in both
++ * parent and child to be set to read.
++ */
++ make_migration_entry_read(&swp_entry);
++ entry = swp_entry_to_pte(swp_entry);
++ set_huge_pte_at(src, addr, src_pte, entry);
++ }
++ set_huge_pte_at(dst, addr, dst_pte, entry);
++ } else {
+ if (cow)
+ huge_ptep_set_wrprotect(src, addr, src_pte);
+- entry = huge_ptep_get(src_pte);
+ ptepage = pte_page(entry);
+ get_page(ptepage);
+ page_dup_rmap(ptepage);
+@@ -2435,32 +2476,6 @@ int copy_hugetlb_page_range(struct mm_st
+ return ret;
+ }
+
+-static int is_hugetlb_entry_migration(pte_t pte)
+-{
+- swp_entry_t swp;
+-
+- if (huge_pte_none(pte) || pte_present(pte))
+- return 0;
+- swp = pte_to_swp_entry(pte);
+- if (non_swap_entry(swp) && is_migration_entry(swp))
+- return 1;
+- else
+- return 0;
+-}
+-
+-static int is_hugetlb_entry_hwpoisoned(pte_t pte)
+-{
+- swp_entry_t swp;
+-
+- if (huge_pte_none(pte) || pte_present(pte))
+- return 0;
+- swp = pte_to_swp_entry(pte);
+- if (non_swap_entry(swp) && is_hwpoison_entry(swp))
+- return 1;
+- else
+- return 0;
+-}
+-
+ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma,
+ unsigned long start, unsigned long end,
+ struct page *ref_page)
--- /dev/null
+From f9af420fc8208d3add2fe3198dc5d8215f5a81ba Mon Sep 17 00:00:00 2001
+From: Andrew Morton <akpm@linux-foundation.org>
+Date: Mon, 23 Jun 2014 13:22:07 -0700
+Subject: ia64: arch/ia64/include/uapi/asm/fcntl.h needs personality.h
+
+From: Andrew Morton <akpm@linux-foundation.org>
+
+commit f9af420fc8208d3add2fe3198dc5d8215f5a81ba upstream.
+
+fs/notify/fanotify/fanotify_user.c: In function 'SYSC_fanotify_init':
+fs/notify/fanotify/fanotify_user.c:726: error: implicit declaration of function 'personality'
+fs/notify/fanotify/fanotify_user.c:726: error: 'PER_LINUX32' undeclared (first use in this function)
+fs/notify/fanotify/fanotify_user.c:726: error: (Each undeclared identifier is reported only once
+fs/notify/fanotify/fanotify_user.c:726: error: for each function it appears in.)
+
+Reported-by: Wu Fengguang <fengguang.wu@intel.com>
+Cc: Will Woods <wwoods@redhat.com>
+Cc: "Luck, Tony" <tony.luck@intel.com>
+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/ia64/include/uapi/asm/fcntl.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/ia64/include/uapi/asm/fcntl.h
++++ b/arch/ia64/include/uapi/asm/fcntl.h
+@@ -8,6 +8,7 @@
+ #define force_o_largefile() \
+ (personality(current->personality) != PER_LINUX32)
+
++#include <linux/personality.h>
+ #include <asm-generic/fcntl.h>
+
+ #endif /* _ASM_IA64_FCNTL_H */
--- /dev/null
+From 27e249501ca06a3010519c306206cc402b61b5ab Mon Sep 17 00:00:00 2001
+From: Jiang Liu <jiang.liu@linux.intel.com>
+Date: Fri, 20 Jun 2014 15:08:06 +0800
+Subject: iommu/vt-d: fix bug in handling multiple RMRRs for the same PCI device
+
+From: Jiang Liu <jiang.liu@linux.intel.com>
+
+commit 27e249501ca06a3010519c306206cc402b61b5ab upstream.
+
+Function dmar_iommu_notify_scope_dev() makes a wrong assumption that
+there's one RMRR for each PCI device at most, which causes DMA failure
+on some HP platforms. So enhance dmar_iommu_notify_scope_dev() to
+handle multiple RMRRs for the same PCI device.
+
+Fixbug: https://bugzilla.novell.com/show_bug.cgi?id=879482
+
+Reported-by: Tom Mingarelli <thomas.mingarelli@hp.com>
+Tested-by: Linda Knippers <linda.knippers@hp.com>
+Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
+Signed-off-by: Joerg Roedel <jroedel@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iommu/intel-iommu.c | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+--- a/drivers/iommu/intel-iommu.c
++++ b/drivers/iommu/intel-iommu.c
+@@ -3799,14 +3799,11 @@ int dmar_iommu_notify_scope_dev(struct d
+ ((void *)rmrr) + rmrr->header.length,
+ rmrr->segment, rmrru->devices,
+ rmrru->devices_cnt);
+- if (ret > 0)
+- break;
+- else if(ret < 0)
++ if(ret < 0)
+ return ret;
+ } else if (info->event == BUS_NOTIFY_DEL_DEVICE) {
+- if (dmar_remove_dev_scope(info, rmrr->segment,
+- rmrru->devices, rmrru->devices_cnt))
+- break;
++ dmar_remove_dev_scope(info, rmrr->segment,
++ rmrru->devices, rmrru->devices_cnt);
+ }
+ }
+
--- /dev/null
+From 501fd9895c1d7d8161ed56698ae2fccb10ef14f5 Mon Sep 17 00:00:00 2001
+From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Date: Thu, 8 May 2014 12:15:22 +0300
+Subject: iwlwifi: pcie: try to get ownership several times
+
+From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+
+commit 501fd9895c1d7d8161ed56698ae2fccb10ef14f5 upstream.
+
+Some races with the hardware can happen when we take
+ownership of the device. Don't give up after the first try.
+
+Reviewed-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/iwlwifi/pcie/trans.c | 30 ++++++++++++++++++------------
+ 1 file changed, 18 insertions(+), 12 deletions(-)
+
+--- a/drivers/net/wireless/iwlwifi/pcie/trans.c
++++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
+@@ -454,6 +454,7 @@ static int iwl_pcie_prepare_card_hw(stru
+ {
+ int ret;
+ int t = 0;
++ int iter;
+
+ IWL_DEBUG_INFO(trans, "iwl_trans_prepare_card_hw enter\n");
+
+@@ -462,18 +463,23 @@ static int iwl_pcie_prepare_card_hw(stru
+ if (ret >= 0)
+ return 0;
+
+- /* If HW is not ready, prepare the conditions to check again */
+- iwl_set_bit(trans, CSR_HW_IF_CONFIG_REG,
+- CSR_HW_IF_CONFIG_REG_PREPARE);
+-
+- do {
+- ret = iwl_pcie_set_hw_ready(trans);
+- if (ret >= 0)
+- return 0;
+-
+- usleep_range(200, 1000);
+- t += 200;
+- } while (t < 150000);
++ for (iter = 0; iter < 10; iter++) {
++ /* If HW is not ready, prepare the conditions to check again */
++ iwl_set_bit(trans, CSR_HW_IF_CONFIG_REG,
++ CSR_HW_IF_CONFIG_REG_PREPARE);
++
++ do {
++ ret = iwl_pcie_set_hw_ready(trans);
++ if (ret >= 0)
++ return 0;
++
++ usleep_range(200, 1000);
++ t += 200;
++ } while (t < 150000);
++ msleep(25);
++ }
++
++ IWL_DEBUG_INFO(trans, "got NIC after %d iterations\n", iter);
+
+ return ret;
+ }
--- /dev/null
+From e020d5bd8a730757b565b18d620240f71c3e21fe Mon Sep 17 00:00:00 2001
+From: Steven Miao <realmz6@gmail.com>
+Date: Mon, 23 Jun 2014 13:22:02 -0700
+Subject: mm: nommu: per-thread vma cache fix
+
+From: Steven Miao <realmz6@gmail.com>
+
+commit e020d5bd8a730757b565b18d620240f71c3e21fe upstream.
+
+mm could be removed from current task struct, using previous vma->vm_mm
+
+It will crash on blackfin after updated to Linux 3.15. The commit "mm:
+per-thread vma caching" caused the crash. mm could be removed from
+current task struct before
+
+ mmput()->
+ exit_mmap()->
+ delete_vma_from_mm()
+
+the detailed fault information:
+
+ NULL pointer access
+ Kernel OOPS in progress
+ Deferred Exception context
+ CURRENT PROCESS:
+ COMM=modprobe PID=278 CPU=0
+ invalid mm
+ return address: [0x000531de]; contents of:
+ 0x000531b0: c727 acea 0c42 181d 0000 0000 0000 a0a8
+ 0x000531c0: b090 acaa 0c42 1806 0000 0000 0000 a0e8
+ 0x000531d0: b0d0 e801 0000 05b3 0010 e522 0046 [a090]
+ 0x000531e0: 6408 b090 0c00 17cc 3042 e3ff f37b 2fc8
+
+ CPU: 0 PID: 278 Comm: modprobe Not tainted 3.15.0-ADI-2014R1-pre-00345-gea9f446 #25
+ task: 0572b720 ti: 0569e000 task.ti: 0569e000
+ Compiled for cpu family 0x27fe (Rev 0), but running on:0x0000 (Rev 0)
+ ADSP-BF609-0.0 500(MHz CCLK) 125(MHz SCLK) (mpu off)
+ Linux version 3.15.0-ADI-2014R1-pre-00345-gea9f446 (steven@steven-OptiPlex-390) (gcc version 4.3.5 (ADI-trunk/svn-5962) ) #25 Tue Jun 10 17:47:46 CST 2014
+
+ SEQUENCER STATUS: Not tainted
+ SEQSTAT: 00000027 IPEND: 8008 IMASK: ffff SYSCFG: 2806
+ EXCAUSE : 0x27
+ physical IVG3 asserted : <0xffa00744> { _trap + 0x0 }
+ physical IVG15 asserted : <0xffa00d68> { _evt_system_call + 0x0 }
+ logical irq 6 mapped : <0xffa003bc> { _bfin_coretmr_interrupt + 0x0 }
+ logical irq 7 mapped : <0x00008828> { _bfin_fault_routine + 0x0 }
+ logical irq 11 mapped : <0x00007724> { _l2_ecc_err + 0x0 }
+ logical irq 13 mapped : <0x00008828> { _bfin_fault_routine + 0x0 }
+ logical irq 39 mapped : <0x00150788> { _bfin_twi_interrupt_entry + 0x0 }
+ logical irq 40 mapped : <0x00150788> { _bfin_twi_interrupt_entry + 0x0 }
+ RETE: <0x00000000> /* Maybe null pointer? */
+ RETN: <0x0569fe50> /* kernel dynamic memory (maybe user-space) */
+ RETX: <0x00000480> /* Maybe fixed code section */
+ RETS: <0x00053384> { _exit_mmap + 0x28 }
+ PC : <0x000531de> { _delete_vma_from_mm + 0x92 }
+ DCPLB_FAULT_ADDR: <0x00000008> /* Maybe null pointer? */
+ ICPLB_FAULT_ADDR: <0x000531de> { _delete_vma_from_mm + 0x92 }
+ PROCESSOR STATE:
+ R0 : 00000004 R1 : 0569e000 R2 : 00bf3db4 R3 : 00000000
+ R4 : 057f9800 R5 : 00000001 R6 : 0569ddd0 R7 : 0572b720
+ P0 : 0572b854 P1 : 00000004 P2 : 00000000 P3 : 0569dda0
+ P4 : 0572b720 P5 : 0566c368 FP : 0569fe5c SP : 0569fd74
+ LB0: 057f523f LT0: 057f523e LC0: 00000000
+ LB1: 0005317c LT1: 00053172 LC1: 00000002
+ B0 : 00000000 L0 : 00000000 M0 : 0566f5bc I0 : 00000000
+ B1 : 00000000 L1 : 00000000 M1 : 00000000 I1 : ffffffff
+ B2 : 00000001 L2 : 00000000 M2 : 00000000 I2 : 00000000
+ B3 : 00000000 L3 : 00000000 M3 : 00000000 I3 : 057f8000
+ A0.w: 00000000 A0.x: 00000000 A1.w: 00000000 A1.x: 00000000
+ USP : 056ffcf8 ASTAT: 02003024
+
+ Hardware Trace:
+ 0 Target : <0x00003fb8> { _trap_c + 0x0 }
+ Source : <0xffa006d8> { _exception_to_level5 + 0xa0 } JUMP.L
+ 1 Target : <0xffa00638> { _exception_to_level5 + 0x0 }
+ Source : <0xffa004f2> { _bfin_return_from_exception + 0x6 } RTX
+ 2 Target : <0xffa004ec> { _bfin_return_from_exception + 0x0 }
+ Source : <0xffa00590> { _ex_trap_c + 0x70 } JUMP.S
+ 3 Target : <0xffa00520> { _ex_trap_c + 0x0 }
+ Source : <0xffa0076e> { _trap + 0x2a } JUMP (P4)
+ 4 Target : <0xffa00744> { _trap + 0x0 }
+ FAULT : <0x000531de> { _delete_vma_from_mm + 0x92 } P0 = W[P2 + 2]
+ Source : <0x000531da> { _delete_vma_from_mm + 0x8e } P2 = [P4 + 0x18]
+ 5 Target : <0x000531da> { _delete_vma_from_mm + 0x8e }
+ Source : <0x00053176> { _delete_vma_from_mm + 0x2a } IF CC JUMP pcrel
+ 6 Target : <0x0005314c> { _delete_vma_from_mm + 0x0 }
+ Source : <0x00053380> { _exit_mmap + 0x24 } JUMP.L
+ 7 Target : <0x00053378> { _exit_mmap + 0x1c }
+ Source : <0x00053394> { _exit_mmap + 0x38 } IF !CC JUMP pcrel (BP)
+ 8 Target : <0x00053390> { _exit_mmap + 0x34 }
+ Source : <0xffa020e0> { __cond_resched + 0x20 } RTS
+ 9 Target : <0xffa020c0> { __cond_resched + 0x0 }
+ Source : <0x0005338c> { _exit_mmap + 0x30 } JUMP.L
+ 10 Target : <0x0005338c> { _exit_mmap + 0x30 }
+ Source : <0x0005333a> { _delete_vma + 0xb2 } RTS
+ 11 Target : <0x00053334> { _delete_vma + 0xac }
+ Source : <0x0005507a> { _kmem_cache_free + 0xba } RTS
+ 12 Target : <0x00055068> { _kmem_cache_free + 0xa8 }
+ Source : <0x0005505e> { _kmem_cache_free + 0x9e } IF !CC JUMP pcrel (BP)
+ 13 Target : <0x00055052> { _kmem_cache_free + 0x92 }
+ Source : <0x0005501a> { _kmem_cache_free + 0x5a } IF CC JUMP pcrel
+ 14 Target : <0x00054ff4> { _kmem_cache_free + 0x34 }
+ Source : <0x00054fce> { _kmem_cache_free + 0xe } IF CC JUMP pcrel (BP)
+ 15 Target : <0x00054fc0> { _kmem_cache_free + 0x0 }
+ Source : <0x00053330> { _delete_vma + 0xa8 } JUMP.L
+ Kernel Stack
+ Stack info:
+ SP: [0x0569ff24] <0x0569ff24> /* kernel dynamic memory (maybe user-space) */
+ Memory from 0x0569ff20 to 056a0000
+ 0569ff20: 00000001 [04e8da5a] 00008000 00000000 00000000 056a0000 04e8da5a 04e8da5a
+ 0569ff40: 04eb9eea ffa00dce 02003025 04ea09c5 057f523f 04ea09c4 057f523e 00000000
+ 0569ff60: 00000000 00000000 00000000 00000000 00000000 00000000 00000001 00000000
+ 0569ff80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
+ 0569ffa0: 0566f5bc 057f8000 057f8000 00000001 04ec0170 056ffcf8 056ffd04 057f9800
+ 0569ffc0: 04d1d498 057f9800 057f8fe4 057f8ef0 00000001 057f928c 00000001 00000001
+ 0569ffe0: 057f9800 00000000 00000008 00000007 00000001 00000001 00000001 <00002806>
+ Return addresses in stack:
+ address : <0x00002806> { _show_cpuinfo + 0x2d2 }
+ Modules linked in:
+ Kernel panic - not syncing: Kernel exception
+ [ end Kernel panic - not syncing: Kernel exception
+
+Signed-off-by: Steven Miao <realmz6@gmail.com>
+Acked-by: Davidlohr Bueso <davidlohr@hp.com>
+Reviewed-by: Rik van Riel <riel@redhat.com>
+Acked-by: David Rientjes <rientjes@google.com>
+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>
+
+---
+ mm/nommu.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/mm/nommu.c
++++ b/mm/nommu.c
+@@ -783,7 +783,7 @@ static void delete_vma_from_mm(struct vm
+ for (i = 0; i < VMACACHE_SIZE; i++) {
+ /* if the vma is cached, invalidate the entire cache */
+ if (curr->vmacache[i] == vma) {
+- vmacache_invalidate(curr->mm);
++ vmacache_invalidate(mm);
+ break;
+ }
+ }
--- /dev/null
+From 7cd2b0a34ab8e4db971920eef8982f985441adfb Mon Sep 17 00:00:00 2001
+From: David Rientjes <rientjes@google.com>
+Date: Mon, 23 Jun 2014 13:22:04 -0700
+Subject: mm, pcp: allow restoring percpu_pagelist_fraction default
+
+From: David Rientjes <rientjes@google.com>
+
+commit 7cd2b0a34ab8e4db971920eef8982f985441adfb upstream.
+
+Oleg reports a division by zero error on zero-length write() to the
+percpu_pagelist_fraction sysctl:
+
+ divide error: 0000 [#1] SMP DEBUG_PAGEALLOC
+ CPU: 1 PID: 9142 Comm: badarea_io Not tainted 3.15.0-rc2-vm-nfs+ #19
+ Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
+ task: ffff8800d5aeb6e0 ti: ffff8800d87a2000 task.ti: ffff8800d87a2000
+ RIP: 0010: percpu_pagelist_fraction_sysctl_handler+0x84/0x120
+ RSP: 0018:ffff8800d87a3e78 EFLAGS: 00010246
+ RAX: 0000000000000f89 RBX: ffff88011f7fd000 RCX: 0000000000000000
+ RDX: 0000000000000000 RSI: 0000000000000001 RDI: 0000000000000010
+ RBP: ffff8800d87a3e98 R08: ffffffff81d002c8 R09: ffff8800d87a3f50
+ R10: 000000000000000b R11: 0000000000000246 R12: 0000000000000060
+ R13: ffffffff81c3c3e0 R14: ffffffff81cfddf8 R15: ffff8801193b0800
+ FS: 00007f614f1e9740(0000) GS:ffff88011f440000(0000) knlGS:0000000000000000
+ CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
+ CR2: 00007f614f1fa000 CR3: 00000000d9291000 CR4: 00000000000006e0
+ Call Trace:
+ proc_sys_call_handler+0xb3/0xc0
+ proc_sys_write+0x14/0x20
+ vfs_write+0xba/0x1e0
+ SyS_write+0x46/0xb0
+ tracesys+0xe1/0xe6
+
+However, if the percpu_pagelist_fraction sysctl is set by the user, it
+is also impossible to restore it to the kernel default since the user
+cannot write 0 to the sysctl.
+
+This patch allows the user to write 0 to restore the default behavior.
+It still requires a fraction equal to or larger than 8, however, as
+stated by the documentation for sanity. If a value in the range [1, 7]
+is written, the sysctl will return EINVAL.
+
+This successfully solves the divide by zero issue at the same time.
+
+Signed-off-by: David Rientjes <rientjes@google.com>
+Reported-by: Oleg Drokin <green@linuxhacker.ru>
+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>
+
+---
+ Documentation/sysctl/vm.txt | 3 ++-
+ kernel/sysctl.c | 3 +--
+ mm/page_alloc.c | 40 ++++++++++++++++++++++++++++------------
+ 3 files changed, 31 insertions(+), 15 deletions(-)
+
+--- a/Documentation/sysctl/vm.txt
++++ b/Documentation/sysctl/vm.txt
+@@ -702,7 +702,8 @@ The batch value of each per cpu pagelist
+ set to pcp->high/4. The upper limit of batch is (PAGE_SHIFT * 8)
+
+ The initial value is zero. Kernel does not use this value at boot time to set
+-the high water marks for each per cpu page list.
++the high water marks for each per cpu page list. If the user writes '0' to this
++sysctl, it will revert to this default behavior.
+
+ ==============================================================
+
+--- a/kernel/sysctl.c
++++ b/kernel/sysctl.c
+@@ -136,7 +136,6 @@ static unsigned long dirty_bytes_min = 2
+ /* this is needed for the proc_dointvec_minmax for [fs_]overflow UID and GID */
+ static int maxolduid = 65535;
+ static int minolduid;
+-static int min_percpu_pagelist_fract = 8;
+
+ static int ngroups_max = NGROUPS_MAX;
+ static const int cap_last_cap = CAP_LAST_CAP;
+@@ -1305,7 +1304,7 @@ static struct ctl_table vm_table[] = {
+ .maxlen = sizeof(percpu_pagelist_fraction),
+ .mode = 0644,
+ .proc_handler = percpu_pagelist_fraction_sysctl_handler,
+- .extra1 = &min_percpu_pagelist_fract,
++ .extra1 = &zero,
+ },
+ #ifdef CONFIG_MMU
+ {
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -69,6 +69,7 @@
+
+ /* prevent >1 _updater_ of zone percpu pageset ->high and ->batch fields */
+ static DEFINE_MUTEX(pcp_batch_high_lock);
++#define MIN_PERCPU_PAGELIST_FRACTION (8)
+
+ #ifdef CONFIG_USE_PERCPU_NUMA_NODE_ID
+ DEFINE_PER_CPU(int, numa_node);
+@@ -4107,7 +4108,7 @@ static void __meminit zone_init_free_lis
+ memmap_init_zone((size), (nid), (zone), (start_pfn), MEMMAP_EARLY)
+ #endif
+
+-static int __meminit zone_batchsize(struct zone *zone)
++static int zone_batchsize(struct zone *zone)
+ {
+ #ifdef CONFIG_MMU
+ int batch;
+@@ -4223,8 +4224,8 @@ static void pageset_set_high(struct per_
+ pageset_update(&p->pcp, high, batch);
+ }
+
+-static void __meminit pageset_set_high_and_batch(struct zone *zone,
+- struct per_cpu_pageset *pcp)
++static void pageset_set_high_and_batch(struct zone *zone,
++ struct per_cpu_pageset *pcp)
+ {
+ if (percpu_pagelist_fraction)
+ pageset_set_high(pcp,
+@@ -5850,23 +5851,38 @@ int percpu_pagelist_fraction_sysctl_hand
+ void __user *buffer, size_t *length, loff_t *ppos)
+ {
+ struct zone *zone;
+- unsigned int cpu;
++ int old_percpu_pagelist_fraction;
+ int ret;
+
++ mutex_lock(&pcp_batch_high_lock);
++ old_percpu_pagelist_fraction = percpu_pagelist_fraction;
++
+ ret = proc_dointvec_minmax(table, write, buffer, length, ppos);
+- if (!write || (ret < 0))
+- return ret;
++ if (!write || ret < 0)
++ goto out;
++
++ /* Sanity checking to avoid pcp imbalance */
++ if (percpu_pagelist_fraction &&
++ percpu_pagelist_fraction < MIN_PERCPU_PAGELIST_FRACTION) {
++ percpu_pagelist_fraction = old_percpu_pagelist_fraction;
++ ret = -EINVAL;
++ goto out;
++ }
++
++ /* No change? */
++ if (percpu_pagelist_fraction == old_percpu_pagelist_fraction)
++ goto out;
+
+- mutex_lock(&pcp_batch_high_lock);
+ for_each_populated_zone(zone) {
+- unsigned long high;
+- high = zone->managed_pages / percpu_pagelist_fraction;
++ unsigned int cpu;
++
+ for_each_possible_cpu(cpu)
+- pageset_set_high(per_cpu_ptr(zone->pageset, cpu),
+- high);
++ pageset_set_high_and_batch(zone,
++ per_cpu_ptr(zone->pageset, cpu));
+ }
++out:
+ mutex_unlock(&pcp_batch_high_lock);
+- return 0;
++ return ret;
+ }
+
+ int hashdist = HASHDIST_DEFAULT;
--- /dev/null
+From b91113282bf44df46aba374a0b8f88a75bfd4b3f Mon Sep 17 00:00:00 2001
+From: Maxime Ripard <maxime.ripard@free-electrons.com>
+Date: Mon, 23 Jun 2014 22:49:40 +0200
+Subject: net: allwinner: emac: Add missing free_irq
+
+From: Maxime Ripard <maxime.ripard@free-electrons.com>
+
+commit b91113282bf44df46aba374a0b8f88a75bfd4b3f upstream.
+
+If the mdio probe function fails in emac_open, the interrupt we just requested
+isn't freed. If emac_open is called again, for example because we try to set up
+the interface again, the kernel will oops because the interrupt wasn't properly
+released.
+
+Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/ethernet/allwinner/sun4i-emac.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/ethernet/allwinner/sun4i-emac.c
++++ b/drivers/net/ethernet/allwinner/sun4i-emac.c
+@@ -736,6 +736,7 @@ static int emac_open(struct net_device *
+
+ ret = emac_mdio_probe(dev);
+ if (ret < 0) {
++ free_irq(dev->irq, dev);
+ netdev_err(dev, "cannot probe MDIO bus\n");
+ return ret;
+ }
--- /dev/null
+From d2fa87c3af0df7ed10463afc588affdab954fa92 Mon Sep 17 00:00:00 2001
+From: Keerthy <j-keerthy@ti.com>
+Date: Wed, 18 Jun 2014 10:17:47 -0500
+Subject: regulator: tps65218: Add the missing of_node assignment in probe
+
+From: Keerthy <j-keerthy@ti.com>
+
+commit d2fa87c3af0df7ed10463afc588affdab954fa92 upstream.
+
+Add the missing of_node assignment in probe.
+
+Fixes: 90e7d5262796 (regulator: tps65218: Add Regulator driver for TPS65218 PMIC)
+Signed-off-by: Keerthy <j-keerthy@ti.com>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/regulator/tps65218-regulator.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/regulator/tps65218-regulator.c
++++ b/drivers/regulator/tps65218-regulator.c
+@@ -257,6 +257,7 @@ static int tps65218_regulator_probe(stru
+ config.init_data = init_data;
+ config.driver_data = tps;
+ config.regmap = tps->regmap;
++ config.of_node = pdev->dev.of_node;
+
+ rdev = devm_regulator_register(&pdev->dev, ®ulators[id], &config);
+ if (IS_ERR(rdev)) {
--- /dev/null
+From 0eada6a1fc85a98ce69a199e46925abd6a7001c2 Mon Sep 17 00:00:00 2001
+From: Keerthy <j-keerthy@ti.com>
+Date: Wed, 18 Jun 2014 10:17:48 -0500
+Subject: regulator: tps65218: Correct the the config register for LDO1
+
+From: Keerthy <j-keerthy@ti.com>
+
+commit 0eada6a1fc85a98ce69a199e46925abd6a7001c2 upstream.
+
+Correct the the config register for LDO1.
+
+Fixes: 90e7d5262796 (regulator: tps65218: Add Regulator driver for
+TPS65218 PMIC)
+Signed-off-by: Keerthy <j-keerthy@ti.com>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/regulator/tps65218-regulator.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/regulator/tps65218-regulator.c
++++ b/drivers/regulator/tps65218-regulator.c
+@@ -226,7 +226,7 @@ static const struct regulator_desc regul
+ 1, -1, -1, TPS65218_REG_ENABLE1,
+ TPS65218_ENABLE1_DC6_EN, NULL, NULL, 0),
+ TPS65218_REGULATOR("LDO1", TPS65218_LDO_1, tps65218_ldo1_dcdc34_ops, 64,
+- TPS65218_REG_CONTROL_DCDC4,
++ TPS65218_REG_CONTROL_LDO1,
+ TPS65218_CONTROL_LDO1_MASK, TPS65218_REG_ENABLE2,
+ TPS65218_ENABLE2_LDO1_EN, NULL, ldo1_dcdc3_ranges,
+ 2),
mac80211-fix-ibss-join-by-initializing-last_scan_completed.patch
mac80211-don-t-check-netdev-state-for-debugfs-read-write.patch
mac80211-fix-a-memory-leak-on-sta-rate-selection-table.patch
+iwlwifi-pcie-try-to-get-ownership-several-times.patch
+mm-nommu-per-thread-vma-cache-fix.patch
+hugetlb-fix-copy_hugetlb_page_range-to-handle-migration-hwpoisoned-entry.patch
+mm-pcp-allow-restoring-percpu_pagelist_fraction-default.patch
+ia64-arch-ia64-include-uapi-asm-fcntl.h-needs-personality.h.patch
+arm-mvebu-fix-the-improper-use-of-the-compatible-string-armada38x-using-a-wildcard.patch
+arm64-mm-make-icache-synchronisation-logic-huge-page-aware.patch
+arm-omap2-fix-parser-bug-in-platform-muxing-code.patch
+arm64-bug-fix-in-stack-alignment-exception.patch
+net-allwinner-emac-add-missing-free_irq.patch
+b43-fix-frequency-reported-on-g-phy-with-new-firmware.patch
+fs-cifs-fix-regression-in-cifs_create_mf_symlink.patch
+cifs-fix-mount-failure-with-broken-pathnames-when-smb3-mount-with-mapchars-option.patch
+regulator-tps65218-add-the-missing-of_node-assignment-in-probe.patch
+regulator-tps65218-correct-the-the-config-register-for-ldo1.patch
+iommu-vt-d-fix-bug-in-handling-multiple-rmrrs-for-the-same-pci-device.patch