diff options
Diffstat (limited to 'include')
34 files changed, 144 insertions, 43 deletions
diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index f22e7fe4b6d..c99c3d3e781 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -118,6 +118,7 @@ int drm_fb_helper_setcolreg(unsigned regno,  			    unsigned transp,  			    struct fb_info *info); +bool drm_fb_helper_restore_fbdev_mode(struct drm_fb_helper *fb_helper);  void drm_fb_helper_restore(void);  void drm_fb_helper_fill_var(struct fb_info *info, struct drm_fb_helper *fb_helper,  			    uint32_t fb_width, uint32_t fb_height); @@ -126,7 +127,7 @@ void drm_fb_helper_fill_fix(struct fb_info *info, uint32_t pitch,  int drm_fb_helper_setcmap(struct fb_cmap *cmap, struct fb_info *info); -bool drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper); +int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper);  bool drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper, int bpp_sel);  int drm_fb_helper_single_add_all_connectors(struct drm_fb_helper *fb_helper);  int drm_fb_helper_debug_enter(struct fb_info *info); diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h index c2f93a8ae2e..564b14aa7e1 100644 --- a/include/drm/drm_mm.h +++ b/include/drm/drm_mm.h @@ -86,7 +86,7 @@ static inline bool drm_mm_initialized(struct drm_mm *mm)  }  #define drm_mm_for_each_node(entry, mm) list_for_each_entry(entry, \  						&(mm)->head_node.node_list, \ -						node_list); +						node_list)  #define drm_mm_for_each_scanned_node_reverse(entry, n, mm) \  	for (entry = (mm)->prev_scanned_node, \  		next = entry ? list_entry(entry->node_list.next, \ diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h index 816e30cbd96..f04b2a3b0f4 100644 --- a/include/drm/drm_pciids.h +++ b/include/drm/drm_pciids.h @@ -155,6 +155,7 @@  	{0x1002, 0x6719, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAYMAN|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x671c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAYMAN|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x671d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAYMAN|RADEON_NEW_MEMMAP}, \ +	{0x1002, 0x671f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CAYMAN|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6720, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BARTS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6721, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BARTS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6722, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BARTS|RADEON_NEW_MEMMAP}, \ @@ -167,6 +168,7 @@  	{0x1002, 0x6729, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BARTS|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6738, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BARTS|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6739, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BARTS|RADEON_NEW_MEMMAP}, \ +	{0x1002, 0x673e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BARTS|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6740, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6741, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6742, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TURKS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ @@ -199,6 +201,7 @@  	{0x1002, 0x688D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6898, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6899, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_NEW_MEMMAP}, \ +	{0x1002, 0x689b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x689c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_HEMLOCK|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x689d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_HEMLOCK|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x689e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYPRESS|RADEON_NEW_MEMMAP}, \ @@ -209,7 +212,9 @@  	{0x1002, 0x68b0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_JUNIPER|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x68b8, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_JUNIPER|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x68b9, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_JUNIPER|RADEON_NEW_MEMMAP}, \ +	{0x1002, 0x68ba, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_JUNIPER|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x68be, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_JUNIPER|RADEON_NEW_MEMMAP}, \ +	{0x1002, 0x68bf, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_JUNIPER|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x68c0, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_REDWOOD|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x68c1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_REDWOOD|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x68c7, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_REDWOOD|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h index 3bce1a4fc30..787f7b6fd62 100644 --- a/include/drm/radeon_drm.h +++ b/include/drm/radeon_drm.h @@ -909,6 +909,8 @@ struct drm_radeon_cs {  #define RADEON_INFO_WANT_CMASK		0x08 /* get access to CMASK on r300 */  #define RADEON_INFO_CLOCK_CRYSTAL_FREQ	0x09 /* clock crystal frequency */  #define RADEON_INFO_NUM_BACKENDS	0x0a /* DB/backends for r600+ - need for OQ */ +#define RADEON_INFO_NUM_TILE_PIPES	0x0b /* tile pipes for r600+ */ +#define RADEON_INFO_FUSION_GART_WORKING	0x0c /* fusion writes to GTT were broken before this */  struct drm_radeon_info {  	uint32_t		request; diff --git a/include/linux/bit_spinlock.h b/include/linux/bit_spinlock.h index e612575a259..b4326bfa684 100644 --- a/include/linux/bit_spinlock.h +++ b/include/linux/bit_spinlock.h @@ -23,11 +23,11 @@ static inline void bit_spin_lock(int bitnum, unsigned long *addr)  	preempt_disable();  #if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK)  	while (unlikely(test_and_set_bit_lock(bitnum, addr))) { -		while (test_bit(bitnum, addr)) { -			preempt_enable(); +		preempt_enable(); +		do {  			cpu_relax(); -			preempt_disable(); -		} +		} while (test_bit(bitnum, addr)); +		preempt_disable();  	}  #endif  	__acquire(bitlock); diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h index b8613e806aa..01eca1794e1 100644 --- a/include/linux/bootmem.h +++ b/include/linux/bootmem.h @@ -111,6 +111,8 @@ extern void *__alloc_bootmem_low_node(pg_data_t *pgdat,  	__alloc_bootmem_nopanic(x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))  #define alloc_bootmem_node(pgdat, x) \  	__alloc_bootmem_node(pgdat, x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) +#define alloc_bootmem_node_nopanic(pgdat, x) \ +	__alloc_bootmem_node_nopanic(pgdat, x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))  #define alloc_bootmem_pages_node(pgdat, x) \  	__alloc_bootmem_node(pgdat, x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))  #define alloc_bootmem_pages_node_nopanic(pgdat, x) \ diff --git a/include/linux/capability.h b/include/linux/capability.h index 16ee8b49a20..d4675af963f 100644 --- a/include/linux/capability.h +++ b/include/linux/capability.h @@ -546,18 +546,7 @@ extern bool has_capability_noaudit(struct task_struct *t, int cap);  extern bool capable(int cap);  extern bool ns_capable(struct user_namespace *ns, int cap);  extern bool task_ns_capable(struct task_struct *t, int cap); - -/** - * nsown_capable - Check superior capability to one's own user_ns - * @cap: The capability in question - * - * Return true if the current task has the given superior capability - * targeted at its own user namespace. - */ -static inline bool nsown_capable(int cap) -{ -	return ns_capable(current_user_ns(), cap); -} +extern bool nsown_capable(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/cred.h b/include/linux/cred.h index 9aeeb0ba200..be16b61283c 100644 --- a/include/linux/cred.h +++ b/include/linux/cred.h @@ -146,6 +146,7 @@ struct cred {  	void		*security;	/* subjective LSM security */  #endif  	struct user_struct *user;	/* real user ID subscription */ +	struct user_namespace *user_ns; /* cached user->user_ns */  	struct group_info *group_info;	/* supplementary groups for euid/fsgid */  	struct rcu_head	rcu;		/* RCU deletion hook */  }; @@ -354,10 +355,15 @@ static inline void put_cred(const struct cred *_cred)  #define current_fsgid() 	(current_cred_xxx(fsgid))  #define current_cap()		(current_cred_xxx(cap_effective))  #define current_user()		(current_cred_xxx(user)) -#define _current_user_ns()	(current_cred_xxx(user)->user_ns)  #define current_security()	(current_cred_xxx(security)) -extern struct user_namespace *current_user_ns(void); +#ifdef CONFIG_USER_NS +#define current_user_ns() (current_cred_xxx(user_ns)) +#else +extern struct user_namespace init_user_ns; +#define current_user_ns() (&init_user_ns) +#endif +  #define current_uid_gid(_uid, _gid)		\  do {						\ diff --git a/include/linux/fb.h b/include/linux/fb.h index df728c1c29e..6a827487717 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -832,6 +832,7 @@ struct fb_tile_ops {  #define FBINFO_CAN_FORCE_OUTPUT     0x200000  struct fb_info { +	atomic_t count;  	int node;  	int flags;  	struct mutex lock;		/* Lock for open/release/ioctl funcs */ diff --git a/include/linux/flex_array.h b/include/linux/flex_array.h index 70e4efabe0f..ebeb2f3ad06 100644 --- a/include/linux/flex_array.h +++ b/include/linux/flex_array.h @@ -61,7 +61,7 @@ struct flex_array {  struct flex_array *flex_array_alloc(int element_size, unsigned int total,  		gfp_t flags);  int flex_array_prealloc(struct flex_array *fa, unsigned int start, -		unsigned int end, gfp_t flags); +		unsigned int nr_elements, gfp_t flags);  void flex_array_free(struct flex_array *fa);  void flex_array_free_parts(struct flex_array *fa);  int flex_array_put(struct flex_array *fa, unsigned int element_nr, void *src, diff --git a/include/linux/fs.h b/include/linux/fs.h index dbd860af080..cdf9495df20 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -358,7 +358,6 @@ struct inodes_stat_t {  #define FS_EXTENT_FL			0x00080000 /* Extents */  #define FS_DIRECTIO_FL			0x00100000 /* Use direct i/o */  #define FS_NOCOW_FL			0x00800000 /* Do not cow file */ -#define FS_COW_FL			0x02000000 /* Cow file */  #define FS_RESERVED_FL			0x80000000 /* reserved for ext2 lib */  #define FS_FL_USER_VISIBLE		0x0003DFFF /* User visible flags */ diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index 22b32af1b5e..b5a550a39a7 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h @@ -37,6 +37,7 @@ struct trace_entry {  	unsigned char		flags;  	unsigned char		preempt_count;  	int			pid; +	int			padding;  };  #define FTRACE_MAX_EVENT						\ diff --git a/include/linux/gfp.h b/include/linux/gfp.h index bfb8f934521..56d8fc87fbb 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -353,6 +353,8 @@ extern unsigned long get_zeroed_page(gfp_t gfp_mask);  void *alloc_pages_exact(size_t size, gfp_t gfp_mask);  void free_pages_exact(void *virt, size_t size); +/* This is different from alloc_pages_exact_node !!! */ +void *alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask);  #define __get_free_page(gfp_mask) \  		__get_free_pages((gfp_mask), 0) diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index df29c8fde36..8847c8c2979 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -117,7 +117,7 @@ static inline void vma_adjust_trans_huge(struct vm_area_struct *vma,  					 unsigned long end,  					 long adjust_next)  { -	if (!vma->anon_vma || vma->vm_ops || vma->vm_file) +	if (!vma->anon_vma || vma->vm_ops)  		return;  	__vma_adjust_trans_huge(vma, start, end, adjust_next);  } diff --git a/include/linux/kmod.h b/include/linux/kmod.h index 6efd7a78de6..31023182385 100644 --- a/include/linux/kmod.h +++ b/include/linux/kmod.h @@ -113,5 +113,6 @@ extern void usermodehelper_init(void);  extern int usermodehelper_disable(void);  extern void usermodehelper_enable(void); +extern bool usermodehelper_is_disabled(void);  #endif /* __LINUX_KMOD_H__ */ diff --git a/include/linux/list_bl.h b/include/linux/list_bl.h index 5bad17d1acd..31f9d75adc5 100644 --- a/include/linux/list_bl.h +++ b/include/linux/list_bl.h @@ -2,6 +2,7 @@  #define _LINUX_LIST_BL_H  #include <linux/list.h> +#include <linux/bit_spinlock.h>  /*   * Special version of lists, where head of the list has a lock in the lowest @@ -114,6 +115,16 @@ static inline void hlist_bl_del_init(struct hlist_bl_node *n)  	}  } +static inline void hlist_bl_lock(struct hlist_bl_head *b) +{ +	bit_spin_lock(0, (unsigned long *)b); +} + +static inline void hlist_bl_unlock(struct hlist_bl_head *b) +{ +	__bit_spin_unlock(0, (unsigned long *)b); +} +  /**   * hlist_bl_for_each_entry	- iterate over list of given type   * @tpos:	the type * to use as a loop cursor. diff --git a/include/linux/mfd/wm831x/pdata.h b/include/linux/mfd/wm831x/pdata.h index afe4db49402..632d1567a1b 100644 --- a/include/linux/mfd/wm831x/pdata.h +++ b/include/linux/mfd/wm831x/pdata.h @@ -81,7 +81,9 @@ struct wm831x_touch_pdata {  	int rpu;               /** Pen down sensitivity resistor divider */  	int pressure;          /** Report pressure (boolean) */  	unsigned int data_irq; /** Touch data ready IRQ */ +	int data_irqf;         /** IRQ flags for data ready IRQ */  	unsigned int pd_irq;   /** Touch pendown detect IRQ */ +	int pd_irqf;           /** IRQ flags for pen down IRQ */  };  enum wm831x_watchdog_action { diff --git a/include/linux/mm.h b/include/linux/mm.h index 692dbae6ffa..6507dde38b1 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -137,7 +137,8 @@ extern unsigned int kobjsize(const void *objp);  #define VM_RandomReadHint(v)		((v)->vm_flags & VM_RAND_READ)  /* - * special vmas that are non-mergable, non-mlock()able + * Special vmas that are non-mergable, non-mlock()able. + * Note: mm/huge_memory.c VM_NO_THP depends on this definition.   */  #define VM_SPECIAL (VM_IO | VM_DONTEXPAND | VM_RESERVED | VM_PFNMAP) @@ -1010,11 +1011,33 @@ int set_page_dirty_lock(struct page *page);  int clear_page_dirty_for_io(struct page *page);  /* Is the vma a continuation of the stack vma above it? */ -static inline int vma_stack_continue(struct vm_area_struct *vma, unsigned long addr) +static inline int vma_growsdown(struct vm_area_struct *vma, unsigned long addr)  {  	return vma && (vma->vm_end == addr) && (vma->vm_flags & VM_GROWSDOWN);  } +static inline int stack_guard_page_start(struct vm_area_struct *vma, +					     unsigned long addr) +{ +	return (vma->vm_flags & VM_GROWSDOWN) && +		(vma->vm_start == addr) && +		!vma_growsdown(vma->vm_prev, addr); +} + +/* Is the vma a continuation of the stack vma below it? */ +static inline int vma_growsup(struct vm_area_struct *vma, unsigned long addr) +{ +	return vma && (vma->vm_start == addr) && (vma->vm_flags & VM_GROWSUP); +} + +static inline int stack_guard_page_end(struct vm_area_struct *vma, +					   unsigned long addr) +{ +	return (vma->vm_flags & VM_GROWSUP) && +		(vma->vm_end == addr) && +		!vma_growsup(vma->vm_next, addr); +} +  extern unsigned long move_page_tables(struct vm_area_struct *vma,  		unsigned long old_addr, struct vm_area_struct *new_vma,  		unsigned long new_addr, unsigned long len); diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h index 216cea5db0a..87694ca8691 100644 --- a/include/linux/nfs_fs_sb.h +++ b/include/linux/nfs_fs_sb.h @@ -47,6 +47,7 @@ struct nfs_client {  #ifdef CONFIG_NFS_V4  	u64			cl_clientid;	/* constant */ +	nfs4_verifier		cl_confirm;	/* Clientid verifier */  	unsigned long		cl_state;  	spinlock_t		cl_lock; diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 78b101e487e..7e371f7df9c 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h @@ -50,6 +50,7 @@ struct nfs_fattr {  	} du;  	struct nfs_fsid		fsid;  	__u64			fileid; +	__u64			mounted_on_fileid;  	struct timespec		atime;  	struct timespec		mtime;  	struct timespec		ctime; @@ -83,6 +84,7 @@ struct nfs_fattr {  #define NFS_ATTR_FATTR_PRECHANGE	(1U << 18)  #define NFS_ATTR_FATTR_V4_REFERRAL	(1U << 19)	/* NFSv4 referral */  #define NFS_ATTR_FATTR_MOUNTPOINT	(1U << 20)	/* Treat as mountpoint */ +#define NFS_ATTR_FATTR_MOUNTED_ON_FILEID		(1U << 21)  #define NFS_ATTR_FATTR (NFS_ATTR_FATTR_TYPE \  		| NFS_ATTR_FATTR_MODE \ @@ -231,6 +233,7 @@ struct nfs4_layoutget {  	struct nfs4_layoutget_args args;  	struct nfs4_layoutget_res res;  	struct pnfs_layout_segment **lsegpp; +	gfp_t gfp_flags;  };  struct nfs4_getdeviceinfo_args { diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 4e2c9150a78..8abe8d78c4b 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -2477,15 +2477,12 @@  #define PCI_DEVICE_ID_INTEL_82840_HB	0x1a21  #define PCI_DEVICE_ID_INTEL_82845_HB	0x1a30  #define PCI_DEVICE_ID_INTEL_IOAT	0x1a38 -#define PCI_DEVICE_ID_INTEL_COUGARPOINT_SMBUS	0x1c22  #define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MIN	0x1c41  #define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MAX	0x1c5f -#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS	0x1d22  #define PCI_DEVICE_ID_INTEL_PATSBURG_LPC_0	0x1d40  #define PCI_DEVICE_ID_INTEL_PATSBURG_LPC_1	0x1d41  #define PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MIN	0x2310  #define PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MAX	0x231f -#define PCI_DEVICE_ID_INTEL_DH89XXCC_SMBUS	0x2330  #define PCI_DEVICE_ID_INTEL_82801AA_0	0x2410  #define PCI_DEVICE_ID_INTEL_82801AA_1	0x2411  #define PCI_DEVICE_ID_INTEL_82801AA_3	0x2413 @@ -2696,7 +2693,6 @@  #define PCI_DEVICE_ID_INTEL_ICH10_5	0x3a60  #define PCI_DEVICE_ID_INTEL_5_3400_SERIES_LPC_MIN	0x3b00  #define PCI_DEVICE_ID_INTEL_5_3400_SERIES_LPC_MAX	0x3b1f -#define PCI_DEVICE_ID_INTEL_5_3400_SERIES_SMBUS	0x3b30  #define PCI_DEVICE_ID_INTEL_IOAT_SNB	0x402f  #define PCI_DEVICE_ID_INTEL_5100_16	0x65f0  #define PCI_DEVICE_ID_INTEL_5100_21	0x65f5 diff --git a/include/linux/percpu.h b/include/linux/percpu.h index 3a5c4449fd3..8b97308e65d 100644 --- a/include/linux/percpu.h +++ b/include/linux/percpu.h @@ -948,7 +948,7 @@ do {									\  	irqsafe_generic_cpu_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2)  # endif  # define irqsafe_cpu_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2)	\ -	__pcpu_double_call_return_int(irqsafe_cpu_cmpxchg_double_, (pcp1), (pcp2), (oval1), (oval2), (nval1), (nval2)) +	__pcpu_double_call_return_bool(irqsafe_cpu_cmpxchg_double_, (pcp1), (pcp2), (oval1), (oval2), (nval1), (nval2))  #endif  #endif /* __LINUX_PERCPU_H */ diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h index a1147e5dd24..9178d5cc0b0 100644 --- a/include/linux/ptrace.h +++ b/include/linux/ptrace.h @@ -189,6 +189,10 @@ static inline void ptrace_init_task(struct task_struct *child, bool ptrace)  		child->ptrace = current->ptrace;  		__ptrace_link(child, current->parent);  	} + +#ifdef CONFIG_HAVE_HW_BREAKPOINT +	atomic_set(&child->ptrace_bp_refcnt, 1); +#endif  }  /** @@ -350,6 +354,13 @@ extern int task_current_syscall(struct task_struct *target, long *callno,  				unsigned long args[6], unsigned int maxargs,  				unsigned long *sp, unsigned long *pc); -#endif +#ifdef CONFIG_HAVE_HW_BREAKPOINT +extern int ptrace_get_breakpoints(struct task_struct *tsk); +extern void ptrace_put_breakpoints(struct task_struct *tsk); +#else +static inline void ptrace_put_breakpoints(struct task_struct *tsk) { } +#endif /* CONFIG_HAVE_HW_BREAKPOINT */ + +#endif /* __KERNEL */  #endif diff --git a/include/linux/sched.h b/include/linux/sched.h index 18d63cea284..781abd13767 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1537,6 +1537,9 @@ struct task_struct {  		unsigned long memsw_nr_pages; /* uncharged mem+swap usage */  	} memcg_batch;  #endif +#ifdef CONFIG_HAVE_HW_BREAKPOINT +	atomic_t ptrace_bp_refcnt; +#endif  };  /* Future-safe accessor for struct task_struct's cpus_allowed. */ diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h index d81db8012c6..f73c482ec9c 100644 --- a/include/linux/sunrpc/sched.h +++ b/include/linux/sunrpc/sched.h @@ -127,13 +127,16 @@ struct rpc_task_setup {  #define RPC_TASK_KILLED		0x0100		/* task was killed */  #define RPC_TASK_SOFT		0x0200		/* Use soft timeouts */  #define RPC_TASK_SOFTCONN	0x0400		/* Fail if can't connect */ +#define RPC_TASK_SENT		0x0800		/* message was sent */ +#define RPC_TASK_TIMEOUT	0x1000		/* fail with ETIMEDOUT on timeout */  #define RPC_IS_ASYNC(t)		((t)->tk_flags & RPC_TASK_ASYNC)  #define RPC_IS_SWAPPER(t)	((t)->tk_flags & RPC_TASK_SWAPPER)  #define RPC_DO_ROOTOVERRIDE(t)	((t)->tk_flags & RPC_TASK_ROOTCREDS)  #define RPC_ASSASSINATED(t)	((t)->tk_flags & RPC_TASK_KILLED) -#define RPC_IS_SOFT(t)		((t)->tk_flags & RPC_TASK_SOFT) +#define RPC_IS_SOFT(t)		((t)->tk_flags & (RPC_TASK_SOFT|RPC_TASK_TIMEOUT))  #define RPC_IS_SOFTCONN(t)	((t)->tk_flags & RPC_TASK_SOFTCONN) +#define RPC_WAS_SENT(t)		((t)->tk_flags & RPC_TASK_SENT)  #define RPC_TASK_RUNNING	0  #define RPC_TASK_QUEUED		1 diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h index 0e1855079fb..605b0aa8d85 100644 --- a/include/linux/usb/usbnet.h +++ b/include/linux/usb/usbnet.h @@ -68,6 +68,7 @@ struct usbnet {  #		define EVENT_RX_PAUSED	5  #		define EVENT_DEV_WAKING 6  #		define EVENT_DEV_ASLEEP 7 +#		define EVENT_DEV_OPEN	8  };  static inline struct usb_driver *driver_of(struct usb_interface *intf) diff --git a/include/linux/v4l2-mediabus.h b/include/linux/v4l2-mediabus.h index 7054a7a8065..de5c1592102 100644 --- a/include/linux/v4l2-mediabus.h +++ b/include/linux/v4l2-mediabus.h @@ -47,7 +47,7 @@ enum v4l2_mbus_pixelcode {  	V4L2_MBUS_FMT_RGB565_2X8_BE = 0x1007,  	V4L2_MBUS_FMT_RGB565_2X8_LE = 0x1008, -	/* YUV (including grey) - next is 0x2013 */ +	/* YUV (including grey) - next is 0x2014 */  	V4L2_MBUS_FMT_Y8_1X8 = 0x2001,  	V4L2_MBUS_FMT_UYVY8_1_5X8 = 0x2002,  	V4L2_MBUS_FMT_VYUY8_1_5X8 = 0x2003, @@ -60,6 +60,7 @@ enum v4l2_mbus_pixelcode {  	V4L2_MBUS_FMT_Y10_1X10 = 0x200a,  	V4L2_MBUS_FMT_YUYV10_2X10 = 0x200b,  	V4L2_MBUS_FMT_YVYU10_2X10 = 0x200c, +	V4L2_MBUS_FMT_Y12_1X12 = 0x2013,  	V4L2_MBUS_FMT_UYVY8_1X16 = 0x200f,  	V4L2_MBUS_FMT_VYUY8_1X16 = 0x2010,  	V4L2_MBUS_FMT_YUYV8_1X16 = 0x2011, @@ -67,9 +68,11 @@ enum v4l2_mbus_pixelcode {  	V4L2_MBUS_FMT_YUYV10_1X20 = 0x200d,  	V4L2_MBUS_FMT_YVYU10_1X20 = 0x200e, -	/* Bayer - next is 0x3013 */ +	/* Bayer - next is 0x3015 */  	V4L2_MBUS_FMT_SBGGR8_1X8 = 0x3001, +	V4L2_MBUS_FMT_SGBRG8_1X8 = 0x3013,  	V4L2_MBUS_FMT_SGRBG8_1X8 = 0x3002, +	V4L2_MBUS_FMT_SRGGB8_1X8 = 0x3014,  	V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8 = 0x300b,  	V4L2_MBUS_FMT_SGBRG10_DPCM8_1X8 = 0x300c,  	V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8 = 0x3009, diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index aa6c393b7ae..be82c8ead1a 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h @@ -308,6 +308,7 @@ struct v4l2_pix_format {  #define V4L2_PIX_FMT_Y4      v4l2_fourcc('Y', '0', '4', ' ') /*  4  Greyscale     */  #define V4L2_PIX_FMT_Y6      v4l2_fourcc('Y', '0', '6', ' ') /*  6  Greyscale     */  #define V4L2_PIX_FMT_Y10     v4l2_fourcc('Y', '1', '0', ' ') /* 10  Greyscale     */ +#define V4L2_PIX_FMT_Y12     v4l2_fourcc('Y', '1', '2', ' ') /* 12  Greyscale     */  #define V4L2_PIX_FMT_Y16     v4l2_fourcc('Y', '1', '6', ' ') /* 16  Greyscale     */  /* Palette formats */ diff --git a/include/media/v4l2-device.h b/include/media/v4l2-device.h index bd102cf509a..d61febfb166 100644 --- a/include/media/v4l2-device.h +++ b/include/media/v4l2-device.h @@ -163,7 +163,7 @@ v4l2_device_register_subdev_nodes(struct v4l2_device *v4l2_dev);  ({									\  	struct v4l2_subdev *__sd;					\  	__v4l2_device_call_subdevs_until_err_p(v4l2_dev, __sd, cond, o,	\ -						f, args...);		\ +						f , ##args);		\  })  /* Call the specified callback for all subdevs matching grp_id (if 0, then diff --git a/include/net/inet_ecn.h b/include/net/inet_ecn.h index 88bdd010d65..2fa8d1341a0 100644 --- a/include/net/inet_ecn.h +++ b/include/net/inet_ecn.h @@ -38,9 +38,19 @@ static inline __u8 INET_ECN_encapsulate(__u8 outer, __u8 inner)  	return outer;  } -#define	INET_ECN_xmit(sk) do { inet_sk(sk)->tos |= INET_ECN_ECT_0; } while (0) -#define	INET_ECN_dontxmit(sk) \ -	do { inet_sk(sk)->tos &= ~INET_ECN_MASK; } while (0) +static inline void INET_ECN_xmit(struct sock *sk) +{ +	inet_sk(sk)->tos |= INET_ECN_ECT_0; +	if (inet6_sk(sk) != NULL) +		inet6_sk(sk)->tclass |= INET_ECN_ECT_0; +} + +static inline void INET_ECN_dontxmit(struct sock *sk) +{ +	inet_sk(sk)->tos &= ~INET_ECN_MASK; +	if (inet6_sk(sk) != NULL) +		inet6_sk(sk)->tclass &= ~INET_ECN_MASK; +}  #define IP6_ECN_flow_init(label) do {		\        (label) &= ~htonl(INET_ECN_MASK << 20);	\ diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h index d516f00c8e0..86aefed6140 100644 --- a/include/net/ip_vs.h +++ b/include/net/ip_vs.h @@ -791,6 +791,7 @@ struct ip_vs_app {  /* IPVS in network namespace */  struct netns_ipvs {  	int			gen;		/* Generation */ +	int			enable;		/* enable like nf_hooks do */  	/*  	 *	Hash table: for real service lookups  	 */ @@ -1089,6 +1090,22 @@ ip_vs_control_add(struct ip_vs_conn *cp, struct ip_vs_conn *ctl_cp)  	atomic_inc(&ctl_cp->n_control);  } +/* + * IPVS netns init & cleanup functions + */ +extern int __ip_vs_estimator_init(struct net *net); +extern int __ip_vs_control_init(struct net *net); +extern int __ip_vs_protocol_init(struct net *net); +extern int __ip_vs_app_init(struct net *net); +extern int __ip_vs_conn_init(struct net *net); +extern int __ip_vs_sync_init(struct net *net); +extern void __ip_vs_conn_cleanup(struct net *net); +extern void __ip_vs_app_cleanup(struct net *net); +extern void __ip_vs_protocol_cleanup(struct net *net); +extern void __ip_vs_control_cleanup(struct net *net); +extern void __ip_vs_estimator_cleanup(struct net *net); +extern void __ip_vs_sync_cleanup(struct net *net); +extern void __ip_vs_service_cleanup(struct net *net);  /*   *      IPVS application functions diff --git a/include/net/llc_pdu.h b/include/net/llc_pdu.h index 75b8e2968c9..f57e7d46a45 100644 --- a/include/net/llc_pdu.h +++ b/include/net/llc_pdu.h @@ -199,7 +199,7 @@ struct llc_pdu_sn {  	u8 ssap;  	u8 ctrl_1;  	u8 ctrl_2; -}; +} __packed;  static inline struct llc_pdu_sn *llc_pdu_sn_hdr(struct sk_buff *skb)  { @@ -211,7 +211,7 @@ struct llc_pdu_un {  	u8 dsap;  	u8 ssap;  	u8 ctrl_1; -}; +} __packed;  static inline struct llc_pdu_un *llc_pdu_un_hdr(struct sk_buff *skb)  { @@ -359,7 +359,7 @@ struct llc_xid_info {  	u8 fmt_id;	/* always 0x81 for LLC */  	u8 type;	/* different if NULL/non-NULL LSAP */  	u8 rw;		/* sender receive window */ -}; +} __packed;  /**   *	llc_pdu_init_as_xid_cmd - sets bytes 3, 4 & 5 of LLC header as XID @@ -415,7 +415,7 @@ struct llc_frmr_info {  	u8  curr_ssv;		/* current send state variable val */  	u8  curr_rsv;		/* current receive state variable */  	u8  ind_bits;		/* indicator bits set with macro */ -}; +} __packed;  extern void llc_pdu_set_cmd_rsp(struct sk_buff *skb, u8 type);  extern void llc_pdu_set_pf_bit(struct sk_buff *skb, u8 bit_value); diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 6ae4bc5ce8a..20afeaa3939 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -324,6 +324,7 @@ struct xfrm_state_afinfo {  	int			(*tmpl_sort)(struct xfrm_tmpl **dst, struct xfrm_tmpl **src, int n);  	int			(*state_sort)(struct xfrm_state **dst, struct xfrm_state **src, int n);  	int			(*output)(struct sk_buff *skb); +	int			(*output_finish)(struct sk_buff *skb);  	int			(*extract_input)(struct xfrm_state *x,  						 struct sk_buff *skb);  	int			(*extract_output)(struct xfrm_state *x, @@ -1454,6 +1455,7 @@ static inline int xfrm4_rcv_spi(struct sk_buff *skb, int nexthdr, __be32 spi)  extern int xfrm4_extract_output(struct xfrm_state *x, struct sk_buff *skb);  extern int xfrm4_prepare_output(struct xfrm_state *x, struct sk_buff *skb);  extern int xfrm4_output(struct sk_buff *skb); +extern int xfrm4_output_finish(struct sk_buff *skb);  extern int xfrm4_tunnel_register(struct xfrm_tunnel *handler, unsigned short family);  extern int xfrm4_tunnel_deregister(struct xfrm_tunnel *handler, unsigned short family);  extern int xfrm6_extract_header(struct sk_buff *skb); @@ -1470,6 +1472,7 @@ extern __be32 xfrm6_tunnel_spi_lookup(struct net *net, xfrm_address_t *saddr);  extern int xfrm6_extract_output(struct xfrm_state *x, struct sk_buff *skb);  extern int xfrm6_prepare_output(struct xfrm_state *x, struct sk_buff *skb);  extern int xfrm6_output(struct sk_buff *skb); +extern int xfrm6_output_finish(struct sk_buff *skb);  extern int xfrm6_find_1stfragopt(struct xfrm_state *x, struct sk_buff *skb,  				 u8 **prevhdr); diff --git a/include/trace/events/gfpflags.h b/include/trace/events/gfpflags.h index e3615c09374..9fe3a36646e 100644 --- a/include/trace/events/gfpflags.h +++ b/include/trace/events/gfpflags.h @@ -10,6 +10,7 @@   */  #define show_gfp_flags(flags)						\  	(flags) ? __print_flags(flags, "|",				\ +	{(unsigned long)GFP_TRANSHUGE,		"GFP_TRANSHUGE"},	\  	{(unsigned long)GFP_HIGHUSER_MOVABLE,	"GFP_HIGHUSER_MOVABLE"}, \  	{(unsigned long)GFP_HIGHUSER,		"GFP_HIGHUSER"},	\  	{(unsigned long)GFP_USER,		"GFP_USER"},		\ @@ -32,6 +33,9 @@  	{(unsigned long)__GFP_HARDWALL,		"GFP_HARDWALL"},	\  	{(unsigned long)__GFP_THISNODE,		"GFP_THISNODE"},	\  	{(unsigned long)__GFP_RECLAIMABLE,	"GFP_RECLAIMABLE"},	\ -	{(unsigned long)__GFP_MOVABLE,		"GFP_MOVABLE"}		\ +	{(unsigned long)__GFP_MOVABLE,		"GFP_MOVABLE"},		\ +	{(unsigned long)__GFP_NOTRACK,		"GFP_NOTRACK"},		\ +	{(unsigned long)__GFP_NO_KSWAPD,	"GFP_NO_KSWAPD"},	\ +	{(unsigned long)__GFP_OTHER_NODE,	"GFP_OTHER_NODE"}	\  	) : "GFP_NOWAIT"  |