kernel: bump 4.14 to 4.14.126
authorKoen Vandeputte <koen.vandeputte@ncentric.com>
Mon, 17 Jun 2019 11:24:31 +0000 (13:24 +0200)
committerKoen Vandeputte <koen.vandeputte@ncentric.com>
Tue, 18 Jun 2019 09:38:58 +0000 (11:38 +0200)
Refreshed all patches.

Altered patches:
- 220-optimize_inlining.patch
- 816-pcie-support-layerscape.patch

This patch also restores the initial implementation
of the ath79 perfcount IRQ issue. (78ee6b1a40b5)
It was wrongfully backported upstream initially and got reverted now.

Compile-tested on: ar71xx, cns3xxx, imx6, x86_64
Runtime-tested on: ar71xx, cns3xxx, imx6

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
Signed-off-by: Petr Štetiar <ynezz@true.cz>
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
include/kernel-version.mk
target/linux/brcm2708/patches-4.14/950-0034-mm-Remove-the-PFN-busy-warning.patch
target/linux/generic/pending-4.14/103-MIPS-perf-ath79-Fix-perfcount-IRQ-assignment.patch [new file with mode: 0644]
target/linux/generic/pending-4.14/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
target/linux/generic/pending-4.14/220-optimize_inlining.patch
target/linux/layerscape/patches-4.14/816-pcie-support-layerscape.patch

index ccd23fd014445d2099afea4edc7127604a8c78f8..fd0918183953e18e11e46211d8dc5dd5303edb54 100644 (file)
@@ -7,11 +7,11 @@ ifdef CONFIG_TESTING_KERNEL
 endif
 
 LINUX_VERSION-4.9 = .181
 endif
 
 LINUX_VERSION-4.9 = .181
-LINUX_VERSION-4.14 = .125
+LINUX_VERSION-4.14 = .126
 LINUX_VERSION-4.19 = .50
 
 LINUX_KERNEL_HASH-4.9.181 = 8fcd223e11cba322801bc38cdb8b581d64c0115f585dcb6604de8561b574fced
 LINUX_VERSION-4.19 = .50
 
 LINUX_KERNEL_HASH-4.9.181 = 8fcd223e11cba322801bc38cdb8b581d64c0115f585dcb6604de8561b574fced
-LINUX_KERNEL_HASH-4.14.125 = 3e3dbc20215a28385bf46e2d0b8d9019df38ef1ee677e5e8870c7c3cde2ab318
+LINUX_KERNEL_HASH-4.14.126 = 6a2e89504d8560b132ab743a0206ffce026bff2697b705819421c5f125633970
 LINUX_KERNEL_HASH-4.19.50 = a9987423918abd20ee68d6e9b14b7225eaca8a586bf75fb56c49f6e1e47ce01e
 
 remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
 LINUX_KERNEL_HASH-4.19.50 = a9987423918abd20ee68d6e9b14b7225eaca8a586bf75fb56c49f6e1e47ce01e
 
 remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
