X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=kernel-small_fixes.patch;h=319191ce2821f2eacb3c4fdd4b50d92f33d2f795;hb=627cd95b53d3d64473c7c0c903a2543b3d896013;hp=3ccf00006092ea8197583e787111cff06cba7064;hpb=258198a36cb2777500a9ecb88e7d38117b3541cf;p=packages%2Fkernel.git diff --git a/kernel-small_fixes.patch b/kernel-small_fixes.patch index 3ccf0000..319191ce 100644 --- a/kernel-small_fixes.patch +++ b/kernel-small_fixes.patch @@ -26,240 +26,38 @@ exit fi done +From 5d12f71723762a39435d054d02bbf5fb87c5cd14 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= +Date: Mon, 6 Feb 2017 14:45:15 +0100 +Subject: [PATCH] mac80211: Print text for disassociation reason +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit -diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c -index 7a0c800..ec5ebbb 100644 ---- a/drivers/net/ethernet/realtek/r8169.c -+++ b/drivers/net/ethernet/realtek/r8169.c -@@ -6927,6 +6927,14 @@ rtl_init_one(struct pci_dev *pdev, const - for (i = 0; i < ETH_ALEN; i++) - dev->dev_addr[i] = RTL_R8(MAC0 + i); - -+ if (!is_valid_ether_addr(dev->dev_addr)) { -+ /* Report it and use a random ethernet address instead */ -+ netdev_err(dev, "Invalid MAC address: %pM\n", dev->dev_addr); -+ random_ether_addr(dev->dev_addr); -+ netdev_info(dev, "Using random MAC address: %pM\n", -+ dev->dev_addr); -+ } -+ - SET_ETHTOOL_OPS(dev, &rtl8169_ethtool_ops); - dev->watchdog_timeo = RTL8169_TX_TIMEOUT; - -commit 03bbcb2e7e292838bb0244f5a7816d194c911d62 -Author: Neil Horman -Date: Tue Apr 16 16:38:32 2013 -0400 +When disassociation happens only numeric reason is printed +in ieee80211_rx_mgmt_disassoc(). Add text variant, too. - iommu/vt-d: add quirk for broken interrupt remapping on 55XX chipsets - - A few years back intel published a spec update: - http://www.intel.com/content/dam/doc/specification-update/5520-and-5500-chipset-ioh-specification-update.pdf - - For the 5520 and 5500 chipsets which contained an errata (specificially errata - 53), which noted that these chipsets can't properly do interrupt remapping, and - as a result the recommend that interrupt remapping be disabled in bios. While - many vendors have a bios update to do exactly that, not all do, and of course - not all users update their bios to a level that corrects the problem. As a - result, occasionally interrupts can arrive at a cpu even after affinity for that - interrupt has be moved, leading to lost or spurrious interrupts (usually - characterized by the message: - kernel: do_IRQ: 7.71 No irq handler for vector (irq -1) - - There have been several incidents recently of people seeing this error, and - investigation has shown that they have system for which their BIOS level is such - that this feature was not properly turned off. As such, it would be good to - give them a reminder that their systems are vulnurable to this problem. For - details of those that reported the problem, please see: - https://bugzilla.redhat.com/show_bug.cgi?id=887006 - - [ Joerg: Removed CONFIG_IRQ_REMAP ifdef from early-quirks.c ] - - Signed-off-by: Neil Horman - CC: Prarit Bhargava - CC: Don Zickus - CC: Don Dutile - CC: Bjorn Helgaas - CC: Asit Mallick - CC: David Woodhouse - CC: linux-pci@vger.kernel.org - CC: Joerg Roedel - CC: Konrad Rzeszutek Wilk - CC: Arkadiusz Miśkiewicz - Signed-off-by: Joerg Roedel +Signed-off-by: Arkadiusz Miśkiewicz +--- + net/mac80211/mlme.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) -diff --git a/arch/x86/include/asm/irq_remapping.h b/arch/x86/include/asm/irq_remapping.h -index 95fd352..aca6aa2 100644 ---- a/arch/x86/include/asm/irq_remapping.h -+++ b/arch/x86/include/asm/irq_remapping.h -@@ -28,6 +28,7 @@ - - extern void setup_irq_remapping_ops(void); - extern int irq_remapping_supported(void); -+extern void set_irq_remapping_broken(void); - extern int irq_remapping_prepare(void); - extern int irq_remapping_enable(void); - extern void irq_remapping_disable(void); -@@ -54,6 +55,7 @@ void irq_remap_modify_chip_defaults(struct irq_chip *chip); - - static inline void setup_irq_remapping_ops(void) { } - static inline int irq_remapping_supported(void) { return 0; } -+static inline void set_irq_remapping_broken(void) { } - static inline int irq_remapping_prepare(void) { return -ENODEV; } - static inline int irq_remapping_enable(void) { return -ENODEV; } - static inline void irq_remapping_disable(void) { } -diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c -index 3755ef4..94ab6b9 100644 ---- a/arch/x86/kernel/early-quirks.c -+++ b/arch/x86/kernel/early-quirks.c -@@ -18,6 +18,7 @@ - #include - #include - #include -+#include - - static void __init fix_hypertransport_config(int num, int slot, int func) - { -@@ -192,6 +193,21 @@ static void __init ati_bugs_contd(int num, int slot, int func) - } - #endif - -+static void __init intel_remapping_check(int num, int slot, int func) -+{ -+ u8 revision; -+ -+ revision = read_pci_config_byte(num, slot, func, PCI_REVISION_ID); -+ -+ /* -+ * Revision 0x13 of this chipset supports irq remapping -+ * but has an erratum that breaks its behavior, flag it as such -+ */ -+ if (revision == 0x13) -+ set_irq_remapping_broken(); -+ -+} -+ - #define QFLAG_APPLY_ONCE 0x1 - #define QFLAG_APPLIED 0x2 - #define QFLAG_DONE (QFLAG_APPLY_ONCE|QFLAG_APPLIED) -@@ -221,6 +237,10 @@ static struct chipset early_qrk[] __initdata = { - PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs }, - { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS, - PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs_contd }, -+ { PCI_VENDOR_ID_INTEL, 0x3403, PCI_CLASS_BRIDGE_HOST, -+ PCI_BASE_CLASS_BRIDGE, 0, intel_remapping_check }, -+ { PCI_VENDOR_ID_INTEL, 0x3406, PCI_CLASS_BRIDGE_HOST, -+ PCI_BASE_CLASS_BRIDGE, 0, intel_remapping_check }, - {} - }; - -diff --git a/drivers/iommu/intel_irq_remapping.c b/drivers/iommu/intel_irq_remapping.c -index f3b8f23..5b19b2d 100644 ---- a/drivers/iommu/intel_irq_remapping.c -+++ b/drivers/iommu/intel_irq_remapping.c -@@ -524,6 +524,16 @@ static int __init intel_irq_remapping_supported(void) - - if (disable_irq_remap) - return 0; -+ if (irq_remap_broken) { -+ WARN_TAINT(1, TAINT_FIRMWARE_WORKAROUND, -+ "This system BIOS has enabled interrupt remapping\n" -+ "on a chipset that contains an erratum making that\n" -+ "feature unstable. To maintain system stability\n" -+ "interrupt remapping is being disabled. Please\n" -+ "contact your BIOS vendor for an update\n"); -+ disable_irq_remap = 1; -+ return 0; -+ } - - if (!dmar_ir_support()) - return 0; -diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c -index d56f8c1..3c11043 100644 ---- a/drivers/iommu/irq_remapping.c -+++ b/drivers/iommu/irq_remapping.c -@@ -19,6 +19,7 @@ - int irq_remapping_enabled; +diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c +index 098ce9b179ee..fcf8d0aa66ec 100644 +--- a/net/mac80211/mlme.c ++++ b/net/mac80211/mlme.c +@@ -2801,8 +2801,9 @@ static void ieee80211_rx_mgmt_disassoc(struct ieee80211_sub_if_data *sdata, - int disable_irq_remap; -+int irq_remap_broken; - int disable_sourceid_checking; - int no_x2apic_optout; + reason_code = le16_to_cpu(mgmt->u.disassoc.reason_code); -@@ -211,6 +212,11 @@ void __init setup_irq_remapping_ops(void) - #endif - } +- sdata_info(sdata, "disassociated from %pM (Reason: %u)\n", +- mgmt->sa, reason_code); ++ sdata_info(sdata, "disassociated from %pM (Reason: %u=%s)\n", ++ mgmt->sa, reason_code, ++ ieee80211_get_reason_code_string(reason_code)); -+void set_irq_remapping_broken(void) -+{ -+ irq_remap_broken = 1; -+} -+ - int irq_remapping_supported(void) - { - if (disable_irq_remap) -diff --git a/drivers/iommu/irq_remapping.h b/drivers/iommu/irq_remapping.h -index ecb6376..90c4dae 100644 ---- a/drivers/iommu/irq_remapping.h -+++ b/drivers/iommu/irq_remapping.h -@@ -32,6 +32,7 @@ struct pci_dev; - struct msi_msg; + ieee80211_set_disassoc(sdata, 0, 0, false, NULL); - extern int disable_irq_remap; -+extern int irq_remap_broken; - extern int disable_sourceid_checking; - extern int no_x2apic_optout; - extern int irq_remapping_enabled; -@@ -89,6 +90,7 @@ extern struct irq_remap_ops amd_iommu_irq_ops; - - #define irq_remapping_enabled 0 - #define disable_irq_remap 1 -+#define irq_remap_broken 0 - - #endif /* CONFIG_IRQ_REMAP */ - -From patchwork Mon Jun 3 08:16:21 2013 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: ipv6: assign rt6_info to inet6_ifaddr in init_loopback -Date: Sun, 02 Jun 2013 22:16:21 -0000 -From: Gao feng -X-Patchwork-Id: 248198 -Message-Id: <1370247381-3091-1-git-send-email-gaofeng@cn.fujitsu.com> -To: davem@davemloft.net, yoshfuji@linux-ipv6.org -Cc: netdev@vger.kernel.org, jasowang@redhat.com, - kumaran.4353@gmail.com, Maruthi.Thotad@ap.sony.com, - Gao feng - -Commit 25fb6ca4ed9cad72f14f61629b68dc03c0d9713f -"net IPv6 : Fix broken IPv6 routing table after loopback down-up" -forgot to assign rt6_info to the inet6_ifaddr. -When disable the net device, the rt6_info which allocated -in init_loopback will not be destroied in __ipv6_ifa_notify. +-- +2.11.0 -This will trigger the waring message below -[23527.916091] unregister_netdevice: waiting for tap0 to become free. Usage count = 1 - -Reported-by: Arkadiusz Miskiewicz -Signed-off-by: Gao feng - ---- -net/ipv6/addrconf.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c -index d1b2d80..1bbf744 100644 ---- a/net/ipv6/addrconf.c -+++ b/net/ipv6/addrconf.c -@@ -2658,8 +2658,10 @@ static void init_loopback(struct net_device *dev) - sp_rt = addrconf_dst_alloc(idev, &sp_ifa->addr, 0); - - /* Failure cases are ignored */ -- if (!IS_ERR(sp_rt)) -+ if (!IS_ERR(sp_rt)) { -+ sp_ifa->rt = sp_rt; - ip6_ins_rt(sp_rt); -+ } - } - read_unlock_bh(&idev->lock); - }