LINUX_VERSION-3.18 = .43
LINUX_VERSION-4.4 = .71
-LINUX_VERSION-4.9 = .31
+LINUX_VERSION-4.9 = .34
LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
LINUX_KERNEL_HASH-4.4.71 = 44cd5532d6df32197fd0f89e6f8c542fcfb76b52155a4d3a609ef4898522e6ab
-LINUX_KERNEL_HASH-4.9.31 = 28cad8b66216da2550155b7a77f37041bde40b821567d1b288e5e9fb6cca9856
+LINUX_KERNEL_HASH-4.9.34 = 13d159d1b1fa41ea19fcc2defe09d7532f312ee0b8279b8e12c961d8b02a4546
ifdef KERNEL_PATCHVER
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
#include "xhci.h"
#include "xhci-trace.h"
-@@ -227,6 +229,458 @@ static void xhci_pme_acpi_rtd3_enable(st
+@@ -230,6 +232,458 @@ static void xhci_pme_acpi_rtd3_enable(st
static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
#endif /* CONFIG_ACPI */
/* called during probe() after chip reset completes */
static int xhci_pci_setup(struct usb_hcd *hcd)
{
-@@ -266,6 +720,22 @@ static int xhci_pci_probe(struct pci_dev
+@@ -269,6 +723,22 @@ static int xhci_pci_probe(struct pci_dev
struct hc_driver *driver;
struct usb_hcd *hcd;
driver = (struct hc_driver *)id->driver_data;
/* Prevent runtime suspending between USB-2 and USB-3 initialization */
-@@ -323,6 +793,16 @@ static void xhci_pci_remove(struct pci_d
+@@ -326,6 +796,16 @@ static void xhci_pci_remove(struct pci_d
{
struct xhci_hcd *xhci;
--- a/drivers/net/phy/b53/b53_common.c
+++ b/drivers/net/phy/b53/b53_common.c
-@@ -25,6 +25,7 @@
- #include <linux/module.h>
- #include <linux/switch.h>
+@@ -27,6 +27,7 @@
+ #include <linux/of.h>
+ #include <linux/of_net.h>
#include <linux/platform_data/b53.h>
+#include <linux/of.h>
#include "b53_regs.h"
#include "b53_priv.h"
-@@ -1383,6 +1384,28 @@ static int b53_switch_init(struct b53_de
- sw_dev->cpu_port = 5;
+@@ -1522,6 +1523,28 @@ static int b53_switch_init(struct b53_de
+ return ret;
}
+ /* Set correct CPU port */
}
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
-@@ -5034,7 +5034,7 @@ static void port_event(struct usb_hub *h
+@@ -5040,7 +5040,7 @@ static void port_event(struct usb_hub *h
if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
u16 status = 0, unused;
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
-@@ -5627,7 +5627,7 @@ int __init cgroup_init_early(void)
+@@ -5632,7 +5632,7 @@ int __init cgroup_init_early(void)
return 0;
}
/**
* cgroup_init - cgroup initialization
-@@ -6164,6 +6164,28 @@ static int __init cgroup_no_v1(char *str
+@@ -6169,6 +6169,28 @@ static int __init cgroup_no_v1(char *str
}
__setup("cgroup_no_v1=", cgroup_no_v1);
--- a/drivers/gpu/drm/vc4/vc4_bo.c
+++ b/drivers/gpu/drm/vc4/vc4_bo.c
-@@ -314,6 +314,14 @@ void vc4_free_object(struct drm_gem_obje
+@@ -322,6 +322,14 @@ void vc4_free_object(struct drm_gem_obje
goto out;
}
/* For Max performance, the MRRS must be set to the largest supported
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
-@@ -778,7 +778,7 @@ enum pcie_bus_config_types {
+@@ -783,7 +783,7 @@ enum pcie_bus_config_types {
PCIE_BUS_DEFAULT, /* ensure MPS matches upstream bridge */
PCIE_BUS_SAFE, /* use largest MPS boot-time devices support */
PCIE_BUS_PERFORMANCE, /* use MPS and MRRS for best performance */
return 0;
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -1748,6 +1748,8 @@ struct net_device {
+@@ -1749,6 +1749,8 @@ struct net_device {
struct netdev_hw_addr_list mc;
struct netdev_hw_addr_list dev_addrs;
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1247,6 +1247,9 @@ int genphy_update_link(struct phy_device
+@@ -1267,6 +1267,9 @@ int genphy_update_link(struct phy_device
{
int status;
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -983,6 +983,9 @@ void phy_detach(struct phy_device *phyde
+@@ -1001,6 +1001,9 @@ void phy_detach(struct phy_device *phyde
struct mii_bus *bus;
int i;
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1465,7 +1465,7 @@ int genphy_config_init(struct phy_device
+@@ -1485,7 +1485,7 @@ int genphy_config_init(struct phy_device
return 0;
}
{
/* Do nothing for now */
return 0;
-@@ -1704,7 +1704,7 @@ static struct phy_driver genphy_driver[]
+@@ -1724,7 +1724,7 @@ static struct phy_driver genphy_driver[]
.phy_id = 0xffffffff,
.phy_id_mask = 0xffffffff,
.name = "Generic PHY",
.config_init = genphy_config_init,
.features = PHY_GBIT_FEATURES | SUPPORTED_MII |
SUPPORTED_AUI | SUPPORTED_FIBRE |
-@@ -1718,7 +1718,7 @@ static struct phy_driver genphy_driver[]
+@@ -1738,7 +1738,7 @@ static struct phy_driver genphy_driver[]
.phy_id = 0xffffffff,
.phy_id_mask = 0xffffffff,
.name = "Generic 10G PHY",
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -1397,6 +1397,7 @@ enum netdev_priv_flags {
+@@ -1398,6 +1398,7 @@ enum netdev_priv_flags {
IFF_RXFH_CONFIGURED = 1<<25,
IFF_PHONY_HEADROOM = 1<<26,
IFF_MACSEC = 1<<27,
};
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
-@@ -1426,6 +1427,7 @@ enum netdev_priv_flags {
+@@ -1427,6 +1428,7 @@ enum netdev_priv_flags {
#define IFF_TEAM IFF_TEAM
#define IFF_RXFH_CONFIGURED IFF_RXFH_CONFIGURED
#define IFF_MACSEC IFF_MACSEC
/**
* struct net_device - The DEVICE structure.
-@@ -1712,6 +1714,11 @@ struct net_device {
+@@ -1713,6 +1715,11 @@ struct net_device {
const struct ndisc_ops *ndisc_ops;
#endif
const struct header_ops *header_ops;
unsigned int flags;
-@@ -1779,6 +1786,10 @@ struct net_device {
+@@ -1780,6 +1787,10 @@ struct net_device {
struct mpls_dev __rcu *mpls_ptr;
#endif
depends on BROKEN || !FRV
--- a/kernel/Makefile
+++ b/kernel/Makefile
-@@ -112,6 +112,7 @@ obj-$(CONFIG_TORTURE_TEST) += torture.o
+@@ -113,6 +113,7 @@ obj-$(CONFIG_TORTURE_TEST) += torture.o
obj-$(CONFIG_MEMBARRIER) += membarrier.o
obj-$(CONFIG_HAS_IOMEM) += memremap.o
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
-@@ -190,6 +190,13 @@ config MTD_MYLOADER_PARTS
+@@ -194,6 +194,13 @@ config MTD_MYLOADER_PARTS
You will still need the parsing functions to be called by the driver
for your particular device. It won't happen automatically.
obj-$(CONFIG_MTD_BCM47XX_PARTS) += bcm47xxpart.o
obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o
+obj-$(CONFIG_MTD_QCOM_SMEM_PARTS) += qcom_smem_part.o
+ obj-y += parsers/
# 'Users' - code which presents functionality to userspace.
- obj-$(CONFIG_MTD_BLKDEVS) += mtd_blkdevs.o
/*
* This structure holds all XPS maps for device. Maps are indexed by CPU.
*/
-@@ -1250,6 +1260,9 @@ struct net_device_ops {
+@@ -1251,6 +1261,9 @@ struct net_device_ops {
const struct sk_buff *skb,
u16 rxq_index,
u32 flow_id);
(transaction layer end-to-end CRC checking).
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
-@@ -1245,6 +1245,8 @@ void pci_walk_bus(struct pci_bus *top, i
+@@ -1250,6 +1250,8 @@ void pci_walk_bus(struct pci_bus *top, i
void *userdata);
int pci_cfg_space_size(struct pci_dev *dev);
unsigned char pci_bus_max_busnr(struct pci_bus *bus);
return -ENOMEM;
i = 0;
-@@ -120,12 +155,22 @@ static int parse_ofpart_partitions(struc
+@@ -121,12 +156,22 @@ static int parse_ofpart_partitions(struc
if (of_get_property(pp, "lock", &len))
parts[i].mask_flags |= MTD_POWERUP_LOCK;
*pparts = parts;
return nr_parts;
-@@ -136,6 +181,7 @@ ofpart_fail:
+@@ -137,6 +182,7 @@ ofpart_fail:
ofpart_none:
of_node_put(pp);
kfree(parts);
struct device_node *pp;
int nr_parts, i, ret = 0;
bool dedicated = true;
-@@ -109,9 +112,13 @@ static int parse_ofpart_partitions(struc
- parts[i].offset = of_read_number(reg, a_cells);
+@@ -110,9 +113,13 @@ static int parse_ofpart_partitions(struc
parts[i].size = of_read_number(reg + a_cells, s_cells);
+ parts[i].of_node = pp;
- partname = of_get_property(pp, "label", &len);
- if (!partname)
parts[i].name = partname;
if (of_get_property(pp, "read-only", &len))
-@@ -212,6 +219,18 @@ static int __init ofpart_parser_init(voi
+@@ -213,6 +220,18 @@ static int __init ofpart_parser_init(voi
return 0;
}
/**
* phy_prepare_link - prepares the PHY layer to monitor link status
* @phydev: target phy_device struct
-@@ -899,6 +912,7 @@ int phy_attach_direct(struct net_device
+@@ -910,6 +923,7 @@ int phy_attach_direct(struct net_device
goto error;
}
+EXPORT_SYMBOL_GPL(genphy_c45_read_pma);
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1390,27 +1390,19 @@ EXPORT_SYMBOL(genphy_read_status);
+@@ -1410,27 +1410,19 @@ EXPORT_SYMBOL(genphy_read_status);
static int gen10g_read_status(struct phy_device *phydev)
{
obj-$(CONFIG_SWCONFIG) += swconfig.o
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1003,6 +1003,7 @@ void phy_detach(struct phy_device *phyde
+@@ -1021,6 +1021,7 @@ void phy_detach(struct phy_device *phyde
phydev->attached_dev->phydev = NULL;
phydev->attached_dev = NULL;
phy_suspend(phydev);
+ phydev->phylink = NULL;
- /* If the device had no specific driver before (i.e. - it
- * was using the generic driver), we unbind the device
+ module_put(phydev->mdio.dev.driver->owner);
+
--- /dev/null
+++ b/drivers/net/phy/phylink.c
@@ -0,0 +1,903 @@
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
-@@ -369,6 +369,8 @@ source "drivers/mtd/onenand/Kconfig"
+@@ -373,6 +373,8 @@ source "drivers/mtd/onenand/Kconfig"
source "drivers/mtd/lpddr/Kconfig"
source "drivers/mtd/ubi/Kconfig"
--- a/drivers/mtd/Makefile
+++ b/drivers/mtd/Makefile
-@@ -35,5 +35,6 @@ inftl-objs := inftlcore.o inftlmount.o
+@@ -36,5 +36,6 @@ inftl-objs := inftlcore.o inftlmount.o
obj-y += chips/ lpddr/ maps/ devices/ nand/ onenand/ tests/