--- /dev/null
+From 2b53d07891630dead46d65c8f896955fd3ae0302 Mon Sep 17 00:00:00 2001
+From: Darren Hart <dvhart@linux.intel.com>
+Date: Mon, 16 Jan 2012 09:50:19 +0000
+Subject: pch_gbe: Do not abort probe on bad MAC
+
+From: Darren Hart <dvhart@linux.intel.com>
+
+commit 2b53d07891630dead46d65c8f896955fd3ae0302 upstream.
+
+If the MAC is invalid or not implemented, do not abort the probe. Issue
+a warning and prevent bringing the interface up until a MAC is set manually
+(via ifconfig $IFACE hw ether $MAC).
+
+Tested on two platforms, one with a valid MAC, the other without a MAC. The real
+MAC is used if present, the interface fails to come up until the MAC is set on
+the other. They successfully get an IP over DHCP and pass a simple ping and
+login over ssh test.
+
+This is meant to allow the Inforce SYS940X development board:
+http://www.inforcecomputing.com/SYS940X_ECX.html
+(and others suffering from a missing MAC) to work with the mainline kernel.
+Without this patch, the probe will fail and the interface will not be created,
+preventing the user from configuring the MAC manually.
+
+This does not make any attempt to address a missing or invalid MAC for the
+pch_phub driver.
+
+Signed-off-by: Darren Hart <dvhart@linux.intel.com>
+CC: Arjan van de Ven <arjan@linux.intel.com>
+CC: Alan Cox <alan@linux.intel.com>
+CC: Tomoya MORINAGA <tomoya.rohm@gmail.com>
+CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
+CC: "David S. Miller" <davem@davemloft.net>
+CC: Paul Gortmaker <paul.gortmaker@windriver.com>
+CC: Jon Mason <jdmason@kudzu.us>
+CC: netdev@vger.kernel.org
+CC: Mark Brown <broonie@opensource.wolfsonmicro.com>
+CC: David Laight <David.Laight@ACULAB.COM>
+CC: Joe Perches <joe@perches.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
+
+---
+ drivers/net/pch_gbe/pch_gbe_main.c | 17 ++++++++++++++---
+ 1 file changed, 14 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/pch_gbe/pch_gbe_main.c
++++ b/drivers/net/pch_gbe/pch_gbe_main.c
+@@ -1710,6 +1710,12 @@ int pch_gbe_up(struct pch_gbe_adapter *a
+ struct pch_gbe_rx_ring *rx_ring = adapter->rx_ring;
+ int err;
+
++ /* Ensure we have a valid MAC */
++ if (!is_valid_ether_addr(adapter->hw.mac.addr)) {
++ pr_err("Error: Invalid MAC address\n");
++ return -EINVAL;
++ }
++
+ /* hardware has been reset, we need to reload some things */
+ pch_gbe_set_multi(netdev);
+
+@@ -2402,9 +2408,14 @@ static int pch_gbe_probe(struct pci_dev
+
+ memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
+ if (!is_valid_ether_addr(netdev->dev_addr)) {
+- dev_err(&pdev->dev, "Invalid MAC Address\n");
+- ret = -EIO;
+- goto err_free_adapter;
++ /*
++ * If the MAC is invalid (or just missing), display a warning
++ * but do not abort setting up the device. pch_gbe_up will
++ * prevent the interface from being brought up until a valid MAC
++ * is set.
++ */
++ dev_err(&pdev->dev, "Invalid MAC address, "
++ "interface disabled.\n");
+ }
+ setup_timer(&adapter->watchdog_timer, pch_gbe_watchdog,
+ (unsigned long)adapter);
--- /dev/null
+From 5f3a11419099d5cc010cfbfc524ca10d8fb81f89 Mon Sep 17 00:00:00 2001
+From: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com>
+Date: Sun, 25 Sep 2011 21:27:42 +0000
+Subject: pch_gbe: Fixed the issue on which PC was frozen when link was downed.
+
+From: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com>
+
+commit 5f3a11419099d5cc010cfbfc524ca10d8fb81f89 upstream.
+
+When a link was downed during network use,
+there is an issue on which PC freezes.
+
+This patch fixed this issue.
+
+Signed-off-by: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
+
+---
+ drivers/net/pch_gbe/pch_gbe_main.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/pch_gbe/pch_gbe_main.c
++++ b/drivers/net/pch_gbe/pch_gbe_main.c
+@@ -2128,7 +2128,7 @@ static int pch_gbe_napi_poll(struct napi
+ /* If no Tx and not enough Rx work done,
+ * exit the polling mode
+ */
+- if ((work_done < budget) || !netif_running(netdev))
++ if (work_done < budget)
+ poll_end_flag = true;
+ }
+
--- /dev/null
+From 5229d87edcd80a3bceb0708ebd767faff2e589a9 Mon Sep 17 00:00:00 2001
+From: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com>
+Date: Thu, 1 Sep 2011 14:20:07 +0000
+Subject: pch_gbe: fixed the issue which receives an unnecessary packet.
+
+From: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com>
+
+commit 5229d87edcd80a3bceb0708ebd767faff2e589a9 upstream.
+
+This patch fixed the issue which receives an unnecessary packet before link
+
+When using PHY of GMII, an unnecessary packet is received,
+And it becomes impossible to receive a packet after link up.
+
+Signed-off-by: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/pch_gbe/pch_gbe_main.c | 21 ++++++++++++++-------
+ 1 file changed, 14 insertions(+), 7 deletions(-)
+
+--- a/drivers/net/pch_gbe/pch_gbe_main.c
++++ b/drivers/net/pch_gbe/pch_gbe_main.c
+@@ -717,13 +717,6 @@ static void pch_gbe_configure_rx(struct
+ iowrite32(rdba, &hw->reg->RX_DSC_BASE);
+ iowrite32(rdlen, &hw->reg->RX_DSC_SIZE);
+ iowrite32((rdba + rdlen), &hw->reg->RX_DSC_SW_P);
+-
+- /* Enables Receive DMA */
+- rxdma = ioread32(&hw->reg->DMA_CTRL);
+- rxdma |= PCH_GBE_RX_DMA_EN;
+- iowrite32(rxdma, &hw->reg->DMA_CTRL);
+- /* Enables Receive */
+- iowrite32(PCH_GBE_MRE_MAC_RX_EN, &hw->reg->MAC_RX_EN);
+ }
+
+ /**
+@@ -1097,6 +1090,19 @@ void pch_gbe_update_stats(struct pch_gbe
+ spin_unlock_irqrestore(&adapter->stats_lock, flags);
+ }
+
++static void pch_gbe_start_receive(struct pch_gbe_hw *hw)
++{
++ u32 rxdma;
++
++ /* Enables Receive DMA */
++ rxdma = ioread32(&hw->reg->DMA_CTRL);
++ rxdma |= PCH_GBE_RX_DMA_EN;
++ iowrite32(rxdma, &hw->reg->DMA_CTRL);
++ /* Enables Receive */
++ iowrite32(PCH_GBE_MRE_MAC_RX_EN, &hw->reg->MAC_RX_EN);
++ return;
++}
++
+ /**
+ * pch_gbe_intr - Interrupt Handler
+ * @irq: Interrupt number
+@@ -1717,6 +1723,7 @@ int pch_gbe_up(struct pch_gbe_adapter *a
+ pch_gbe_alloc_tx_buffers(adapter, tx_ring);
+ pch_gbe_alloc_rx_buffers(adapter, rx_ring, rx_ring->count);
+ adapter->tx_queue_len = netdev->tx_queue_len;
++ pch_gbe_start_receive(&adapter->hw);
+
+ mod_timer(&adapter->watchdog_timer, jiffies);
+
--- /dev/null
+From 73f98eab9b9e0bab492ca06add5657d9e702ddb1 Mon Sep 17 00:00:00 2001
+From: Dan Carpenter <dan.carpenter@oracle.com>
+Date: Wed, 29 Feb 2012 21:17:08 +0000
+Subject: pch_gbe: memory corruption calling pch_gbe_validate_option()
+
+From: Dan Carpenter <dan.carpenter@oracle.com>
+
+commit 73f98eab9b9e0bab492ca06add5657d9e702ddb1 upstream.
+
+pch_gbe_validate_option() modifies 32 bits of memory but we pass
+&hw->phy.autoneg_advertised which only has 16 bits and &hw->mac.fc
+which only has 8 bits.
+
+Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/pch_gbe/pch_gbe_param.c | 15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+--- a/drivers/net/pch_gbe/pch_gbe_param.c
++++ b/drivers/net/pch_gbe/pch_gbe_param.c
+@@ -320,10 +320,10 @@ static void pch_gbe_check_copper_options
+ pr_debug("AutoNeg specified along with Speed or Duplex, AutoNeg parameter ignored\n");
+ hw->phy.autoneg_advertised = opt.def;
+ } else {
+- hw->phy.autoneg_advertised = AutoNeg;
+- pch_gbe_validate_option(
+- (int *)(&hw->phy.autoneg_advertised),
+- &opt, adapter);
++ int tmp = AutoNeg;
++
++ pch_gbe_validate_option(&tmp, &opt, adapter);
++ hw->phy.autoneg_advertised = tmp;
+ }
+ }
+
+@@ -494,9 +494,10 @@ void pch_gbe_check_options(struct pch_gb
+ .arg = { .l = { .nr = (int)ARRAY_SIZE(fc_list),
+ .p = fc_list } }
+ };
+- hw->mac.fc = FlowControl;
+- pch_gbe_validate_option((int *)(&hw->mac.fc),
+- &opt, adapter);
++ int tmp = FlowControl;
++
++ pch_gbe_validate_option(&tmp, &opt, adapter);
++ hw->mac.fc = tmp;
+ }
+
+ pch_gbe_check_copper_options(adapter);
--- /dev/null
+From 7756332f5b64c9c1535712b9679792e8bd4f0019 Mon Sep 17 00:00:00 2001
+From: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com>
+Date: Thu, 1 Sep 2011 14:20:09 +0000
+Subject: pch_gbe: support ML7831 IOH
+
+From: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com>
+
+commit 7756332f5b64c9c1535712b9679792e8bd4f0019 upstream.
+
+Support new device OKI SEMICONDUCTOR ML7831 IOH(Input/Output Hub)
+
+ML7831 is for general purpose use.
+ML7831 is companion chip for Intel Atom E6xx series.
+ML7831 is completely compatible for Intel EG20T PCH.
+
+Signed-off-by: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/Kconfig | 11 ++++++-----
+ drivers/net/pch_gbe/pch_gbe_main.c | 10 ++++++++++
+ 2 files changed, 16 insertions(+), 5 deletions(-)
+
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
+@@ -2543,7 +2543,7 @@ config S6GMAC
+ source "drivers/net/stmmac/Kconfig"
+
+ config PCH_GBE
+- tristate "Intel EG20T PCH / OKI SEMICONDUCTOR ML7223 IOH GbE"
++ tristate "Intel EG20T PCH/OKI SEMICONDUCTOR IOH(ML7223/ML7831) GbE"
+ depends on PCI
+ select MII
+ ---help---
+@@ -2556,10 +2556,11 @@ config PCH_GBE
+ This driver enables Gigabit Ethernet function.
+
+ This driver also can be used for OKI SEMICONDUCTOR IOH(Input/
+- Output Hub), ML7223.
+- ML7223 IOH is for MP(Media Phone) use.
+- ML7223 is companion chip for Intel Atom E6xx series.
+- ML7223 is completely compatible for Intel EG20T PCH.
++ Output Hub), ML7223/ML7831.
++ ML7223 IOH is for MP(Media Phone) use. ML7831 IOH is for general
++ purpose use.
++ ML7223/ML7831 is companion chip for Intel Atom E6xx series.
++ ML7223/ML7831 is completely compatible for Intel EG20T PCH.
+
+ endif # NETDEV_1000
+
+--- a/drivers/net/pch_gbe/pch_gbe_main.c
++++ b/drivers/net/pch_gbe/pch_gbe_main.c
+@@ -39,6 +39,9 @@ const char pch_driver_version[] = DRV_VE
+ #define PCI_VENDOR_ID_ROHM 0x10db
+ #define PCI_DEVICE_ID_ROHM_ML7223_GBE 0x8013
+
++/* Macros for ML7831 */
++#define PCI_DEVICE_ID_ROHM_ML7831_GBE 0x8802
++
+ #define PCH_GBE_TX_WEIGHT 64
+ #define PCH_GBE_RX_WEIGHT 64
+ #define PCH_GBE_RX_BUFFER_WRITE 16
+@@ -2457,6 +2460,13 @@ static DEFINE_PCI_DEVICE_TABLE(pch_gbe_p
+ .subvendor = PCI_ANY_ID,
+ .subdevice = PCI_ANY_ID,
+ .class = (PCI_CLASS_NETWORK_ETHERNET << 8),
++ .class_mask = (0xFFFF00)
++ },
++ {.vendor = PCI_VENDOR_ID_ROHM,
++ .device = PCI_DEVICE_ID_ROHM_ML7831_GBE,
++ .subvendor = PCI_ANY_ID,
++ .subdevice = PCI_ANY_ID,
++ .class = (PCI_CLASS_NETWORK_ETHERNET << 8),
+ .class_mask = (0xFFFF00)
+ },
+ /* required last entry */
--- /dev/null
+From tomoya.rohm@gmail.com Fri May 18 12:54:19 2012
+From: Tomoya MORINAGA <tomoya.rohm@gmail.com>
+Date: Tue, 15 May 2012 12:53:23 +0900
+Subject: pch_gpio: Support new device LAPIS Semiconductor ML7831 IOH
+To: stable@vger.kernel.org
+Cc: Tomoya MORINAGA <tomoya.rohm@gmail.com>, Grant Likely <grant.likely@secretlab.ca>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Message-ID: <1337054003-22009-1-git-send-email-tomoya.rohm@gmail.com>
+
+From: Tomoya MORINAGA <tomoya.rohm@gmail.com>
+
+commit 868fea0507308b6548bba7debe5f5c2d5ca47fca upstream.
+
+ML7831 is companion chip for Intel Atom E6xx series.
+
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpio/Kconfig | 11 ++++++-----
+ drivers/gpio/pch_gpio.c | 1 +
+ 2 files changed, 7 insertions(+), 5 deletions(-)
+
+--- a/drivers/gpio/Kconfig
++++ b/drivers/gpio/Kconfig
+@@ -350,18 +350,19 @@ config GPIO_LANGWELL
+ Say Y here to support Intel Langwell/Penwell GPIO.
+
+ config GPIO_PCH
+- tristate "Intel EG20T PCH / OKI SEMICONDUCTOR ML7223 IOH GPIO"
++ tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7223/ML7831) GPIO"
+ depends on PCI && X86
+ help
+ This driver is for PCH(Platform controller Hub) GPIO of Intel Topcliff
+ which is an IOH(Input/Output Hub) for x86 embedded processor.
+ This driver can access PCH GPIO device.
+
+- This driver also can be used for OKI SEMICONDUCTOR IOH(Input/
+- Output Hub), ML7223.
++ This driver also can be used for LAPIS Semiconductor IOH(Input/
++ Output Hub), ML7223 and ML7831.
+ ML7223 IOH is for MP(Media Phone) use.
+- ML7223 is companion chip for Intel Atom E6xx series.
+- ML7223 is completely compatible for Intel EG20T PCH.
++ ML7831 IOH is for general purpose use.
++ ML7223/ML7831 is companion chip for Intel Atom E6xx series.
++ ML7223/ML7831 is completely compatible for Intel EG20T PCH.
+
+ config GPIO_ML_IOH
+ tristate "OKI SEMICONDUCTOR ML7213 IOH GPIO support"
+--- a/drivers/gpio/pch_gpio.c
++++ b/drivers/gpio/pch_gpio.c
+@@ -287,6 +287,7 @@ static int pch_gpio_resume(struct pci_de
+ static DEFINE_PCI_DEVICE_TABLE(pch_gpio_pcidev_id) = {
+ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x8803) },
+ { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8014) },
++ { PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8803) },
+ { 0, }
+ };
+ MODULE_DEVICE_TABLE(pci, pch_gpio_pcidev_id);
ext4-fix-error-handling-on-inode-bitmap-corruption.patch
acpi-pm-add-sony-vaio-vpccw29fx-to-nonvs-blacklist.patch
scsi-hpsa-add-irqf_shared-back-in-for-the-non-msi-x-interrupt-handler.patch
+wake-up-s_wait_unfrozen-when-freeze_fs-fails.patch
+pch_gpio-support-new-device-lapis-semiconductor-ml7831-ioh.patch
+pch_gbe-fixed-the-issue-which-receives-an-unnecessary-packet.patch
+pch_gbe-support-ml7831-ioh.patch
+pch_gbe-fixed-the-issue-on-which-pc-was-frozen-when-link-was-downed.patch
+pch_gbe-do-not-abort-probe-on-bad-mac.patch
+pch_gbe-memory-corruption-calling-pch_gbe_validate_option.patch
--- /dev/null
+From e1616300a20c80396109c1cf013ba9a36055a3da Mon Sep 17 00:00:00 2001
+From: Kazuya Mio <k-mio@sx.jp.nec.com>
+Date: Thu, 1 Dec 2011 16:51:07 +0900
+Subject: wake up s_wait_unfrozen when ->freeze_fs fails
+
+From: Kazuya Mio <k-mio@sx.jp.nec.com>
+
+commit e1616300a20c80396109c1cf013ba9a36055a3da upstream.
+
+dd slept infinitely when fsfeeze failed because of EIO.
+To fix this problem, if ->freeze_fs fails, freeze_super() wakes up
+the tasks waiting for the filesystem to become unfrozen.
+
+When s_frozen isn't SB_UNFROZEN in __generic_file_aio_write(),
+the function sleeps until FITHAW ioctl wakes up s_wait_unfrozen.
+
+However, if ->freeze_fs fails, s_frozen is set to SB_UNFROZEN and then
+freeze_super() returns an error number. In this case, FITHAW ioctl returns
+EINVAL because s_frozen is already SB_UNFROZEN. There is no way to wake up
+s_wait_unfrozen, so __generic_file_aio_write() sleeps infinitely.
+
+Signed-off-by: Kazuya Mio <k-mio@sx.jp.nec.com>
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/super.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/fs/super.c
++++ b/fs/super.c
+@@ -1009,6 +1009,8 @@ int freeze_super(struct super_block *sb)
+ printk(KERN_ERR
+ "VFS:Filesystem freeze failed\n");
+ sb->s_frozen = SB_UNFROZEN;
++ smp_wmb();
++ wake_up(&sb->s_wait_unfrozen);
+ deactivate_locked_super(sb);
+ return ret;
+ }