kernel: bump 4.14 to 4.14.154
Refreshed all patches. Altered patches: - 902-debloat_proc.patch - 040-dmaengine-qcom-bam-Process-multiple-pending-descript.patch - 807-usb-support-layerscape.patch - 809-flexcan-support-layerscape.patch - 816-pcie-support-layerscape.patch Remove upstreamed: - 303-spi-nor-enable-4B-opcodes-for-mx66l51235l.patch New symbols: X86_INTEL_MPX X86_INTEL_MEMORY_PROTECTION_KEYS CONFIG_X86_INTEL_TSX_MODE_OFF X86_INTEL_TSX_MODE_ON X86_INTEL_TSX_MODE_AUTO SGL_ALLOC Compile-tested on: ar71xx, cns3xxx, imx6, x86_64 Runtime-tested on: ar71xx, cns3xxx, imx6 Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
This commit is contained in:
		| @@ -6,9 +6,9 @@ ifdef CONFIG_TESTING_KERNEL | |||||||
|   KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) |   KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) | ||||||
| endif | endif | ||||||
|  |  | ||||||
| LINUX_VERSION-4.14 = .152 | LINUX_VERSION-4.14 = .154 | ||||||
|  |  | ||||||
| LINUX_KERNEL_HASH-4.14.152 = a9239fd9d341aae07b48a8e7a2afd528fe5cde2617d783454c71e6f3dae2b0aa | LINUX_KERNEL_HASH-4.14.154 = 86de4a24379a78d67fc08b2e249ccf7b689eb6c37fbe329fc3dfbe8ab4300603 | ||||||
|  |  | ||||||
| remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | ||||||
| sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) | sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  |  | ||||||
| --- a/include/net/netfilter/nf_tables.h | --- a/include/net/netfilter/nf_tables.h | ||||||
| +++ b/include/net/netfilter/nf_tables.h | +++ b/include/net/netfilter/nf_tables.h | ||||||
| @@ -897,8 +897,6 @@ struct nft_stats { | @@ -898,8 +898,6 @@ struct nft_stats { | ||||||
|  	struct u64_stats_sync	syncp; |  	struct u64_stats_sync	syncp; | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
| @@ -20,7 +20,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  /** |  /** | ||||||
|   *	struct nft_base_chain - nf_tables base chain |   *	struct nft_base_chain - nf_tables base chain | ||||||
|   * |   * | ||||||
| @@ -910,7 +908,7 @@ struct nft_stats { | @@ -911,7 +909,7 @@ struct nft_stats { | ||||||
|   *	@dev_name: device name that this base chain is attached to (if any) |   *	@dev_name: device name that this base chain is attached to (if any) | ||||||
|   */ |   */ | ||||||
|  struct nft_base_chain { |  struct nft_base_chain { | ||||||
| @@ -29,7 +29,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  	const struct nf_chain_type	*type; |  	const struct nf_chain_type	*type; | ||||||
|  	u8				policy; |  	u8				policy; | ||||||
|  	u8				flags; |  	u8				flags; | ||||||
| @@ -971,8 +969,6 @@ enum nft_af_flags { | @@ -972,8 +970,6 @@ enum nft_af_flags { | ||||||
|   *	@owner: module owner |   *	@owner: module owner | ||||||
|   *	@tables: used internally |   *	@tables: used internally | ||||||
|   *	@flags: family flags |   *	@flags: family flags | ||||||
| @@ -38,7 +38,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|   *	@hooks: hookfn overrides for packet validation |   *	@hooks: hookfn overrides for packet validation | ||||||
|   */ |   */ | ||||||
|  struct nft_af_info { |  struct nft_af_info { | ||||||
| @@ -982,9 +978,6 @@ struct nft_af_info { | @@ -983,9 +979,6 @@ struct nft_af_info { | ||||||
|  	struct module			*owner; |  	struct module			*owner; | ||||||
|  	struct list_head		tables; |  	struct list_head		tables; | ||||||
|  	u32				flags; |  	u32				flags; | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  |  | ||||||
| --- a/include/net/netfilter/nf_tables.h | --- a/include/net/netfilter/nf_tables.h | ||||||
| +++ b/include/net/netfilter/nf_tables.h | +++ b/include/net/netfilter/nf_tables.h | ||||||
| @@ -875,7 +875,7 @@ enum nft_chain_type { | @@ -876,7 +876,7 @@ enum nft_chain_type { | ||||||
|   * 	@family: address family |   * 	@family: address family | ||||||
|   * 	@owner: module owner |   * 	@owner: module owner | ||||||
|   * 	@hook_mask: mask of valid hooks |   * 	@hook_mask: mask of valid hooks | ||||||
| @@ -19,7 +19,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|   */ |   */ | ||||||
|  struct nf_chain_type { |  struct nf_chain_type { | ||||||
|  	const char			*name; |  	const char			*name; | ||||||
| @@ -969,7 +969,6 @@ enum nft_af_flags { | @@ -970,7 +970,6 @@ enum nft_af_flags { | ||||||
|   *	@owner: module owner |   *	@owner: module owner | ||||||
|   *	@tables: used internally |   *	@tables: used internally | ||||||
|   *	@flags: family flags |   *	@flags: family flags | ||||||
| @@ -27,7 +27,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|   */ |   */ | ||||||
|  struct nft_af_info { |  struct nft_af_info { | ||||||
|  	struct list_head		list; |  	struct list_head		list; | ||||||
| @@ -978,7 +977,6 @@ struct nft_af_info { | @@ -979,7 +978,6 @@ struct nft_af_info { | ||||||
|  	struct module			*owner; |  	struct module			*owner; | ||||||
|  	struct list_head		tables; |  	struct list_head		tables; | ||||||
|  	u32				flags; |  	u32				flags; | ||||||
|   | |||||||
| @@ -50,7 +50,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  #include <net/netlink.h> |  #include <net/netlink.h> | ||||||
|   |   | ||||||
|  #define NFT_JUMP_STACK_SIZE	16 |  #define NFT_JUMP_STACK_SIZE	16 | ||||||
| @@ -938,6 +939,7 @@ unsigned int nft_do_chain(struct nft_pkt | @@ -939,6 +940,7 @@ unsigned int nft_do_chain(struct nft_pkt | ||||||
|   *	@chains: chains in the table |   *	@chains: chains in the table | ||||||
|   *	@sets: sets in the table |   *	@sets: sets in the table | ||||||
|   *	@objects: stateful objects in the table |   *	@objects: stateful objects in the table | ||||||
| @@ -58,7 +58,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|   *	@hgenerator: handle generator state |   *	@hgenerator: handle generator state | ||||||
|   *	@use: number of chain references to this table |   *	@use: number of chain references to this table | ||||||
|   *	@flags: table flag (see enum nft_table_flags) |   *	@flags: table flag (see enum nft_table_flags) | ||||||
| @@ -949,6 +951,7 @@ struct nft_table { | @@ -950,6 +952,7 @@ struct nft_table { | ||||||
|  	struct list_head		chains; |  	struct list_head		chains; | ||||||
|  	struct list_head		sets; |  	struct list_head		sets; | ||||||
|  	struct list_head		objects; |  	struct list_head		objects; | ||||||
| @@ -66,7 +66,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  	u64				hgenerator; |  	u64				hgenerator; | ||||||
|  	u32				use; |  	u32				use; | ||||||
|  	u16				flags:14, |  	u16				flags:14, | ||||||
| @@ -1080,6 +1083,44 @@ int nft_register_obj(struct nft_object_t | @@ -1081,6 +1084,44 @@ int nft_register_obj(struct nft_object_t | ||||||
|  void nft_unregister_obj(struct nft_object_type *obj_type); |  void nft_unregister_obj(struct nft_object_type *obj_type); | ||||||
|   |   | ||||||
|  /** |  /** | ||||||
| @@ -111,7 +111,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|   *	struct nft_traceinfo - nft tracing information and state |   *	struct nft_traceinfo - nft tracing information and state | ||||||
|   * |   * | ||||||
|   *	@pkt: pktinfo currently processed |   *	@pkt: pktinfo currently processed | ||||||
| @@ -1315,4 +1356,11 @@ struct nft_trans_obj { | @@ -1316,4 +1357,11 @@ struct nft_trans_obj { | ||||||
|  #define nft_trans_obj(trans)	\ |  #define nft_trans_obj(trans)	\ | ||||||
|  	(((struct nft_trans_obj *)trans->data)->obj) |  	(((struct nft_trans_obj *)trans->data)->obj) | ||||||
|   |   | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  |  | ||||||
| --- a/include/net/netfilter/nf_tables.h | --- a/include/net/netfilter/nf_tables.h | ||||||
| +++ b/include/net/netfilter/nf_tables.h | +++ b/include/net/netfilter/nf_tables.h | ||||||
| @@ -968,7 +968,6 @@ enum nft_af_flags { | @@ -969,7 +969,6 @@ enum nft_af_flags { | ||||||
|   * |   * | ||||||
|   *	@list: used internally |   *	@list: used internally | ||||||
|   *	@family: address family |   *	@family: address family | ||||||
| @@ -22,7 +22,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|   *	@owner: module owner |   *	@owner: module owner | ||||||
|   *	@tables: used internally |   *	@tables: used internally | ||||||
|   *	@flags: family flags |   *	@flags: family flags | ||||||
| @@ -976,7 +975,6 @@ enum nft_af_flags { | @@ -977,7 +976,6 @@ enum nft_af_flags { | ||||||
|  struct nft_af_info { |  struct nft_af_info { | ||||||
|  	struct list_head		list; |  	struct list_head		list; | ||||||
|  	int				family; |  	int				family; | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  |  | ||||||
| --- a/include/net/netfilter/nf_tables.h | --- a/include/net/netfilter/nf_tables.h | ||||||
| +++ b/include/net/netfilter/nf_tables.h | +++ b/include/net/netfilter/nf_tables.h | ||||||
| @@ -959,10 +959,6 @@ struct nft_table { | @@ -960,10 +960,6 @@ struct nft_table { | ||||||
|  	char				*name; |  	char				*name; | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
| @@ -21,7 +21,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  /** |  /** | ||||||
|   *	struct nft_af_info - nf_tables address family info |   *	struct nft_af_info - nf_tables address family info | ||||||
|   * |   * | ||||||
| @@ -970,14 +966,12 @@ enum nft_af_flags { | @@ -971,14 +967,12 @@ enum nft_af_flags { | ||||||
|   *	@family: address family |   *	@family: address family | ||||||
|   *	@owner: module owner |   *	@owner: module owner | ||||||
|   *	@tables: used internally |   *	@tables: used internally | ||||||
|   | |||||||
| @@ -42,7 +42,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  	bool				report; |  	bool				report; | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
| @@ -944,6 +944,7 @@ unsigned int nft_do_chain(struct nft_pkt | @@ -945,6 +945,7 @@ unsigned int nft_do_chain(struct nft_pkt | ||||||
|   *	@use: number of chain references to this table |   *	@use: number of chain references to this table | ||||||
|   *	@flags: table flag (see enum nft_table_flags) |   *	@flags: table flag (see enum nft_table_flags) | ||||||
|   *	@genmask: generation mask |   *	@genmask: generation mask | ||||||
| @@ -50,7 +50,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|   *	@name: name of the table |   *	@name: name of the table | ||||||
|   */ |   */ | ||||||
|  struct nft_table { |  struct nft_table { | ||||||
| @@ -956,6 +957,7 @@ struct nft_table { | @@ -957,6 +958,7 @@ struct nft_table { | ||||||
|  	u32				use; |  	u32				use; | ||||||
|  	u16				flags:14, |  	u16				flags:14, | ||||||
|  					genmask:2; |  					genmask:2; | ||||||
| @@ -58,7 +58,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  	char				*name; |  	char				*name; | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
| @@ -965,13 +967,11 @@ struct nft_table { | @@ -966,13 +968,11 @@ struct nft_table { | ||||||
|   *	@list: used internally |   *	@list: used internally | ||||||
|   *	@family: address family |   *	@family: address family | ||||||
|   *	@owner: module owner |   *	@owner: module owner | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  |  | ||||||
| --- a/include/net/netfilter/nf_tables.h | --- a/include/net/netfilter/nf_tables.h | ||||||
| +++ b/include/net/netfilter/nf_tables.h | +++ b/include/net/netfilter/nf_tables.h | ||||||
| @@ -974,8 +974,8 @@ struct nft_af_info { | @@ -975,8 +975,8 @@ struct nft_af_info { | ||||||
|  	struct module			*owner; |  	struct module			*owner; | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  |  | ||||||
| --- a/include/net/netfilter/nf_tables.h | --- a/include/net/netfilter/nf_tables.h | ||||||
| +++ b/include/net/netfilter/nf_tables.h | +++ b/include/net/netfilter/nf_tables.h | ||||||
| @@ -955,28 +955,12 @@ struct nft_table { | @@ -956,28 +956,12 @@ struct nft_table { | ||||||
|  	struct list_head		flowtables; |  	struct list_head		flowtables; | ||||||
|  	u64				hgenerator; |  	u64				hgenerator; | ||||||
|  	u32				use; |  	u32				use; | ||||||
| @@ -42,7 +42,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  int nft_register_chain_type(const struct nf_chain_type *); |  int nft_register_chain_type(const struct nf_chain_type *); | ||||||
|  void nft_unregister_chain_type(const struct nf_chain_type *); |  void nft_unregister_chain_type(const struct nf_chain_type *); | ||||||
|   |   | ||||||
| @@ -1144,9 +1128,6 @@ void nft_trace_notify(struct nft_tracein | @@ -1145,9 +1129,6 @@ void nft_trace_notify(struct nft_tracein | ||||||
|  #define nft_dereference(p)					\ |  #define nft_dereference(p)					\ | ||||||
|  	nfnl_dereference(p, NFNL_SUBSYS_NFTABLES) |  	nfnl_dereference(p, NFNL_SUBSYS_NFTABLES) | ||||||
|   |   | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  	u32				ktype; |  	u32				ktype; | ||||||
|  	u32				dtype; |  	u32				dtype; | ||||||
|  	u32				objtype; |  	u32				objtype; | ||||||
| @@ -941,6 +943,7 @@ unsigned int nft_do_chain(struct nft_pkt | @@ -942,6 +944,7 @@ unsigned int nft_do_chain(struct nft_pkt | ||||||
|   *	@objects: stateful objects in the table |   *	@objects: stateful objects in the table | ||||||
|   *	@flowtables: flow tables in the table |   *	@flowtables: flow tables in the table | ||||||
|   *	@hgenerator: handle generator state |   *	@hgenerator: handle generator state | ||||||
| @@ -36,7 +36,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|   *	@use: number of chain references to this table |   *	@use: number of chain references to this table | ||||||
|   *	@flags: table flag (see enum nft_table_flags) |   *	@flags: table flag (see enum nft_table_flags) | ||||||
|   *	@genmask: generation mask |   *	@genmask: generation mask | ||||||
| @@ -954,6 +957,7 @@ struct nft_table { | @@ -955,6 +958,7 @@ struct nft_table { | ||||||
|  	struct list_head		objects; |  	struct list_head		objects; | ||||||
|  	struct list_head		flowtables; |  	struct list_head		flowtables; | ||||||
|  	u64				hgenerator; |  	u64				hgenerator; | ||||||
| @@ -44,7 +44,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  	u32				use; |  	u32				use; | ||||||
|  	u16				family:6, |  	u16				family:6, | ||||||
|  					flags:8, |  					flags:8, | ||||||
| @@ -978,9 +982,9 @@ int nft_verdict_dump(struct sk_buff *skb | @@ -979,9 +983,9 @@ int nft_verdict_dump(struct sk_buff *skb | ||||||
|   *	@name: name of this stateful object |   *	@name: name of this stateful object | ||||||
|   *	@genmask: generation mask |   *	@genmask: generation mask | ||||||
|   *	@use: number of references to this stateful object |   *	@use: number of references to this stateful object | ||||||
| @@ -56,7 +56,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|   */ |   */ | ||||||
|  struct nft_object { |  struct nft_object { | ||||||
|  	struct list_head		list; |  	struct list_head		list; | ||||||
| @@ -988,6 +992,7 @@ struct nft_object { | @@ -989,6 +993,7 @@ struct nft_object { | ||||||
|  	struct nft_table		*table; |  	struct nft_table		*table; | ||||||
|  	u32				genmask:2, |  	u32				genmask:2, | ||||||
|  					use:30; |  					use:30; | ||||||
| @@ -64,7 +64,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  	/* runtime data below here */ |  	/* runtime data below here */ | ||||||
|  	const struct nft_object_ops	*ops ____cacheline_aligned; |  	const struct nft_object_ops	*ops ____cacheline_aligned; | ||||||
|  	unsigned char			data[] |  	unsigned char			data[] | ||||||
| @@ -1069,6 +1074,7 @@ void nft_unregister_obj(struct nft_objec | @@ -1070,6 +1075,7 @@ void nft_unregister_obj(struct nft_objec | ||||||
|   *	@ops_len: number of hooks in array |   *	@ops_len: number of hooks in array | ||||||
|   *	@genmask: generation mask |   *	@genmask: generation mask | ||||||
|   *	@use: number of references to this flow table |   *	@use: number of references to this flow table | ||||||
| @@ -72,7 +72,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|   *	@data: rhashtable and garbage collector |   *	@data: rhashtable and garbage collector | ||||||
|   * 	@ops: array of hooks |   * 	@ops: array of hooks | ||||||
|   */ |   */ | ||||||
| @@ -1081,6 +1087,7 @@ struct nft_flowtable { | @@ -1082,6 +1088,7 @@ struct nft_flowtable { | ||||||
|  	int				ops_len; |  	int				ops_len; | ||||||
|  	u32				genmask:2, |  	u32				genmask:2, | ||||||
|  					use:30; |  					use:30; | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	struct delayed_work		gc_work; |  	struct delayed_work		gc_work; | ||||||
| --- a/include/net/netfilter/nf_tables.h | --- a/include/net/netfilter/nf_tables.h | ||||||
| +++ b/include/net/netfilter/nf_tables.h | +++ b/include/net/netfilter/nf_tables.h | ||||||
| @@ -1096,9 +1096,6 @@ struct nft_flowtable { | @@ -1097,9 +1097,6 @@ struct nft_flowtable { | ||||||
|  struct nft_flowtable *nf_tables_flowtable_lookup(const struct nft_table *table, |  struct nft_flowtable *nf_tables_flowtable_lookup(const struct nft_table *table, | ||||||
|  						 const struct nlattr *nla, |  						 const struct nlattr *nla, | ||||||
|  						 u8 genmask); |  						 u8 genmask); | ||||||
|   | |||||||
| @@ -4336,6 +4336,7 @@ CONFIG_SERIAL_EARLYCON=y | |||||||
| # CONFIG_SGI_IP28 is not set | # CONFIG_SGI_IP28 is not set | ||||||
| # CONFIG_SGI_IP32 is not set | # CONFIG_SGI_IP32 is not set | ||||||
| # CONFIG_SGI_PARTITION is not set | # CONFIG_SGI_PARTITION is not set | ||||||
|  | # CONFIG_SGL_ALLOC is not set | ||||||
| # CONFIG_SG_POOL is not set | # CONFIG_SG_POOL is not set | ||||||
| # CONFIG_SG_SPLIT is not set | # CONFIG_SG_SPLIT is not set | ||||||
| CONFIG_SHMEM=y | CONFIG_SHMEM=y | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  |  | ||||||
| --- a/Makefile | --- a/Makefile | ||||||
| +++ b/Makefile | +++ b/Makefile | ||||||
| @@ -1243,7 +1243,6 @@ all: modules | @@ -1252,7 +1252,6 @@ all: modules | ||||||
|   |   | ||||||
|  PHONY += modules |  PHONY += modules | ||||||
|  modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin |  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.'; |  	@$(kecho) '  Building modules, stage 2.'; | ||||||
|  	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost |  	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost | ||||||
|   |   | ||||||
| @@ -1272,7 +1271,6 @@ _modinst_: | @@ -1281,7 +1280,6 @@ _modinst_: | ||||||
|  		rm -f $(MODLIB)/build ; \ |  		rm -f $(MODLIB)/build ; \ | ||||||
|  		ln -s $(CURDIR) $(MODLIB)/build ; \ |  		ln -s $(CURDIR) $(MODLIB)/build ; \ | ||||||
|  	fi |  	fi | ||||||
|   | |||||||
| @@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|   */ |   */ | ||||||
| --- a/include/linux/skbuff.h | --- a/include/linux/skbuff.h | ||||||
| +++ b/include/linux/skbuff.h | +++ b/include/linux/skbuff.h | ||||||
| @@ -2514,6 +2514,10 @@ static inline int pskb_trim(struct sk_bu | @@ -2530,6 +2530,10 @@ static inline int pskb_trim(struct sk_bu | ||||||
|  	return (len < skb->len) ? __pskb_trim(skb, len) : 0; |  	return (len < skb->len) ? __pskb_trim(skb, len) : 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  /** |  /** | ||||||
|   *	pskb_trim_unique - remove end from a paged unique (not cloned) buffer |   *	pskb_trim_unique - remove end from a paged unique (not cloned) buffer | ||||||
|   *	@skb: buffer to alter |   *	@skb: buffer to alter | ||||||
| @@ -2645,16 +2649,6 @@ static inline struct sk_buff *dev_alloc_ | @@ -2661,16 +2665,6 @@ static inline struct sk_buff *dev_alloc_ | ||||||
|  } |  } | ||||||
|   |   | ||||||
|   |   | ||||||
|   | |||||||
| @@ -248,10 +248,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  #endif |  #endif | ||||||
|  #ifdef CONFIG_PROC_FS |  #ifdef CONFIG_PROC_FS | ||||||
| -	proc_create("buddyinfo", 0444, NULL, &buddyinfo_file_operations); | -	proc_create("buddyinfo", 0444, NULL, &buddyinfo_file_operations); | ||||||
| -	proc_create("pagetypeinfo", 0444, NULL, &pagetypeinfo_file_operations); | -	proc_create("pagetypeinfo", 0400, NULL, &pagetypeinfo_file_operations); | ||||||
| +	if (!IS_ENABLED(CONFIG_PROC_STRIPPED)) { | +	if (!IS_ENABLED(CONFIG_PROC_STRIPPED)) { | ||||||
| +		proc_create("buddyinfo", 0444, NULL, &buddyinfo_file_operations); | +		proc_create("buddyinfo", 0444, NULL, &buddyinfo_file_operations); | ||||||
| +		proc_create("pagetypeinfo", 0444, NULL, &pagetypeinfo_file_operations); | +		proc_create("pagetypeinfo", 0400, NULL, &pagetypeinfo_file_operations); | ||||||
| +		proc_create("zoneinfo", 0444, NULL, &zoneinfo_file_operations); | +		proc_create("zoneinfo", 0444, NULL, &zoneinfo_file_operations); | ||||||
| +	} | +	} | ||||||
|  	proc_create("vmstat", 0444, NULL, &vmstat_file_operations); |  	proc_create("vmstat", 0444, NULL, &vmstat_file_operations); | ||||||
|   | |||||||
| @@ -54,7 +54,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
| +MODULE_LICENSE("GPL"); | +MODULE_LICENSE("GPL"); | ||||||
| --- a/kernel/sched/core.c | --- a/kernel/sched/core.c | ||||||
| +++ b/kernel/sched/core.c | +++ b/kernel/sched/core.c | ||||||
| @@ -2164,6 +2164,7 @@ int wake_up_state(struct task_struct *p, | @@ -2165,6 +2165,7 @@ int wake_up_state(struct task_struct *p, | ||||||
|  { |  { | ||||||
|  	return try_to_wake_up(p, state, 0); |  	return try_to_wake_up(p, state, 0); | ||||||
|  } |  } | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  |  | ||||||
| --- a/include/linux/skbuff.h | --- a/include/linux/skbuff.h | ||||||
| +++ b/include/linux/skbuff.h | +++ b/include/linux/skbuff.h | ||||||
| @@ -2478,7 +2478,7 @@ static inline int pskb_network_may_pull( | @@ -2494,7 +2494,7 @@ static inline int pskb_network_may_pull( | ||||||
|   * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) |   * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) | ||||||
|   */ |   */ | ||||||
|  #ifndef NET_SKB_PAD |  #ifndef NET_SKB_PAD | ||||||
|   | |||||||
| @@ -132,7 +132,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com> | |||||||
|   |   | ||||||
|  	async_desc->num_desc = num_alloc; |  	async_desc->num_desc = num_alloc; | ||||||
|  	async_desc->curr_desc = async_desc->desc; |  	async_desc->curr_desc = async_desc->desc; | ||||||
| @@ -685,14 +688,16 @@ err_out: | @@ -685,29 +688,16 @@ err_out: | ||||||
|  static int bam_dma_terminate_all(struct dma_chan *chan) |  static int bam_dma_terminate_all(struct dma_chan *chan) | ||||||
|  { |  { | ||||||
|  	struct bam_chan *bchan = to_bam_chan(chan); |  	struct bam_chan *bchan = to_bam_chan(chan); | ||||||
| @@ -142,17 +142,32 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com> | |||||||
|   |   | ||||||
|  	/* remove all transactions, including active transaction */ |  	/* remove all transactions, including active transaction */ | ||||||
|  	spin_lock_irqsave(&bchan->vc.lock, flag); |  	spin_lock_irqsave(&bchan->vc.lock, flag); | ||||||
|  | -	/* | ||||||
|  | -	 * If we have transactions queued, then some might be committed to the | ||||||
|  | -	 * hardware in the desc fifo.  The only way to reset the desc fifo is | ||||||
|  | -	 * to do a hardware reset (either by pipe or the entire block). | ||||||
|  | -	 * bam_chan_init_hw() will trigger a pipe reset, and also reinit the | ||||||
|  | -	 * pipe.  If the pipe is left disabled (default state after pipe reset) | ||||||
|  | -	 * and is accessed by a connected hardware engine, a fatal error in | ||||||
|  | -	 * the BAM will occur.  There is a small window where this could happen | ||||||
|  | -	 * with bam_chan_init_hw(), but it is assumed that the caller has | ||||||
|  | -	 * stopped activity on any attached hardware engine.  Make sure to do | ||||||
|  | -	 * this first so that the BAM hardware doesn't cause memory corruption | ||||||
|  | -	 * by accessing freed resources. | ||||||
|  | -	 */ | ||||||
| -	if (bchan->curr_txd) { | -	if (bchan->curr_txd) { | ||||||
|  | -		bam_chan_init_hw(bchan, bchan->curr_txd->dir); | ||||||
| -		list_add(&bchan->curr_txd->vd.node, &bchan->vc.desc_issued); | -		list_add(&bchan->curr_txd->vd.node, &bchan->vc.desc_issued); | ||||||
| -		bchan->curr_txd = NULL; | -		bchan->curr_txd = NULL; | ||||||
| +	list_for_each_entry_safe(async_desc, tmp, | -	} | ||||||
| +				 &bchan->desc_list, desc_node) { | +        list_for_each_entry_safe(async_desc, tmp, | ||||||
| +		list_add(&async_desc->vd.node, &bchan->vc.desc_issued); | +                                &bchan->desc_list, desc_node) { | ||||||
| +		list_del(&async_desc->desc_node); | +                list_add(&async_desc->vd.node, &bchan->vc.desc_issued); | ||||||
|  	} | +                list_del(&async_desc->desc_node); | ||||||
|   |   | ||||||
|  	vchan_get_all_descriptors(&bchan->vc, &head); |  	vchan_get_all_descriptors(&bchan->vc, &head); | ||||||
| @@ -764,9 +769,9 @@ static int bam_resume(struct dma_chan *c |  	spin_unlock_irqrestore(&bchan->vc.lock, flag); | ||||||
|  | @@ -778,9 +768,9 @@ static int bam_resume(struct dma_chan *c | ||||||
|   */ |   */ | ||||||
|  static u32 process_channel_irqs(struct bam_device *bdev) |  static u32 process_channel_irqs(struct bam_device *bdev) | ||||||
|  { |  { | ||||||
| @@ -164,7 +179,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com> | |||||||
|   |   | ||||||
|  	srcs = readl_relaxed(bam_addr(bdev, 0, BAM_IRQ_SRCS_EE)); |  	srcs = readl_relaxed(bam_addr(bdev, 0, BAM_IRQ_SRCS_EE)); | ||||||
|   |   | ||||||
| @@ -786,27 +791,40 @@ static u32 process_channel_irqs(struct b | @@ -800,27 +790,40 @@ static u32 process_channel_irqs(struct b | ||||||
|  		writel_relaxed(pipe_stts, bam_addr(bdev, i, BAM_P_IRQ_CLR)); |  		writel_relaxed(pipe_stts, bam_addr(bdev, i, BAM_P_IRQ_CLR)); | ||||||
|   |   | ||||||
|  		spin_lock_irqsave(&bchan->vc.lock, flags); |  		spin_lock_irqsave(&bchan->vc.lock, flags); | ||||||
| @@ -214,7 +229,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com> | |||||||
|  		} |  		} | ||||||
|   |   | ||||||
|  		spin_unlock_irqrestore(&bchan->vc.lock, flags); |  		spin_unlock_irqrestore(&bchan->vc.lock, flags); | ||||||
| @@ -868,6 +886,7 @@ static enum dma_status bam_tx_status(str | @@ -882,6 +885,7 @@ static enum dma_status bam_tx_status(str | ||||||
|  		struct dma_tx_state *txstate) |  		struct dma_tx_state *txstate) | ||||||
|  { |  { | ||||||
|  	struct bam_chan *bchan = to_bam_chan(chan); |  	struct bam_chan *bchan = to_bam_chan(chan); | ||||||
| @@ -222,7 +237,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com> | |||||||
|  	struct virt_dma_desc *vd; |  	struct virt_dma_desc *vd; | ||||||
|  	int ret; |  	int ret; | ||||||
|  	size_t residue = 0; |  	size_t residue = 0; | ||||||
| @@ -883,11 +902,17 @@ static enum dma_status bam_tx_status(str | @@ -897,11 +901,17 @@ static enum dma_status bam_tx_status(str | ||||||
|   |   | ||||||
|  	spin_lock_irqsave(&bchan->vc.lock, flags); |  	spin_lock_irqsave(&bchan->vc.lock, flags); | ||||||
|  	vd = vchan_find_desc(&bchan->vc, cookie); |  	vd = vchan_find_desc(&bchan->vc, cookie); | ||||||
| @@ -244,7 +259,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com> | |||||||
|   |   | ||||||
|  	spin_unlock_irqrestore(&bchan->vc.lock, flags); |  	spin_unlock_irqrestore(&bchan->vc.lock, flags); | ||||||
|   |   | ||||||
| @@ -928,63 +953,86 @@ static void bam_start_dma(struct bam_cha | @@ -942,63 +952,86 @@ static void bam_start_dma(struct bam_cha | ||||||
|  { |  { | ||||||
|  	struct virt_dma_desc *vd = vchan_next_desc(&bchan->vc); |  	struct virt_dma_desc *vd = vchan_next_desc(&bchan->vc); | ||||||
|  	struct bam_device *bdev = bchan->bdev; |  	struct bam_device *bdev = bchan->bdev; | ||||||
| @@ -311,19 +326,19 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com> | |||||||
| +			async_desc->xfer_len = avail; | +			async_desc->xfer_len = avail; | ||||||
| +		else | +		else | ||||||
| +			async_desc->xfer_len = async_desc->num_desc; | +			async_desc->xfer_len = async_desc->num_desc; | ||||||
| + |   | ||||||
|  | -	if (bchan->tail + async_desc->xfer_len > MAX_DESCRIPTORS) { | ||||||
|  | -		u32 partial = MAX_DESCRIPTORS - bchan->tail; | ||||||
| +		/* set any special flags on the last descriptor */ | +		/* set any special flags on the last descriptor */ | ||||||
| +		if (async_desc->num_desc == async_desc->xfer_len) | +		if (async_desc->num_desc == async_desc->xfer_len) | ||||||
| +			desc[async_desc->xfer_len - 1].flags |= | +			desc[async_desc->xfer_len - 1].flags |= | ||||||
| +						cpu_to_le16(async_desc->flags); | +						cpu_to_le16(async_desc->flags); | ||||||
|   |   | ||||||
| -	if (bchan->tail + async_desc->xfer_len > MAX_DESCRIPTORS) { |  | ||||||
| -		u32 partial = MAX_DESCRIPTORS - bchan->tail; |  | ||||||
| +		vd = vchan_next_desc(&bchan->vc); |  | ||||||
|   |  | ||||||
| -		memcpy(&fifo[bchan->tail], desc, | -		memcpy(&fifo[bchan->tail], desc, | ||||||
| -				partial * sizeof(struct bam_desc_hw)); | -				partial * sizeof(struct bam_desc_hw)); | ||||||
| -		memcpy(fifo, &desc[partial], (async_desc->xfer_len - partial) * | -		memcpy(fifo, &desc[partial], (async_desc->xfer_len - partial) * | ||||||
|  | +		vd = vchan_next_desc(&bchan->vc); | ||||||
|  | + | ||||||
| +		dmaengine_desc_get_callback(&async_desc->vd.tx, &cb); | +		dmaengine_desc_get_callback(&async_desc->vd.tx, &cb); | ||||||
| + | + | ||||||
| +		/* | +		/* | ||||||
| @@ -367,7 +382,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com> | |||||||
|   |   | ||||||
|  	/* ensure descriptor writes and dma start not reordered */ |  	/* ensure descriptor writes and dma start not reordered */ | ||||||
|  	wmb(); |  	wmb(); | ||||||
| @@ -1013,7 +1061,7 @@ static void dma_tasklet(unsigned long da | @@ -1027,7 +1060,7 @@ static void dma_tasklet(unsigned long da | ||||||
|  		bchan = &bdev->channels[i]; |  		bchan = &bdev->channels[i]; | ||||||
|  		spin_lock_irqsave(&bchan->vc.lock, flags); |  		spin_lock_irqsave(&bchan->vc.lock, flags); | ||||||
|   |   | ||||||
| @@ -376,7 +391,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com> | |||||||
|  			bam_start_dma(bchan); |  			bam_start_dma(bchan); | ||||||
|  		spin_unlock_irqrestore(&bchan->vc.lock, flags); |  		spin_unlock_irqrestore(&bchan->vc.lock, flags); | ||||||
|  	} |  	} | ||||||
| @@ -1034,7 +1082,7 @@ static void bam_issue_pending(struct dma | @@ -1048,7 +1081,7 @@ static void bam_issue_pending(struct dma | ||||||
|  	spin_lock_irqsave(&bchan->vc.lock, flags); |  	spin_lock_irqsave(&bchan->vc.lock, flags); | ||||||
|   |   | ||||||
|  	/* if work pending and idle, start a transaction */ |  	/* if work pending and idle, start a transaction */ | ||||||
| @@ -385,7 +400,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com> | |||||||
|  		bam_start_dma(bchan); |  		bam_start_dma(bchan); | ||||||
|   |   | ||||||
|  	spin_unlock_irqrestore(&bchan->vc.lock, flags); |  	spin_unlock_irqrestore(&bchan->vc.lock, flags); | ||||||
| @@ -1138,6 +1186,7 @@ static void bam_channel_init(struct bam_ | @@ -1152,6 +1185,7 @@ static void bam_channel_init(struct bam_ | ||||||
|   |   | ||||||
|  	vchan_init(&bchan->vc, &bdev->common); |  	vchan_init(&bchan->vc, &bdev->common); | ||||||
|  	bchan->vc.desc_free = bam_dma_free_desc; |  	bchan->vc.desc_free = bam_dma_free_desc; | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ | |||||||
| +	{ "mx25l25635f", INFO(0xc22019, 0, 64 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) }, | +	{ "mx25l25635f", INFO(0xc22019, 0, 64 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) }, | ||||||
|  	{ "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) }, |  	{ "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) }, | ||||||
|  	{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) }, |  	{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) }, | ||||||
|  	{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, |  	{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) }, | ||||||
| @@ -1201,11 +1202,12 @@ static const struct flash_info spi_nor_i | @@ -1201,11 +1202,12 @@ static const struct flash_info spi_nor_i | ||||||
|  	{ }, |  	{ }, | ||||||
|  }; |  }; | ||||||
|   | |||||||
| @@ -19,4 +19,4 @@ the ubi volume created by the other. | |||||||
| +	{ "mx25l25635f", INFO(0xc22019, 0, 64 * 1024, 512, SECT_4K) }, | +	{ "mx25l25635f", INFO(0xc22019, 0, 64 * 1024, 512, SECT_4K) }, | ||||||
|  	{ "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) }, |  	{ "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) }, | ||||||
|  	{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) }, |  	{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) }, | ||||||
|  	{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, |  	{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) }, | ||||||
|   | |||||||
| @@ -580,7 +580,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  void  __kfree_skb(struct sk_buff *skb); |  void  __kfree_skb(struct sk_buff *skb); | ||||||
|  extern struct kmem_cache *skbuff_head_cache; |  extern struct kmem_cache *skbuff_head_cache; | ||||||
|   |   | ||||||
| @@ -3297,6 +3298,7 @@ static inline void skb_free_datagram_loc | @@ -3313,6 +3314,7 @@ static inline void skb_free_datagram_loc | ||||||
|  } |  } | ||||||
|  int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags); |  int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags); | ||||||
|  int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len); |  int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len); | ||||||
|   | |||||||
| @@ -285,7 +285,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com> | |||||||
|  #define PAGE_NONE		__pgprot(((_PAGE_DEFAULT) & ~PTE_VALID) | PTE_PROT_NONE | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_UXN) |  #define PAGE_NONE		__pgprot(((_PAGE_DEFAULT) & ~PTE_VALID) | PTE_PROT_NONE | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_UXN) | ||||||
| --- a/arch/arm64/include/asm/pgtable.h | --- a/arch/arm64/include/asm/pgtable.h | ||||||
| +++ b/arch/arm64/include/asm/pgtable.h | +++ b/arch/arm64/include/asm/pgtable.h | ||||||
| @@ -377,6 +377,11 @@ static inline int pmd_protnone(pmd_t pmd | @@ -360,6 +360,11 @@ static inline int pmd_protnone(pmd_t pmd | ||||||
|  	__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_DEVICE_nGnRnE) | PTE_PXN | PTE_UXN) |  	__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_DEVICE_nGnRnE) | PTE_PXN | PTE_UXN) | ||||||
|  #define pgprot_writecombine(prot) \ |  #define pgprot_writecombine(prot) \ | ||||||
|  	__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_NC) | PTE_PXN | PTE_UXN) |  	__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_NC) | PTE_PXN | PTE_UXN) | ||||||
|   | |||||||
| @@ -217,7 +217,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  static void __dwc3_set_mode(struct work_struct *work) |  static void __dwc3_set_mode(struct work_struct *work) | ||||||
| @@ -766,6 +810,96 @@ static void dwc3_core_setup_global_contr | @@ -765,6 +809,96 @@ static void dwc3_core_setup_global_contr | ||||||
|  static int dwc3_core_get_phy(struct dwc3 *dwc); |  static int dwc3_core_get_phy(struct dwc3 *dwc); | ||||||
|  static int dwc3_core_ulpi_init(struct dwc3 *dwc); |  static int dwc3_core_ulpi_init(struct dwc3 *dwc); | ||||||
|   |   | ||||||
| @@ -314,7 +314,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> | |||||||
|  /** |  /** | ||||||
|   * dwc3_core_init - Low-level initialization of DWC3 Core |   * dwc3_core_init - Low-level initialization of DWC3 Core | ||||||
|   * @dwc: Pointer to our controller context structure |   * @dwc: Pointer to our controller context structure | ||||||
| @@ -828,6 +962,8 @@ static int dwc3_core_init(struct dwc3 *d | @@ -827,6 +961,8 @@ static int dwc3_core_init(struct dwc3 *d | ||||||
|  	/* Adjust Frame Length */ |  	/* Adjust Frame Length */ | ||||||
|  	dwc3_frame_length_adjustment(dwc); |  	dwc3_frame_length_adjustment(dwc); | ||||||
|   |   | ||||||
| @@ -323,7 +323,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> | |||||||
|  	usb_phy_set_suspend(dwc->usb2_phy, 0); |  	usb_phy_set_suspend(dwc->usb2_phy, 0); | ||||||
|  	usb_phy_set_suspend(dwc->usb3_phy, 0); |  	usb_phy_set_suspend(dwc->usb3_phy, 0); | ||||||
|  	ret = phy_power_on(dwc->usb2_generic_phy); |  	ret = phy_power_on(dwc->usb2_generic_phy); | ||||||
| @@ -871,6 +1007,22 @@ static int dwc3_core_init(struct dwc3 *d | @@ -870,6 +1006,22 @@ static int dwc3_core_init(struct dwc3 *d | ||||||
|  		dwc3_writel(dwc->regs, DWC3_GUCTL1, reg); |  		dwc3_writel(dwc->regs, DWC3_GUCTL1, reg); | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| @@ -346,7 +346,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> | |||||||
|  	return 0; |  	return 0; | ||||||
|   |   | ||||||
|  err4: |  err4: | ||||||
| @@ -1074,6 +1226,8 @@ static void dwc3_get_properties(struct d | @@ -1073,6 +1225,8 @@ static void dwc3_get_properties(struct d | ||||||
|  				&hird_threshold); |  				&hird_threshold); | ||||||
|  	dwc->usb3_lpm_capable = device_property_read_bool(dev, |  	dwc->usb3_lpm_capable = device_property_read_bool(dev, | ||||||
|  				"snps,usb3_lpm_capable"); |  				"snps,usb3_lpm_capable"); | ||||||
| @@ -355,7 +355,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> | |||||||
|   |   | ||||||
|  	dwc->disable_scramble_quirk = device_property_read_bool(dev, |  	dwc->disable_scramble_quirk = device_property_read_bool(dev, | ||||||
|  				"snps,disable_scramble_quirk"); |  				"snps,disable_scramble_quirk"); | ||||||
| @@ -1106,8 +1260,16 @@ static void dwc3_get_properties(struct d | @@ -1105,8 +1259,16 @@ static void dwc3_get_properties(struct d | ||||||
|  	dwc->dis_tx_ipgap_linecheck_quirk = device_property_read_bool(dev, |  	dwc->dis_tx_ipgap_linecheck_quirk = device_property_read_bool(dev, | ||||||
|  				"snps,dis-tx-ipgap-linecheck-quirk"); |  				"snps,dis-tx-ipgap-linecheck-quirk"); | ||||||
|   |   | ||||||
| @@ -372,9 +372,9 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> | |||||||
|  	device_property_read_u8(dev, "snps,tx_de_emphasis", |  	device_property_read_u8(dev, "snps,tx_de_emphasis", | ||||||
|  				&tx_de_emphasis); |  				&tx_de_emphasis); | ||||||
|  	device_property_read_string(dev, "snps,hsphy_interface", |  	device_property_read_string(dev, "snps,hsphy_interface", | ||||||
| @@ -1115,6 +1277,9 @@ static void dwc3_get_properties(struct d | @@ -1117,6 +1279,9 @@ static void dwc3_get_properties(struct d | ||||||
|  	device_property_read_u32(dev, "snps,quirk-frame-length-adjustment", |  	dwc->dis_metastability_quirk = device_property_read_bool(dev, | ||||||
|  				 &dwc->fladj); |  				"snps,dis_metastability_quirk"); | ||||||
|   |   | ||||||
| +	dwc->host_vbus_glitches = device_property_read_bool(dev, | +	dwc->host_vbus_glitches = device_property_read_bool(dev, | ||||||
| +				"snps,host-vbus-glitches"); | +				"snps,host-vbus-glitches"); | ||||||
| @@ -382,7 +382,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> | |||||||
|  	dwc->lpm_nyet_threshold = lpm_nyet_threshold; |  	dwc->lpm_nyet_threshold = lpm_nyet_threshold; | ||||||
|  	dwc->tx_de_emphasis = tx_de_emphasis; |  	dwc->tx_de_emphasis = tx_de_emphasis; | ||||||
|   |   | ||||||
| @@ -1365,12 +1530,14 @@ static int dwc3_resume_common(struct dwc | @@ -1367,12 +1532,14 @@ static int dwc3_resume_common(struct dwc | ||||||
|   |   | ||||||
|  	switch (dwc->dr_mode) { |  	switch (dwc->dr_mode) { | ||||||
|  	case USB_DR_MODE_PERIPHERAL: |  	case USB_DR_MODE_PERIPHERAL: | ||||||
| @@ -473,21 +473,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> | |||||||
|   * @disable_scramble_quirk: set if we enable the disable scramble quirk |   * @disable_scramble_quirk: set if we enable the disable scramble quirk | ||||||
|   * @u2exit_lfps_quirk: set if we enable u2exit lfps quirk |   * @u2exit_lfps_quirk: set if we enable u2exit lfps quirk | ||||||
|   * @u2ss_inp3_quirk: set if we enable P3 OK for U2/SS Inactive quirk |   * @u2ss_inp3_quirk: set if we enable P3 OK for U2/SS Inactive quirk | ||||||
| @@ -869,6 +908,13 @@ struct dwc3_scratchpad_array { | @@ -922,6 +961,12 @@ struct dwc3 { | ||||||
|   * 	1	- -3.5dB de-emphasis |  | ||||||
|   * 	2	- No de-emphasis |  | ||||||
|   * 	3	- Reserved |  | ||||||
| + * @disable_devinit_u1u2_quirk: disable device-initiated U1/U2 request. |  | ||||||
| + * @quirk_reverse_in_out: prevent tx fifo reverse the data direction |  | ||||||
| + * @quirk_stop_transfer_in_block: prevent block transmission from being |  | ||||||
| + *				interrupted |  | ||||||
| + * @quirk_stop_ep_in_u1: replace stop commad with disable slot command |  | ||||||
| + * @host-vbus-glitches: set to avoid vbus glitch during |  | ||||||
| + *                      xhci reset. |  | ||||||
|   * @imod_interval: set the interrupt moderation interval in 250ns |  | ||||||
|   *                 increments or 0 to disable. |  | ||||||
|   */ |  | ||||||
| @@ -921,6 +967,12 @@ struct dwc3 { |  | ||||||
|  	enum usb_phy_interface	hsphy_mode; |  	enum usb_phy_interface	hsphy_mode; | ||||||
|   |   | ||||||
|  	u32			fladj; |  	u32			fladj; | ||||||
| @@ -500,7 +486,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> | |||||||
|  	u32			irq_gadget; |  	u32			irq_gadget; | ||||||
|  	u32			nr_scratch; |  	u32			nr_scratch; | ||||||
|  	u32			u1u2; |  	u32			u1u2; | ||||||
| @@ -1005,6 +1057,7 @@ struct dwc3 { | @@ -1006,6 +1051,7 @@ struct dwc3 { | ||||||
|  	unsigned		setup_packet_pending:1; |  	unsigned		setup_packet_pending:1; | ||||||
|  	unsigned		three_stage_setup:1; |  	unsigned		three_stage_setup:1; | ||||||
|  	unsigned		usb3_lpm_capable:1; |  	unsigned		usb3_lpm_capable:1; | ||||||
| @@ -508,7 +494,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> | |||||||
|   |   | ||||||
|  	unsigned		disable_scramble_quirk:1; |  	unsigned		disable_scramble_quirk:1; | ||||||
|  	unsigned		u2exit_lfps_quirk:1; |  	unsigned		u2exit_lfps_quirk:1; | ||||||
| @@ -1024,6 +1077,11 @@ struct dwc3 { | @@ -1025,6 +1071,11 @@ struct dwc3 { | ||||||
|   |   | ||||||
|  	unsigned		tx_de_emphasis_quirk:1; |  	unsigned		tx_de_emphasis_quirk:1; | ||||||
|  	unsigned		tx_de_emphasis:2; |  	unsigned		tx_de_emphasis:2; | ||||||
| @@ -518,8 +504,8 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> | |||||||
| +	unsigned                quirk_stop_ep_in_u1:1; | +	unsigned                quirk_stop_ep_in_u1:1; | ||||||
| +	unsigned		host_vbus_glitches:1; | +	unsigned		host_vbus_glitches:1; | ||||||
|   |   | ||||||
|  	u16			imod_interval; |  	unsigned		dis_metastability_quirk:1; | ||||||
|  }; |   | ||||||
| --- a/drivers/usb/dwc3/ep0.c | --- a/drivers/usb/dwc3/ep0.c | ||||||
| +++ b/drivers/usb/dwc3/ep0.c | +++ b/drivers/usb/dwc3/ep0.c | ||||||
| @@ -391,7 +391,7 @@ static int dwc3_ep0_handle_u1(struct dwc | @@ -391,7 +391,7 @@ static int dwc3_ep0_handle_u1(struct dwc | ||||||
| @@ -542,7 +528,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> | |||||||
|  		reg &= ~DWC3_DCTL_INITU2ENA; |  		reg &= ~DWC3_DCTL_INITU2ENA; | ||||||
| --- a/drivers/usb/dwc3/gadget.c | --- a/drivers/usb/dwc3/gadget.c | ||||||
| +++ b/drivers/usb/dwc3/gadget.c | +++ b/drivers/usb/dwc3/gadget.c | ||||||
| @@ -3210,6 +3210,7 @@ int dwc3_gadget_init(struct dwc3 *dwc) | @@ -3211,6 +3211,7 @@ int dwc3_gadget_init(struct dwc3 *dwc) | ||||||
|  { |  { | ||||||
|  	int ret; |  	int ret; | ||||||
|  	int irq; |  	int irq; | ||||||
| @@ -550,7 +536,7 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> | |||||||
|   |   | ||||||
|  	irq = dwc3_gadget_get_irq(dwc); |  	irq = dwc3_gadget_get_irq(dwc); | ||||||
|  	if (irq < 0) { |  	if (irq < 0) { | ||||||
| @@ -3288,6 +3289,12 @@ int dwc3_gadget_init(struct dwc3 *dwc) | @@ -3290,6 +3291,12 @@ int dwc3_gadget_init(struct dwc3 *dwc) | ||||||
|   |   | ||||||
|  	dwc3_gadget_set_speed(&dwc->gadget, dwc->maximum_speed); |  	dwc3_gadget_set_speed(&dwc->gadget, dwc->maximum_speed); | ||||||
|   |   | ||||||
| @@ -754,15 +740,6 @@ Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com> | |||||||
|  	/* DR has been stopped in usb_gadget_unregister_driver() */ |  	/* DR has been stopped in usb_gadget_unregister_driver() */ | ||||||
|  	remove_proc_file(); |  	remove_proc_file(); | ||||||
|   |   | ||||||
| @@ -2569,7 +2579,7 @@ static int fsl_udc_remove(struct platfor |  | ||||||
|  	dma_pool_destroy(udc_controller->td_pool); |  | ||||||
|  	free_irq(udc_controller->irq, udc_controller); |  | ||||||
|  	iounmap(dr_regs); |  | ||||||
| -	if (pdata->operating_mode == FSL_USB2_DR_DEVICE) |  | ||||||
| +	if (res && (pdata->operating_mode == FSL_USB2_DR_DEVICE)) |  | ||||||
|  		release_mem_region(res->start, resource_size(res)); |  | ||||||
|   |  | ||||||
|  	/* free udc --wait for the release() finished */ |  | ||||||
| --- a/drivers/usb/gadget/udc/fsl_usb2_udc.h | --- a/drivers/usb/gadget/udc/fsl_usb2_udc.h | ||||||
| +++ b/drivers/usb/gadget/udc/fsl_usb2_udc.h | +++ b/drivers/usb/gadget/udc/fsl_usb2_udc.h | ||||||
| @@ -20,6 +20,10 @@ | @@ -20,6 +20,10 @@ | ||||||
|   | |||||||
| @@ -470,7 +470,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com> | |||||||
|   |   | ||||||
|  	/* On Vybrid, disable memory error detection interrupts |  	/* On Vybrid, disable memory error detection interrupts | ||||||
|  	 * and freeze mode. |  	 * and freeze mode. | ||||||
| @@ -1011,16 +1028,16 @@ static int flexcan_chip_start(struct net | @@ -1011,17 +1028,17 @@ static int flexcan_chip_start(struct net | ||||||
|  		 * and Correction of Memory Errors" to write to |  		 * and Correction of Memory Errors" to write to | ||||||
|  		 * MECR register |  		 * MECR register | ||||||
|  		 */ |  		 */ | ||||||
| @@ -485,6 +485,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com> | |||||||
|  		reg_mecr &= ~FLEXCAN_MECR_ECRWRDIS; |  		reg_mecr &= ~FLEXCAN_MECR_ECRWRDIS; | ||||||
| -		flexcan_write(reg_mecr, ®s->mecr); | -		flexcan_write(reg_mecr, ®s->mecr); | ||||||
| +		priv->write(reg_mecr, ®s->mecr); | +		priv->write(reg_mecr, ®s->mecr); | ||||||
|  |  		reg_mecr |= FLEXCAN_MECR_ECCDIS; | ||||||
|  		reg_mecr &= ~(FLEXCAN_MECR_NCEFAFRZ | FLEXCAN_MECR_HANCEI_MSK | |  		reg_mecr &= ~(FLEXCAN_MECR_NCEFAFRZ | FLEXCAN_MECR_HANCEI_MSK | | ||||||
|  			      FLEXCAN_MECR_FANCEI_MSK); |  			      FLEXCAN_MECR_FANCEI_MSK); | ||||||
| -		flexcan_write(reg_mecr, ®s->mecr); | -		flexcan_write(reg_mecr, ®s->mecr); | ||||||
| @@ -492,7 +493,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com> | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	err = flexcan_transceiver_enable(priv); |  	err = flexcan_transceiver_enable(priv); | ||||||
| @@ -1036,14 +1053,14 @@ static int flexcan_chip_start(struct net | @@ -1037,14 +1054,14 @@ static int flexcan_chip_start(struct net | ||||||
|   |   | ||||||
|  	/* enable interrupts atomically */ |  	/* enable interrupts atomically */ | ||||||
|  	disable_irq(dev->irq); |  	disable_irq(dev->irq); | ||||||
| @@ -511,7 +512,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com> | |||||||
|   |   | ||||||
|  	return 0; |  	return 0; | ||||||
|   |   | ||||||
| @@ -1068,10 +1085,10 @@ static void flexcan_chip_stop(struct net | @@ -1069,10 +1086,10 @@ static void flexcan_chip_stop(struct net | ||||||
|  	flexcan_chip_disable(priv); |  	flexcan_chip_disable(priv); | ||||||
|   |   | ||||||
|  	/* Disable all interrupts */ |  	/* Disable all interrupts */ | ||||||
| @@ -526,7 +527,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com> | |||||||
|   |   | ||||||
|  	flexcan_transceiver_disable(priv); |  	flexcan_transceiver_disable(priv); | ||||||
|  	priv->can.state = CAN_STATE_STOPPED; |  	priv->can.state = CAN_STATE_STOPPED; | ||||||
| @@ -1186,26 +1203,26 @@ static int register_flexcandev(struct ne | @@ -1187,26 +1204,26 @@ static int register_flexcandev(struct ne | ||||||
|  	err = flexcan_chip_disable(priv); |  	err = flexcan_chip_disable(priv); | ||||||
|  	if (err) |  	if (err) | ||||||
|  		goto out_disable_per; |  		goto out_disable_per; | ||||||
| @@ -558,7 +559,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com> | |||||||
|  	if (!(reg & FLEXCAN_MCR_FEN)) { |  	if (!(reg & FLEXCAN_MCR_FEN)) { | ||||||
|  		netdev_err(dev, "Could not enable RX FIFO, unsupported core\n"); |  		netdev_err(dev, "Could not enable RX FIFO, unsupported core\n"); | ||||||
|  		err = -ENODEV; |  		err = -ENODEV; | ||||||
| @@ -1233,8 +1250,12 @@ static void unregister_flexcandev(struct | @@ -1234,8 +1251,12 @@ static void unregister_flexcandev(struct | ||||||
|  static const struct of_device_id flexcan_of_match[] = { |  static const struct of_device_id flexcan_of_match[] = { | ||||||
|  	{ .compatible = "fsl,imx6q-flexcan", .data = &fsl_imx6q_devtype_data, }, |  	{ .compatible = "fsl,imx6q-flexcan", .data = &fsl_imx6q_devtype_data, }, | ||||||
|  	{ .compatible = "fsl,imx28-flexcan", .data = &fsl_imx28_devtype_data, }, |  	{ .compatible = "fsl,imx28-flexcan", .data = &fsl_imx28_devtype_data, }, | ||||||
| @@ -571,7 +572,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com> | |||||||
|  	{ /* sentinel */ }, |  	{ /* sentinel */ }, | ||||||
|  }; |  }; | ||||||
|  MODULE_DEVICE_TABLE(of, flexcan_of_match); |  MODULE_DEVICE_TABLE(of, flexcan_of_match); | ||||||
| @@ -1314,6 +1335,21 @@ static int flexcan_probe(struct platform | @@ -1315,6 +1336,21 @@ static int flexcan_probe(struct platform | ||||||
|  	dev->flags |= IFF_ECHO; |  	dev->flags |= IFF_ECHO; | ||||||
|   |   | ||||||
|  	priv = netdev_priv(dev); |  	priv = netdev_priv(dev); | ||||||
|   | |||||||
| @@ -286,15 +286,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  enum pci_barno { |  enum pci_barno { | ||||||
|  	BAR_0, |  	BAR_0, | ||||||
|  	BAR_1, |  	BAR_1, | ||||||
| @@ -92,6 +103,7 @@ struct pci_endpoint_test { | @@ -103,7 +114,7 @@ struct pci_endpoint_test { | ||||||
|  	void __iomem	*bar[6]; |  | ||||||
|  	struct completion irq_raised; |  | ||||||
|  	int		last_irq; |  | ||||||
| +	int		num_irqs; |  | ||||||
|  	/* mutex to protect the ioctls */ |  | ||||||
|  	struct mutex	mutex; |  | ||||||
|  	struct miscdevice miscdev; |  | ||||||
| @@ -102,7 +114,7 @@ struct pci_endpoint_test { |  | ||||||
|  struct pci_endpoint_test_data { |  struct pci_endpoint_test_data { | ||||||
|  	enum pci_barno test_reg_bar; |  	enum pci_barno test_reg_bar; | ||||||
|  	size_t alignment; |  	size_t alignment; | ||||||
| @@ -303,7 +295,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  }; |  }; | ||||||
|   |   | ||||||
|  static inline u32 pci_endpoint_test_readl(struct pci_endpoint_test *test, |  static inline u32 pci_endpoint_test_readl(struct pci_endpoint_test *test, | ||||||
| @@ -146,6 +158,100 @@ static irqreturn_t pci_endpoint_test_irq | @@ -147,6 +158,100 @@ static irqreturn_t pci_endpoint_test_irq | ||||||
|  	return IRQ_HANDLED; |  	return IRQ_HANDLED; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -404,7 +396,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  static bool pci_endpoint_test_bar(struct pci_endpoint_test *test, |  static bool pci_endpoint_test_bar(struct pci_endpoint_test *test, | ||||||
|  				  enum pci_barno barno) |  				  enum pci_barno barno) | ||||||
|  { |  { | ||||||
| @@ -178,6 +284,9 @@ static bool pci_endpoint_test_legacy_irq | @@ -179,6 +284,9 @@ static bool pci_endpoint_test_legacy_irq | ||||||
|  { |  { | ||||||
|  	u32 val; |  	u32 val; | ||||||
|   |   | ||||||
| @@ -414,7 +406,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  	pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_COMMAND, |  	pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_COMMAND, | ||||||
|  				 COMMAND_RAISE_LEGACY_IRQ); |  				 COMMAND_RAISE_LEGACY_IRQ); | ||||||
|  	val = wait_for_completion_timeout(&test->irq_raised, |  	val = wait_for_completion_timeout(&test->irq_raised, | ||||||
| @@ -189,20 +298,24 @@ static bool pci_endpoint_test_legacy_irq | @@ -190,20 +298,24 @@ static bool pci_endpoint_test_legacy_irq | ||||||
|  } |  } | ||||||
|   |   | ||||||
|  static bool pci_endpoint_test_msi_irq(struct pci_endpoint_test *test, |  static bool pci_endpoint_test_msi_irq(struct pci_endpoint_test *test, | ||||||
| @@ -443,9 +435,9 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  		return true; |  		return true; | ||||||
|   |   | ||||||
|  	return false; |  	return false; | ||||||
| @@ -226,10 +339,18 @@ static bool pci_endpoint_test_copy(struc | @@ -230,10 +342,18 @@ static bool pci_endpoint_test_copy(struc | ||||||
|  	u32 src_crc32; |  	if (size > SIZE_MAX - alignment) | ||||||
|  	u32 dst_crc32; |  		goto err; | ||||||
|   |   | ||||||
| +	if (size > SIZE_MAX - alignment) | +	if (size > SIZE_MAX - alignment) | ||||||
| +		goto err; | +		goto err; | ||||||
| @@ -463,7 +455,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  		ret = false; |  		ret = false; | ||||||
|  		goto err; |  		goto err; | ||||||
|  	} |  	} | ||||||
| @@ -255,7 +376,7 @@ static bool pci_endpoint_test_copy(struc | @@ -259,7 +379,7 @@ static bool pci_endpoint_test_copy(struc | ||||||
|  	orig_dst_addr = dma_alloc_coherent(dev, size + alignment, |  	orig_dst_addr = dma_alloc_coherent(dev, size + alignment, | ||||||
|  					   &orig_dst_phys_addr, GFP_KERNEL); |  					   &orig_dst_phys_addr, GFP_KERNEL); | ||||||
|  	if (!orig_dst_addr) { |  	if (!orig_dst_addr) { | ||||||
| @@ -472,7 +464,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  		ret = false; |  		ret = false; | ||||||
|  		goto err_orig_src_addr; |  		goto err_orig_src_addr; | ||||||
|  	} |  	} | ||||||
| @@ -277,8 +398,10 @@ static bool pci_endpoint_test_copy(struc | @@ -281,8 +401,10 @@ static bool pci_endpoint_test_copy(struc | ||||||
|  	pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_SIZE, |  	pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_SIZE, | ||||||
|  				 size); |  				 size); | ||||||
|   |   | ||||||
| @@ -484,9 +476,9 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|   |   | ||||||
|  	wait_for_completion(&test->irq_raised); |  	wait_for_completion(&test->irq_raised); | ||||||
|   |   | ||||||
| @@ -311,10 +434,18 @@ static bool pci_endpoint_test_write(stru | @@ -318,10 +440,18 @@ static bool pci_endpoint_test_write(stru | ||||||
|  	size_t alignment = test->alignment; |  	if (size > SIZE_MAX - alignment) | ||||||
|  	u32 crc32; |  		goto err; | ||||||
|   |   | ||||||
| +	if (size > SIZE_MAX - alignment) | +	if (size > SIZE_MAX - alignment) | ||||||
| +		goto err; | +		goto err; | ||||||
| @@ -504,7 +496,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  		ret = false; |  		ret = false; | ||||||
|  		goto err; |  		goto err; | ||||||
|  	} |  	} | ||||||
| @@ -341,8 +472,10 @@ static bool pci_endpoint_test_write(stru | @@ -348,8 +478,10 @@ static bool pci_endpoint_test_write(stru | ||||||
|   |   | ||||||
|  	pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_SIZE, size); |  	pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_SIZE, size); | ||||||
|   |   | ||||||
| @@ -516,9 +508,9 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|   |   | ||||||
|  	wait_for_completion(&test->irq_raised); |  	wait_for_completion(&test->irq_raised); | ||||||
|   |   | ||||||
| @@ -369,10 +502,18 @@ static bool pci_endpoint_test_read(struc | @@ -379,10 +511,18 @@ static bool pci_endpoint_test_read(struc | ||||||
|  	size_t alignment = test->alignment; |  	if (size > SIZE_MAX - alignment) | ||||||
|  	u32 crc32; |  		goto err; | ||||||
|   |   | ||||||
| +	if (size > SIZE_MAX - alignment) | +	if (size > SIZE_MAX - alignment) | ||||||
| +		goto err; | +		goto err; | ||||||
| @@ -536,7 +528,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  		ret = false; |  		ret = false; | ||||||
|  		goto err; |  		goto err; | ||||||
|  	} |  	} | ||||||
| @@ -393,8 +534,10 @@ static bool pci_endpoint_test_read(struc | @@ -403,8 +543,10 @@ static bool pci_endpoint_test_read(struc | ||||||
|   |   | ||||||
|  	pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_SIZE, size); |  	pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_SIZE, size); | ||||||
|   |   | ||||||
| @@ -548,7 +540,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|   |   | ||||||
|  	wait_for_completion(&test->irq_raised); |  	wait_for_completion(&test->irq_raised); | ||||||
|   |   | ||||||
| @@ -407,6 +550,38 @@ err: | @@ -417,6 +559,38 @@ err: | ||||||
|  	return ret; |  	return ret; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -587,7 +579,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  static long pci_endpoint_test_ioctl(struct file *file, unsigned int cmd, |  static long pci_endpoint_test_ioctl(struct file *file, unsigned int cmd, | ||||||
|  				    unsigned long arg) |  				    unsigned long arg) | ||||||
|  { |  { | ||||||
| @@ -426,7 +601,8 @@ static long pci_endpoint_test_ioctl(stru | @@ -436,7 +610,8 @@ static long pci_endpoint_test_ioctl(stru | ||||||
|  		ret = pci_endpoint_test_legacy_irq(test); |  		ret = pci_endpoint_test_legacy_irq(test); | ||||||
|  		break; |  		break; | ||||||
|  	case PCITEST_MSI: |  	case PCITEST_MSI: | ||||||
| @@ -597,7 +589,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  		break; |  		break; | ||||||
|  	case PCITEST_WRITE: |  	case PCITEST_WRITE: | ||||||
|  		ret = pci_endpoint_test_write(test, arg); |  		ret = pci_endpoint_test_write(test, arg); | ||||||
| @@ -437,6 +613,12 @@ static long pci_endpoint_test_ioctl(stru | @@ -447,6 +622,12 @@ static long pci_endpoint_test_ioctl(stru | ||||||
|  	case PCITEST_COPY: |  	case PCITEST_COPY: | ||||||
|  		ret = pci_endpoint_test_copy(test, arg); |  		ret = pci_endpoint_test_copy(test, arg); | ||||||
|  		break; |  		break; | ||||||
| @@ -610,7 +602,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  ret: |  ret: | ||||||
| @@ -452,9 +634,7 @@ static const struct file_operations pci_ | @@ -462,9 +643,7 @@ static const struct file_operations pci_ | ||||||
|  static int pci_endpoint_test_probe(struct pci_dev *pdev, |  static int pci_endpoint_test_probe(struct pci_dev *pdev, | ||||||
|  				   const struct pci_device_id *ent) |  				   const struct pci_device_id *ent) | ||||||
|  { |  { | ||||||
| @@ -620,7 +612,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  	int id; |  	int id; | ||||||
|  	char name[20]; |  	char name[20]; | ||||||
|  	enum pci_barno bar; |  	enum pci_barno bar; | ||||||
| @@ -476,12 +656,15 @@ static int pci_endpoint_test_probe(struc | @@ -486,12 +665,15 @@ static int pci_endpoint_test_probe(struc | ||||||
|  	test->alignment = 0; |  	test->alignment = 0; | ||||||
|  	test->pdev = pdev; |  	test->pdev = pdev; | ||||||
|   |   | ||||||
| @@ -637,7 +629,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	init_completion(&test->irq_raised); |  	init_completion(&test->irq_raised); | ||||||
| @@ -501,35 +684,21 @@ static int pci_endpoint_test_probe(struc | @@ -511,36 +693,21 @@ static int pci_endpoint_test_probe(struc | ||||||
|   |   | ||||||
|  	pci_set_master(pdev); |  	pci_set_master(pdev); | ||||||
|   |   | ||||||
| @@ -645,6 +637,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
| -		irq = pci_alloc_irq_vectors(pdev, 1, 32, PCI_IRQ_MSI); | -		irq = pci_alloc_irq_vectors(pdev, 1, 32, PCI_IRQ_MSI); | ||||||
| -		if (irq < 0) | -		if (irq < 0) | ||||||
| -			dev_err(dev, "failed to get MSI interrupts\n"); | -			dev_err(dev, "failed to get MSI interrupts\n"); | ||||||
|  | -		test->num_irqs = irq; | ||||||
| -	} | -	} | ||||||
| +	if (!pci_endpoint_test_alloc_irq_vectors(test, irq_type)) | +	if (!pci_endpoint_test_alloc_irq_vectors(test, irq_type)) | ||||||
| +		goto err_disable_irq; | +		goto err_disable_irq; | ||||||
| @@ -684,7 +677,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	test->base = test->bar[test_reg_bar]; |  	test->base = test->bar[test_reg_bar]; | ||||||
| @@ -545,24 +714,31 @@ static int pci_endpoint_test_probe(struc | @@ -556,24 +723,31 @@ static int pci_endpoint_test_probe(struc | ||||||
|  	id = ida_simple_get(&pci_endpoint_test_ida, 0, 0, GFP_KERNEL); |  	id = ida_simple_get(&pci_endpoint_test_ida, 0, 0, GFP_KERNEL); | ||||||
|  	if (id < 0) { |  	if (id < 0) { | ||||||
|  		err = id; |  		err = id; | ||||||
| @@ -720,20 +713,23 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  err_ida_remove: |  err_ida_remove: | ||||||
|  	ida_simple_remove(&pci_endpoint_test_ida, id); |  	ida_simple_remove(&pci_endpoint_test_ida, id); | ||||||
|   |   | ||||||
| @@ -571,9 +747,10 @@ err_iounmap: | @@ -583,11 +757,13 @@ err_iounmap: | ||||||
|  		if (test->bar[bar]) |  | ||||||
|  			pci_iounmap(pdev, test->bar[bar]); |  			pci_iounmap(pdev, test->bar[bar]); | ||||||
|  	} |  	} | ||||||
|  |   | ||||||
|  | -	for (i = 0; i < irq; i++) | ||||||
|  | -		devm_free_irq(dev, pdev->irq + i, test); | ||||||
| +	pci_endpoint_test_release_irq(test); | +	pci_endpoint_test_release_irq(test); | ||||||
|   |   | ||||||
| -err_disable_msi: |  err_disable_msi: | ||||||
| -	pci_disable_msi(pdev); |  	pci_disable_msi(pdev); | ||||||
|  | + | ||||||
| +err_disable_irq: | +err_disable_irq: | ||||||
| +	pci_endpoint_test_free_irq_vectors(test); | +	pci_endpoint_test_free_irq_vectors(test); | ||||||
|  	pci_release_regions(pdev); |  	pci_release_regions(pdev); | ||||||
|   |   | ||||||
|  err_disable_pdev: |  err_disable_pdev: | ||||||
| @@ -595,12 +772,16 @@ static void pci_endpoint_test_remove(str | @@ -610,14 +786,15 @@ static void pci_endpoint_test_remove(str | ||||||
|  		return; |  		return; | ||||||
|   |   | ||||||
|  	misc_deregister(&test->miscdev); |  	misc_deregister(&test->miscdev); | ||||||
| @@ -743,15 +739,16 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> | |||||||
|  		if (test->bar[bar]) |  		if (test->bar[bar]) | ||||||
|  			pci_iounmap(pdev, test->bar[bar]); |  			pci_iounmap(pdev, test->bar[bar]); | ||||||
|  	} |  	} | ||||||
|  | -	for (i = 0; i < test->num_irqs; i++) | ||||||
|  | -		devm_free_irq(&pdev->dev, pdev->irq + i, test); | ||||||
| -	pci_disable_msi(pdev); | -	pci_disable_msi(pdev); | ||||||
| + | + | ||||||
| +	pci_endpoint_test_release_irq(test); | +	pci_endpoint_test_release_irq(test); | ||||||
| +	pci_endpoint_test_free_irq_vectors(test); | +	pci_endpoint_test_free_irq_vectors(test); | ||||||
| + |  | ||||||
|  	pci_release_regions(pdev); |  	pci_release_regions(pdev); | ||||||
|  	pci_disable_device(pdev); |  	pci_disable_device(pdev); | ||||||
|  } |  } | ||||||
| @@ -608,6 +789,7 @@ static void pci_endpoint_test_remove(str | @@ -625,6 +802,7 @@ static void pci_endpoint_test_remove(str | ||||||
|  static const struct pci_device_id pci_endpoint_test_tbl[] = { |  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_DRA74x) }, | ||||||
|  	{ PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA72x) }, |  	{ PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA72x) }, | ||||||
|   | |||||||
| @@ -159,7 +159,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | |||||||
|  #include <linux/slab.h> |  #include <linux/slab.h> | ||||||
|  #include <linux/rtnetlink.h> |  #include <linux/rtnetlink.h> | ||||||
|  #include <linux/sched/signal.h> |  #include <linux/sched/signal.h> | ||||||
| @@ -2212,6 +2213,9 @@ static int __ethtool_get_module_info(str | @@ -2214,6 +2215,9 @@ static int __ethtool_get_module_info(str | ||||||
|  	const struct ethtool_ops *ops = dev->ethtool_ops; |  	const struct ethtool_ops *ops = dev->ethtool_ops; | ||||||
|  	struct phy_device *phydev = dev->phydev; |  	struct phy_device *phydev = dev->phydev; | ||||||
|   |   | ||||||
| @@ -169,7 +169,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | |||||||
|  	if (phydev && phydev->drv && phydev->drv->module_info) |  	if (phydev && phydev->drv && phydev->drv->module_info) | ||||||
|  		return phydev->drv->module_info(phydev, modinfo); |  		return phydev->drv->module_info(phydev, modinfo); | ||||||
|   |   | ||||||
| @@ -2246,6 +2250,9 @@ static int __ethtool_get_module_eeprom(s | @@ -2248,6 +2252,9 @@ static int __ethtool_get_module_eeprom(s | ||||||
|  	const struct ethtool_ops *ops = dev->ethtool_ops; |  	const struct ethtool_ops *ops = dev->ethtool_ops; | ||||||
|  	struct phy_device *phydev = dev->phydev; |  	struct phy_device *phydev = dev->phydev; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,11 +0,0 @@ | |||||||
| --- a/drivers/mtd/spi-nor/spi-nor.c |  | ||||||
| +++ b/drivers/mtd/spi-nor/spi-nor.c |  | ||||||
| @@ -1100,7 +1100,7 @@ static const struct flash_info spi_nor_i |  | ||||||
|  	{ "mx25l25635e", INFO(0xc22019, 0, 64 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, |  | ||||||
|  	{ "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) }, |  | ||||||
|  	{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) }, |  | ||||||
| -	{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, |  | ||||||
| +	{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) }, |  | ||||||
|  	{ "mx66u51235f", INFO(0xc2253a, 0, 64 * 1024, 1024, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) }, |  | ||||||
|  	{ "mx66l1g45g",  INFO(0xc2201b, 0, 64 * 1024, 2048, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, |  | ||||||
|  	{ "mx66l1g55g",  INFO(0xc2261b, 0, 64 * 1024, 2048, SPI_NOR_QUAD_READ) }, |  | ||||||
| @@ -474,7 +474,12 @@ CONFIG_X86_FAST_FEATURE_TESTS=y | |||||||
| CONFIG_X86_FEATURE_NAMES=y | CONFIG_X86_FEATURE_NAMES=y | ||||||
| CONFIG_X86_GENERIC=y | CONFIG_X86_GENERIC=y | ||||||
| # CONFIG_X86_GX_SUSPMOD is not set | # CONFIG_X86_GX_SUSPMOD is not set | ||||||
|  | # CONFIG_X86_INTEL_MPX is not set | ||||||
|  | # CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS is not set | ||||||
| # CONFIG_X86_INTEL_PSTATE is not set | # CONFIG_X86_INTEL_PSTATE is not set | ||||||
|  | CONFIG_X86_INTEL_TSX_MODE_OFF=y | ||||||
|  | # CONFIG_X86_INTEL_TSX_MODE_ON is not set | ||||||
|  | # CONFIG_X86_INTEL_TSX_MODE_AUTO is not set | ||||||
| CONFIG_X86_INTEL_USERCOPY=y | CONFIG_X86_INTEL_USERCOPY=y | ||||||
| CONFIG_X86_INTERNODE_CACHE_SHIFT=6 | CONFIG_X86_INTERNODE_CACHE_SHIFT=6 | ||||||
| CONFIG_X86_IO_APIC=y | CONFIG_X86_IO_APIC=y | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Koen Vandeputte
					Koen Vandeputte