index 98b6f01747e4ffed4b9e18def6282eb14173655a..e564924a7d0eb33984947ee7b770ea0fea542e68 100644 (file)
@@ -14,7 +14,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
 
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
 
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
-@@ -7618,8 +7618,6 @@ int alloc_contig_range(unsigned long sta
+@@ -7620,8 +7620,6 @@ int alloc_contig_range(unsigned long sta
  
        /* Make sure the range is really isolated. */
        if (test_pages_isolated(outer_start, end, false)) {
  
        /* Make sure the range is really isolated. */
        if (test_pages_isolated(outer_start, end, false)) {
diff --git a/target/linux/generic/pending-4.14/103-MIPS-perf-ath79-Fix-perfcount-IRQ-assignment.patch b/target/linux/generic/pending-4.14/103-MIPS-perf-ath79-Fix-perfcount-IRQ-assignment.patch
new file mode 100644 (file)
index 0000000..1990e87
--- /dev/null
@@ -0,0 +1,110 @@
+From 852a88f35f4b7e5ebb717fed3c3a3330d5ad4336 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20=C5=A0tetiar?= <ynezz@true.cz>
+Date: Wed, 10 Apr 2019 16:43:27 +0200
+Subject: [PATCH v2] MIPS: perf: ath79: Fix perfcount IRQ assignment
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Currently it's not possible to use perf on ath79 due to genirq flags
+mismatch happening on static virtual IRQ 13 which is used for
+performance counters hardware IRQ 5.
+
+On TP-Link Archer C7v5:
+
+           CPU0
+  2:          0      MIPS   2  ath9k
+  4:        318      MIPS   4  19000000.eth
+  7:      55034      MIPS   7  timer
+  8:       1236      MISC   3  ttyS0
+ 12:          0      INTC   1  ehci_hcd:usb1
+ 13:          0  gpio-ath79   2  keys
+ 14:          0  gpio-ath79   5  keys
+ 15:         31  AR724X PCI    1  ath10k_pci
+
+ $ perf top
+ genirq: Flags mismatch irq 13. 00014c83 (mips_perf_pmu) vs. 00002003 (keys)
+
+On TP-Link Archer C7v4:
+
+         CPU0
+  4:          0      MIPS   4  19000000.eth
+  5:       7135      MIPS   5  1a000000.eth
+  7:      98379      MIPS   7  timer
+  8:         30      MISC   3  ttyS0
+ 12:      90028      INTC   0  ath9k
+ 13:       5520      INTC   1  ehci_hcd:usb1
+ 14:       4623      INTC   2  ehci_hcd:usb2
+ 15:      32844  AR724X PCI    1  ath10k_pci
+ 16:          0  gpio-ath79  16  keys
+ 23:          0  gpio-ath79  23  keys
+
+ $ perf top
+ genirq: Flags mismatch irq 13. 00014c80 (mips_perf_pmu) vs. 00000080 (ehci_hcd:usb1)
+
+This problem is happening, because currently statically assigned virtual
+IRQ 13 for performance counters is not claimed during the initialization
+of MIPS PMU during the bootup, so the IRQ subsystem doesn't know, that
+this interrupt isn't available for further use.
+
+So this patch fixes the issue by simply booking hardware IRQ 5 for MIPS PMU.
+
+Tested-by: Kevin 'ldir' Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
+Signed-off-by: Petr Štetiar <ynezz@true.cz>
+---
+
+Changes since v1:
+
+ I've incorporated two comments which I've received on IRC from blogic and
+ I've also reworded the commit message to match the changes in v2 of this
+ patch.
+
+  * use actual hardware perfcount IRQ 5 instead of the virtual IRQ 13
+  * dropped the CONFIG_PERF_EVENTS ifdef around irq_create_mapping
+
+ arch/mips/ath79/setup.c          |  6 ------
+ drivers/irqchip/irq-ath79-misc.c | 11 +++++++++++
+ 2 files changed, 11 insertions(+), 6 deletions(-)
+
+--- a/arch/mips/ath79/setup.c
++++ b/arch/mips/ath79/setup.c
+@@ -183,12 +183,6 @@ const char *get_system_type(void)
+       return ath79_sys_type;
+ }
+-int get_c0_perfcount_int(void)
+-{
+-      return ATH79_MISC_IRQ(5);
+-}
+-EXPORT_SYMBOL_GPL(get_c0_perfcount_int);
+-
+ unsigned int get_c0_compare_int(void)
+ {
+       return CP0_LEGACY_COMPARE_IRQ;
+--- a/drivers/irqchip/irq-ath79-misc.c
++++ b/drivers/irqchip/irq-ath79-misc.c
+@@ -22,6 +22,15 @@
+ #define AR71XX_RESET_REG_MISC_INT_ENABLE      4
+ #define ATH79_MISC_IRQ_COUNT                  32
++#define ATH79_MISC_PERF_IRQ                   5
++
++static int ath79_perfcount_irq;
++
++int get_c0_perfcount_int(void)
++{
++      return ath79_perfcount_irq;
++}
++EXPORT_SYMBOL_GPL(get_c0_perfcount_int);
+ static void ath79_misc_irq_handler(struct irq_desc *desc)
+ {
+@@ -113,6 +122,8 @@ static void __init ath79_misc_intc_domai
+ {
+       void __iomem *base = domain->host_data;
++      ath79_perfcount_irq = irq_create_mapping(domain, ATH79_MISC_PERF_IRQ);
++
+       /* Disable and clear all interrupts */
+       __raw_writel(0, base + AR71XX_RESET_REG_MISC_INT_ENABLE);
+       __raw_writel(0, base + AR71XX_RESET_REG_MISC_INT_STATUS);
index 61ececbc896e900cb13d0e34d41e1e10fa7152f1..3308b1d71f98ca7044caea9c7b1a8feb0bbac013 100644 (file)
@@ -71,7 +71,7 @@ Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de>
 
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
 
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
-@@ -6143,7 +6143,7 @@ static void __ref alloc_node_mem_map(str
+@@ -6145,7 +6145,7 @@ static void __ref alloc_node_mem_map(str
                mem_map = NODE_DATA(0)->node_mem_map;
  #if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM)
                if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
                mem_map = NODE_DATA(0)->node_mem_map;
  #if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM)
                if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
index cdf8bac32325a7629d77940010ccb2086de69abd..12b875848e66ad56a870bd3f47f3550d2cd160be 100644 (file)
@@ -1,13 +1,3 @@
---- a/arch/arm/include/asm/hardirq.h
-+++ b/arch/arm/include/asm/hardirq.h
-@@ -6,6 +6,7 @@
- #include <linux/threads.h>
- #include <asm/irq.h>
-+/* number of IPIS _not_ including IPI_CPU_BACKTRACE */
- #define NR_IPI        7
- typedef struct {
 --- a/arch/arm/kernel/atags.h
 +++ b/arch/arm/kernel/atags.h
 @@ -5,7 +5,7 @@ void convert_to_tag_list(struct tag *tag
 --- a/arch/arm/kernel/atags.h
 +++ b/arch/arm/kernel/atags.h
 @@ -5,7 +5,7 @@ void convert_to_tag_list(struct tag *tag
@@ -19,28 +9,6 @@
  setup_machine_tags(phys_addr_t __atags_pointer, unsigned int machine_nr)
  {
        early_print("no ATAGS support: can't continue\n");
  setup_machine_tags(phys_addr_t __atags_pointer, unsigned int machine_nr)
  {
        early_print("no ATAGS support: can't continue\n");
---- a/arch/arm/kernel/smp.c
-+++ b/arch/arm/kernel/smp.c
-@@ -76,6 +76,10 @@ enum ipi_msg_type {
-       IPI_CPU_STOP,
-       IPI_IRQ_WORK,
-       IPI_COMPLETION,
-+      /*
-+       * CPU_BACKTRACE is special and not included in NR_IPI
-+       * or tracable with trace_ipi_*
-+       */
-       IPI_CPU_BACKTRACE,
-       /*
-        * SGI8-15 can be reserved by secure firmware, and thus may
-@@ -801,7 +805,7 @@ core_initcall(register_cpufreq_notifier)
- static void raise_nmi(cpumask_t *mask)
- {
--      smp_cross_call(mask, IPI_CPU_BACKTRACE);
-+      __smp_cross_call(mask, IPI_CPU_BACKTRACE);
- }
- void arch_trigger_cpumask_backtrace(const cpumask_t *mask, bool exclude_self)
 --- a/arch/arm64/include/asm/cpufeature.h
 +++ b/arch/arm64/include/asm/cpufeature.h
 @@ -125,7 +125,7 @@ static inline bool cpu_have_feature(unsi
 --- a/arch/arm64/include/asm/cpufeature.h
 +++ b/arch/arm64/include/asm/cpufeature.h
 @@ -125,7 +125,7 @@ static inline bool cpu_have_feature(unsi
index 1085368f18261c6ffcd98ded8d95838f2dfa6a66..45141a32dc7996c2b7ad450cf20217a914dc1275 100644 (file)
@@ -620,7 +620,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
        int id;
        char name[20];
        enum pci_barno bar;
        int id;
        char name[20];
        enum pci_barno bar;
-@@ -476,11 +656,14 @@ static int pci_endpoint_test_probe(struc
+@@ -476,12 +656,15 @@ static int pci_endpoint_test_probe(struc
        test->alignment = 0;
        test->pdev = pdev;
  
        test->alignment = 0;
        test->pdev = pdev;
  
@@ -630,13 +630,14 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
        data = (struct pci_endpoint_test_data *)ent->driver_data;
        if (data) {
                test_reg_bar = data->test_reg_bar;
        data = (struct pci_endpoint_test_data *)ent->driver_data;
        if (data) {
                test_reg_bar = data->test_reg_bar;
+               test->test_reg_bar = test_reg_bar;
                test->alignment = data->alignment;
 -              no_msi = data->no_msi;
 +              irq_type = data->irq_type;
        }
  
        init_completion(&test->irq_raised);
                test->alignment = data->alignment;
 -              no_msi = data->no_msi;
 +              irq_type = data->irq_type;
        }
  
        init_completion(&test->irq_raised);
-@@ -500,35 +683,21 @@ static int pci_endpoint_test_probe(struc
+@@ -501,35 +684,21 @@ static int pci_endpoint_test_probe(struc
  
        pci_set_master(pdev);
  
  
        pci_set_master(pdev);
  
@@ -683,7 +684,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
        }
  
        test->base = test->bar[test_reg_bar];
        }
  
        test->base = test->bar[test_reg_bar];
-@@ -544,24 +713,31 @@ static int pci_endpoint_test_probe(struc
+@@ -545,24 +714,31 @@ static int pci_endpoint_test_probe(struc
        id = ida_simple_get(&pci_endpoint_test_ida, 0, 0, GFP_KERNEL);
        if (id < 0) {
                err = id;
        id = ida_simple_get(&pci_endpoint_test_ida, 0, 0, GFP_KERNEL);
        if (id < 0) {
                err = id;
@@ -719,7 +720,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
  err_ida_remove:
        ida_simple_remove(&pci_endpoint_test_ida, id);
  
  err_ida_remove:
        ida_simple_remove(&pci_endpoint_test_ida, id);
  
-@@ -570,9 +746,10 @@ err_iounmap:
+@@ -571,9 +747,10 @@ err_iounmap:
                if (test->bar[bar])
                        pci_iounmap(pdev, test->bar[bar]);
        }
                if (test->bar[bar])
                        pci_iounmap(pdev, test->bar[bar]);
        }
@@ -732,7 +733,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
        pci_release_regions(pdev);
  
  err_disable_pdev:
        pci_release_regions(pdev);
  
  err_disable_pdev:
-@@ -594,12 +771,16 @@ static void pci_endpoint_test_remove(str
+@@ -595,12 +772,16 @@ static void pci_endpoint_test_remove(str
                return;
  
        misc_deregister(&test->miscdev);
                return;
  
        misc_deregister(&test->miscdev);
@@ -750,7 +751,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
        pci_release_regions(pdev);
        pci_disable_device(pdev);
  }
        pci_release_regions(pdev);
        pci_disable_device(pdev);
  }
-@@ -607,6 +788,7 @@ static void pci_endpoint_test_remove(str
+@@ -608,6 +789,7 @@ static void pci_endpoint_test_remove(str
  static const struct pci_device_id pci_endpoint_test_tbl[] = {
        { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA74x) },
        { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA72x) },
  static const struct pci_device_id pci_endpoint_test_tbl[] = {
        { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA74x) },
        { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA72x) },
@@ -3227,7 +3228,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
        pcie->breg_base = devm_ioremap_resource(dev, res);
 --- a/drivers/pci/host/pcie-xilinx.c
 +++ b/drivers/pci/host/pcie-xilinx.c
        pcie->breg_base = devm_ioremap_resource(dev, res);
 --- a/drivers/pci/host/pcie-xilinx.c
 +++ b/drivers/pci/host/pcie-xilinx.c
-@@ -576,15 +576,8 @@ static int xilinx_pcie_parse_dt(struct x
+@@ -584,15 +584,8 @@ static int xilinx_pcie_parse_dt(struct x
        struct device *dev = port->dev;
        struct device_node *node = dev->of_node;
        struct resource regs;
        struct device *dev = port->dev;
        struct device_node *node = dev->of_node;
        struct resource regs;