mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	kernel: bump 4.9 to 4.9.155
Refreshed all patches. Remove upstreamed: - 100-arm-cns3xxx-fix-writing-to-wrong-PCI-registers-after.patch Altered patches: - 721-phy_packets.patch Compile-tested on: ar7 Runtime-tested on: none Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
This commit is contained in:
		
							parent
							
								
									4c20c6fa94
								
							
						
					
					
						commit
						34e80b5d3b
					
				@ -3,12 +3,12 @@
 | 
				
			|||||||
LINUX_RELEASE?=1
 | 
					LINUX_RELEASE?=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LINUX_VERSION-3.18 = .134
 | 
					LINUX_VERSION-3.18 = .134
 | 
				
			||||||
LINUX_VERSION-4.9 = .154
 | 
					LINUX_VERSION-4.9 = .155
 | 
				
			||||||
LINUX_VERSION-4.14 = .97
 | 
					LINUX_VERSION-4.14 = .97
 | 
				
			||||||
LINUX_VERSION-4.19 = .19
 | 
					LINUX_VERSION-4.19 = .19
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LINUX_KERNEL_HASH-3.18.134 = 36bdd04cab3b6c824a4b7e32ae02503f437e0916d5a4ff04c90aa22da2749c2f
 | 
					LINUX_KERNEL_HASH-3.18.134 = 36bdd04cab3b6c824a4b7e32ae02503f437e0916d5a4ff04c90aa22da2749c2f
 | 
				
			||||||
LINUX_KERNEL_HASH-4.9.154 = 5b314f1ac16f78e10acea0053f0c758e696b28f80272064e0a06bc69dc9d5696
 | 
					LINUX_KERNEL_HASH-4.9.155 = a52ac60be33c0fe312d99361f8e30211599956e958ba415d93194c6c9d073c9d
 | 
				
			||||||
LINUX_KERNEL_HASH-4.14.97 = 8dd2c831ddabfc6241ddca946e600376785fd6f225a24655bc36a0c6b4e945f4
 | 
					LINUX_KERNEL_HASH-4.14.97 = 8dd2c831ddabfc6241ddca946e600376785fd6f225a24655bc36a0c6b4e945f4
 | 
				
			||||||
LINUX_KERNEL_HASH-4.19.19 = 99afcaf670479d696eb039e8e0a074988a44d5bd159a9cda5bff214e824669bd
 | 
					LINUX_KERNEL_HASH-4.19.19 = 99afcaf670479d696eb039e8e0a074988a44d5bd159a9cda5bff214e824669bd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -657,7 +657,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
				
			|||||||
 		gfar_write(®s->rstat, gfargrp->rstat);
 | 
					 		gfar_write(®s->rstat, gfargrp->rstat);
 | 
				
			||||||
--- a/drivers/net/ethernet/freescale/ucc_geth.c
 | 
					--- a/drivers/net/ethernet/freescale/ucc_geth.c
 | 
				
			||||||
+++ b/drivers/net/ethernet/freescale/ucc_geth.c
 | 
					+++ b/drivers/net/ethernet/freescale/ucc_geth.c
 | 
				
			||||||
