diff options
Diffstat (limited to 'include')
26 files changed, 434 insertions, 215 deletions
diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h index c78bb997e2c..af1cbaf535e 100644 --- a/include/drm/drm_pciids.h +++ b/include/drm/drm_pciids.h @@ -205,6 +205,8 @@  	{0x1002, 0x6788, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x678A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6790, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ +	{0x1002, 0x6791, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ +	{0x1002, 0x6792, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6798, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6799, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x679A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ @@ -217,6 +219,7 @@  	{0x1002, 0x6808, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6809, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6810, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ +	{0x1002, 0x6811, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6816, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6817, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6818, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index c18257b0fa7..6dd4787a798 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -61,7 +61,7 @@ int __dynamic_netdev_dbg(struct _ddebug *descriptor,  			 const char *fmt, ...);  #define DEFINE_DYNAMIC_DEBUG_METADATA(name, fmt)		\ -	static struct _ddebug __used __aligned(8)		\ +	static struct _ddebug  __aligned(8)			\  	__attribute__((section("__verbose"))) name = {		\  		.modname = KBUILD_MODNAME,			\  		.function = __func__,				\ diff --git a/include/linux/extcon.h b/include/linux/extcon.h index 7443a560c9d..2c26c14cd71 100644 --- a/include/linux/extcon.h +++ b/include/linux/extcon.h @@ -68,7 +68,7 @@ enum extcon_cable_name {  	EXTCON_VIDEO_OUT,  	EXTCON_MECHANICAL,  }; -extern const char *extcon_cable_name[]; +extern const char extcon_cable_name[][CABLE_NAME_MAX + 1];  struct extcon_cable; diff --git a/include/linux/hashtable.h b/include/linux/hashtable.h new file mode 100644 index 00000000000..227c62424f3 --- /dev/null +++ b/include/linux/hashtable.h @@ -0,0 +1,192 @@ +/* + * Statically sized hash table implementation + * (C) 2012  Sasha Levin <levinsasha928@gmail.com> + */ + +#ifndef _LINUX_HASHTABLE_H +#define _LINUX_HASHTABLE_H + +#include <linux/list.h> +#include <linux/types.h> +#include <linux/kernel.h> +#include <linux/hash.h> +#include <linux/rculist.h> + +#define DEFINE_HASHTABLE(name, bits)						\ +	struct hlist_head name[1 << (bits)] =					\ +			{ [0 ... ((1 << (bits)) - 1)] = HLIST_HEAD_INIT } + +#define DECLARE_HASHTABLE(name, bits)                                   	\ +	struct hlist_head name[1 << (bits)] + +#define HASH_SIZE(name) (ARRAY_SIZE(name)) +#define HASH_BITS(name) ilog2(HASH_SIZE(name)) + +/* Use hash_32 when possible to allow for fast 32bit hashing in 64bit kernels. */ +#define hash_min(val, bits)							\ +	(sizeof(val) <= 4 ? hash_32(val, bits) : hash_long(val, bits)) + +static inline void __hash_init(struct hlist_head *ht, unsigned int sz) +{ +	unsigned int i; + +	for (i = 0; i < sz; i++) +		INIT_HLIST_HEAD(&ht[i]); +} + +/** + * hash_init - initialize a hash table + * @hashtable: hashtable to be initialized + * + * Calculates the size of the hashtable from the given parameter, otherwise + * same as hash_init_size. + * + * This has to be a macro since HASH_BITS() will not work on pointers since + * it calculates the size during preprocessing. + */ +#define hash_init(hashtable) __hash_init(hashtable, HASH_SIZE(hashtable)) + +/** + * hash_add - add an object to a hashtable + * @hashtable: hashtable to add to + * @node: the &struct hlist_node of the object to be added + * @key: the key of the object to be added + */ +#define hash_add(hashtable, node, key)						\ +	hlist_add_head(node, &hashtable[hash_min(key, HASH_BITS(hashtable))]) + +/** + * hash_add_rcu - add an object to a rcu enabled hashtable + * @hashtable: hashtable to add to + * @node: the &struct hlist_node of the object to be added + * @key: the key of the object to be added + */ +#define hash_add_rcu(hashtable, node, key)					\ +	hlist_add_head_rcu(node, &hashtable[hash_min(key, HASH_BITS(hashtable))]) + +/** + * hash_hashed - check whether an object is in any hashtable + * @node: the &struct hlist_node of the object to be checked + */ +static inline bool hash_hashed(struct hlist_node *node) +{ +	return !hlist_unhashed(node); +} + +static inline bool __hash_empty(struct hlist_head *ht, unsigned int sz) +{ +	unsigned int i; + +	for (i = 0; i < sz; i++) +		if (!hlist_empty(&ht[i])) +			return false; + +	return true; +} + +/** + * hash_empty - check whether a hashtable is empty + * @hashtable: hashtable to check + * + * This has to be a macro since HASH_BITS() will not work on pointers since + * it calculates the size during preprocessing. + */ +#define hash_empty(hashtable) __hash_empty(hashtable, HASH_SIZE(hashtable)) + +/** + * hash_del - remove an object from a hashtable + * @node: &struct hlist_node of the object to remove + */ +static inline void hash_del(struct hlist_node *node) +{ +	hlist_del_init(node); +} + +/** + * hash_del_rcu - remove an object from a rcu enabled hashtable + * @node: &struct hlist_node of the object to remove + */ +static inline void hash_del_rcu(struct hlist_node *node) +{ +	hlist_del_init_rcu(node); +} + +/** + * hash_for_each - iterate over a hashtable + * @name: hashtable to iterate + * @bkt: integer to use as bucket loop cursor + * @node: the &struct list_head to use as a loop cursor for each entry + * @obj: the type * to use as a loop cursor for each entry + * @member: the name of the hlist_node within the struct + */ +#define hash_for_each(name, bkt, node, obj, member)				\ +	for ((bkt) = 0, node = NULL; node == NULL && (bkt) < HASH_SIZE(name); (bkt)++)\ +		hlist_for_each_entry(obj, node, &name[bkt], member) + +/** + * hash_for_each_rcu - iterate over a rcu enabled hashtable + * @name: hashtable to iterate + * @bkt: integer to use as bucket loop cursor + * @node: the &struct list_head to use as a loop cursor for each entry + * @obj: the type * to use as a loop cursor for each entry + * @member: the name of the hlist_node within the struct + */ +#define hash_for_each_rcu(name, bkt, node, obj, member)				\ +	for ((bkt) = 0, node = NULL; node == NULL && (bkt) < HASH_SIZE(name); (bkt)++)\ +		hlist_for_each_entry_rcu(obj, node, &name[bkt], member) + +/** + * hash_for_each_safe - iterate over a hashtable safe against removal of + * hash entry + * @name: hashtable to iterate + * @bkt: integer to use as bucket loop cursor + * @node: the &struct list_head to use as a loop cursor for each entry + * @tmp: a &struct used for temporary storage + * @obj: the type * to use as a loop cursor for each entry + * @member: the name of the hlist_node within the struct + */ +#define hash_for_each_safe(name, bkt, node, tmp, obj, member)			\ +	for ((bkt) = 0, node = NULL; node == NULL && (bkt) < HASH_SIZE(name); (bkt)++)\ +		hlist_for_each_entry_safe(obj, node, tmp, &name[bkt], member) + +/** + * hash_for_each_possible - iterate over all possible objects hashing to the + * same bucket + * @name: hashtable to iterate + * @obj: the type * to use as a loop cursor for each entry + * @node: the &struct list_head to use as a loop cursor for each entry + * @member: the name of the hlist_node within the struct + * @key: the key of the objects to iterate over + */ +#define hash_for_each_possible(name, obj, node, member, key)			\ +	hlist_for_each_entry(obj, node,	&name[hash_min(key, HASH_BITS(name))], member) + +/** + * hash_for_each_possible_rcu - iterate over all possible objects hashing to the + * same bucket in an rcu enabled hashtable + * in a rcu enabled hashtable + * @name: hashtable to iterate + * @obj: the type * to use as a loop cursor for each entry + * @node: the &struct list_head to use as a loop cursor for each entry + * @member: the name of the hlist_node within the struct + * @key: the key of the objects to iterate over + */ +#define hash_for_each_possible_rcu(name, obj, node, member, key)		\ +	hlist_for_each_entry_rcu(obj, node, &name[hash_min(key, HASH_BITS(name))], member) + +/** + * hash_for_each_possible_safe - iterate over all possible objects hashing to the + * same bucket safe against removals + * @name: hashtable to iterate + * @obj: the type * to use as a loop cursor for each entry + * @node: the &struct list_head to use as a loop cursor for each entry + * @tmp: a &struct used for temporary storage + * @member: the name of the hlist_node within the struct + * @key: the key of the objects to iterate over + */ +#define hash_for_each_possible_safe(name, obj, node, tmp, member, key)		\ +	hlist_for_each_entry_safe(obj, node, tmp,				\ +		&name[hash_min(key, HASH_BITS(name))], member) + + +#endif diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h index c0ae76ac4e0..7806c24e5bc 100644 --- a/include/linux/iio/iio.h +++ b/include/linux/iio/iio.h @@ -618,4 +618,20 @@ static inline struct dentry *iio_get_debugfs_dentry(struct iio_dev *indio_dev)  };  #endif +/** + * IIO_DEGREE_TO_RAD() - Convert degree to rad + * @deg: A value in degree + * + * Returns the given value converted from degree to rad + */ +#define IIO_DEGREE_TO_RAD(deg) (((deg) * 314159ULL + 9000000ULL) / 18000000ULL) + +/** + * IIO_G_TO_M_S_2() - Convert g to meter / second**2 + * @g: A value in g + * + * Returns the given value converted from g to meter / second**2 + */ +#define IIO_G_TO_M_S_2(g) ((g) * 980665ULL / 100000ULL) +  #endif /* _INDUSTRIAL_IO_H_ */ diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 93bfc9f9815..ecc554374e4 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -42,19 +42,8 @@   */  #define KVM_MEMSLOT_INVALID	(1UL << 16) -/* - * If we support unaligned MMIO, at most one fragment will be split into two: - */ -#ifdef KVM_UNALIGNED_MMIO -#  define KVM_EXTRA_MMIO_FRAGMENTS 1 -#else -#  define KVM_EXTRA_MMIO_FRAGMENTS 0 -#endif - -#define KVM_USER_MMIO_SIZE 8 - -#define KVM_MAX_MMIO_FRAGMENTS \ -	(KVM_MMIO_SIZE / KVM_USER_MMIO_SIZE + KVM_EXTRA_MMIO_FRAGMENTS) +/* Two fragments for cross MMIO pages. */ +#define KVM_MAX_MMIO_FRAGMENTS	2  /*   * For the normal pfn, the highest 12 bits should be zero, diff --git a/include/linux/memblock.h b/include/linux/memblock.h index 569d67d4243..d452ee19106 100644 --- a/include/linux/memblock.h +++ b/include/linux/memblock.h @@ -57,6 +57,7 @@ int memblock_add(phys_addr_t base, phys_addr_t size);  int memblock_remove(phys_addr_t base, phys_addr_t size);  int memblock_free(phys_addr_t base, phys_addr_t size);  int memblock_reserve(phys_addr_t base, phys_addr_t size); +void memblock_trim_memory(phys_addr_t align);  #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP  void __next_mem_pfn_range(int *idx, int nid, unsigned long *out_start_pfn, diff --git a/include/linux/mfd/max77693.h b/include/linux/mfd/max77693.h index 1d28ae90384..fe03b2d35d4 100644 --- a/include/linux/mfd/max77693.h +++ b/include/linux/mfd/max77693.h @@ -30,7 +30,20 @@  #ifndef __LINUX_MFD_MAX77693_H  #define __LINUX_MFD_MAX77693_H +struct max77693_reg_data { +	u8 addr; +	u8 data; +}; + +struct max77693_muic_platform_data { +	struct max77693_reg_data *init_data; +	int num_init_data; +}; +  struct max77693_platform_data {  	int wakeup; + +	/* muic data */ +	struct max77693_muic_platform_data *muic_data;  };  #endif	/* __LINUX_MFD_MAX77693_H */ diff --git a/include/linux/percpu-rwsem.h b/include/linux/percpu-rwsem.h index cf80f7e5277..250a4acddb2 100644 --- a/include/linux/percpu-rwsem.h +++ b/include/linux/percpu-rwsem.h @@ -12,34 +12,27 @@ struct percpu_rw_semaphore {  	struct mutex mtx;  }; +#define light_mb()	barrier() +#define heavy_mb()	synchronize_sched() +  static inline void percpu_down_read(struct percpu_rw_semaphore *p)  { -	rcu_read_lock(); +	rcu_read_lock_sched();  	if (unlikely(p->locked)) { -		rcu_read_unlock(); +		rcu_read_unlock_sched();  		mutex_lock(&p->mtx);  		this_cpu_inc(*p->counters);  		mutex_unlock(&p->mtx);  		return;  	}  	this_cpu_inc(*p->counters); -	rcu_read_unlock(); +	rcu_read_unlock_sched(); +	light_mb(); /* A, between read of p->locked and read of data, paired with D */  }  static inline void percpu_up_read(struct percpu_rw_semaphore *p)  { -	/* -	 * On X86, write operation in this_cpu_dec serves as a memory unlock -	 * barrier (i.e. memory accesses may be moved before the write, but -	 * no memory accesses are moved past the write). -	 * On other architectures this may not be the case, so we need smp_mb() -	 * there. -	 */ -#if defined(CONFIG_X86) && (!defined(CONFIG_X86_PPRO_FENCE) && !defined(CONFIG_X86_OOSTORE)) -	barrier(); -#else -	smp_mb(); -#endif +	light_mb(); /* B, between read of the data and write to p->counter, paired with C */  	this_cpu_dec(*p->counters);  } @@ -58,14 +51,15 @@ static inline void percpu_down_write(struct percpu_rw_semaphore *p)  {  	mutex_lock(&p->mtx);  	p->locked = true; -	synchronize_rcu(); +	synchronize_sched(); /* make sure that all readers exit the rcu_read_lock_sched region */  	while (__percpu_count(p->counters))  		msleep(1); -	smp_rmb(); /* paired with smp_mb() in percpu_sem_up_read() */ +	heavy_mb(); /* C, between read of p->counter and write to data, paired with B */  }  static inline void percpu_up_write(struct percpu_rw_semaphore *p)  { +	heavy_mb(); /* D, between write to data and write to p->locked, paired with A */  	p->locked = false;  	mutex_unlock(&p->mtx);  } diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 2e902359aee..6bfb2faa0b1 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -803,12 +803,16 @@ static inline void perf_event_task_tick(void)				{ }  do {									\  	static struct notifier_block fn##_nb __cpuinitdata =		\  		{ .notifier_call = fn, .priority = CPU_PRI_PERF };	\ +	unsigned long cpu = smp_processor_id();				\ +	unsigned long flags;						\  	fn(&fn##_nb, (unsigned long)CPU_UP_PREPARE,			\ -		(void *)(unsigned long)smp_processor_id());		\ +		(void *)(unsigned long)cpu);				\ +	local_irq_save(flags);						\  	fn(&fn##_nb, (unsigned long)CPU_STARTING,			\ -		(void *)(unsigned long)smp_processor_id());		\ +		(void *)(unsigned long)cpu);				\ +	local_irq_restore(flags);					\  	fn(&fn##_nb, (unsigned long)CPU_ONLINE,				\ -		(void *)(unsigned long)smp_processor_id());		\ +		(void *)(unsigned long)cpu);				\  	register_cpu_notifier(&fn##_nb);				\  } while (0) diff --git a/include/linux/raid/Kbuild b/include/linux/raid/Kbuild index 2415a64c5e5..e69de29bb2d 100644 --- a/include/linux/raid/Kbuild +++ b/include/linux/raid/Kbuild @@ -1,2 +0,0 @@ -header-y += md_p.h -header-y += md_u.h diff --git a/include/linux/raid/md_u.h b/include/linux/raid/md_u.h index fb1abb3367e..358c04bfbe2 100644 --- a/include/linux/raid/md_u.h +++ b/include/linux/raid/md_u.h @@ -11,149 +11,10 @@     (for example /usr/src/linux/COPYING); if not, write to the Free     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.    */ -  #ifndef _MD_U_H  #define _MD_U_H -/* - * Different major versions are not compatible. - * Different minor versions are only downward compatible. - * Different patchlevel versions are downward and upward compatible. - */ -#define MD_MAJOR_VERSION                0 -#define MD_MINOR_VERSION                90 -/* - * MD_PATCHLEVEL_VERSION indicates kernel functionality. - * >=1 means different superblock formats are selectable using SET_ARRAY_INFO - *     and major_version/minor_version accordingly - * >=2 means that Internal bitmaps are supported by setting MD_SB_BITMAP_PRESENT - *     in the super status byte - * >=3 means that bitmap superblock version 4 is supported, which uses - *     little-ending representation rather than host-endian - */ -#define MD_PATCHLEVEL_VERSION           3 - -/* ioctls */ - -/* status */ -#define RAID_VERSION		_IOR (MD_MAJOR, 0x10, mdu_version_t) -#define GET_ARRAY_INFO		_IOR (MD_MAJOR, 0x11, mdu_array_info_t) -#define GET_DISK_INFO		_IOR (MD_MAJOR, 0x12, mdu_disk_info_t) -#define PRINT_RAID_DEBUG	_IO (MD_MAJOR, 0x13) -#define RAID_AUTORUN		_IO (MD_MAJOR, 0x14) -#define GET_BITMAP_FILE		_IOR (MD_MAJOR, 0x15, mdu_bitmap_file_t) - -/* configuration */ -#define CLEAR_ARRAY		_IO (MD_MAJOR, 0x20) -#define ADD_NEW_DISK		_IOW (MD_MAJOR, 0x21, mdu_disk_info_t) -#define HOT_REMOVE_DISK		_IO (MD_MAJOR, 0x22) -#define SET_ARRAY_INFO		_IOW (MD_MAJOR, 0x23, mdu_array_info_t) -#define SET_DISK_INFO		_IO (MD_MAJOR, 0x24) -#define WRITE_RAID_INFO		_IO (MD_MAJOR, 0x25) -#define UNPROTECT_ARRAY		_IO (MD_MAJOR, 0x26) -#define PROTECT_ARRAY		_IO (MD_MAJOR, 0x27) -#define HOT_ADD_DISK		_IO (MD_MAJOR, 0x28) -#define SET_DISK_FAULTY		_IO (MD_MAJOR, 0x29) -#define HOT_GENERATE_ERROR	_IO (MD_MAJOR, 0x2a) -#define SET_BITMAP_FILE		_IOW (MD_MAJOR, 0x2b, int) +#include <uapi/linux/raid/md_u.h> -/* usage */ -#define RUN_ARRAY		_IOW (MD_MAJOR, 0x30, mdu_param_t) -/*  0x31 was START_ARRAY  */ -#define STOP_ARRAY		_IO (MD_MAJOR, 0x32) -#define STOP_ARRAY_RO		_IO (MD_MAJOR, 0x33) -#define RESTART_ARRAY_RW	_IO (MD_MAJOR, 0x34) - -/* 63 partitions with the alternate major number (mdp) */ -#define MdpMinorShift 6 -#ifdef __KERNEL__  extern int mdp_major; -#endif - -typedef struct mdu_version_s { -	int major; -	int minor; -	int patchlevel; -} mdu_version_t; - -typedef struct mdu_array_info_s { -	/* -	 * Generic constant information -	 */ -	int major_version; -	int minor_version; -	int patch_version; -	int ctime; -	int level; -	int size; -	int nr_disks; -	int raid_disks; -	int md_minor; -	int not_persistent; - -	/* -	 * Generic state information -	 */ -	int utime;		/*  0 Superblock update time		      */ -	int state;		/*  1 State bits (clean, ...)		      */ -	int active_disks;	/*  2 Number of currently active disks	      */ -	int working_disks;	/*  3 Number of working disks		      */ -	int failed_disks;	/*  4 Number of failed disks		      */ -	int spare_disks;	/*  5 Number of spare disks		      */ - -	/* -	 * Personality information -	 */ -	int layout;		/*  0 the array's physical layout	      */ -	int chunk_size;	/*  1 chunk size in bytes		      */ - -} mdu_array_info_t; - -/* non-obvious values for 'level' */ -#define	LEVEL_MULTIPATH		(-4) -#define	LEVEL_LINEAR		(-1) -#define	LEVEL_FAULTY		(-5) - -/* we need a value for 'no level specified' and 0 - * means 'raid0', so we need something else.  This is - * for internal use only - */ -#define	LEVEL_NONE		(-1000000) - -typedef struct mdu_disk_info_s { -	/* -	 * configuration/status of one particular disk -	 */ -	int number; -	int major; -	int minor; -	int raid_disk; -	int state; - -} mdu_disk_info_t; - -typedef struct mdu_start_info_s { -	/* -	 * configuration/status of one particular disk -	 */ -	int major; -	int minor; -	int raid_disk; -	int state; - -} mdu_start_info_t; - -typedef struct mdu_bitmap_file_s -{ -	char pathname[4096]; -} mdu_bitmap_file_t; - -typedef struct mdu_param_s -{ -	int			personality;	/* 1,2,3,4 */ -	int			chunk_size;	/* in bytes */ -	int			max_fault;	/* unused for now */ -} mdu_param_t; -  #endif  - diff --git a/include/linux/rbtree_augmented.h b/include/linux/rbtree_augmented.h index 214caa33433..2ac60c9cf64 100644 --- a/include/linux/rbtree_augmented.h +++ b/include/linux/rbtree_augmented.h @@ -24,6 +24,7 @@  #ifndef _LINUX_RBTREE_AUGMENTED_H  #define _LINUX_RBTREE_AUGMENTED_H +#include <linux/compiler.h>  #include <linux/rbtree.h>  /* diff --git a/include/linux/spi/tsc2005.h b/include/linux/spi/tsc2005.h index d9b0c84220c..8f721e465e0 100644 --- a/include/linux/spi/tsc2005.h +++ b/include/linux/spi/tsc2005.h @@ -3,8 +3,6 @@   *   * Copyright (C) 2009-2010 Nokia Corporation   * - * Contact: Aaro Koskinen <aaro.koskinen@nokia.com> - *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License as published by   * the Free Software Foundation; either version 2 of the License, or diff --git a/include/linux/tcp.h b/include/linux/tcp.h index 8a7fc4be2d7..60b7aac15e0 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h @@ -191,7 +191,8 @@ struct tcp_sock {  	u8	do_early_retrans:1,/* Enable RFC5827 early-retransmit  */  		early_retrans_delayed:1, /* Delayed ER timer installed */  		syn_data:1,	/* SYN includes data */ -		syn_fastopen:1;	/* SYN includes Fast Open option */ +		syn_fastopen:1,	/* SYN includes Fast Open option */ +		syn_data_acked:1;/* data in SYN is acked by SYN-ACK */  /* RTT measurement */  	u32	srtt;		/* smoothed round trip time << 3	*/ diff --git a/include/linux/uprobes.h b/include/linux/uprobes.h index e6f0331e3d4..24594571c5a 100644 --- a/include/linux/uprobes.h +++ b/include/linux/uprobes.h @@ -35,16 +35,6 @@ struct inode;  # include <asm/uprobes.h>  #endif -/* flags that denote/change uprobes behaviour */ - -/* Have a copy of original instruction */ -#define UPROBE_COPY_INSN	0x1 - -/* Dont run handlers when first register/ last unregister in progress*/ -#define UPROBE_RUN_HANDLER	0x2 -/* Can skip singlestep */ -#define UPROBE_SKIP_SSTEP	0x4 -  struct uprobe_consumer {  	int (*handler)(struct uprobe_consumer *self, struct pt_regs *regs);  	/* @@ -59,7 +49,6 @@ struct uprobe_consumer {  #ifdef CONFIG_UPROBES  enum uprobe_task_state {  	UTASK_RUNNING, -	UTASK_BP_HIT,  	UTASK_SSTEP,  	UTASK_SSTEP_ACK,  	UTASK_SSTEP_TRAPPED, diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 1b498908224..7d5b6000378 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -1218,6 +1218,7 @@ struct cfg80211_deauth_request {  	const u8 *ie;  	size_t ie_len;  	u16 reason_code; +	bool local_state_change;  };  /** @@ -2651,6 +2652,15 @@ unsigned int ieee80211_get_hdrlen_from_skb(const struct sk_buff *skb);  unsigned int __attribute_const__ ieee80211_hdrlen(__le16 fc);  /** + * ieee80211_get_mesh_hdrlen - get mesh extension header length + * @meshhdr: the mesh extension header, only the flags field + *	(first byte) will be accessed + * Returns the length of the extension header, which is always at + * least 6 bytes and at most 18 if address 5 and 6 are present. + */ +unsigned int ieee80211_get_mesh_hdrlen(struct ieee80211s_hdr *meshhdr); + +/**   * DOC: Data path helpers   *   * In addition to generic utilities, cfg80211 also offers diff --git a/include/sound/core.h b/include/sound/core.h index bc056687f64..93896ad1fcd 100644 --- a/include/sound/core.h +++ b/include/sound/core.h @@ -132,6 +132,7 @@ struct snd_card {  	int shutdown;			/* this card is going down */  	int free_on_last_close;		/* free in context of file_release */  	wait_queue_head_t shutdown_sleep; +	atomic_t refcount;		/* refcount for disconnection */  	struct device *dev;		/* device assigned to this card */  	struct device *card_dev;	/* cardX object for sysfs */ @@ -189,6 +190,7 @@ struct snd_minor {  	const struct file_operations *f_ops;	/* file operations */  	void *private_data;		/* private data for f_ops->open */  	struct device *dev;		/* device for sysfs */ +	struct snd_card *card_ptr;	/* assigned card instance */  };  /* return a device pointer linked to each sound device as a parent */ @@ -295,6 +297,7 @@ int snd_card_info_done(void);  int snd_component_add(struct snd_card *card, const char *component);  int snd_card_file_add(struct snd_card *card, struct file *file);  int snd_card_file_remove(struct snd_card *card, struct file *file); +void snd_card_unref(struct snd_card *card);  #define snd_card_set_dev(card, devptr) ((card)->dev = (devptr)) diff --git a/include/trace/events/xen.h b/include/trace/events/xen.h index 15ba03bdd7c..d06b6da5c1e 100644 --- a/include/trace/events/xen.h +++ b/include/trace/events/xen.h @@ -377,6 +377,14 @@ DECLARE_EVENT_CLASS(xen_mmu_pgd,  DEFINE_XEN_MMU_PGD_EVENT(xen_mmu_pgd_pin);  DEFINE_XEN_MMU_PGD_EVENT(xen_mmu_pgd_unpin); +TRACE_EVENT(xen_mmu_flush_tlb_all, +	    TP_PROTO(int x), +	    TP_ARGS(x), +	    TP_STRUCT__entry(__array(char, x, 0)), +	    TP_fast_assign((void)x), +	    TP_printk("%s", "") +	); +  TRACE_EVENT(xen_mmu_flush_tlb,  	    TP_PROTO(int x),  	    TP_ARGS(x), diff --git a/include/uapi/linux/raid/Kbuild b/include/uapi/linux/raid/Kbuild index aafaa5aa54d..e2c3d25405d 100644 --- a/include/uapi/linux/raid/Kbuild +++ b/include/uapi/linux/raid/Kbuild @@ -1 +1,3 @@  # UAPI Header export list +header-y += md_p.h +header-y += md_u.h diff --git a/include/linux/raid/md_p.h b/include/uapi/linux/raid/md_p.h index ee753536ab7..ee753536ab7 100644 --- a/include/linux/raid/md_p.h +++ b/include/uapi/linux/raid/md_p.h diff --git a/include/uapi/linux/raid/md_u.h b/include/uapi/linux/raid/md_u.h new file mode 100644 index 00000000000..4133e744e4e --- /dev/null +++ b/include/uapi/linux/raid/md_u.h @@ -0,0 +1,155 @@ +/* +   md_u.h : user <=> kernel API between Linux raidtools and RAID drivers +          Copyright (C) 1998 Ingo Molnar +	   +   This program is free software; you can redistribute it and/or modify +   it under the terms of the GNU General Public License as published by +   the Free Software Foundation; either version 2, or (at your option) +   any later version. +    +   You should have received a copy of the GNU General Public License +   (for example /usr/src/linux/COPYING); if not, write to the Free +   Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.   +*/ + +#ifndef _UAPI_MD_U_H +#define _UAPI_MD_U_H + +/* + * Different major versions are not compatible. + * Different minor versions are only downward compatible. + * Different patchlevel versions are downward and upward compatible. + */ +#define MD_MAJOR_VERSION                0 +#define MD_MINOR_VERSION                90 +/* + * MD_PATCHLEVEL_VERSION indicates kernel functionality. + * >=1 means different superblock formats are selectable using SET_ARRAY_INFO + *     and major_version/minor_version accordingly + * >=2 means that Internal bitmaps are supported by setting MD_SB_BITMAP_PRESENT + *     in the super status byte + * >=3 means that bitmap superblock version 4 is supported, which uses + *     little-ending representation rather than host-endian + */ +#define MD_PATCHLEVEL_VERSION           3 + +/* ioctls */ + +/* status */ +#define RAID_VERSION		_IOR (MD_MAJOR, 0x10, mdu_version_t) +#define GET_ARRAY_INFO		_IOR (MD_MAJOR, 0x11, mdu_array_info_t) +#define GET_DISK_INFO		_IOR (MD_MAJOR, 0x12, mdu_disk_info_t) +#define PRINT_RAID_DEBUG	_IO (MD_MAJOR, 0x13) +#define RAID_AUTORUN		_IO (MD_MAJOR, 0x14) +#define GET_BITMAP_FILE		_IOR (MD_MAJOR, 0x15, mdu_bitmap_file_t) + +/* configuration */ +#define CLEAR_ARRAY		_IO (MD_MAJOR, 0x20) +#define ADD_NEW_DISK		_IOW (MD_MAJOR, 0x21, mdu_disk_info_t) +#define HOT_REMOVE_DISK		_IO (MD_MAJOR, 0x22) +#define SET_ARRAY_INFO		_IOW (MD_MAJOR, 0x23, mdu_array_info_t) +#define SET_DISK_INFO		_IO (MD_MAJOR, 0x24) +#define WRITE_RAID_INFO		_IO (MD_MAJOR, 0x25) +#define UNPROTECT_ARRAY		_IO (MD_MAJOR, 0x26) +#define PROTECT_ARRAY		_IO (MD_MAJOR, 0x27) +#define HOT_ADD_DISK		_IO (MD_MAJOR, 0x28) +#define SET_DISK_FAULTY		_IO (MD_MAJOR, 0x29) +#define HOT_GENERATE_ERROR	_IO (MD_MAJOR, 0x2a) +#define SET_BITMAP_FILE		_IOW (MD_MAJOR, 0x2b, int) + +/* usage */ +#define RUN_ARRAY		_IOW (MD_MAJOR, 0x30, mdu_param_t) +/*  0x31 was START_ARRAY  */ +#define STOP_ARRAY		_IO (MD_MAJOR, 0x32) +#define STOP_ARRAY_RO		_IO (MD_MAJOR, 0x33) +#define RESTART_ARRAY_RW	_IO (MD_MAJOR, 0x34) + +/* 63 partitions with the alternate major number (mdp) */ +#define MdpMinorShift 6 + +typedef struct mdu_version_s { +	int major; +	int minor; +	int patchlevel; +} mdu_version_t; + +typedef struct mdu_array_info_s { +	/* +	 * Generic constant information +	 */ +	int major_version; +	int minor_version; +	int patch_version; +	int ctime; +	int level; +	int size; +	int nr_disks; +	int raid_disks; +	int md_minor; +	int not_persistent; + +	/* +	 * Generic state information +	 */ +	int utime;		/*  0 Superblock update time		      */ +	int state;		/*  1 State bits (clean, ...)		      */ +	int active_disks;	/*  2 Number of currently active disks	      */ +	int working_disks;	/*  3 Number of working disks		      */ +	int failed_disks;	/*  4 Number of failed disks		      */ +	int spare_disks;	/*  5 Number of spare disks		      */ + +	/* +	 * Personality information +	 */ +	int layout;		/*  0 the array's physical layout	      */ +	int chunk_size;	/*  1 chunk size in bytes		      */ + +} mdu_array_info_t; + +/* non-obvious values for 'level' */ +#define	LEVEL_MULTIPATH		(-4) +#define	LEVEL_LINEAR		(-1) +#define	LEVEL_FAULTY		(-5) + +/* we need a value for 'no level specified' and 0 + * means 'raid0', so we need something else.  This is + * for internal use only + */ +#define	LEVEL_NONE		(-1000000) + +typedef struct mdu_disk_info_s { +	/* +	 * configuration/status of one particular disk +	 */ +	int number; +	int major; +	int minor; +	int raid_disk; +	int state; + +} mdu_disk_info_t; + +typedef struct mdu_start_info_s { +	/* +	 * configuration/status of one particular disk +	 */ +	int major; +	int minor; +	int raid_disk; +	int state; + +} mdu_start_info_t; + +typedef struct mdu_bitmap_file_s +{ +	char pathname[4096]; +} mdu_bitmap_file_t; + +typedef struct mdu_param_s +{ +	int			personality;	/* 1,2,3,4 */ +	int			chunk_size;	/* in bytes */ +	int			max_fault;	/* unused for now */ +} mdu_param_t; + +#endif /* _UAPI_MD_U_H */ diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h index c4b89a5cb7d..e962faa5ab0 100644 --- a/include/uapi/linux/tcp.h +++ b/include/uapi/linux/tcp.h @@ -130,6 +130,7 @@ enum {  #define TCPI_OPT_WSCALE		4  #define TCPI_OPT_ECN		8 /* ECN was negociated at TCP session init */  #define TCPI_OPT_ECN_SEEN	16 /* we received at least one packet with ECT */ +#define TCPI_OPT_SYN_DATA	32 /* SYN-ACK acked data in SYN sent or rcvd */  enum tcp_ca_state {  	TCP_CA_Open = 0, diff --git a/include/xen/grant_table.h b/include/xen/grant_table.h index aecee9d112c..694dcaf266e 100644 --- a/include/xen/grant_table.h +++ b/include/xen/grant_table.h @@ -170,7 +170,7 @@ gnttab_set_unmap_op(struct gnttab_unmap_grant_ref *unmap, phys_addr_t addr,  	unmap->dev_bus_addr = 0;  } -int arch_gnttab_map_shared(unsigned long *frames, unsigned long nr_gframes, +int arch_gnttab_map_shared(xen_pfn_t *frames, unsigned long nr_gframes,  			   unsigned long max_nr_gframes,  			   void **__shared);  int arch_gnttab_map_status(uint64_t *frames, unsigned long nr_gframes, diff --git a/include/xen/interface/grant_table.h b/include/xen/interface/grant_table.h index f9f8b975ae7..e40fae9bf11 100644 --- a/include/xen/interface/grant_table.h +++ b/include/xen/interface/grant_table.h @@ -310,7 +310,7 @@ struct gnttab_setup_table {      uint32_t nr_frames;      /* OUT parameters. */      int16_t  status;              /* GNTST_* */ -    GUEST_HANDLE(ulong) frame_list; +    GUEST_HANDLE(xen_pfn_t) frame_list;  };  DEFINE_GUEST_HANDLE_STRUCT(gnttab_setup_table); diff --git a/include/xen/interface/memory.h b/include/xen/interface/memory.h index b66d04ce695..90712e2072d 100644 --- a/include/xen/interface/memory.h +++ b/include/xen/interface/memory.h @@ -179,28 +179,8 @@ struct xen_add_to_physmap {  };  DEFINE_GUEST_HANDLE_STRUCT(xen_add_to_physmap); -/* - * Translates a list of domain-specific GPFNs into MFNs. Returns a -ve error - * code on failure. This call only works for auto-translated guests. - */ -#define XENMEM_translate_gpfn_list  8 -struct xen_translate_gpfn_list { -    /* Which domain to translate for? */ -    domid_t domid; - -    /* Length of list. */ -    xen_ulong_t nr_gpfns; - -    /* List of GPFNs to translate. */ -    GUEST_HANDLE(ulong) gpfn_list; - -    /* -     * Output list to contain MFN translations. May be the same as the input -     * list (in which case each input GPFN is overwritten with the output MFN). -     */ -    GUEST_HANDLE(ulong) mfn_list; -}; -DEFINE_GUEST_HANDLE_STRUCT(xen_translate_gpfn_list); +/*** REMOVED ***/ +/*#define XENMEM_translate_gpfn_list  8*/  /*   * Returns the pseudo-physical memory map as it was when the domain  |