diff options
18 files changed, 38 insertions, 98 deletions
diff --git a/include/kernel-version.mk b/include/kernel-version.mk index d264df4945..b289e03c7c 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -5,12 +5,12 @@ LINUX_RELEASE?=1 LINUX_VERSION-3.18 = .71 LINUX_VERSION-4.4 = .121 LINUX_VERSION-4.9 = .87 -LINUX_VERSION-4.14 = .25 +LINUX_VERSION-4.14 = .27 LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240 LINUX_KERNEL_HASH-4.4.121 = 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729 LINUX_KERNEL_HASH-4.9.87 = 7ac9f6af69dc5a7e38bf35cc3fa889e3a4b22504a85f57fdc87734a8abe4c917 -LINUX_KERNEL_HASH-4.14.25 = 6dcfbf79c068e51c1b06edb1ce58ddc9ca351f862bf2a144e96106ec3f21e587 +LINUX_KERNEL_HASH-4.14.27 = 0911a449c71a06c7232ece07dfcc041bd07efaf7e67799b9e2d0cf4bd9a028ea remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) diff --git a/target/linux/brcm63xx/patches-4.14/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch b/target/linux/brcm63xx/patches-4.14/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch index 42b522ca0a..2e663259d1 100644 --- a/target/linux/brcm63xx/patches-4.14/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch +++ b/target/linux/brcm63xx/patches-4.14/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch @@ -52,9 +52,9 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> cur_offset = slave->offset + slave->mtd.size; } -@@ -1162,7 +1161,9 @@ int parse_mtd_partitions(struct mtd_info - types = types_of; - } +@@ -1134,7 +1133,9 @@ static int mtd_part_of_parse(struct mtd_ + const char *fixed = "fixed-partitions"; + int ret, err = 0; - np = of_get_child_by_name(mtd_get_of_node(master), "partitions"); + np = mtd_get_of_node(master); @@ -63,9 +63,9 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> of_property_for_each_string(np, "compatible", prop, compat) { parser = mtd_part_get_compatible_parser(compat); if (!parser) -@@ -1178,8 +1179,12 @@ int parse_mtd_partitions(struct mtd_info +@@ -1206,8 +1207,12 @@ int parse_mtd_partitions(struct mtd_info + types = types_of; } - of_node_put(np); - if (!types) + if (!types) { @@ -76,4 +76,4 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> + } for ( ; *types; types++) { - pr_debug("%s: parsing partitions %s\n", master->name, *types); + /* diff --git a/target/linux/generic/backport-4.14/011-kbuild-export-SUBARCH.patch b/target/linux/generic/backport-4.14/011-kbuild-export-SUBARCH.patch index 7080cd10a8..0ce7429591 100644 --- a/target/linux/generic/backport-4.14/011-kbuild-export-SUBARCH.patch +++ b/target/linux/generic/backport-4.14/011-kbuild-export-SUBARCH.patch @@ -10,10 +10,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> --- a/Makefile +++ b/Makefile -@@ -410,8 +410,8 @@ KERNELRELEASE = $(shell cat include/conf - KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION) +@@ -433,8 +433,8 @@ KBUILD_CFLAGS_MODULE := -DMODULE + KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds + GCC_PLUGINS_CFLAGS := - export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION -export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC -export CPP AR NM STRIP OBJCOPY OBJDUMP HOSTLDFLAGS HOST_LOADLIBES +export ARCH SRCARCH SUBARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD diff --git a/target/linux/generic/backport-4.14/304-netfilter-move-checksum-indirection-to-struct-nf_ipv.patch b/target/linux/generic/backport-4.14/304-netfilter-move-checksum-indirection-to-struct-nf_ipv.patch index 62f788bd6c..b122dd55d0 100644 --- a/target/linux/generic/backport-4.14/304-netfilter-move-checksum-indirection-to-struct-nf_ipv.patch +++ b/target/linux/generic/backport-4.14/304-netfilter-move-checksum-indirection-to-struct-nf_ipv.patch @@ -116,7 +116,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> .saveroute = nf_ip_saveroute, --- a/net/ipv6/netfilter.c +++ b/net/ipv6/netfilter.c -@@ -192,12 +192,12 @@ static __sum16 nf_ip6_checksum_partial(s +@@ -193,12 +193,12 @@ static __sum16 nf_ip6_checksum_partial(s static const struct nf_ipv6_ops ipv6ops = { .chk_addr = ipv6_chk_addr, .route_input = ip6_route_input, diff --git a/target/linux/generic/backport-4.14/305-netfilter-move-checksum_partial-indirection-to-struc.patch b/target/linux/generic/backport-4.14/305-netfilter-move-checksum_partial-indirection-to-struc.patch index 23eaf9140d..7c22312c67 100644 --- a/target/linux/generic/backport-4.14/305-netfilter-move-checksum_partial-indirection-to-struc.patch +++ b/target/linux/generic/backport-4.14/305-netfilter-move-checksum_partial-indirection-to-struc.patch @@ -151,7 +151,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> .reroute = nf_ip_reroute, --- a/net/ipv6/netfilter.c +++ b/net/ipv6/netfilter.c -@@ -190,15 +190,15 @@ static __sum16 nf_ip6_checksum_partial(s +@@ -191,15 +191,15 @@ static __sum16 nf_ip6_checksum_partial(s }; static const struct nf_ipv6_ops ipv6ops = { diff --git a/target/linux/generic/backport-4.14/306-netfilter-remove-saveroute-indirection-in-struct-nf_.patch b/target/linux/generic/backport-4.14/306-netfilter-remove-saveroute-indirection-in-struct-nf_.patch index 16fa90ee03..e52f81164e 100644 --- a/target/linux/generic/backport-4.14/306-netfilter-remove-saveroute-indirection-in-struct-nf_.patch +++ b/target/linux/generic/backport-4.14/306-netfilter-remove-saveroute-indirection-in-struct-nf_.patch @@ -125,7 +125,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> }; --- a/net/ipv6/netfilter.c +++ b/net/ipv6/netfilter.c -@@ -68,31 +68,6 @@ int ip6_route_me_harder(struct net *net, +@@ -69,31 +69,6 @@ int ip6_route_me_harder(struct net *net, } EXPORT_SYMBOL(ip6_route_me_harder); @@ -157,7 +157,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> static int nf_ip6_reroute(struct net *net, struct sk_buff *skb, const struct nf_queue_entry *entry) { -@@ -200,7 +175,6 @@ static const struct nf_ipv6_ops ipv6ops +@@ -201,7 +176,6 @@ static const struct nf_ipv6_ops ipv6ops static const struct nf_afinfo nf_ip6_afinfo = { .family = AF_INET6, .route = nf_ip6_route, diff --git a/target/linux/generic/backport-4.14/307-netfilter-move-route-indirection-to-struct-nf_ipv6_o.patch b/target/linux/generic/backport-4.14/307-netfilter-move-route-indirection-to-struct-nf_ipv6_o.patch index b07e63dc52..fe60a79036 100644 --- a/target/linux/generic/backport-4.14/307-netfilter-move-route-indirection-to-struct-nf_ipv6_o.patch +++ b/target/linux/generic/backport-4.14/307-netfilter-move-route-indirection-to-struct-nf_ipv6_o.patch @@ -114,7 +114,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> }; --- a/net/ipv6/netfilter.c +++ b/net/ipv6/netfilter.c -@@ -170,11 +170,11 @@ static const struct nf_ipv6_ops ipv6ops +@@ -171,11 +171,11 @@ static const struct nf_ipv6_ops ipv6ops .fragment = ip6_fragment, .checksum = nf_ip6_checksum, .checksum_partial = nf_ip6_checksum_partial, diff --git a/target/linux/generic/backport-4.14/308-netfilter-move-reroute-indirection-to-struct-nf_ipv6.patch b/target/linux/generic/backport-4.14/308-netfilter-move-reroute-indirection-to-struct-nf_ipv6.patch index f7fb81e440..2ffb39d9af 100644 --- a/target/linux/generic/backport-4.14/308-netfilter-move-reroute-indirection-to-struct-nf_ipv6.patch +++ b/target/linux/generic/backport-4.14/308-netfilter-move-reroute-indirection-to-struct-nf_ipv6.patch @@ -138,7 +138,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> --- a/net/ipv6/netfilter.c +++ b/net/ipv6/netfilter.c -@@ -68,7 +68,7 @@ int ip6_route_me_harder(struct net *net, +@@ -69,7 +69,7 @@ int ip6_route_me_harder(struct net *net, } EXPORT_SYMBOL(ip6_route_me_harder); @@ -147,7 +147,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> const struct nf_queue_entry *entry) { struct ip6_rt_info *rt_info = nf_queue_entry_reroute(entry); -@@ -78,7 +78,7 @@ static int nf_ip6_reroute(struct net *ne +@@ -79,7 +79,7 @@ static int nf_ip6_reroute(struct net *ne if (!ipv6_addr_equal(&iph->daddr, &rt_info->daddr) || !ipv6_addr_equal(&iph->saddr, &rt_info->saddr) || skb->mark != rt_info->mark) @@ -156,7 +156,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> } return 0; } -@@ -171,11 +171,11 @@ static const struct nf_ipv6_ops ipv6ops +@@ -172,11 +172,11 @@ static const struct nf_ipv6_ops ipv6ops .checksum = nf_ip6_checksum, .checksum_partial = nf_ip6_checksum_partial, .route = nf_ip6_route, diff --git a/target/linux/generic/backport-4.14/309-netfilter-remove-route_key_size-field-in-struct-nf_a.patch b/target/linux/generic/backport-4.14/309-netfilter-remove-route_key_size-field-in-struct-nf_a.patch index 7c24f30241..1b571252b5 100644 --- a/target/linux/generic/backport-4.14/309-netfilter-remove-route_key_size-field-in-struct-nf_a.patch +++ b/target/linux/generic/backport-4.14/309-netfilter-remove-route_key_size-field-in-struct-nf_a.patch @@ -29,7 +29,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> static int __init ipv4_netfilter_init(void) --- a/net/ipv6/netfilter.c +++ b/net/ipv6/netfilter.c -@@ -176,7 +176,6 @@ static const struct nf_ipv6_ops ipv6ops +@@ -177,7 +177,6 @@ static const struct nf_ipv6_ops ipv6ops static const struct nf_afinfo nf_ip6_afinfo = { .family = AF_INET6, diff --git a/target/linux/generic/backport-4.14/310-netfilter-remove-struct-nf_afinfo-and-its-helper-fun.patch b/target/linux/generic/backport-4.14/310-netfilter-remove-struct-nf_afinfo-and-its-helper-fun.patch index 474eedbff0..6d19743dfe 100644 --- a/target/linux/generic/backport-4.14/310-netfilter-remove-struct-nf_afinfo-and-its-helper-fun.patch +++ b/target/linux/generic/backport-4.14/310-netfilter-remove-struct-nf_afinfo-and-its-helper-fun.patch @@ -102,7 +102,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> -subsys_initcall(ipv4_netfilter_init); --- a/net/ipv6/netfilter.c +++ b/net/ipv6/netfilter.c -@@ -174,14 +174,10 @@ static const struct nf_ipv6_ops ipv6ops +@@ -175,14 +175,10 @@ static const struct nf_ipv6_ops ipv6ops .reroute = nf_ip6_reroute, }; @@ -118,7 +118,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> } /* This can be called from inet6_init() on errors, so it cannot -@@ -190,5 +186,4 @@ int __init ipv6_netfilter_init(void) +@@ -191,5 +187,4 @@ int __init ipv6_netfilter_init(void) void ipv6_netfilter_fini(void) { RCU_INIT_POINTER(nf_ipv6_ops, NULL); diff --git a/target/linux/generic/backport-4.14/313-netfilter-remove-defensive-check-on-malformed-packet.patch b/target/linux/generic/backport-4.14/313-netfilter-remove-defensive-check-on-malformed-packet.patch index 2affa768b4..30b0bc70dd 100644 --- a/target/linux/generic/backport-4.14/313-netfilter-remove-defensive-check-on-malformed-packet.patch +++ b/target/linux/generic/backport-4.14/313-netfilter-remove-defensive-check-on-malformed-packet.patch @@ -196,7 +196,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> --- a/net/ipv6/netfilter/nf_nat_l3proto_ipv6.c +++ b/net/ipv6/netfilter/nf_nat_l3proto_ipv6.c -@@ -368,10 +368,6 @@ nf_nat_ipv6_out(void *priv, struct sk_bu +@@ -372,10 +372,6 @@ nf_nat_ipv6_out(void *priv, struct sk_bu #endif unsigned int ret; @@ -207,7 +207,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> ret = nf_nat_ipv6_fn(priv, skb, state, do_chain); #ifdef CONFIG_XFRM if (ret != NF_DROP && ret != NF_STOLEN && -@@ -407,10 +403,6 @@ nf_nat_ipv6_local_fn(void *priv, struct +@@ -411,10 +407,6 @@ nf_nat_ipv6_local_fn(void *priv, struct unsigned int ret; int err; diff --git a/target/linux/generic/hack-4.14/202-reduce_module_size.patch b/target/linux/generic/hack-4.14/202-reduce_module_size.patch index d3e014f417..7d67e847c6 100644 --- a/target/linux/generic/hack-4.14/202-reduce_module_size.patch +++ b/target/linux/generic/hack-4.14/202-reduce_module_size.patch @@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> --- a/Makefile +++ b/Makefile -@@ -402,7 +402,7 @@ KBUILD_AFLAGS_KERNEL := +@@ -430,7 +430,7 @@ KBUILD_AFLAGS_KERNEL := KBUILD_CFLAGS_KERNEL := KBUILD_AFLAGS_MODULE := -DMODULE KBUILD_CFLAGS_MODULE := -DMODULE @@ -21,4 +21,4 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> +KBUILD_LDFLAGS_MODULE = -T $(srctree)/scripts/module-common.lds $(if $(CONFIG_PROFILING),,-s) GCC_PLUGINS_CFLAGS := - # Read KERNELRELEASE from include/config/kernel.release (if it exists) + export ARCH SRCARCH SUBARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD diff --git a/target/linux/generic/hack-4.14/207-disable-modorder.patch b/target/linux/generic/hack-4.14/207-disable-modorder.patch index a6b0f67602..8f817f32a7 100644 --- a/target/linux/generic/hack-4.14/207-disable-modorder.patch +++ b/target/linux/generic/hack-4.14/207-disable-modorder.patch @@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> --- a/Makefile +++ b/Makefile -@@ -1213,7 +1213,6 @@ all: modules +@@ -1224,7 +1224,6 @@ all: modules PHONY += modules modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin @@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> @$(kecho) ' Building modules, stage 2.'; $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost -@@ -1242,7 +1241,6 @@ _modinst_: +@@ -1253,7 +1252,6 @@ _modinst_: rm -f $(MODLIB)/build ; \ ln -s $(CURDIR) $(MODLIB)/build ; \ fi diff --git a/target/linux/generic/hack-4.14/220-gc_sections.patch b/target/linux/generic/hack-4.14/220-gc_sections.patch index 162ee45ff0..ef7cd6f897 100644 --- a/target/linux/generic/hack-4.14/220-gc_sections.patch +++ b/target/linux/generic/hack-4.14/220-gc_sections.patch @@ -21,9 +21,9 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> --- a/Makefile +++ b/Makefile -@@ -405,6 +405,11 @@ KBUILD_CFLAGS_MODULE := -DMODULE - KBUILD_LDFLAGS_MODULE = -T $(srctree)/scripts/module-common.lds $(if $(CONFIG_PROFILING),,-s) - GCC_PLUGINS_CFLAGS := +@@ -272,6 +272,11 @@ else + scripts/Kbuild.include: ; + include scripts/Kbuild.include +ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION +KBUILD_CFLAGS_KERNEL += $(call cc-option,-ffunction-sections,) @@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> # Read KERNELRELEASE from include/config/kernel.release (if it exists) KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null) KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION) -@@ -785,11 +790,6 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH +@@ -787,11 +792,6 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once) endif diff --git a/target/linux/generic/hack-4.14/221-module_exports.patch b/target/linux/generic/hack-4.14/221-module_exports.patch index ad02d0e533..2f59d6e93e 100644 --- a/target/linux/generic/hack-4.14/221-module_exports.patch +++ b/target/linux/generic/hack-4.14/221-module_exports.patch @@ -90,7 +90,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> __used \ --- a/scripts/Makefile.build +++ b/scripts/Makefile.build -@@ -426,7 +426,7 @@ targets += $(extra-y) $(MAKECMDGOALS) $( +@@ -434,7 +434,7 @@ targets += $(extra-y) $(MAKECMDGOALS) $( # Linker scripts preprocessor (.lds.S -> .lds) # --------------------------------------------------------------------------- quiet_cmd_cpp_lds_S = LDS $@ diff --git a/target/linux/generic/pending-4.14/201-extra_optimization.patch b/target/linux/generic/pending-4.14/201-extra_optimization.patch index e92b1a10a3..3c3353c7d1 100644 --- a/target/linux/generic/pending-4.14/201-extra_optimization.patch +++ b/target/linux/generic/pending-4.14/201-extra_optimization.patch @@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> --- a/Makefile +++ b/Makefile -@@ -639,12 +639,12 @@ KBUILD_CFLAGS += $(call cc-disable-warni +@@ -650,12 +650,12 @@ KBUILD_CFLAGS += $(call cc-disable-warni ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE KBUILD_CFLAGS += $(call cc-option,-Oz,-Os) diff --git a/target/linux/generic/pending-4.14/610-netfilter_match_bypass_default_checks.patch b/target/linux/generic/pending-4.14/610-netfilter_match_bypass_default_checks.patch index 0a3c0f9677..ec269b6cd8 100644 --- a/target/linux/generic/pending-4.14/610-netfilter_match_bypass_default_checks.patch +++ b/target/linux/generic/pending-4.14/610-netfilter_match_bypass_default_checks.patch @@ -59,7 +59,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> static bool ip_checkentry(const struct ipt_ip *ip) { -@@ -532,6 +558,8 @@ find_check_entry(struct ipt_entry *e, st +@@ -537,6 +563,8 @@ find_check_entry(struct ipt_entry *e, st struct xt_mtchk_param mtpar; struct xt_entry_match *ematch; @@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> if (!xt_percpu_counter_alloc(alloc_state, &e->counters)) return -ENOMEM; -@@ -812,6 +840,7 @@ copy_entries_to_user(unsigned int total_ +@@ -817,6 +845,7 @@ copy_entries_to_user(unsigned int total_ const struct xt_table_info *private = table->private; int ret = 0; const void *loc_cpu_entry; @@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> counters = alloc_counters(table); if (IS_ERR(counters)) -@@ -839,6 +868,14 @@ copy_entries_to_user(unsigned int total_ +@@ -844,6 +873,14 @@ copy_entries_to_user(unsigned int total_ goto free_counters; } @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> for (i = sizeof(struct ipt_entry); i < e->target_offset; i += m->u.match_size) { -@@ -1219,12 +1256,15 @@ compat_copy_entry_to_user(struct ipt_ent +@@ -1224,12 +1261,15 @@ compat_copy_entry_to_user(struct ipt_ent compat_uint_t origsize; const struct xt_entry_match *ematch; int ret = 0; diff --git a/target/linux/generic/pending-4.14/812-pci-dwc-fix-enumeration.patch b/target/linux/generic/pending-4.14/812-pci-dwc-fix-enumeration.patch deleted file mode 100644 index f829631831..0000000000 --- a/target/linux/generic/pending-4.14/812-pci-dwc-fix-enumeration.patch +++ /dev/null @@ -1,60 +0,0 @@ -From patchwork Tue Jan 9 14:42:21 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: PCI: dwc: fix enumeration end when reaching root subordinate -From: Koen Vandeputte <koen.vandeputte@ncentric.com> -X-Patchwork-Id: 10152443 -Message-Id: <1515508941-20055-1-git-send-email-koen.vandeputte@ncentric.com> -To: linux-pci@vger.kernel.org -Cc: bhelgaas@google.com, lorenzo.pieralisi@arm.com, - Joao.Pinto@synopsys.com, jingoohan1@gmail.com, niklas.cassel@axis.com, - Koen Vandeputte <koen.vandeputte@ncentric.com>, - Mika Westerberg <mika.westerberg@linux.intel.com> -Date: Tue, 9 Jan 2018 15:42:21 +0100 - -The subordinate value indicates the highest bus number which can be -reached downstream though a certain device. - -Commit a20c7f36bd3d ("PCI: Do not allocate more buses than available in -parent") -ensures that downstream devices cannot assign busnumbers higher than the -upstream device subordinate number, which was indeed illogical. - -By default, dw_pcie_setup_rc() inits the Root Complex subordinate to a -value of 0x01. - -Due to this combined with above commit, enumeration stops digging deeper -downstream as soon as bus num 0x01 has been assigned, which is always -the case for a bridge device. - -This results in all devices behind a bridge bus to remain undetected, as -these would be connected to bus 0x02 or higher. - -Fix this by initializing the RC to a subordinate value of 0xff, meaning -that all busses [0x00-0xff] are reachable through this RC. - -Fixes: a20c7f36bd3d ("PCI: Do not allocate more buses than available in -parent") -Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com> -Tested-by: Niklas Cassel <niklas.cassel@axis.com> -Cc: Mika Westerberg <mika.westerberg@linux.intel.com> ---- - -Will send separate patches to stable as this file got moved/renamed - - - drivers/pci/dwc/pcie-designware-host.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/drivers/pci/dwc/pcie-designware-host.c -+++ b/drivers/pci/dwc/pcie-designware-host.c -@@ -607,7 +607,7 @@ void dw_pcie_setup_rc(struct pcie_port * - /* setup bus numbers */ - val = dw_pcie_readl_dbi(pci, PCI_PRIMARY_BUS); - val &= 0xff000000; -- val |= 0x00010100; -+ val |= 0x00ff0100; - dw_pcie_writel_dbi(pci, PCI_PRIMARY_BUS, val); - - /* setup command register */ |