@@ -3301,7 +3301,7 @@ static int ucc_geth_poll(struct napi_str
 | 
					@@ -3303,7 +3303,7 @@ static int ucc_geth_poll(struct napi_str
 | 
				
			||||||
 		howmany += ucc_geth_rx(ugeth, i, budget - howmany);
 | 
					 		howmany += ucc_geth_rx(ugeth, i, budget - howmany);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	if (howmany < budget) {
 | 
					 	if (howmany < budget) {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,74 +0,0 @@
 | 
				
			|||||||
From 03556dab1cb02d85b50d7be3ee3a3bac001f5991 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Koen Vandeputte <koen.vandeputte@ncentric.com>
 | 
					 | 
				
			||||||
Date: Tue, 18 Dec 2018 12:14:06 +0100
 | 
					 | 
				
			||||||
Subject: [PATCH] arm: cns3xxx: fix writing to wrong PCI registers after
 | 
					 | 
				
			||||||
 alignment
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Originally, cns3xxx used it's own functions for mapping, reading and writing registers.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Commit 802b7c06adc7 ("ARM: cns3xxx: Convert PCI to use generic config accessors")
 | 
					 | 
				
			||||||
removed the internal PCI config write function in favor of the generic one:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cns3xxx_pci_write_config() --> pci_generic_config_write()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cns3xxx_pci_write_config() expected aligned addresses, being produced by cns3xxx_pci_map_bus()
 | 
					 | 
				
			||||||
while the generic one pci_generic_config_write() actually expects the real address
 | 
					 | 
				
			||||||
as both the function and hardware are capable of byte-aligned writes.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This currently leads to pci_generic_config_write() writing
 | 
					 | 
				
			||||||
to the wrong registers on some ocasions.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
First issue seen due to this:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- driver ath9k gets loaded
 | 
					 | 
				
			||||||
- The driver wants to write value 0xA8 to register PCI_LATENCY_TIMER, located at 0x0D
 | 
					 | 
				
			||||||
- cns3xxx_pci_map_bus() aligns the address to 0x0C
 | 
					 | 
				
			||||||
- pci_generic_config_write() effectively writes 0xA8 into register 0x0C (CACHE_LINE_SIZE)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This seems to cause some slight instability when certain PCI devices are used.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Another issue example caused by this this is the PCI bus numbering,
 | 
					 | 
				
			||||||
where the primary bus is higher than the secondary, which is impossible.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Before:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
00:00.0 PCI bridge: Cavium, Inc. Device 3400 (rev 01) (prog-if 00 [Normal decode])
 | 
					 | 
				
			||||||
    Flags: bus master, fast devsel, latency 0, IRQ 255
 | 
					 | 
				
			||||||
    Bus: primary=02, secondary=01, subordinate=ff, sec-latency=0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
After fix:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
00:00.0 PCI bridge: Cavium, Inc. Device 3400 (rev 01) (prog-if 00 [Normal decode])
 | 
					 | 
				
			||||||
    Flags: bus master, fast devsel, latency 0, IRQ 255
 | 
					 | 
				
			||||||
    Bus: primary=00, secondary=01, subordinate=02, sec-latency=0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
And very likely some more ..
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Fix all by omitting the alignment being done in the mapping function.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Fixes: 802b7c06adc7 ("ARM: cns3xxx: Convert PCI to use generic config accessors")
 | 
					 | 
				
			||||||
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
 | 
					 | 
				
			||||||
CC: Arnd Bergmann <arnd@arndb.de>
 | 
					 | 
				
			||||||
CC: Bjorn Helgaas <bhelgaas@google.com>
 | 
					 | 
				
			||||||
CC: Krzysztof Halasa <khalasa@piap.pl>
 | 
					 | 
				
			||||||
CC: Olof Johansson <olof@lixom.net>
 | 
					 | 
				
			||||||
CC: Robin Leblon <robin.leblon@ncentric.com>
 | 
					 | 
				
			||||||
CC: Rob Herring <robh@kernel.org>
 | 
					 | 
				
			||||||
CC: Russell King <linux@armlinux.org.uk>
 | 
					 | 
				
			||||||
CC: Tim Harvey <tharvey@gateworks.com>
 | 
					 | 
				
			||||||
CC: stable@vger.kernel.org # v4.0+
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 arch/arm/mach-cns3xxx/pcie.c | 2 +-
 | 
					 | 
				
			||||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- a/arch/arm/mach-cns3xxx/pcie.c
 | 
					 | 
				
			||||||
+++ b/arch/arm/mach-cns3xxx/pcie.c
 | 
					 | 
				
			||||||
@@ -83,7 +83,7 @@ static void __iomem *cns3xxx_pci_map_bus
 | 
					 | 
				
			||||||
 	} else /* remote PCI bus */
 | 
					 | 
				
			||||||
 		base = cnspci->cfg1_regs + ((busno & 0xf) << 20);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-	return base + (where & 0xffc) + (devfn << 12);
 | 
					 | 
				
			||||||
+	return base + where + (devfn << 12);
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
 | 
					 | 
				
			||||||
@ -15,23 +15,23 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/include/linux/netdevice.h
 | 
					--- a/include/linux/netdevice.h
 | 
				
			||||||
+++ b/include/linux/netdevice.h
 | 
					+++ b/include/linux/netdevice.h
 | 
				
			||||||
@@ -1398,6 +1398,7 @@ enum netdev_priv_flags {
 | 
					@@ -1400,6 +1400,7 @@ enum netdev_priv_flags {
 | 
				
			||||||
 	IFF_RXFH_CONFIGURED		= 1<<25,
 | 
					 | 
				
			||||||
 	IFF_PHONY_HEADROOM		= 1<<26,
 | 
					 	IFF_PHONY_HEADROOM		= 1<<26,
 | 
				
			||||||
 	IFF_MACSEC			= 1<<27,
 | 
					 	IFF_MACSEC			= 1<<27,
 | 
				
			||||||
+	IFF_NO_IP_ALIGN			= 1<<28,
 | 
					 	IFF_L3MDEV_RX_HANDLER		= 1<<28,
 | 
				
			||||||
 | 
					+	IFF_NO_IP_ALIGN			= 1<<29,
 | 
				
			||||||
 };
 | 
					 };
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 #define IFF_802_1Q_VLAN			IFF_802_1Q_VLAN
 | 
					 #define IFF_802_1Q_VLAN			IFF_802_1Q_VLAN
 | 
				
			||||||
@@ -1427,6 +1428,7 @@ enum netdev_priv_flags {
 | 
					@@ -1430,6 +1431,7 @@ enum netdev_priv_flags {
 | 
				
			||||||
 #define IFF_TEAM			IFF_TEAM
 | 
					 | 
				
			||||||
 #define IFF_RXFH_CONFIGURED		IFF_RXFH_CONFIGURED
 | 
					 #define IFF_RXFH_CONFIGURED		IFF_RXFH_CONFIGURED
 | 
				
			||||||
 #define IFF_MACSEC			IFF_MACSEC
 | 
					 #define IFF_MACSEC			IFF_MACSEC
 | 
				
			||||||
 | 
					 #define IFF_L3MDEV_RX_HANDLER		IFF_L3MDEV_RX_HANDLER
 | 
				
			||||||
+#define IFF_NO_IP_ALIGN			IFF_NO_IP_ALIGN
 | 
					+#define IFF_NO_IP_ALIGN			IFF_NO_IP_ALIGN
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 /**
 | 
					 /**
 | 
				
			||||||
  *	struct net_device - The DEVICE structure.
 | 
					  *	struct net_device - The DEVICE structure.
 | 
				
			||||||
@@ -1713,6 +1715,11 @@ struct net_device {
 | 
					@@ -1716,6 +1718,11 @@ struct net_device {
 | 
				
			||||||
 	const struct ndisc_ops *ndisc_ops;
 | 
					 	const struct ndisc_ops *ndisc_ops;
 | 
				
			||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@ -43,7 +43,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 	const struct header_ops *header_ops;
 | 
					 	const struct header_ops *header_ops;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	unsigned int		flags;
 | 
					 	unsigned int		flags;
 | 
				
			||||||
@@ -1780,6 +1787,10 @@ struct net_device {
 | 
					@@ -1783,6 +1790,10 @@ struct net_device {
 | 
				
			||||||
 	struct mpls_dev __rcu	*mpls_ptr;
 | 
					 	struct mpls_dev __rcu	*mpls_ptr;
 | 
				
			||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 | 
				
			|||||||
@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 #ifdef CONFIG_UEVENT_HELPER
 | 
					 #ifdef CONFIG_UEVENT_HELPER
 | 
				
			||||||
 /* path to the userspace helper executed on an event */
 | 
					 /* path to the userspace helper executed on an event */
 | 
				
			||||||
 extern char uevent_helper[];
 | 
					 extern char uevent_helper[];
 | 
				
			||||||
@@ -222,4 +224,7 @@ int add_uevent_var(struct kobj_uevent_en
 | 
					@@ -239,4 +241,7 @@ int add_uevent_var(struct kobj_uevent_en
 | 
				
			||||||
 int kobject_action_type(const char *buf, size_t count,
 | 
					 int kobject_action_type(const char *buf, size_t count,
 | 
				
			||||||
 			enum kobject_action *type);
 | 
					 			enum kobject_action *type);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 | 
				
			|||||||
@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/include/linux/netdevice.h
 | 
					--- a/include/linux/netdevice.h
 | 
				
			||||||
+++ b/include/linux/netdevice.h
 | 
					+++ b/include/linux/netdevice.h
 | 
				
			||||||
@@ -1749,6 +1749,8 @@ struct net_device {
 | 
					@@ -1752,6 +1752,8 @@ struct net_device {
 | 
				
			||||||
 	struct netdev_hw_addr_list	mc;
 | 
					 	struct netdev_hw_addr_list	mc;
 | 
				
			||||||
 	struct netdev_hw_addr_list	dev_addrs;
 | 
					 	struct netdev_hw_addr_list	dev_addrs;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user