diff options
Diffstat (limited to 'include/linux')
57 files changed, 316 insertions, 94 deletions
diff --git a/include/linux/ata.h b/include/linux/ata.h index 8f7a3d68371..ee0bd952405 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h @@ -954,7 +954,7 @@ static inline int atapi_cdb_len(const u16 *dev_id)  	}  } -static inline bool atapi_command_packet_set(const u16 *dev_id) +static inline int atapi_command_packet_set(const u16 *dev_id)  {  	return (dev_id[ATA_ID_CONFIG] >> 8) & 0x1f;  } diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h index 0ea61e07a91..7c2e030e72f 100644 --- a/include/linux/blktrace_api.h +++ b/include/linux/blktrace_api.h @@ -12,7 +12,6 @@  struct blk_trace {  	int trace_state; -	bool rq_based;  	struct rchan *rchan;  	unsigned long __percpu *sequence;  	unsigned char __percpu *msg_data; diff --git a/include/linux/capability.h b/include/linux/capability.h index 98503b79236..d9a4f7f40f3 100644 --- a/include/linux/capability.h +++ b/include/linux/capability.h @@ -35,6 +35,7 @@ struct cpu_vfs_cap_data {  #define _KERNEL_CAP_T_SIZE     (sizeof(kernel_cap_t)) +struct file;  struct inode;  struct dentry;  struct user_namespace; @@ -211,6 +212,7 @@ extern bool capable(int cap);  extern bool ns_capable(struct user_namespace *ns, int cap);  extern bool nsown_capable(int cap);  extern bool inode_capable(const struct inode *inode, int cap); +extern bool file_ns_capable(const struct file *file, struct user_namespace *ns, int cap);  /* audit system wants to get cap info from files as well */  extern int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data *cpu_caps); diff --git a/include/linux/compat.h b/include/linux/compat.h index 76a87fb57ac..377cd8c3395 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h @@ -141,11 +141,11 @@ typedef struct {  } compat_sigset_t;  struct compat_sigaction { -#ifndef __ARCH_HAS_ODD_SIGACTION +#ifndef __ARCH_HAS_IRIX_SIGACTION  	compat_uptr_t			sa_handler;  	compat_ulong_t			sa_flags;  #else -	compat_ulong_t			sa_flags; +	compat_uint_t			sa_flags;  	compat_uptr_t			sa_handler;  #endif  #ifdef __ARCH_HAS_SA_RESTORER diff --git a/include/linux/debug_locks.h b/include/linux/debug_locks.h index a975de1ff59..3bd46f76675 100644 --- a/include/linux/debug_locks.h +++ b/include/linux/debug_locks.h @@ -51,7 +51,7 @@ struct task_struct;  extern void debug_show_all_locks(void);  extern void debug_show_held_locks(struct task_struct *task);  extern void debug_check_no_locks_freed(const void *from, unsigned long len); -extern void debug_check_no_locks_held(void); +extern void debug_check_no_locks_held(struct task_struct *task);  #else  static inline void debug_show_all_locks(void)  { @@ -67,7 +67,7 @@ debug_check_no_locks_freed(const void *from, unsigned long len)  }  static inline void -debug_check_no_locks_held(void) +debug_check_no_locks_held(struct task_struct *task)  {  }  #endif diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h index e83ef39b3be..fe8c4476f7e 100644 --- a/include/linux/devfreq.h +++ b/include/linux/devfreq.h @@ -213,7 +213,7 @@ struct devfreq_simple_ondemand_data {  #endif  #else /* !CONFIG_PM_DEVFREQ */ -static struct devfreq *devfreq_add_device(struct device *dev, +static inline struct devfreq *devfreq_add_device(struct device *dev,  					  struct devfreq_dev_profile *profile,  					  const char *governor_name,  					  void *data) @@ -221,34 +221,34 @@ static struct devfreq *devfreq_add_device(struct device *dev,  	return NULL;  } -static int devfreq_remove_device(struct devfreq *devfreq) +static inline int devfreq_remove_device(struct devfreq *devfreq)  {  	return 0;  } -static int devfreq_suspend_device(struct devfreq *devfreq) +static inline int devfreq_suspend_device(struct devfreq *devfreq)  {  	return 0;  } -static int devfreq_resume_device(struct devfreq *devfreq) +static inline int devfreq_resume_device(struct devfreq *devfreq)  {  	return 0;  } -static struct opp *devfreq_recommended_opp(struct device *dev, +static inline struct opp *devfreq_recommended_opp(struct device *dev,  					   unsigned long *freq, u32 flags)  { -	return -EINVAL; +	return ERR_PTR(-EINVAL);  } -static int devfreq_register_opp_notifier(struct device *dev, +static inline int devfreq_register_opp_notifier(struct device *dev,  					 struct devfreq *devfreq)  {  	return -EINVAL;  } -static int devfreq_unregister_opp_notifier(struct device *dev, +static inline int devfreq_unregister_opp_notifier(struct device *dev,  					   struct devfreq *devfreq)  {  	return -EINVAL; diff --git a/include/linux/edac.h b/include/linux/edac.h index 4fd4999ccb5..0b763276f61 100644 --- a/include/linux/edac.h +++ b/include/linux/edac.h @@ -561,7 +561,6 @@ struct csrow_info {  	u32 ue_count;		/* Uncorrectable Errors for this csrow */  	u32 ce_count;		/* Correctable Errors for this csrow */ -	u32 nr_pages;		/* combined pages count of all channels */  	struct mem_ctl_info *mci;	/* the parent */ @@ -676,11 +675,11 @@ struct mem_ctl_info {  	 * sees memory sticks ("dimms"), and the ones that sees memory ranks.  	 * All old memory controllers enumerate memories per rank, but most  	 * of the recent drivers enumerate memories per DIMM, instead. -	 * When the memory controller is per rank, mem_is_per_rank is true. +	 * When the memory controller is per rank, csbased is true.  	 */  	unsigned n_layers;  	struct edac_mc_layer *layers; -	bool mem_is_per_rank; +	bool csbased;  	/*  	 * DIMM info. Will eventually remove the entire csrows_info some day @@ -741,8 +740,6 @@ struct mem_ctl_info {  	u32 fake_inject_ue;  	u16 fake_inject_count;  #endif -	__u8 csbased : 1,	/* csrow-based memory controller */ -	     __resv  : 7;  };  #endif diff --git a/include/linux/efi.h b/include/linux/efi.h index 9bf2f1fcae2..3d7df3d32c6 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -333,6 +333,7 @@ typedef efi_status_t efi_query_capsule_caps_t(efi_capsule_header_t **capsules,  					      unsigned long count,  					      u64 *max_size,  					      int *reset_type); +typedef efi_status_t efi_query_variable_store_t(u32 attributes, unsigned long size);  /*   *  EFI Configuration Table and GUID definitions @@ -575,9 +576,15 @@ extern void efi_enter_virtual_mode (void);	/* switch EFI to virtual mode, if pos  #ifdef CONFIG_X86  extern void efi_late_init(void);  extern void efi_free_boot_services(void); +extern efi_status_t efi_query_variable_store(u32 attributes, unsigned long size);  #else  static inline void efi_late_init(void) {}  static inline void efi_free_boot_services(void) {} + +static inline efi_status_t efi_query_variable_store(u32 attributes, unsigned long size) +{ +	return EFI_SUCCESS; +}  #endif  extern void __iomem *efi_lookup_mapped_addr(u64 phys_addr);  extern u64 efi_get_iobase (void); @@ -731,7 +738,7 @@ struct efivar_operations {  	efi_get_variable_t *get_variable;  	efi_get_next_variable_t *get_next_variable;  	efi_set_variable_t *set_variable; -	efi_query_variable_info_t *query_variable_info; +	efi_query_variable_store_t *query_variable_store;  };  struct efivars { diff --git a/include/linux/freezer.h b/include/linux/freezer.h index 043a5cf8b5b..e70df40d84f 100644 --- a/include/linux/freezer.h +++ b/include/linux/freezer.h @@ -3,7 +3,6 @@  #ifndef FREEZER_H_INCLUDED  #define FREEZER_H_INCLUDED -#include <linux/debug_locks.h>  #include <linux/sched.h>  #include <linux/wait.h>  #include <linux/atomic.h> @@ -49,8 +48,6 @@ extern void thaw_kernel_threads(void);  static inline bool try_to_freeze(void)  { -	if (!(current->flags & PF_NOFREEZE)) -		debug_check_no_locks_held();  	might_sleep();  	if (likely(!freezing(current)))  		return false; diff --git a/include/linux/fs_struct.h b/include/linux/fs_struct.h index 729eded4b24..2b93a9a5a1e 100644 --- a/include/linux/fs_struct.h +++ b/include/linux/fs_struct.h @@ -50,4 +50,6 @@ static inline void get_fs_root_and_pwd(struct fs_struct *fs, struct path *root,  	spin_unlock(&fs->lock);  } +extern bool current_chrooted(void); +  #endif /* _LINUX_FS_STRUCT_H */ diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index e5ca8ef50e9..52da2a25079 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h @@ -89,6 +89,7 @@ typedef void (*ftrace_func_t)(unsigned long ip, unsigned long parent_ip,   *            that the call back has its own recursion protection. If it does   *            not set this, then the ftrace infrastructure will add recursion   *            protection for the caller. + * STUB   - The ftrace_ops is just a place holder.   */  enum {  	FTRACE_OPS_FL_ENABLED			= 1 << 0, @@ -98,6 +99,7 @@ enum {  	FTRACE_OPS_FL_SAVE_REGS			= 1 << 4,  	FTRACE_OPS_FL_SAVE_REGS_IF_SUPPORTED	= 1 << 5,  	FTRACE_OPS_FL_RECURSION_SAFE		= 1 << 6, +	FTRACE_OPS_FL_STUB			= 1 << 7,  };  struct ftrace_ops { @@ -394,7 +396,6 @@ ssize_t ftrace_filter_write(struct file *file, const char __user *ubuf,  			    size_t cnt, loff_t *ppos);  ssize_t ftrace_notrace_write(struct file *file, const char __user *ubuf,  			     size_t cnt, loff_t *ppos); -loff_t ftrace_regex_lseek(struct file *file, loff_t offset, int whence);  int ftrace_regex_release(struct inode *inode, struct file *file);  void __init @@ -567,6 +568,8 @@ static inline int  ftrace_regex_release(struct inode *inode, struct file *file) { return -ENODEV; }  #endif /* CONFIG_DYNAMIC_FTRACE */ +loff_t ftrace_filter_lseek(struct file *file, loff_t offset, int whence); +  /* totally disable ftrace - can not re-enable after this */  void ftrace_kill(void); diff --git a/include/linux/hash.h b/include/linux/hash.h index 61c97ae22e0..f09a0ae4d85 100644 --- a/include/linux/hash.h +++ b/include/linux/hash.h @@ -15,6 +15,7 @@   */  #include <asm/types.h> +#include <linux/compiler.h>  /* 2^31 + 2^29 - 2^25 + 2^22 - 2^19 - 2^16 + 1 */  #define GOLDEN_RATIO_PRIME_32 0x9e370001UL @@ -31,7 +32,7 @@  #error Wordsize not 32 or 64  #endif -static inline u64 hash_64(u64 val, unsigned int bits) +static __always_inline u64 hash_64(u64 val, unsigned int bits)  {  	u64 hash = val; diff --git a/include/linux/idr.h b/include/linux/idr.h index a6f38b5c34e..2640c7e99e5 100644 --- a/include/linux/idr.h +++ b/include/linux/idr.h @@ -73,8 +73,6 @@ struct idr {   */  void *idr_find_slowpath(struct idr *idp, int id); -int idr_pre_get(struct idr *idp, gfp_t gfp_mask); -int idr_get_new_above(struct idr *idp, void *ptr, int starting_id, int *id);  void idr_preload(gfp_t gfp_mask);  int idr_alloc(struct idr *idp, void *ptr, int start, int end, gfp_t gfp_mask);  int idr_for_each(struct idr *idp, @@ -99,7 +97,7 @@ static inline void idr_preload_end(void)  /**   * idr_find - return pointer for given id - * @idp: idr handle + * @idr: idr handle   * @id: lookup key   *   * Return the pointer given the id it has been registered with.  A %NULL @@ -120,19 +118,6 @@ static inline void *idr_find(struct idr *idr, int id)  }  /** - * idr_get_new - allocate new idr entry - * @idp: idr handle - * @ptr: pointer you want associated with the id - * @id: pointer to the allocated handle - * - * Simple wrapper around idr_get_new_above() w/ @starting_id of zero. - */ -static inline int idr_get_new(struct idr *idp, void *ptr, int *id) -{ -	return idr_get_new_above(idp, ptr, 0, id); -} - -/**   * idr_for_each_entry - iterate over an idr's elements of a given type   * @idp:     idr handle   * @entry:   the type * to use as cursor @@ -143,7 +128,56 @@ static inline int idr_get_new(struct idr *idp, void *ptr, int *id)  	     entry != NULL;                                             \  	     ++id, entry = (typeof(entry))idr_get_next((idp), &(id))) -void __idr_remove_all(struct idr *idp);	/* don't use */ +/* + * Don't use the following functions.  These exist only to suppress + * deprecated warnings on EXPORT_SYMBOL()s. + */ +int __idr_pre_get(struct idr *idp, gfp_t gfp_mask); +int __idr_get_new_above(struct idr *idp, void *ptr, int starting_id, int *id); +void __idr_remove_all(struct idr *idp); + +/** + * idr_pre_get - reserve resources for idr allocation + * @idp:	idr handle + * @gfp_mask:	memory allocation flags + * + * Part of old alloc interface.  This is going away.  Use + * idr_preload[_end]() and idr_alloc() instead. + */ +static inline int __deprecated idr_pre_get(struct idr *idp, gfp_t gfp_mask) +{ +	return __idr_pre_get(idp, gfp_mask); +} + +/** + * idr_get_new_above - allocate new idr entry above or equal to a start id + * @idp: idr handle + * @ptr: pointer you want associated with the id + * @starting_id: id to start search at + * @id: pointer to the allocated handle + * + * Part of old alloc interface.  This is going away.  Use + * idr_preload[_end]() and idr_alloc() instead. + */ +static inline int __deprecated idr_get_new_above(struct idr *idp, void *ptr, +						 int starting_id, int *id) +{ +	return __idr_get_new_above(idp, ptr, starting_id, id); +} + +/** + * idr_get_new - allocate new idr entry + * @idp: idr handle + * @ptr: pointer you want associated with the id + * @id: pointer to the allocated handle + * + * Part of old alloc interface.  This is going away.  Use + * idr_preload[_end]() and idr_alloc() instead. + */ +static inline int __deprecated idr_get_new(struct idr *idp, void *ptr, int *id) +{ +	return __idr_get_new_above(idp, ptr, 0, id); +}  /**   * idr_remove_all - remove all ids from the given idr tree diff --git a/include/linux/iio/common/st_sensors.h b/include/linux/iio/common/st_sensors.h index 1f86a97ab2e..8bd12be0b02 100644 --- a/include/linux/iio/common/st_sensors.h +++ b/include/linux/iio/common/st_sensors.h @@ -227,14 +227,17 @@ struct st_sensor_data {  };  #ifdef CONFIG_IIO_BUFFER +irqreturn_t st_sensors_trigger_handler(int irq, void *p); + +int st_sensors_get_buffer_element(struct iio_dev *indio_dev, u8 *buf); +#endif + +#ifdef CONFIG_IIO_TRIGGER  int st_sensors_allocate_trigger(struct iio_dev *indio_dev,  				const struct iio_trigger_ops *trigger_ops);  void st_sensors_deallocate_trigger(struct iio_dev *indio_dev); -irqreturn_t st_sensors_trigger_handler(int irq, void *p); - -int st_sensors_get_buffer_element(struct iio_dev *indio_dev, u8 *buf);  #else  static inline int st_sensors_allocate_trigger(struct iio_dev *indio_dev,  				const struct iio_trigger_ops *trigger_ops) diff --git a/include/linux/irq_work.h b/include/linux/irq_work.h index f5dbce50466..66017028dcb 100644 --- a/include/linux/irq_work.h +++ b/include/linux/irq_work.h @@ -37,7 +37,7 @@ void irq_work_sync(struct irq_work *work);  #ifdef CONFIG_IRQ_WORK  bool irq_work_needs_cpu(void);  #else -static bool irq_work_needs_cpu(void) { return false; } +static inline bool irq_work_needs_cpu(void) { return false; }  #endif  #endif /* _LINUX_IRQ_WORK_H */ diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 80d36874689..79fdd80a42d 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -390,7 +390,6 @@ extern struct pid *session_of_pgrp(struct pid *pgrp);  unsigned long int_sqrt(unsigned long);  extern void bust_spinlocks(int yes); -extern void wake_up_klogd(void);  extern int oops_in_progress;		/* If set, an oops, panic(), BUG() or die() is in progress */  extern int panic_timeout;  extern int panic_on_oops; diff --git a/include/linux/kexec.h b/include/linux/kexec.h index d2e6927bbaa..d78d28a733b 100644 --- a/include/linux/kexec.h +++ b/include/linux/kexec.h @@ -200,6 +200,8 @@ extern size_t vmcoreinfo_max_size;  int __init parse_crashkernel(char *cmdline, unsigned long long system_ram,  		unsigned long long *crash_size, unsigned long long *crash_base); +int parse_crashkernel_high(char *cmdline, unsigned long long system_ram, +		unsigned long long *crash_size, unsigned long long *crash_base);  int parse_crashkernel_low(char *cmdline, unsigned long long system_ram,  		unsigned long long *crash_size, unsigned long long *crash_base);  int crash_shrink_memory(unsigned long new_size); diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index cad77fe09d7..c1395825192 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -518,7 +518,7 @@ int kvm_write_guest(struct kvm *kvm, gpa_t gpa, const void *data,  int kvm_write_guest_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc,  			   void *data, unsigned long len);  int kvm_gfn_to_hva_cache_init(struct kvm *kvm, struct gfn_to_hva_cache *ghc, -			      gpa_t gpa); +			      gpa_t gpa, unsigned long len);  int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len);  int kvm_clear_guest(struct kvm *kvm, gpa_t gpa, unsigned long len);  struct kvm_memory_slot *gfn_to_memslot(struct kvm *kvm, gfn_t gfn); diff --git a/include/linux/kvm_types.h b/include/linux/kvm_types.h index fa7cc7244cb..b0bcce0ddc9 100644 --- a/include/linux/kvm_types.h +++ b/include/linux/kvm_types.h @@ -71,6 +71,7 @@ struct gfn_to_hva_cache {  	u64 generation;  	gpa_t gpa;  	unsigned long hva; +	unsigned long len;  	struct kvm_memory_slot *memslot;  }; diff --git a/include/linux/libata.h b/include/linux/libata.h index 91c9d109e5f..eae7a053dc5 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h @@ -398,6 +398,7 @@ enum {  	ATA_HORKAGE_NOSETXFER	= (1 << 14),	/* skip SETXFER, SATA only */  	ATA_HORKAGE_BROKEN_FPDMA_AA	= (1 << 15),	/* skip AA */  	ATA_HORKAGE_DUMP_ID	= (1 << 16),	/* dump IDENTIFY data */ +	ATA_HORKAGE_MAX_SEC_LBA48 = (1 << 17),	/* Set max sects to 65535 */  	 /* DMA mask for user DMA control: User visible values; DO NOT  	    renumber */ diff --git a/include/linux/list.h b/include/linux/list.h index d991cc147c9..6a1f8df9144 100644 --- a/include/linux/list.h +++ b/include/linux/list.h @@ -667,7 +667,9 @@ static inline void hlist_move_list(struct hlist_head *old,  	     pos = n)  #define hlist_entry_safe(ptr, type, member) \ -	(ptr) ? hlist_entry(ptr, type, member) : NULL +	({ typeof(ptr) ____ptr = (ptr); \ +	   ____ptr ? hlist_entry(____ptr, type, member) : NULL; \ +	})  /**   * hlist_for_each_entry	- iterate over list of given type diff --git a/include/linux/mfd/max77693-private.h b/include/linux/mfd/max77693-private.h index 5b18ecde69b..1aa4f13cdfa 100644 --- a/include/linux/mfd/max77693-private.h +++ b/include/linux/mfd/max77693-private.h @@ -106,6 +106,29 @@ enum max77693_muic_reg {  	MAX77693_MUIC_REG_END,  }; +/* MAX77693 INTMASK1~2 Register */ +#define INTMASK1_ADC1K_SHIFT		3 +#define INTMASK1_ADCERR_SHIFT		2 +#define INTMASK1_ADCLOW_SHIFT		1 +#define INTMASK1_ADC_SHIFT		0 +#define INTMASK1_ADC1K_MASK		(1 << INTMASK1_ADC1K_SHIFT) +#define INTMASK1_ADCERR_MASK		(1 << INTMASK1_ADCERR_SHIFT) +#define INTMASK1_ADCLOW_MASK		(1 << INTMASK1_ADCLOW_SHIFT) +#define INTMASK1_ADC_MASK		(1 << INTMASK1_ADC_SHIFT) + +#define INTMASK2_VIDRM_SHIFT		5 +#define INTMASK2_VBVOLT_SHIFT		4 +#define INTMASK2_DXOVP_SHIFT		3 +#define INTMASK2_DCDTMR_SHIFT		2 +#define INTMASK2_CHGDETRUN_SHIFT	1 +#define INTMASK2_CHGTYP_SHIFT		0 +#define INTMASK2_VIDRM_MASK		(1 << INTMASK2_VIDRM_SHIFT) +#define INTMASK2_VBVOLT_MASK		(1 << INTMASK2_VBVOLT_SHIFT) +#define INTMASK2_DXOVP_MASK		(1 << INTMASK2_DXOVP_SHIFT) +#define INTMASK2_DCDTMR_MASK		(1 << INTMASK2_DCDTMR_SHIFT) +#define INTMASK2_CHGDETRUN_MASK		(1 << INTMASK2_CHGDETRUN_SHIFT) +#define INTMASK2_CHGTYP_MASK		(1 << INTMASK2_CHGTYP_SHIFT) +  /* MAX77693 MUIC - STATUS1~3 Register */  #define STATUS1_ADC_SHIFT		(0)  #define STATUS1_ADCLOW_SHIFT		(5) diff --git a/include/linux/mfd/palmas.h b/include/linux/mfd/palmas.h index a4d13d7cd00..3bbda22721e 100644 --- a/include/linux/mfd/palmas.h +++ b/include/linux/mfd/palmas.h @@ -221,6 +221,7 @@ struct palmas_clk_platform_data {  };  struct palmas_platform_data { +	int irq_flags;  	int gpio_base;  	/* bit value to be loaded to the POWER_CTRL register */ diff --git a/include/linux/mfd/tps65912.h b/include/linux/mfd/tps65912.h index aaceab402ec..6d309032dc0 100644 --- a/include/linux/mfd/tps65912.h +++ b/include/linux/mfd/tps65912.h @@ -323,5 +323,6 @@ int tps65912_device_init(struct tps65912 *tps65912);  void tps65912_device_exit(struct tps65912 *tps65912);  int tps65912_irq_init(struct tps65912 *tps65912, int irq,  			struct tps65912_platform_data *pdata); +int tps65912_irq_exit(struct tps65912 *tps65912);  #endif /*  __LINUX_MFD_TPS65912_H */ diff --git a/include/linux/mfd/wm831x/auxadc.h b/include/linux/mfd/wm831x/auxadc.h index b132067e9e9..867aa23f937 100644 --- a/include/linux/mfd/wm831x/auxadc.h +++ b/include/linux/mfd/wm831x/auxadc.h @@ -15,6 +15,8 @@  #ifndef __MFD_WM831X_AUXADC_H__  #define __MFD_WM831X_AUXADC_H__ +struct wm831x; +  /*   * R16429 (0x402D) - AuxADC Data   */ diff --git a/include/linux/mfd/wm831x/core.h b/include/linux/mfd/wm831x/core.h index 4a3b83a7761..76c22648436 100644 --- a/include/linux/mfd/wm831x/core.h +++ b/include/linux/mfd/wm831x/core.h @@ -20,6 +20,7 @@  #include <linux/irqdomain.h>  #include <linux/list.h>  #include <linux/regmap.h> +#include <linux/mfd/wm831x/auxadc.h>  /*   * Register values. @@ -355,7 +356,6 @@ enum wm831x_parent {  };  struct wm831x; -enum wm831x_auxadc;  typedef int (*wm831x_auxadc_read_fn)(struct wm831x *wm831x,  				     enum wm831x_auxadc input); diff --git a/include/linux/mm.h b/include/linux/mm.h index 7acc9dc73c9..e2091b88d24 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -87,7 +87,6 @@ extern unsigned int kobjsize(const void *objp);  #define VM_PFNMAP	0x00000400	/* Page-ranges managed without "struct page", just pure PFN */  #define VM_DENYWRITE	0x00000800	/* ETXTBSY on write attempts.. */ -#define VM_POPULATE     0x00001000  #define VM_LOCKED	0x00002000  #define VM_IO           0x00004000	/* Memory mapped I/O or similar */ @@ -1612,6 +1611,8 @@ int vm_insert_pfn(struct vm_area_struct *vma, unsigned long addr,  			unsigned long pfn);  int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr,  			unsigned long pfn); +int vm_iomap_memory(struct vm_area_struct *vma, phys_addr_t start, unsigned long len); +  struct page *follow_page_mask(struct vm_area_struct *vma,  			      unsigned long address, unsigned int foll_flags, diff --git a/include/linux/mman.h b/include/linux/mman.h index 61c7a87e5d2..9aa863da287 100644 --- a/include/linux/mman.h +++ b/include/linux/mman.h @@ -79,8 +79,6 @@ calc_vm_flag_bits(unsigned long flags)  {  	return _calc_vm_trans(flags, MAP_GROWSDOWN,  VM_GROWSDOWN ) |  	       _calc_vm_trans(flags, MAP_DENYWRITE,  VM_DENYWRITE ) | -	       ((flags & MAP_LOCKED) ? (VM_LOCKED | VM_POPULATE) : 0) | -	       (((flags & (MAP_POPULATE | MAP_NONBLOCK)) == MAP_POPULATE) ? -							VM_POPULATE : 0); +	       _calc_vm_trans(flags, MAP_LOCKED,     VM_LOCKED    );  }  #endif /* _LINUX_MMAN_H */ diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index ede274957e0..c74092eebf5 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -527,7 +527,7 @@ static inline int zone_is_oom_locked(const struct zone *zone)  	return test_bit(ZONE_OOM_LOCKED, &zone->flags);  } -static inline unsigned zone_end_pfn(const struct zone *zone) +static inline unsigned long zone_end_pfn(const struct zone *zone)  {  	return zone->zone_start_pfn + zone->spanned_pages;  } diff --git a/include/linux/mount.h b/include/linux/mount.h index d7029f4a191..73005f9957e 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h @@ -47,6 +47,8 @@ struct mnt_namespace;  #define MNT_INTERNAL	0x4000 +#define MNT_LOCK_READONLY	0x400000 +  struct vfsmount {  	struct dentry *mnt_root;	/* root of the mounted tree */  	struct super_block *mnt_sb;	/* pointer to superblock */ diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index 7ccb3c59ed6..ef52d9c9145 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h @@ -187,6 +187,13 @@ typedef enum {   * This happens with the Renesas AG-AND chips, possibly others.   */  #define BBT_AUTO_REFRESH	0x00000080 +/* + * Chip requires ready check on read (for auto-incremented sequential read). + * True only for small page devices; large page devices do not support + * autoincrement. + */ +#define NAND_NEED_READRDY	0x00000100 +  /* Chip does not allow subpage writes */  #define NAND_NO_SUBPAGE_WRITE	0x00000200 diff --git a/include/linux/mxsfb.h b/include/linux/mxsfb.h index f14943d5531..f80af867434 100644 --- a/include/linux/mxsfb.h +++ b/include/linux/mxsfb.h @@ -24,8 +24,8 @@  #define STMLCDIF_18BIT 2 /** pixel data bus to the display is of 18 bit width */  #define STMLCDIF_24BIT 3 /** pixel data bus to the display is of 24 bit width */ -#define FB_SYNC_DATA_ENABLE_HIGH_ACT	(1 << 6) -#define FB_SYNC_DOTCLK_FAILING_ACT	(1 << 7) /* failing/negtive edge sampling */ +#define MXSFB_SYNC_DATA_ENABLE_HIGH_ACT	(1 << 6) +#define MXSFB_SYNC_DOTCLK_FAILING_ACT	(1 << 7) /* failing/negtive edge sampling */  struct mxsfb_platform_data {  	struct fb_videomode *mode_list; @@ -44,6 +44,9 @@ struct mxsfb_platform_data {  				 * allocated. If specified,fb_size must also be specified.  				 * fb_phys must be unused by Linux.  				 */ +	u32 sync;		/* sync mask, contains MXSFB specifics not +				 * carried in fb_info->var.sync +				 */  };  #endif /* __LINUX_MXSFB_H */ diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index b3d00fa4b31..6151e903eef 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -210,9 +210,9 @@ struct netdev_hw_addr {  #define NETDEV_HW_ADDR_T_SLAVE		3  #define NETDEV_HW_ADDR_T_UNICAST	4  #define NETDEV_HW_ADDR_T_MULTICAST	5 -	bool			synced;  	bool			global_use;  	int			refcount; +	int			synced;  	struct rcu_head		rcu_head;  }; @@ -895,7 +895,7 @@ struct netdev_fcoe_hbainfo {   *   * int (*ndo_bridge_setlink)(struct net_device *dev, struct nlmsghdr *nlh)   * int (*ndo_bridge_getlink)(struct sk_buff *skb, u32 pid, u32 seq, - *			     struct net_device *dev) + *			     struct net_device *dev, u32 filter_mask)   *   * int (*ndo_change_carrier)(struct net_device *dev, bool new_carrier);   *	Called to change device carrier. Soft-devices (like dummy, team, etc) diff --git a/include/linux/netfilter/ipset/ip_set_ahash.h b/include/linux/netfilter/ipset/ip_set_ahash.h index 01d25e6fc79..0214c4c146f 100644 --- a/include/linux/netfilter/ipset/ip_set_ahash.h +++ b/include/linux/netfilter/ipset/ip_set_ahash.h @@ -291,6 +291,7 @@ ip_set_hash_destroy(struct ip_set *set)  #define type_pf_data_tlist	TOKEN(TYPE, PF, _data_tlist)  #define type_pf_data_next	TOKEN(TYPE, PF, _data_next)  #define type_pf_data_flags	TOKEN(TYPE, PF, _data_flags) +#define type_pf_data_reset_flags TOKEN(TYPE, PF, _data_reset_flags)  #ifdef IP_SET_HASH_WITH_NETS  #define type_pf_data_match	TOKEN(TYPE, PF, _data_match)  #else @@ -385,9 +386,9 @@ type_pf_resize(struct ip_set *set, bool retried)  	struct ip_set_hash *h = set->data;  	struct htable *t, *orig = h->table;  	u8 htable_bits = orig->htable_bits; -	const struct type_pf_elem *data; +	struct type_pf_elem *data;  	struct hbucket *n, *m; -	u32 i, j; +	u32 i, j, flags = 0;  	int ret;  retry: @@ -412,9 +413,16 @@ retry:  		n = hbucket(orig, i);  		for (j = 0; j < n->pos; j++) {  			data = ahash_data(n, j); +#ifdef IP_SET_HASH_WITH_NETS +			flags = 0; +			type_pf_data_reset_flags(data, &flags); +#endif  			m = hbucket(t, HKEY(data, h->initval, htable_bits)); -			ret = type_pf_elem_add(m, data, AHASH_MAX(h), 0); +			ret = type_pf_elem_add(m, data, AHASH_MAX(h), flags);  			if (ret < 0) { +#ifdef IP_SET_HASH_WITH_NETS +				type_pf_data_flags(data, flags); +#endif  				read_unlock_bh(&set->lock);  				ahash_destroy(t);  				if (ret == -EAGAIN) @@ -836,9 +844,9 @@ type_pf_tresize(struct ip_set *set, bool retried)  	struct ip_set_hash *h = set->data;  	struct htable *t, *orig = h->table;  	u8 htable_bits = orig->htable_bits; -	const struct type_pf_elem *data; +	struct type_pf_elem *data;  	struct hbucket *n, *m; -	u32 i, j; +	u32 i, j, flags = 0;  	int ret;  	/* Try to cleanup once */ @@ -873,10 +881,17 @@ retry:  		n = hbucket(orig, i);  		for (j = 0; j < n->pos; j++) {  			data = ahash_tdata(n, j); +#ifdef IP_SET_HASH_WITH_NETS +			flags = 0; +			type_pf_data_reset_flags(data, &flags); +#endif  			m = hbucket(t, HKEY(data, h->initval, htable_bits)); -			ret = type_pf_elem_tadd(m, data, AHASH_MAX(h), 0, -						ip_set_timeout_get(type_pf_data_timeout(data))); +			ret = type_pf_elem_tadd(m, data, AHASH_MAX(h), flags, +				ip_set_timeout_get(type_pf_data_timeout(data)));  			if (ret < 0) { +#ifdef IP_SET_HASH_WITH_NETS +				type_pf_data_flags(data, flags); +#endif  				read_unlock_bh(&set->lock);  				ahash_destroy(t);  				if (ret == -EAGAIN) @@ -1187,6 +1202,7 @@ type_pf_gc_init(struct ip_set *set)  #undef type_pf_data_tlist  #undef type_pf_data_next  #undef type_pf_data_flags +#undef type_pf_data_reset_flags  #undef type_pf_data_match  #undef type_pf_elem diff --git a/include/linux/nvme.h b/include/linux/nvme.h index c25cccaa555..4fa3b0b9b07 100644 --- a/include/linux/nvme.h +++ b/include/linux/nvme.h @@ -137,6 +137,34 @@ enum {  	NVME_LBAF_RP_DEGRADED	= 3,  }; +struct nvme_smart_log { +	__u8			critical_warning; +	__u8			temperature[2]; +	__u8			avail_spare; +	__u8			spare_thresh; +	__u8			percent_used; +	__u8			rsvd6[26]; +	__u8			data_units_read[16]; +	__u8			data_units_written[16]; +	__u8			host_reads[16]; +	__u8			host_writes[16]; +	__u8			ctrl_busy_time[16]; +	__u8			power_cycles[16]; +	__u8			power_on_hours[16]; +	__u8			unsafe_shutdowns[16]; +	__u8			media_errors[16]; +	__u8			num_err_log_entries[16]; +	__u8			rsvd192[320]; +}; + +enum { +	NVME_SMART_CRIT_SPARE		= 1 << 0, +	NVME_SMART_CRIT_TEMPERATURE	= 1 << 1, +	NVME_SMART_CRIT_RELIABILITY	= 1 << 2, +	NVME_SMART_CRIT_MEDIA		= 1 << 3, +	NVME_SMART_CRIT_VOLATILE_MEMORY	= 1 << 4, +}; +  struct nvme_lba_range_type {  	__u8			type;  	__u8			attributes; diff --git a/include/linux/pci.h b/include/linux/pci.h index 2461033a798..710067f3618 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -916,6 +916,7 @@ void pci_disable_rom(struct pci_dev *pdev);  void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size);  void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom);  size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size); +void __iomem __must_check *pci_platform_rom(struct pci_dev *pdev, size_t *size);  /* Power management related routines */  int pci_save_state(struct pci_dev *dev); diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index e47ee462c2f..1d795df6f4c 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -799,6 +799,12 @@ static inline int __perf_event_disable(void *info)			{ return -1; }  static inline void perf_event_task_tick(void)				{ }  #endif +#if defined(CONFIG_PERF_EVENTS) && defined(CONFIG_CPU_SUP_INTEL) +extern void perf_restore_debug_store(void); +#else +static inline void perf_restore_debug_store(void)			{ } +#endif +  #define perf_output_put(handle, x) perf_output_copy((handle), &(x), sizeof(x))  /* diff --git a/include/linux/preempt.h b/include/linux/preempt.h index 5a710b9c578..87a03c746f1 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -93,14 +93,20 @@ do { \  #else /* !CONFIG_PREEMPT_COUNT */ -#define preempt_disable()		do { } while (0) -#define sched_preempt_enable_no_resched()	do { } while (0) -#define preempt_enable_no_resched()	do { } while (0) -#define preempt_enable()		do { } while (0) +/* + * Even if we don't have any preemption, we need preempt disable/enable + * to be barriers, so that we don't have things like get_user/put_user + * that can cause faults and scheduling migrate into our preempt-protected + * region. + */ +#define preempt_disable()		barrier() +#define sched_preempt_enable_no_resched()	barrier() +#define preempt_enable_no_resched()	barrier() +#define preempt_enable()		barrier() -#define preempt_disable_notrace()		do { } while (0) -#define preempt_enable_no_resched_notrace()	do { } while (0) -#define preempt_enable_notrace()		do { } while (0) +#define preempt_disable_notrace()		barrier() +#define preempt_enable_no_resched_notrace()	barrier() +#define preempt_enable_notrace()		barrier()  #endif /* CONFIG_PREEMPT_COUNT */ diff --git a/include/linux/printk.h b/include/linux/printk.h index 1249a54d17e..822171fcb1c 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -134,6 +134,8 @@ extern int printk_delay_msec;  extern int dmesg_restrict;  extern int kptr_restrict; +extern void wake_up_klogd(void); +  void log_buf_kexec_setup(void);  void __init setup_log_buf(int early);  #else @@ -162,6 +164,10 @@ static inline bool printk_timed_ratelimit(unsigned long *caller_jiffies,  	return false;  } +static inline void wake_up_klogd(void) +{ +} +  static inline void log_buf_kexec_setup(void)  {  } diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index 8307f2f94d8..94dfb2aa553 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h @@ -117,6 +117,7 @@ struct proc_dir_entry *proc_create_data(const char *name, umode_t mode,  				const struct file_operations *proc_fops,  				void *data);  extern void remove_proc_entry(const char *name, struct proc_dir_entry *parent); +extern int remove_proc_subtree(const char *name, struct proc_dir_entry *parent);  struct pid_namespace; @@ -202,6 +203,7 @@ static inline struct proc_dir_entry *proc_create_data(const char *name,  	return NULL;  }  #define remove_proc_entry(name, parent) do {} while (0) +#define remove_proc_subtree(name, parent) do {} while (0)  static inline struct proc_dir_entry *proc_symlink(const char *name,  		struct proc_dir_entry *parent,const char *dest) {return NULL;} diff --git a/include/linux/res_counter.h b/include/linux/res_counter.h index 5ae8456d967..c23099413ad 100644 --- a/include/linux/res_counter.h +++ b/include/linux/res_counter.h @@ -14,6 +14,7 @@   */  #include <linux/cgroup.h> +#include <linux/errno.h>  /*   * The core object. the cgroup that wishes to account for some diff --git a/include/linux/sched.h b/include/linux/sched.h index d35d2b6ddbf..e692a022527 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -163,9 +163,10 @@ print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq)  #define TASK_DEAD		64  #define TASK_WAKEKILL		128  #define TASK_WAKING		256 -#define TASK_STATE_MAX		512 +#define TASK_PARKED		512 +#define TASK_STATE_MAX		1024 -#define TASK_STATE_TO_CHAR_STR "RSDTtZXxKW" +#define TASK_STATE_TO_CHAR_STR "RSDTtZXxKWP"  extern char ___assert_task_state[1 - 2*!!(  		sizeof(TASK_STATE_TO_CHAR_STR)-1 != ilog2(TASK_STATE_MAX)+1)]; diff --git a/include/linux/security.h b/include/linux/security.h index eee7478cda7..032c366ef1c 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -1012,6 +1012,10 @@ static inline void security_free_mnt_opts(struct security_mnt_opts *opts)   *	This hook can be used by the module to update any security state   *	associated with the TUN device's security structure.   *	@security pointer to the TUN devices's security structure. + * @skb_owned_by: + *	This hook sets the packet's owning sock. + *	@skb is the packet. + *	@sk the sock which owns the packet.   *   * Security hooks for XFRM operations.   * @@ -1638,6 +1642,7 @@ struct security_operations {  	int (*tun_dev_attach_queue) (void *security);  	int (*tun_dev_attach) (struct sock *sk, void *security);  	int (*tun_dev_open) (void *security); +	void (*skb_owned_by) (struct sk_buff *skb, struct sock *sk);  #endif	/* CONFIG_SECURITY_NETWORK */  #ifdef CONFIG_SECURITY_NETWORK_XFRM @@ -2588,6 +2593,8 @@ int security_tun_dev_attach_queue(void *security);  int security_tun_dev_attach(struct sock *sk, void *security);  int security_tun_dev_open(void *security); +void security_skb_owned_by(struct sk_buff *skb, struct sock *sk); +  #else	/* CONFIG_SECURITY_NETWORK */  static inline int security_unix_stream_connect(struct sock *sock,  					       struct sock *other, @@ -2779,6 +2786,11 @@ static inline int security_tun_dev_open(void *security)  {  	return 0;  } + +static inline void security_skb_owned_by(struct sk_buff *skb, struct sock *sk) +{ +} +  #endif	/* CONFIG_SECURITY_NETWORK */  #ifdef CONFIG_SECURITY_NETWORK_XFRM diff --git a/include/linux/signal.h b/include/linux/signal.h index a2dcb94ea49..9475c5cb28b 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h @@ -250,11 +250,11 @@ extern int show_unhandled_signals;  extern int sigsuspend(sigset_t *);  struct sigaction { -#ifndef __ARCH_HAS_ODD_SIGACTION +#ifndef __ARCH_HAS_IRIX_SIGACTION  	__sighandler_t	sa_handler;  	unsigned long	sa_flags;  #else -	unsigned long	sa_flags; +	unsigned int	sa_flags;  	__sighandler_t	sa_handler;  #endif  #ifdef __ARCH_HAS_SA_RESTORER diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 821c7f45d2a..b8292d8cc9f 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -500,7 +500,7 @@ struct sk_buff {  	union {  		__u32		mark;  		__u32		dropcount; -		__u32		avail_size; +		__u32		reserved_tailroom;  	};  	sk_buff_data_t		inner_transport_header; @@ -1288,11 +1288,13 @@ static inline void __skb_fill_page_desc(struct sk_buff *skb, int i,  	 * do not lose pfmemalloc information as the pages would not be  	 * allocated using __GFP_MEMALLOC.  	 */ -	if (page->pfmemalloc && !page->mapping) -		skb->pfmemalloc	= true;  	frag->page.p		  = page;  	frag->page_offset	  = off;  	skb_frag_size_set(frag, size); + +	page = compound_head(page); +	if (page->pfmemalloc && !page->mapping) +		skb->pfmemalloc	= true;  }  /** @@ -1447,7 +1449,10 @@ static inline int skb_tailroom(const struct sk_buff *skb)   */  static inline int skb_availroom(const struct sk_buff *skb)  { -	return skb_is_nonlinear(skb) ? 0 : skb->avail_size - skb->len; +	if (skb_is_nonlinear(skb)) +		return 0; + +	return skb->end - skb->tail - skb->reserved_tailroom;  }  /** @@ -2638,6 +2643,13 @@ static inline void nf_reset(struct sk_buff *skb)  #endif  } +static inline void nf_reset_trace(struct sk_buff *skb) +{ +#if IS_ENABLED(CONFIG_NETFILTER_XT_TARGET_TRACE) +	skb->nf_trace = 0; +#endif +} +  /* Note: This doesn't put any conntrack and bridge info in dst. */  static inline void __nf_copy(struct sk_buff *dst, const struct sk_buff *src)  { diff --git a/include/linux/spinlock_up.h b/include/linux/spinlock_up.h index a26e2fb604e..e2369c167db 100644 --- a/include/linux/spinlock_up.h +++ b/include/linux/spinlock_up.h @@ -16,7 +16,10 @@   * In the debug case, 1 means unlocked, 0 means locked. (the values   * are inverted, to catch initialization bugs)   * - * No atomicity anywhere, we are on UP. + * No atomicity anywhere, we are on UP. However, we still need + * the compiler barriers, because we do not want the compiler to + * move potentially faulting instructions (notably user accesses) + * into the locked sequence, resulting in non-atomic execution.   */  #ifdef CONFIG_DEBUG_SPINLOCK @@ -25,6 +28,7 @@  static inline void arch_spin_lock(arch_spinlock_t *lock)  {  	lock->slock = 0; +	barrier();  }  static inline void @@ -32,6 +36,7 @@ arch_spin_lock_flags(arch_spinlock_t *lock, unsigned long flags)  {  	local_irq_save(flags);  	lock->slock = 0; +	barrier();  }  static inline int arch_spin_trylock(arch_spinlock_t *lock) @@ -39,32 +44,34 @@ static inline int arch_spin_trylock(arch_spinlock_t *lock)  	char oldval = lock->slock;  	lock->slock = 0; +	barrier();  	return oldval > 0;  }  static inline void arch_spin_unlock(arch_spinlock_t *lock)  { +	barrier();  	lock->slock = 1;  }  /*   * Read-write spinlocks. No debug version.   */ -#define arch_read_lock(lock)		do { (void)(lock); } while (0) -#define arch_write_lock(lock)		do { (void)(lock); } while (0) -#define arch_read_trylock(lock)	({ (void)(lock); 1; }) -#define arch_write_trylock(lock)	({ (void)(lock); 1; }) -#define arch_read_unlock(lock)		do { (void)(lock); } while (0) -#define arch_write_unlock(lock)	do { (void)(lock); } while (0) +#define arch_read_lock(lock)		do { barrier(); (void)(lock); } while (0) +#define arch_write_lock(lock)		do { barrier(); (void)(lock); } while (0) +#define arch_read_trylock(lock)	({ barrier(); (void)(lock); 1; }) +#define arch_write_trylock(lock)	({ barrier(); (void)(lock); 1; }) +#define arch_read_unlock(lock)		do { barrier(); (void)(lock); } while (0) +#define arch_write_unlock(lock)	do { barrier(); (void)(lock); } while (0)  #else /* DEBUG_SPINLOCK */  #define arch_spin_is_locked(lock)	((void)(lock), 0)  /* for sched.c and kernel_lock.c: */ -# define arch_spin_lock(lock)		do { (void)(lock); } while (0) -# define arch_spin_lock_flags(lock, flags)	do { (void)(lock); } while (0) -# define arch_spin_unlock(lock)	do { (void)(lock); } while (0) -# define arch_spin_trylock(lock)	({ (void)(lock); 1; }) +# define arch_spin_lock(lock)		do { barrier(); (void)(lock); } while (0) +# define arch_spin_lock_flags(lock, flags)	do { barrier(); (void)(lock); } while (0) +# define arch_spin_unlock(lock)	do { barrier(); (void)(lock); } while (0) +# define arch_spin_trylock(lock)	({ barrier(); (void)(lock); 1; })  #endif /* DEBUG_SPINLOCK */  #define arch_spin_is_contended(lock)	(((void)(lock), 0)) diff --git a/include/linux/ssb/ssb_driver_chipcommon.h b/include/linux/ssb/ssb_driver_chipcommon.h index 9e492be5244..6fcfe99bd99 100644 --- a/include/linux/ssb/ssb_driver_chipcommon.h +++ b/include/linux/ssb/ssb_driver_chipcommon.h @@ -219,6 +219,7 @@  #define SSB_CHIPCO_PMU_CTL			0x0600 /* PMU control */  #define  SSB_CHIPCO_PMU_CTL_ILP_DIV		0xFFFF0000 /* ILP div mask */  #define  SSB_CHIPCO_PMU_CTL_ILP_DIV_SHIFT	16 +#define  SSB_CHIPCO_PMU_CTL_PLL_UPD		0x00000400  #define  SSB_CHIPCO_PMU_CTL_NOILPONW		0x00000200 /* No ILP on wait */  #define  SSB_CHIPCO_PMU_CTL_HTREQEN		0x00000100 /* HT req enable */  #define  SSB_CHIPCO_PMU_CTL_ALPREQEN		0x00000080 /* ALP req enable */ @@ -667,5 +668,6 @@ enum ssb_pmu_ldo_volt_id {  void ssb_pmu_set_ldo_voltage(struct ssb_chipcommon *cc,  			     enum ssb_pmu_ldo_volt_id id, u32 voltage);  void ssb_pmu_set_ldo_paref(struct ssb_chipcommon *cc, bool on); +void ssb_pmu_spuravoid_pllupdate(struct ssb_chipcommon *cc, int spuravoid);  #endif /* LINUX_SSB_CHIPCO_H_ */ diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h index 2de42f9401d..a5ffd32642f 100644 --- a/include/linux/swiotlb.h +++ b/include/linux/swiotlb.h @@ -25,6 +25,7 @@ extern int swiotlb_force;  extern void swiotlb_init(int verbose);  int swiotlb_init_with_tbl(char *tlb, unsigned long nslabs, int verbose);  extern unsigned long swiotlb_nr_tbl(void); +unsigned long swiotlb_size_or_default(void);  extern int swiotlb_late_init_with_tbl(char *tlb, unsigned long nslabs);  /* diff --git a/include/linux/thermal.h b/include/linux/thermal.h index f0bd7f90a90..e3c0ae9bb1f 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h @@ -44,7 +44,7 @@  /* Adding event notification support elements */  #define THERMAL_GENL_FAMILY_NAME                "thermal_event"  #define THERMAL_GENL_VERSION                    0x01 -#define THERMAL_GENL_MCAST_GROUP_NAME           "thermal_mc_group" +#define THERMAL_GENL_MCAST_GROUP_NAME           "thermal_mc_grp"  /* Default Thermal Governor */  #if defined(CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE) diff --git a/include/linux/ucs2_string.h b/include/linux/ucs2_string.h new file mode 100644 index 00000000000..cbb20afdbc0 --- /dev/null +++ b/include/linux/ucs2_string.h @@ -0,0 +1,14 @@ +#ifndef _LINUX_UCS2_STRING_H_ +#define _LINUX_UCS2_STRING_H_ + +#include <linux/types.h>	/* for size_t */ +#include <linux/stddef.h>	/* for NULL */ + +typedef u16 ucs2_char_t; + +unsigned long ucs2_strnlen(const ucs2_char_t *s, size_t maxlength); +unsigned long ucs2_strlen(const ucs2_char_t *s); +unsigned long ucs2_strsize(const ucs2_char_t *data, unsigned long maxlength); +int ucs2_strncmp(const ucs2_char_t *a, const ucs2_char_t *b, size_t len); + +#endif /* _LINUX_UCS2_STRING_H_ */ diff --git a/include/linux/udp.h b/include/linux/udp.h index 9d81de123c9..42278bbf7a8 100644 --- a/include/linux/udp.h +++ b/include/linux/udp.h @@ -68,6 +68,7 @@ struct udp_sock {  	 * For encapsulation sockets.  	 */  	int (*encap_rcv)(struct sock *sk, struct sk_buff *skb); +	void (*encap_destroy)(struct sock *sk);  };  static inline struct udp_sock *udp_sk(const struct sock *sk) diff --git a/include/linux/usb/cdc_ncm.h b/include/linux/usb/cdc_ncm.h index 3b8f9d4fc3f..cc25b70af33 100644 --- a/include/linux/usb/cdc_ncm.h +++ b/include/linux/usb/cdc_ncm.h @@ -127,6 +127,7 @@ struct cdc_ncm_ctx {  	u16 connected;  }; +extern u8 cdc_ncm_select_altsetting(struct usbnet *dev, struct usb_interface *intf);  extern int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_altsetting);  extern void cdc_ncm_unbind(struct usbnet *dev, struct usb_interface *intf);  extern struct sk_buff *cdc_ncm_fill_tx_frame(struct cdc_ncm_ctx *ctx, struct sk_buff *skb, __le32 sign); diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h index 3c671c1b37f..8860594d636 100644 --- a/include/linux/usb/composite.h +++ b/include/linux/usb/composite.h @@ -60,7 +60,7 @@ struct usb_configuration;   * @name: For diagnostics, identifies the function.   * @strings: tables of strings, keyed by identifiers assigned during bind()   *	and by language IDs provided in control requests - * @descriptors: Table of full (or low) speed descriptors, using interface and + * @fs_descriptors: Table of full (or low) speed descriptors, using interface and   *	string identifiers assigned during @bind().  If this pointer is null,   *	the function will not be available at full speed (or at low speed).   * @hs_descriptors: Table of high speed descriptors, using interface and @@ -290,6 +290,7 @@ enum {   *	after function notifications   * @resume: Notifies configuration when the host restarts USB traffic,   *	before function notifications + * @gadget_driver: Gadget driver controlling this driver   *   * Devices default to reporting self powered operation.  Devices which rely   * on bus powered operation should report this in their @bind method. diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h index 0a78df5f6cf..59694b5e5e9 100644 --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h @@ -357,6 +357,7 @@ struct hc_driver {  		 */  	int	(*disable_usb3_lpm_timeout)(struct usb_hcd *,  			struct usb_device *, enum usb3_link_state state); +	int	(*find_raw_port_number)(struct usb_hcd *, int);  };  extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb); @@ -396,6 +397,7 @@ extern int usb_hcd_is_primary_hcd(struct usb_hcd *hcd);  extern int usb_add_hcd(struct usb_hcd *hcd,  		unsigned int irqnum, unsigned long irqflags);  extern void usb_remove_hcd(struct usb_hcd *hcd); +extern int usb_hcd_find_raw_port_number(struct usb_hcd *hcd, int port1);  struct platform_device;  extern void usb_hcd_platform_shutdown(struct platform_device *dev); diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h index ef9be7e1e19..1819b59aab2 100644 --- a/include/linux/usb/serial.h +++ b/include/linux/usb/serial.h @@ -66,6 +66,7 @@   *	port.   * @flags: usb serial port flags   * @write_wait: a wait_queue_head_t used by the port. + * @delta_msr_wait: modem-status-change wait queue   * @work: work queue entry for the line discipline waking up.   * @throttled: nonzero if the read urb is inactive to throttle the device   * @throttle_req: nonzero if the tty wants to throttle us @@ -112,6 +113,7 @@ struct usb_serial_port {  	unsigned long		flags;  	wait_queue_head_t	write_wait; +	wait_queue_head_t	delta_msr_wait;  	struct work_struct	work;  	char			throttled;  	char			throttle_req; diff --git a/include/linux/usb/ulpi.h b/include/linux/usb/ulpi.h index 6f033a415ec..5c295c26ad3 100644 --- a/include/linux/usb/ulpi.h +++ b/include/linux/usb/ulpi.h @@ -181,8 +181,16 @@  /*-------------------------------------------------------------------------*/ +#if IS_ENABLED(CONFIG_USB_ULPI)  struct usb_phy *otg_ulpi_create(struct usb_phy_io_ops *ops,  					unsigned int flags); +#else +static inline struct usb_phy *otg_ulpi_create(struct usb_phy_io_ops *ops, +					      unsigned int flags) +{ +	return NULL; +} +#endif  #ifdef CONFIG_USB_ULPI_VIEWPORT  /* access ops for controllers with a viewport register */ diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h index 4ce00932493..b6b215f13b4 100644 --- a/include/linux/user_namespace.h +++ b/include/linux/user_namespace.h @@ -26,6 +26,8 @@ struct user_namespace {  	kuid_t			owner;  	kgid_t			group;  	unsigned int		proc_inum; +	bool			may_mount_sysfs; +	bool			may_mount_proc;  };  extern struct user_namespace init_user_ns; @@ -82,4 +84,6 @@ static inline void put_user_ns(struct user_namespace *ns)  #endif +void update_mnt_policy(struct user_namespace *userns); +  #endif /* _LINUX_USER_H */  |