diff options
Diffstat (limited to 'include')
93 files changed, 371 insertions, 163 deletions
diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h index 2c744c7a5b3..26a92fc28a5 100644 --- a/include/acpi/acpixf.h +++ b/include/acpi/acpixf.h @@ -491,11 +491,11 @@ acpi_get_sleep_type_data(u8 sleep_state, u8 * slp_typ_a, u8 * slp_typ_b);  acpi_status acpi_enter_sleep_state_prep(u8 sleep_state); -acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state, u8 flags); +acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state);  ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status asmlinkage acpi_enter_sleep_state_s4bios(void)) -acpi_status acpi_leave_sleep_state_prep(u8 sleep_state, u8 flags); +acpi_status acpi_leave_sleep_state_prep(u8 sleep_state);  acpi_status acpi_leave_sleep_state(u8 sleep_state); diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h index 3af87de6a68..3d00bd5bd7e 100644 --- a/include/acpi/actypes.h +++ b/include/acpi/actypes.h @@ -803,7 +803,7 @@ typedef u8 acpi_adr_space_type;  /* Sleep function dispatch */ -typedef acpi_status(*ACPI_SLEEP_FUNCTION) (u8 sleep_state, u8 flags); +typedef acpi_status(*ACPI_SLEEP_FUNCTION) (u8 sleep_state);  struct acpi_sleep_functions {  	ACPI_SLEEP_FUNCTION legacy_function; diff --git a/include/asm-generic/mutex-xchg.h b/include/asm-generic/mutex-xchg.h index 580a6d35c70..c04e0db8a2d 100644 --- a/include/asm-generic/mutex-xchg.h +++ b/include/asm-generic/mutex-xchg.h @@ -26,7 +26,13 @@ static inline void  __mutex_fastpath_lock(atomic_t *count, void (*fail_fn)(atomic_t *))  {  	if (unlikely(atomic_xchg(count, 0) != 1)) -		fail_fn(count); +		/* +		 * We failed to acquire the lock, so mark it contended +		 * to ensure that any waiting tasks are woken up by the +		 * unlock slow path. +		 */ +		if (likely(atomic_xchg(count, -1) != 1)) +			fail_fn(count);  }  /** @@ -43,7 +49,8 @@ static inline int  __mutex_fastpath_lock_retval(atomic_t *count, int (*fail_fn)(atomic_t *))  {  	if (unlikely(atomic_xchg(count, 0) != 1)) -		return fail_fn(count); +		if (likely(atomic_xchg(count, -1) != 1)) +			return fail_fn(count);  	return 0;  } diff --git a/include/asm-generic/unistd.h b/include/asm-generic/unistd.h index 991ef01cd77..3748ec92dcb 100644 --- a/include/asm-generic/unistd.h +++ b/include/asm-generic/unistd.h @@ -691,9 +691,11 @@ __SC_COMP(__NR_process_vm_readv, sys_process_vm_readv, \  #define __NR_process_vm_writev 271  __SC_COMP(__NR_process_vm_writev, sys_process_vm_writev, \            compat_sys_process_vm_writev) +#define __NR_kcmp 272 +__SYSCALL(__NR_kcmp, sys_kcmp)  #undef __NR_syscalls -#define __NR_syscalls 272 +#define __NR_syscalls 273  /*   * All syscalls below here should go away really, diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index a1a0386e016..bfacf0d5a22 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h @@ -118,7 +118,8 @@ enum drm_mode_status {  	.hdisplay = (hd), .hsync_start = (hss), .hsync_end = (hse), \  	.htotal = (ht), .hskew = (hsk), .vdisplay = (vd), \  	.vsync_start = (vss), .vsync_end = (vse), .vtotal = (vt), \ -	.vscan = (vs), .flags = (f), .vrefresh = 0 +	.vscan = (vs), .flags = (f), .vrefresh = 0, \ +	.base.type = DRM_MODE_OBJECT_MODE  #define CRTC_INTERLACE_HALVE_V 0x1 /* halve V values for interlacing */ @@ -166,8 +167,6 @@ struct drm_display_mode {  	int crtc_vsync_start;  	int crtc_vsync_end;  	int crtc_vtotal; -	int crtc_hadjusted; -	int crtc_vadjusted;  	/* Driver private mode info */  	int private_size; diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h index bdf0152cbbe..f4621184a9b 100644 --- a/include/drm/drm_fourcc.h +++ b/include/drm/drm_fourcc.h @@ -107,8 +107,7 @@  #define DRM_FORMAT_NV16		fourcc_code('N', 'V', '1', '6') /* 2x1 subsampled Cr:Cb plane */  #define DRM_FORMAT_NV61		fourcc_code('N', 'V', '6', '1') /* 2x1 subsampled Cb:Cr plane */ -/* 2 non contiguous plane YCbCr */ -#define DRM_FORMAT_NV12M	fourcc_code('N', 'M', '1', '2') /* 2x2 subsampled Cr:Cb plane */ +/* special NV12 tiled format */  #define DRM_FORMAT_NV12MT	fourcc_code('T', 'M', '1', '2') /* 2x2 subsampled Cr:Cb plane 64x32 macroblocks */  /* @@ -131,7 +130,4 @@  #define DRM_FORMAT_YUV444	fourcc_code('Y', 'U', '2', '4') /* non-subsampled Cb (1) and Cr (2) planes */  #define DRM_FORMAT_YVU444	fourcc_code('Y', 'V', '2', '4') /* non-subsampled Cr (1) and Cb (2) planes */ -/* 3 non contiguous plane YCbCr */ -#define DRM_FORMAT_YUV420M	fourcc_code('Y', 'M', '1', '2') /* 2x2 subsampled Cb (1) and Cr (2) planes */ -  #endif /* DRM_FOURCC_H */ diff --git a/include/drm/drm_mode.h b/include/drm/drm_mode.h index 5581980b14f..3d6301b6ec1 100644 --- a/include/drm/drm_mode.h +++ b/include/drm/drm_mode.h @@ -359,8 +359,9 @@ struct drm_mode_mode_cmd {  	struct drm_mode_modeinfo mode;  }; -#define DRM_MODE_CURSOR_BO	(1<<0) -#define DRM_MODE_CURSOR_MOVE	(1<<1) +#define DRM_MODE_CURSOR_BO	0x01 +#define DRM_MODE_CURSOR_MOVE	0x02 +#define DRM_MODE_CURSOR_FLAGS	0x03  /*   * depending on the value in flags different members are used. diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h index 7ff5c99b163..c78bb997e2c 100644 --- a/include/drm/drm_pciids.h +++ b/include/drm/drm_pciids.h @@ -213,9 +213,12 @@  	{0x1002, 0x6800, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6801, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6802, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ +	{0x1002, 0x6806, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \  	{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, 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}, \  	{0x1002, 0x6819, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \  	{0x1002, 0x6820, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h index 58056865b8e..dc3a8cd7db8 100644 --- a/include/drm/radeon_drm.h +++ b/include/drm/radeon_drm.h @@ -964,6 +964,8 @@ struct drm_radeon_cs {  #define RADEON_INFO_IB_VM_MAX_SIZE	0x0f  /* max pipes - needed for compute shaders */  #define RADEON_INFO_MAX_PIPES		0x10 +/* timestamp for GL_ARB_timer_query (OpenGL), returns the current GPU clock */ +#define RADEON_INFO_TIMESTAMP		0x11  struct drm_radeon_info {  	uint32_t		request; diff --git a/include/linux/Kbuild b/include/linux/Kbuild index d9a75447487..fa217607c58 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild @@ -391,6 +391,7 @@ header-y += v4l2-dv-timings.h  header-y += v4l2-mediabus.h  header-y += v4l2-subdev.h  header-y += veth.h +header-y += vfio.h  header-y += vhost.h  header-y += videodev2.h  header-y += virtio_9p.h diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 3ad510b2528..4f2a7622450 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -96,7 +96,7 @@ void acpi_table_print_madt_entry (struct acpi_subtable_header *madt);  void acpi_numa_slit_init (struct acpi_table_slit *slit);  void acpi_numa_processor_affinity_init (struct acpi_srat_cpu_affinity *pa);  void acpi_numa_x2apic_affinity_init(struct acpi_srat_x2apic_cpu_affinity *pa); -void acpi_numa_memory_affinity_init (struct acpi_srat_mem_affinity *ma); +int acpi_numa_memory_affinity_init (struct acpi_srat_mem_affinity *ma);  void acpi_numa_arch_fixup(void);  #ifdef CONFIG_ACPI_HOTPLUG_CPU diff --git a/include/linux/atmel-ssc.h b/include/linux/atmel-ssc.h index 06023393fba..4eb31752e2b 100644 --- a/include/linux/atmel-ssc.h +++ b/include/linux/atmel-ssc.h @@ -3,6 +3,7 @@  #include <linux/platform_device.h>  #include <linux/list.h> +#include <linux/io.h>  struct ssc_device {  	struct list_head	list; diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h index c97c6b9cd38..2a9a9abc912 100644 --- a/include/linux/backing-dev.h +++ b/include/linux/backing-dev.h @@ -124,7 +124,6 @@ void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages,  void bdi_start_background_writeback(struct backing_dev_info *bdi);  int bdi_writeback_thread(void *data);  int bdi_has_dirty_io(struct backing_dev_info *bdi); -void bdi_arm_supers_timer(void);  void bdi_wakeup_thread_delayed(struct backing_dev_info *bdi);  void bdi_lock_two(struct bdi_writeback *wb1, struct bdi_writeback *wb2); diff --git a/include/linux/bcma/bcma_driver_chipcommon.h b/include/linux/bcma/bcma_driver_chipcommon.h index 3c80885fa82..d323a4b4143 100644 --- a/include/linux/bcma/bcma_driver_chipcommon.h +++ b/include/linux/bcma/bcma_driver_chipcommon.h @@ -89,6 +89,12 @@  #define  BCMA_CC_CHIPST_4313_OTP_PRESENT	2  #define  BCMA_CC_CHIPST_4331_SPROM_PRESENT	2  #define  BCMA_CC_CHIPST_4331_OTP_PRESENT	4 +#define  BCMA_CC_CHIPST_43228_ILP_DIV_EN	0x00000001 +#define  BCMA_CC_CHIPST_43228_OTP_PRESENT	0x00000002 +#define  BCMA_CC_CHIPST_43228_SERDES_REFCLK_PADSEL	0x00000004 +#define  BCMA_CC_CHIPST_43228_SDIO_MODE		0x00000008 +#define  BCMA_CC_CHIPST_43228_SDIO_OTP_PRESENT	0x00000010 +#define  BCMA_CC_CHIPST_43228_SDIO_RESET	0x00000020  #define  BCMA_CC_CHIPST_4706_PKG_OPTION		BIT(0) /* 0: full-featured package 1: low-cost package */  #define  BCMA_CC_CHIPST_4706_SFLASH_PRESENT	BIT(1) /* 0: parallel, 1: serial flash is present */  #define  BCMA_CC_CHIPST_4706_SFLASH_TYPE	BIT(2) /* 0: 8b-p/ST-s flash, 1: 16b-p/Atmal-s flash */ diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 4e72a9d4823..4a2ab7c8539 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -601,7 +601,7 @@ static inline void blk_clear_rl_full(struct request_list *rl, bool sync)   * it already be started by driver.   */  #define RQ_NOMERGE_FLAGS	\ -	(REQ_NOMERGE | REQ_STARTED | REQ_SOFTBARRIER | REQ_FLUSH | REQ_FUA) +	(REQ_NOMERGE | REQ_STARTED | REQ_SOFTBARRIER | REQ_FLUSH | REQ_FUA | REQ_DISCARD)  #define rq_mergeable(rq)	\  	(!((rq)->cmd_flags & RQ_NOMERGE_FLAGS) && \  	 (((rq)->cmd_flags & REQ_DISCARD) || \ @@ -894,6 +894,8 @@ extern void blk_queue_flush_queueable(struct request_queue *q, bool queueable);  extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev);  extern int blk_rq_map_sg(struct request_queue *, struct request *, struct scatterlist *); +extern int blk_bio_map_sg(struct request_queue *q, struct bio *bio, +			  struct scatterlist *sglist);  extern void blk_dump_rq_flags(struct request *, char *);  extern long nr_blockdev_pages(void); @@ -1139,6 +1141,16 @@ static inline int queue_limit_discard_alignment(struct queue_limits *lim, sector  		& (lim->discard_granularity - 1);  } +static inline int bdev_discard_alignment(struct block_device *bdev) +{ +	struct request_queue *q = bdev_get_queue(bdev); + +	if (bdev != bdev->bd_contains) +		return bdev->bd_part->discard_alignment; + +	return q->limits.discard_alignment; +} +  static inline unsigned int queue_discard_zeroes_data(struct request_queue *q)  {  	if (q->limits.max_discard_sectors && q->limits.discard_zeroes_data == 1) diff --git a/include/linux/can.h b/include/linux/can.h index 018055efc03..e52958d7c2d 100644 --- a/include/linux/can.h +++ b/include/linux/can.h @@ -74,20 +74,21 @@ struct can_frame {  /*   * defined bits for canfd_frame.flags   * - * As the default for CAN FD should be to support the high data rate in the - * payload section of the frame (HDR) and to support up to 64 byte in the - * data section (EDL) the bits are only set in the non-default case. - * Btw. as long as there's no real implementation for CAN FD network driver - * these bits are only preliminary. + * The use of struct canfd_frame implies the Extended Data Length (EDL) bit to + * be set in the CAN frame bitstream on the wire. The EDL bit switch turns + * the CAN controllers bitstream processor into the CAN FD mode which creates + * two new options within the CAN FD frame specification:   * - * RX: NOHDR/NOEDL - info about received CAN FD frame - *     ESI         - bit from originating CAN controller - * TX: NOHDR/NOEDL - control per-frame settings if supported by CAN controller - *     ESI         - bit is set by local CAN controller + * Bit Rate Switch - to indicate a second bitrate is/was used for the payload + * Error State Indicator - represents the error state of the transmitting node + * + * As the CANFD_ESI bit is internally generated by the transmitting CAN + * controller only the CANFD_BRS bit is relevant for real CAN controllers when + * building a CAN FD frame for transmission. Setting the CANFD_ESI bit can make + * sense for virtual CAN interfaces to test applications with echoed frames.   */ -#define CANFD_NOHDR 0x01 /* frame without high data rate */ -#define CANFD_NOEDL 0x02 /* frame without extended data length */ -#define CANFD_ESI   0x04 /* error state indicator */ +#define CANFD_BRS 0x01 /* bit rate switch (second bitrate for payload data) */ +#define CANFD_ESI 0x02 /* error state indicator of the transmitting node */  /**   * struct canfd_frame - CAN flexible data rate frame structure diff --git a/include/linux/compaction.h b/include/linux/compaction.h index 133ddcf8339..ef658147e4e 100644 --- a/include/linux/compaction.h +++ b/include/linux/compaction.h @@ -22,7 +22,7 @@ extern int sysctl_extfrag_handler(struct ctl_table *table, int write,  extern int fragmentation_index(struct zone *zone, unsigned int order);  extern unsigned long try_to_compact_pages(struct zonelist *zonelist,  			int order, gfp_t gfp_mask, nodemask_t *mask, -			bool sync); +			bool sync, bool *contended);  extern int compact_pgdat(pg_data_t *pgdat, int order);  extern unsigned long compaction_suitable(struct zone *zone, int order); @@ -64,7 +64,7 @@ static inline bool compaction_deferred(struct zone *zone, int order)  #else  static inline unsigned long try_to_compact_pages(struct zonelist *zonelist,  			int order, gfp_t gfp_mask, nodemask_t *nodemask, -			bool sync) +			bool sync, bool *contended)  {  	return COMPACT_CONTINUE;  } diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h index 2f4079175af..934bc34d5f9 100644 --- a/include/linux/compiler-gcc4.h +++ b/include/linux/compiler-gcc4.h @@ -49,6 +49,13 @@  #endif  #endif +#if __GNUC_MINOR__ >= 6 +/* + * Tell the optimizer that something else uses this function or variable. + */ +#define __visible __attribute__((externally_visible)) +#endif +  #if __GNUC_MINOR__ > 0  #define __compiletime_object_size(obj) __builtin_object_size(obj, 0)  #endif diff --git a/include/linux/compiler.h b/include/linux/compiler.h index 923d093c9ce..f430e4162f4 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -278,6 +278,10 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);  # define __section(S) __attribute__ ((__section__(#S)))  #endif +#ifndef __visible +#define __visible +#endif +  /* Are two types/vars the same type (ignoring qualifiers)? */  #ifndef __same_type  # define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h index 040b13b5c14..279b1eaa8b7 100644 --- a/include/linux/cpuidle.h +++ b/include/linux/cpuidle.h @@ -194,6 +194,10 @@ static inline int cpuidle_play_dead(void) {return -ENODEV; }  #ifdef CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED  void cpuidle_coupled_parallel_barrier(struct cpuidle_device *dev, atomic_t *a); +#else +static inline void cpuidle_coupled_parallel_barrier(struct cpuidle_device *dev, atomic_t *a) +{ +}  #endif  /****************************** diff --git a/include/linux/dcache.h b/include/linux/dcache.h index caa34e50537..59200795482 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h @@ -206,6 +206,8 @@ struct dentry_operations {  #define DCACHE_MANAGED_DENTRY \  	(DCACHE_MOUNTED|DCACHE_NEED_AUTOMOUNT|DCACHE_MANAGE_TRANSIT) +#define DCACHE_DENTRY_KILLED	0x100000 +  extern seqlock_t rename_lock;  static inline int dname_external(struct dentry *dentry) diff --git a/include/linux/efi.h b/include/linux/efi.h index 103adc6d7e3..ec45ccd8708 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -503,6 +503,8 @@ extern u64 efi_mem_attribute (unsigned long phys_addr, unsigned long size);  extern int __init efi_uart_console_only (void);  extern void efi_initialize_iomem_resources(struct resource *code_resource,  		struct resource *data_resource, struct resource *bss_resource); +extern unsigned long efi_get_time(void); +extern int efi_set_rtc_mmss(unsigned long nowtime);  extern void efi_reserve_boot_services(void);  extern struct efi_memory_map memmap; diff --git a/include/linux/fs.h b/include/linux/fs.h index 38dba16c417..aa110476a95 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1491,7 +1491,6 @@ struct sb_writers {  struct super_block {  	struct list_head	s_list;		/* Keep this first */  	dev_t			s_dev;		/* search index; _not_ kdev_t */ -	unsigned char		s_dirt;  	unsigned char		s_blocksize_bits;  	unsigned long		s_blocksize;  	loff_t			s_maxbytes;	/* Max file size */ @@ -1861,7 +1860,6 @@ struct super_operations {  	int (*drop_inode) (struct inode *);  	void (*evict_inode) (struct inode *);  	void (*put_super) (struct super_block *); -	void (*write_super) (struct super_block *);  	int (*sync_fs)(struct super_block *sb, int wait);  	int (*freeze_fs) (struct super_block *);  	int (*unfreeze_fs) (struct super_block *); @@ -2397,7 +2395,6 @@ extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end,  			   int datasync);  extern int vfs_fsync(struct file *file, int datasync);  extern int generic_write_sync(struct file *file, loff_t pos, loff_t count); -extern void sync_supers(void);  extern void emergency_sync(void);  extern void emergency_remount(void);  #ifdef CONFIG_BLOCK diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index af961d6f7ab..642928cf57b 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h @@ -306,9 +306,10 @@ extern void *perf_trace_buf_prepare(int size, unsigned short type,  static inline void  perf_trace_buf_submit(void *raw_data, int size, int rctx, u64 addr, -		       u64 count, struct pt_regs *regs, void *head) +		       u64 count, struct pt_regs *regs, void *head, +		       struct task_struct *task)  { -	perf_tp_event(addr, count, raw_data, size, regs, head, rctx); +	perf_tp_event(addr, count, raw_data, size, regs, head, rctx, task);  }  #endif diff --git a/include/linux/fuse.h b/include/linux/fuse.h index 9303348965f..d8c713e148e 100644 --- a/include/linux/fuse.h +++ b/include/linux/fuse.h @@ -57,6 +57,9 @@   *   * 7.19   *  - add FUSE_FALLOCATE + * + * 7.20 + *  - add FUSE_AUTO_INVAL_DATA   */  #ifndef _LINUX_FUSE_H @@ -88,7 +91,7 @@  #define FUSE_KERNEL_VERSION 7  /** Minor version number of this interface */ -#define FUSE_KERNEL_MINOR_VERSION 19 +#define FUSE_KERNEL_MINOR_VERSION 20  /** The node ID of the root inode */  #define FUSE_ROOT_ID 1 @@ -163,10 +166,19 @@ struct fuse_file_lock {  /**   * INIT request/reply flags   * + * FUSE_ASYNC_READ: asynchronous read requests   * FUSE_POSIX_LOCKS: remote locking for POSIX file locks + * FUSE_FILE_OPS: kernel sends file handle for fstat, etc... (not yet supported) + * FUSE_ATOMIC_O_TRUNC: handles the O_TRUNC open flag in the filesystem   * FUSE_EXPORT_SUPPORT: filesystem handles lookups of "." and ".." + * FUSE_BIG_WRITES: filesystem can handle write size larger than 4kB   * FUSE_DONT_MASK: don't apply umask to file mode on create operations + * FUSE_SPLICE_WRITE: kernel supports splice write on the device + * FUSE_SPLICE_MOVE: kernel supports splice move on the device + * FUSE_SPLICE_READ: kernel supports splice read on the device   * FUSE_FLOCK_LOCKS: remote locking for BSD style file locks + * FUSE_HAS_IOCTL_DIR: kernel supports ioctl on directories + * FUSE_AUTO_INVAL_DATA: automatically invalidate cached pages   */  #define FUSE_ASYNC_READ		(1 << 0)  #define FUSE_POSIX_LOCKS	(1 << 1) @@ -175,7 +187,12 @@ struct fuse_file_lock {  #define FUSE_EXPORT_SUPPORT	(1 << 4)  #define FUSE_BIG_WRITES		(1 << 5)  #define FUSE_DONT_MASK		(1 << 6) +#define FUSE_SPLICE_WRITE	(1 << 7) +#define FUSE_SPLICE_MOVE	(1 << 8) +#define FUSE_SPLICE_READ	(1 << 9)  #define FUSE_FLOCK_LOCKS	(1 << 10) +#define FUSE_HAS_IOCTL_DIR	(1 << 11) +#define FUSE_AUTO_INVAL_DATA	(1 << 12)  /**   * CUSE INIT request/reply flags diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index bb7f3097185..305f23cd7cf 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h @@ -22,7 +22,7 @@   *   * - bits 16-25 are the hardirq count (max # of nested hardirqs: 1024)   * - bit 26 is the NMI_MASK - * - bit 28 is the PREEMPT_ACTIVE flag + * - bit 27 is the PREEMPT_ACTIVE flag   *   * PREEMPT_MASK: 0x000000ff   * SOFTIRQ_MASK: 0x0000ff00 diff --git a/include/linux/i2c-pnx.h b/include/linux/i2c-pnx.h index 1bc74afe7a3..49ed17fdf05 100644 --- a/include/linux/i2c-pnx.h +++ b/include/linux/i2c-pnx.h @@ -22,6 +22,7 @@ struct i2c_pnx_mif {  	struct timer_list	timer;		/* Timeout */  	u8 *			buf;		/* Data buffer */  	int			len;		/* Length of data buffer */ +	int			order;		/* RX Bytes to order via TX */  };  struct i2c_pnx_algo_data { diff --git a/include/linux/if_team.h b/include/linux/if_team.h index 6960fc1841a..aa2e167e1ef 100644 --- a/include/linux/if_team.h +++ b/include/linux/if_team.h @@ -96,21 +96,6 @@ static inline void team_netpoll_send_skb(struct team_port *port,  }  #endif -static inline int team_dev_queue_xmit(struct team *team, struct team_port *port, -				      struct sk_buff *skb) -{ -	BUILD_BUG_ON(sizeof(skb->queue_mapping) != -		     sizeof(qdisc_skb_cb(skb)->slave_dev_queue_mapping)); -	skb_set_queue_mapping(skb, qdisc_skb_cb(skb)->slave_dev_queue_mapping); - -	skb->dev = port->dev; -	if (unlikely(netpoll_tx_running(port->dev))) { -		team_netpoll_send_skb(port, skb); -		return 0; -	} -	return dev_queue_xmit(skb); -} -  struct team_mode_ops {  	int (*init)(struct team *team);  	void (*exit)(struct team *team); @@ -200,6 +185,21 @@ struct team {  	long mode_priv[TEAM_MODE_PRIV_LONGS];  }; +static inline int team_dev_queue_xmit(struct team *team, struct team_port *port, +				      struct sk_buff *skb) +{ +	BUILD_BUG_ON(sizeof(skb->queue_mapping) != +		     sizeof(qdisc_skb_cb(skb)->slave_dev_queue_mapping)); +	skb_set_queue_mapping(skb, qdisc_skb_cb(skb)->slave_dev_queue_mapping); + +	skb->dev = port->dev; +	if (unlikely(netpoll_tx_running(team->dev))) { +		team_netpoll_send_skb(port, skb); +		return 0; +	} +	return dev_queue_xmit(skb); +} +  static inline struct hlist_head *team_port_index_hash(struct team *team,  						      int port_index)  { diff --git a/include/linux/iio/frequency/adf4350.h b/include/linux/iio/frequency/adf4350.h index b76b4a87065..be91f344d5f 100644 --- a/include/linux/iio/frequency/adf4350.h +++ b/include/linux/iio/frequency/adf4350.h @@ -87,6 +87,8 @@  #define ADF4350_MAX_BANDSEL_CLK		125000 /* Hz */  #define ADF4350_MAX_FREQ_REFIN		250000000 /* Hz */  #define ADF4350_MAX_MODULUS		4095 +#define ADF4350_MAX_R_CNT		1023 +  /**   * struct adf4350_platform_data - platform specific information diff --git a/include/linux/input/eeti_ts.h b/include/linux/input/eeti_ts.h index f875b316249..16625d799b6 100644 --- a/include/linux/input/eeti_ts.h +++ b/include/linux/input/eeti_ts.h @@ -2,6 +2,7 @@  #define LINUX_INPUT_EETI_TS_H  struct eeti_ts_platform_data { +	int irq_gpio;  	unsigned int irq_active_high;  }; diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 54d6d690073..7e83370e6fd 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -20,6 +20,7 @@  #define __LINUX_IOMMU_H  #include <linux/errno.h> +#include <linux/types.h>  #define IOMMU_READ	(1)  #define IOMMU_WRITE	(2) @@ -30,6 +31,7 @@ struct iommu_group;  struct bus_type;  struct device;  struct iommu_domain; +struct notifier_block;  /* iommu fault flags */  #define IOMMU_FAULT_READ	0x0 diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index 379e433e15e..879db26ec40 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h @@ -369,6 +369,7 @@ struct ipv6_pinfo {  	__u8			rcv_tclass;  	__u32			dst_cookie; +	__u32			rx_dst_cookie;  	struct ipv6_mc_socklist	__rcu *ipv6_mc_list;  	struct ipv6_ac_socklist	*ipv6_ac_list; diff --git a/include/linux/irq.h b/include/linux/irq.h index 553fb66da13..216b0ba109d 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -349,6 +349,7 @@ enum {  	IRQCHIP_MASK_ON_SUSPEND		= (1 <<  2),  	IRQCHIP_ONOFFLINE_ENABLED	= (1 <<  3),  	IRQCHIP_SKIP_SET_WAKE		= (1 <<  4), +	IRQCHIP_ONESHOT_SAFE		= (1 <<  5),  };  /* This include will go away once we isolated irq_desc usage to core code */ diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index f334c7fab96..3efc43f3f16 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h @@ -1125,6 +1125,7 @@ extern int	   jbd2_journal_destroy    (journal_t *);  extern int	   jbd2_journal_recover    (journal_t *journal);  extern int	   jbd2_journal_wipe       (journal_t *, int);  extern int	   jbd2_journal_skip_recovery	(journal_t *); +extern void	   jbd2_journal_update_sb_errno(journal_t *);  extern void	   jbd2_journal_update_sb_log_tail	(journal_t *, tid_t,  				unsigned long, int);  extern void	   __jbd2_journal_abort_hard	(journal_t *); diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h index 265e2c3cbd1..82680541576 100644 --- a/include/linux/jiffies.h +++ b/include/linux/jiffies.h @@ -39,9 +39,6 @@  # error Invalid value of HZ.  #endif -/* LATCH is used in the interval timer and ftape setup. */ -#define LATCH  ((CLOCK_TICK_RATE + HZ/2) / HZ)	/* For divider */ -  /* Suppose we want to divide two numbers NOM and DEN: NOM/DEN, then we can   * improve accuracy by shifting LSH bits, hence calculating:   *     (NOM << LSH) / DEN @@ -54,18 +51,30 @@  #define SH_DIV(NOM,DEN,LSH) (   (((NOM) / (DEN)) << (LSH))              \                               + ((((NOM) % (DEN)) << (LSH)) + (DEN) / 2) / (DEN)) -/* HZ is the requested value. ACTHZ is actual HZ ("<< 8" is for accuracy) */ -#define ACTHZ (SH_DIV (CLOCK_TICK_RATE, LATCH, 8)) +#ifdef CLOCK_TICK_RATE +/* LATCH is used in the interval timer and ftape setup. */ +# define LATCH ((CLOCK_TICK_RATE + HZ/2) / HZ)	/* For divider */ + +/* + * HZ is the requested value. However the CLOCK_TICK_RATE may not allow + * for exactly HZ. So SHIFTED_HZ is high res HZ ("<< 8" is for accuracy) + */ +# define SHIFTED_HZ (SH_DIV(CLOCK_TICK_RATE, LATCH, 8)) +#else +# define SHIFTED_HZ (HZ << 8) +#endif -/* TICK_NSEC is the time between ticks in nsec assuming real ACTHZ */ -#define TICK_NSEC (SH_DIV (1000000UL * 1000, ACTHZ, 8)) +/* TICK_NSEC is the time between ticks in nsec assuming SHIFTED_HZ */ +#define TICK_NSEC (SH_DIV(1000000UL * 1000, SHIFTED_HZ, 8))  /* TICK_USEC is the time between ticks in usec assuming fake USER_HZ */  #define TICK_USEC ((1000000UL + USER_HZ/2) / USER_HZ) -/* TICK_USEC_TO_NSEC is the time between ticks in nsec assuming real ACTHZ and	*/ -/* a value TUSEC for TICK_USEC (can be set bij adjtimex)		*/ -#define TICK_USEC_TO_NSEC(TUSEC) (SH_DIV (TUSEC * USER_HZ * 1000, ACTHZ, 8)) +/* + * TICK_USEC_TO_NSEC is the time between ticks in nsec assuming SHIFTED_HZ and + * a value TUSEC for TICK_USEC (can be set bij adjtimex) + */ +#define TICK_USEC_TO_NSEC(TUSEC) (SH_DIV(TUSEC * USER_HZ * 1000, SHIFTED_HZ, 8))  /* some arch's have a small-data section that can be accessed register-relative   * but that can only take up to, say, 4-byte variables. jiffies being part of diff --git a/include/linux/kdb.h b/include/linux/kdb.h index 064725854db..42d9e863a31 100644 --- a/include/linux/kdb.h +++ b/include/linux/kdb.h @@ -75,8 +75,6 @@ extern const char *kdb_diemsg;  #define KDB_FLAG_CATASTROPHIC	(1 << 1) /* A catastrophic event has occurred */  #define KDB_FLAG_CMD_INTERRUPT	(1 << 2) /* Previous command was interrupted */  #define KDB_FLAG_NOIPI		(1 << 3) /* Do not send IPIs */ -#define KDB_FLAG_ONLY_DO_DUMP	(1 << 4) /* Only do a dump, used when -					  * kdb is off */  #define KDB_FLAG_NO_CONSOLE	(1 << 5) /* No console is available,  					  * kdb is disabled */  #define KDB_FLAG_NO_VT_CONSOLE	(1 << 6) /* No VT console is available, do diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 604382143bc..2451f1f7a1d 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -82,10 +82,18 @@  	__x - (__x % (y));				\  }							\  ) + +/* + * Divide positive or negative dividend by positive divisor and round + * to closest integer. Result is undefined for negative divisors. + */  #define DIV_ROUND_CLOSEST(x, divisor)(			\  {							\ -	typeof(divisor) __divisor = divisor;		\ -	(((x) + ((__divisor) / 2)) / (__divisor));	\ +	typeof(x) __x = x;				\ +	typeof(divisor) __d = divisor;			\ +	(((typeof(x))-1) > 0 || (__x) > 0) ?		\ +		(((__x) + ((__d) / 2)) / (__d)) :	\ +		(((__x) - ((__d) / 2)) / (__d));	\  }							\  ) diff --git a/include/linux/kobject.h b/include/linux/kobject.h index fc615a97e2d..1e57449395b 100644 --- a/include/linux/kobject.h +++ b/include/linux/kobject.h @@ -224,7 +224,7 @@ static inline int kobject_uevent_env(struct kobject *kobj,  static inline __printf(2, 3)  int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...) -{ return 0; } +{ return -ENOMEM; }  static inline int kobject_action_type(const char *buf, size_t count,  				      enum kobject_action *type) diff --git a/include/linux/kref.h b/include/linux/kref.h index 9c07dcebded..65af6887872 100644 --- a/include/linux/kref.h +++ b/include/linux/kref.h @@ -18,6 +18,7 @@  #include <linux/bug.h>  #include <linux/atomic.h>  #include <linux/kernel.h> +#include <linux/mutex.h>  struct kref {  	atomic_t refcount; @@ -93,4 +94,21 @@ static inline int kref_put(struct kref *kref, void (*release)(struct kref *kref)  {  	return kref_sub(kref, 1, release);  } + +static inline int kref_put_mutex(struct kref *kref, +				 void (*release)(struct kref *kref), +				 struct mutex *lock) +{ +	WARN_ON(release == NULL); +        if (unlikely(!atomic_add_unless(&kref->refcount, -1, 1))) { +		mutex_lock(lock); +		if (unlikely(!atomic_dec_and_test(&kref->refcount))) { +			mutex_unlock(lock); +			return 0; +		} +		release(kref); +		return 1; +	} +	return 0; +}  #endif /* _KREF_H_ */ diff --git a/include/linux/ktime.h b/include/linux/ktime.h index 603bec2913b..06177ba10a1 100644 --- a/include/linux/ktime.h +++ b/include/linux/ktime.h @@ -58,13 +58,6 @@ union ktime {  typedef union ktime ktime_t;		/* Kill this */ -#define KTIME_MAX			((s64)~((u64)1 << 63)) -#if (BITS_PER_LONG == 64) -# define KTIME_SEC_MAX			(KTIME_MAX / NSEC_PER_SEC) -#else -# define KTIME_SEC_MAX			LONG_MAX -#endif -  /*   * ktime_t definitions when using the 64-bit scalar representation:   */ diff --git a/include/linux/mISDNhw.h b/include/linux/mISDNhw.h index d0752eca9b4..9d96d5d4dfe 100644 --- a/include/linux/mISDNhw.h +++ b/include/linux/mISDNhw.h @@ -183,7 +183,7 @@ extern int	mISDN_initbchannel(struct bchannel *, unsigned short,  				   unsigned short);  extern int	mISDN_freedchannel(struct dchannel *);  extern void	mISDN_clear_bchannel(struct bchannel *); -extern int	mISDN_freebchannel(struct bchannel *); +extern void	mISDN_freebchannel(struct bchannel *);  extern int	mISDN_ctrl_bchannel(struct bchannel *, struct mISDN_ctrl_req *);  extern void	queue_ch_frame(struct mISDNchannel *, u_int,  			int, struct sk_buff *); diff --git a/include/linux/memory.h b/include/linux/memory.h index 1ac7f6e405f..ff9a9f8e0ed 100644 --- a/include/linux/memory.h +++ b/include/linux/memory.h @@ -19,7 +19,7 @@  #include <linux/compiler.h>  #include <linux/mutex.h> -#define MIN_MEMORY_BLOCK_SIZE     (1 << SECTION_SIZE_BITS) +#define MIN_MEMORY_BLOCK_SIZE     (1UL << SECTION_SIZE_BITS)  struct memory_block {  	unsigned long start_section_nr; diff --git a/include/linux/mfd/core.h b/include/linux/mfd/core.h index 3a8435a8058..cebe97ee98b 100644 --- a/include/linux/mfd/core.h +++ b/include/linux/mfd/core.h @@ -16,6 +16,8 @@  #include <linux/platform_device.h> +struct irq_domain; +  /*   * This struct describes the MFD part ("cell").   * After registration the copy of this structure will become the platform data @@ -98,7 +100,7 @@ static inline const struct mfd_cell *mfd_get_cell(struct platform_device *pdev)  extern int mfd_add_devices(struct device *parent, int id,  			   struct mfd_cell *cells, int n_devs,  			   struct resource *mem_base, -			   int irq_base); +			   int irq_base, struct irq_domain *irq_domain);  extern void mfd_remove_devices(struct device *parent); diff --git a/include/linux/mfd/ezx-pcap.h b/include/linux/mfd/ezx-pcap.h index 40c372165f3..32a1b5cfeba 100644 --- a/include/linux/mfd/ezx-pcap.h +++ b/include/linux/mfd/ezx-pcap.h @@ -16,6 +16,7 @@ struct pcap_subdev {  struct pcap_platform_data {  	unsigned int irq_base;  	unsigned int config; +	int gpio;  	void (*init) (void *);	/* board specific init */  	int num_subdevs;  	struct pcap_subdev *subdevs; diff --git a/include/linux/mfd/tps65217.h b/include/linux/mfd/tps65217.h index 12c06870829..7cd83d826ed 100644 --- a/include/linux/mfd/tps65217.h +++ b/include/linux/mfd/tps65217.h @@ -22,6 +22,9 @@  #include <linux/regulator/driver.h>  #include <linux/regulator/machine.h> +/* TPS chip id list */ +#define TPS65217			0xF0 +  /* I2C ID for TPS65217 part */  #define TPS65217_I2C_ID			0x24 @@ -248,13 +251,11 @@ struct tps_info {  struct tps65217 {  	struct device *dev;  	struct tps65217_board *pdata; +	unsigned int id;  	struct regulator_desc desc[TPS65217_NUM_REGULATOR];  	struct regulator_dev *rdev[TPS65217_NUM_REGULATOR];  	struct tps_info *info[TPS65217_NUM_REGULATOR];  	struct regmap *regmap; - -	/* Client devices */ -	struct platform_device *regulator_pdev[TPS65217_NUM_REGULATOR];  };  static inline struct tps65217 *dev_to_tps65217(struct device *dev) @@ -262,6 +263,11 @@ static inline struct tps65217 *dev_to_tps65217(struct device *dev)  	return dev_get_drvdata(dev);  } +static inline int tps65217_chip_id(struct tps65217 *tps65217) +{ +	return tps65217->id; +} +  int tps65217_reg_read(struct tps65217 *tps, unsigned int reg,  					unsigned int *val);  int tps65217_reg_write(struct tps65217 *tps, unsigned int reg, diff --git a/include/linux/micrel_phy.h b/include/linux/micrel_phy.h index 61f0905bdc4..de201203bc7 100644 --- a/include/linux/micrel_phy.h +++ b/include/linux/micrel_phy.h @@ -1,3 +1,15 @@ +/* + * include/linux/micrel_phy.h + * + * Micrel PHY IDs + * + * 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 (at your + * option) any later version. + * + */ +  #ifndef _MICREL_PHY_H  #define _MICREL_PHY_H @@ -5,10 +17,11 @@  #define PHY_ID_KSZ9021		0x00221610  #define PHY_ID_KS8737		0x00221720 -#define PHY_ID_KS8041		0x00221510 -#define PHY_ID_KS8051		0x00221550 +#define PHY_ID_KSZ8021		0x00221555 +#define PHY_ID_KSZ8041		0x00221510 +#define PHY_ID_KSZ8051		0x00221550  /* both for ks8001 Rev. A/B, and for ks8721 Rev 3. */ -#define PHY_ID_KS8001		0x0022161A +#define PHY_ID_KSZ8001		0x0022161A  /* struct phy_device dev_flags definitions */  #define MICREL_PHY_50MHZ_CLK	0x00000001 diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index bd6c9fcdf2d..6e1b0f973a0 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h @@ -796,6 +796,19 @@ enum mlx4_net_trans_rule_id {  	MLX4_NET_TRANS_RULE_NUM, /* should be last */  }; +extern const u16 __sw_id_hw[]; + +static inline int map_hw_to_sw_id(u16 header_id) +{ + +	int i; +	for (i = 0; i < MLX4_NET_TRANS_RULE_NUM; i++) { +		if (header_id == __sw_id_hw[i]) +			return i; +	} +	return -EINVAL; +} +  enum mlx4_net_trans_promisc_mode {  	MLX4_FS_PROMISC_NONE = 0,  	MLX4_FS_PROMISC_UPLINK, diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h index 111aca5e97f..4b27f9f503e 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h @@ -239,6 +239,7 @@ struct mmc_card {  #define MMC_QUIRK_BLK_NO_CMD23	(1<<7)		/* Avoid CMD23 for regular multiblock */  #define MMC_QUIRK_BROKEN_BYTE_MODE_512 (1<<8)	/* Avoid sending 512 bytes in */  #define MMC_QUIRK_LONG_READ_TIME (1<<9)		/* Data read time > CSD says */ +#define MMC_QUIRK_SEC_ERASE_TRIM_BROKEN (1<<10)	/* Skip secure for erase/trim */  						/* byte mode */  	unsigned int    poweroff_notify_state;	/* eMMC4.5 notify feature */  #define MMC_NO_POWER_NOTIFICATION	0 diff --git a/include/linux/mv643xx_eth.h b/include/linux/mv643xx_eth.h index 51bf8ada6dc..49258e0ed1c 100644 --- a/include/linux/mv643xx_eth.h +++ b/include/linux/mv643xx_eth.h @@ -15,6 +15,8 @@  #define MV643XX_ETH_SIZE_REG_4		0x2224  #define MV643XX_ETH_BASE_ADDR_ENABLE_REG	0x2290 +#define MV643XX_TX_CSUM_DEFAULT_LIMIT	0 +  struct mv643xx_eth_shared_platform_data {  	struct mbus_dram_target_info	*dram;  	struct platform_device	*shared_smi; diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index eb06e58bed0..59dc05f3824 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -953,7 +953,8 @@ struct net_device_ops {  #ifdef CONFIG_NET_POLL_CONTROLLER  	void                    (*ndo_poll_controller)(struct net_device *dev);  	int			(*ndo_netpoll_setup)(struct net_device *dev, -						     struct netpoll_info *info); +						     struct netpoll_info *info, +						     gfp_t gfp);  	void			(*ndo_netpoll_cleanup)(struct net_device *dev);  #endif  	int			(*ndo_set_vf_mac)(struct net_device *dev, @@ -1300,6 +1301,8 @@ struct net_device {  	/* for setting kernel sock attribute on TCP connection setup */  #define GSO_MAX_SIZE		65536  	unsigned int		gso_max_size; +#define GSO_MAX_SEGS		65535 +	u16			gso_max_segs;  #ifdef CONFIG_DCB  	/* Data Center Bridging netlink ops */ @@ -1519,6 +1522,8 @@ struct packet_type {  	struct sk_buff		**(*gro_receive)(struct sk_buff **head,  					       struct sk_buff *skb);  	int			(*gro_complete)(struct sk_buff *skb); +	bool			(*id_match)(struct packet_type *ptype, +					    struct sock *sk);  	void			*af_packet_priv;  	struct list_head	list;  }; diff --git a/include/linux/netfilter/nf_conntrack_sip.h b/include/linux/netfilter/nf_conntrack_sip.h index 0dfc8b7210a..89f2a627f3f 100644 --- a/include/linux/netfilter/nf_conntrack_sip.h +++ b/include/linux/netfilter/nf_conntrack_sip.h @@ -164,7 +164,7 @@ extern int ct_sip_parse_address_param(const struct nf_conn *ct, const char *dptr  				      unsigned int dataoff, unsigned int datalen,  				      const char *name,  				      unsigned int *matchoff, unsigned int *matchlen, -				      union nf_inet_addr *addr); +				      union nf_inet_addr *addr, bool delim);  extern int ct_sip_parse_numerical_param(const struct nf_conn *ct, const char *dptr,  					unsigned int off, unsigned int datalen,  					const char *name, diff --git a/include/linux/netpoll.h b/include/linux/netpoll.h index 28f5389c924..66d5379c305 100644 --- a/include/linux/netpoll.h +++ b/include/linux/netpoll.h @@ -23,6 +23,7 @@ struct netpoll {  	u8 remote_mac[ETH_ALEN];  	struct list_head rx; /* rx_np list element */ +	struct rcu_head rcu;  };  struct netpoll_info { @@ -38,28 +39,40 @@ struct netpoll_info {  	struct delayed_work tx_work;  	struct netpoll *netpoll; +	struct rcu_head rcu;  };  void netpoll_send_udp(struct netpoll *np, const char *msg, int len);  void netpoll_print_options(struct netpoll *np);  int netpoll_parse_options(struct netpoll *np, char *opt); -int __netpoll_setup(struct netpoll *np, struct net_device *ndev); +int __netpoll_setup(struct netpoll *np, struct net_device *ndev, gfp_t gfp);  int netpoll_setup(struct netpoll *np);  int netpoll_trap(void);  void netpoll_set_trap(int trap);  void __netpoll_cleanup(struct netpoll *np); +void __netpoll_free_rcu(struct netpoll *np);  void netpoll_cleanup(struct netpoll *np); -int __netpoll_rx(struct sk_buff *skb); +int __netpoll_rx(struct sk_buff *skb, struct netpoll_info *npinfo);  void netpoll_send_skb_on_dev(struct netpoll *np, struct sk_buff *skb,  			     struct net_device *dev);  static inline void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb)  { +	unsigned long flags; +	local_irq_save(flags);  	netpoll_send_skb_on_dev(np, skb, np->dev); +	local_irq_restore(flags);  }  #ifdef CONFIG_NETPOLL +static inline bool netpoll_rx_on(struct sk_buff *skb) +{ +	struct netpoll_info *npinfo = rcu_dereference_bh(skb->dev->npinfo); + +	return npinfo && (!list_empty(&npinfo->rx_np) || npinfo->rx_flags); +} +  static inline bool netpoll_rx(struct sk_buff *skb)  {  	struct netpoll_info *npinfo; @@ -67,14 +80,14 @@ static inline bool netpoll_rx(struct sk_buff *skb)  	bool ret = false;  	local_irq_save(flags); -	npinfo = rcu_dereference_bh(skb->dev->npinfo); -	if (!npinfo || (list_empty(&npinfo->rx_np) && !npinfo->rx_flags)) +	if (!netpoll_rx_on(skb))  		goto out; +	npinfo = rcu_dereference_bh(skb->dev->npinfo);  	spin_lock(&npinfo->rx_lock);  	/* check rx_flags again with the lock held */ -	if (npinfo->rx_flags && __netpoll_rx(skb)) +	if (npinfo->rx_flags && __netpoll_rx(skb, npinfo))  		ret = true;  	spin_unlock(&npinfo->rx_lock); @@ -83,13 +96,6 @@ out:  	return ret;  } -static inline int netpoll_rx_on(struct sk_buff *skb) -{ -	struct netpoll_info *npinfo = rcu_dereference_bh(skb->dev->npinfo); - -	return npinfo && (!list_empty(&npinfo->rx_np) || npinfo->rx_flags); -} -  static inline int netpoll_receive_skb(struct sk_buff *skb)  {  	if (!list_empty(&skb->dev->napi_list)) @@ -119,7 +125,7 @@ static inline void netpoll_poll_unlock(void *have)  	}  } -static inline int netpoll_tx_running(struct net_device *dev) +static inline bool netpoll_tx_running(struct net_device *dev)  {  	return irqs_disabled();  } @@ -127,11 +133,11 @@ static inline int netpoll_tx_running(struct net_device *dev)  #else  static inline bool netpoll_rx(struct sk_buff *skb)  { -	return 0; +	return false;  } -static inline int netpoll_rx_on(struct sk_buff *skb) +static inline bool netpoll_rx_on(struct sk_buff *skb)  { -	return 0; +	return false;  }  static inline int netpoll_receive_skb(struct sk_buff *skb)  { @@ -147,9 +153,9 @@ static inline void netpoll_poll_unlock(void *have)  static inline void netpoll_netdev_init(struct net_device *dev)  {  } -static inline int netpoll_tx_running(struct net_device *dev) +static inline bool netpoll_tx_running(struct net_device *dev)  { -	return 0; +	return false;  }  #endif diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index 1f8fc7f9bcd..4b03f56e280 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h @@ -265,11 +265,6 @@ static inline const struct nfs_rpc_ops *NFS_PROTO(const struct inode *inode)  	return NFS_SERVER(inode)->nfs_client->rpc_ops;  } -static inline __be32 *NFS_COOKIEVERF(const struct inode *inode) -{ -	return NFS_I(inode)->cookieverf; -} -  static inline unsigned NFS_MINATTRTIMEO(const struct inode *inode)  {  	struct nfs_server *nfss = NFS_SERVER(inode); diff --git a/include/linux/nfs_page.h b/include/linux/nfs_page.h index 880805774f9..92ce5783b70 100644 --- a/include/linux/nfs_page.h +++ b/include/linux/nfs_page.h @@ -69,6 +69,7 @@ struct nfs_pageio_descriptor {  	const struct nfs_pgio_completion_ops *pg_completion_ops;  	struct pnfs_layout_segment *pg_lseg;  	struct nfs_direct_req	*pg_dreq; +	void			*pg_layout_private;  };  #define NFS_WBACK_BUSY(req)	(test_bit(PG_BUSY,&(req)->wb_flags)) diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 00485e08439..be9cf3c7e79 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h @@ -652,7 +652,7 @@ struct nfs_getaclargs {  };  /* getxattr ACL interface flags */ -#define NFS4_ACL_LEN_REQUEST	0x0001	/* zero length getxattr buffer */ +#define NFS4_ACL_TRUNC		0x0001	/* ACL was truncated */  struct nfs_getaclres {  	size_t				acl_len;  	size_t				acl_data_offset; @@ -1248,6 +1248,7 @@ struct nfs_pgio_header {  	void (*release) (struct nfs_pgio_header *hdr);  	const struct nfs_pgio_completion_ops *completion_ops;  	struct nfs_direct_req	*dreq; +	void			*layout_private;  	spinlock_t		lock;  	/* fields protected by lock */  	int			pnfs_error; diff --git a/include/linux/of.h b/include/linux/of.h index 5919ee33f2b..1b1163225f3 100644 --- a/include/linux/of.h +++ b/include/linux/of.h @@ -190,10 +190,17 @@ extern struct device_node *of_get_parent(const struct device_node *node);  extern struct device_node *of_get_next_parent(struct device_node *node);  extern struct device_node *of_get_next_child(const struct device_node *node,  					     struct device_node *prev); +extern struct device_node *of_get_next_available_child( +	const struct device_node *node, struct device_node *prev); +  #define for_each_child_of_node(parent, child) \  	for (child = of_get_next_child(parent, NULL); child != NULL; \  	     child = of_get_next_child(parent, child)) +#define for_each_available_child_of_node(parent, child) \ +	for (child = of_get_next_available_child(parent, NULL); child != NULL; \ +	     child = of_get_next_available_child(parent, child)) +  static inline int of_get_child_count(const struct device_node *np)  {  	struct device_node *child; diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index fc352607734..6b4565c440c 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -2149,7 +2149,7 @@  #define PCI_DEVICE_ID_TIGON3_5704S	0x16a8  #define PCI_DEVICE_ID_NX2_57800_VF	0x16a9  #define PCI_DEVICE_ID_NX2_5706S		0x16aa -#define PCI_DEVICE_ID_NX2_57840_MF	0x16ab +#define PCI_DEVICE_ID_NX2_57840_MF	0x16a4  #define PCI_DEVICE_ID_NX2_5708S		0x16ac  #define PCI_DEVICE_ID_NX2_57840_VF	0x16ad  #define PCI_DEVICE_ID_NX2_57810_MF	0x16ae diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 76c5c8b724a..bdb41612bfe 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -274,6 +274,8 @@ struct perf_event_attr {  	__u64	branch_sample_type; /* enum branch_sample_type */  }; +#define perf_flags(attr)	(*(&(attr)->read_format + 1)) +  /*   * Ioctls that can be done on a perf event fd:   */ @@ -926,7 +928,7 @@ struct perf_event {  	struct hw_perf_event		hw;  	struct perf_event_context	*ctx; -	struct file			*filp; +	atomic_long_t			refcount;  	/*  	 * These accumulate total time (in nanoseconds) that children @@ -1272,7 +1274,8 @@ static inline bool perf_paranoid_kernel(void)  extern void perf_event_init(void);  extern void perf_tp_event(u64 addr, u64 count, void *record,  			  int entry_size, struct pt_regs *regs, -			  struct hlist_head *head, int rctx); +			  struct hlist_head *head, int rctx, +			  struct task_struct *task);  extern void perf_bp_event(struct perf_event *event, void *data);  #ifndef perf_misc_flags @@ -1295,6 +1298,7 @@ extern int perf_swevent_get_recursion_context(void);  extern void perf_swevent_put_recursion_context(int rctx);  extern void perf_event_enable(struct perf_event *event);  extern void perf_event_disable(struct perf_event *event); +extern int __perf_event_disable(void *info);  extern void perf_event_task_tick(void);  #else  static inline void @@ -1333,6 +1337,7 @@ static inline int  perf_swevent_get_recursion_context(void)		{ return -1; }  static inline void perf_swevent_put_recursion_context(int rctx)		{ }  static inline void perf_event_enable(struct perf_event *event)		{ }  static inline void perf_event_disable(struct perf_event *event)		{ } +static inline int __perf_event_disable(void *info)			{ return -1; }  static inline void perf_event_task_tick(void)				{ }  #endif diff --git a/include/linux/pinctrl/consumer.h b/include/linux/pinctrl/consumer.h index 6dd96fb4548..e9b7f435084 100644 --- a/include/linux/pinctrl/consumer.h +++ b/include/linux/pinctrl/consumer.h @@ -20,6 +20,7 @@  /* This struct is private to the core and should be regarded as a cookie */  struct pinctrl;  struct pinctrl_state; +struct device;  #ifdef CONFIG_PINCTRL diff --git a/include/linux/sched.h b/include/linux/sched.h index c147e7024f1..23bddac4bad 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -334,14 +334,6 @@ static inline void lockup_detector_init(void)  }  #endif -#if defined(CONFIG_LOCKUP_DETECTOR) && defined(CONFIG_SUSPEND) -void lockup_detector_bootcpu_resume(void); -#else -static inline void lockup_detector_bootcpu_resume(void) -{ -} -#endif -  #ifdef CONFIG_DETECT_HUNG_TASK  extern unsigned int  sysctl_hung_task_panic;  extern unsigned long sysctl_hung_task_check_count; @@ -962,7 +954,6 @@ struct sched_domain {  	unsigned int smt_gain;  	int flags;			/* See SD_* */  	int level; -	int idle_buddy;			/* cpu assigned to select_idle_sibling() */  	/* Runtime fields. */  	unsigned long last_balance;	/* init to jiffies. units in jiffies */ diff --git a/include/linux/security.h b/include/linux/security.h index 4e5a73cdbbe..d143b8e0195 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -118,6 +118,7 @@ void reset_security_ops(void);  extern unsigned long mmap_min_addr;  extern unsigned long dac_mmap_min_addr;  #else +#define mmap_min_addr		0UL  #define dac_mmap_min_addr	0UL  #endif @@ -1242,8 +1243,6 @@ static inline void security_free_mnt_opts(struct security_mnt_opts *opts)   *	Check that the @parent process has sufficient permission to trace the   *	current process before allowing the current process to present itself   *	to the @parent process for tracing. - *	The parent process will still have to undergo the ptrace_access_check - *	checks before it is allowed to trace this one.   *	@parent contains the task_struct structure for debugger process.   *	Return 0 if permission is granted.   * @capget: diff --git a/include/linux/string.h b/include/linux/string.h index ffe0442e18d..b9178812d9d 100644 --- a/include/linux/string.h +++ b/include/linux/string.h @@ -144,8 +144,8 @@ static inline bool strstarts(const char *str, const char *prefix)  {  	return strncmp(str, prefix, strlen(prefix)) == 0;  } -#endif  extern size_t memweight(const void *ptr, size_t bytes); +#endif /* __KERNEL__ */  #endif /* _LINUX_STRING_H_ */ diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h index cff40aa7db6..bf8c49ff753 100644 --- a/include/linux/sunrpc/xprt.h +++ b/include/linux/sunrpc/xprt.h @@ -114,6 +114,7 @@ struct rpc_xprt_ops {  	void		(*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize);  	int		(*reserve_xprt)(struct rpc_xprt *xprt, struct rpc_task *task);  	void		(*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task); +	void		(*alloc_slot)(struct rpc_xprt *xprt, struct rpc_task *task);  	void		(*rpcbind)(struct rpc_task *task);  	void		(*set_port)(struct rpc_xprt *xprt, unsigned short port);  	void		(*connect)(struct rpc_task *task); @@ -281,6 +282,8 @@ void			xprt_connect(struct rpc_task *task);  void			xprt_reserve(struct rpc_task *task);  int			xprt_reserve_xprt(struct rpc_xprt *xprt, struct rpc_task *task);  int			xprt_reserve_xprt_cong(struct rpc_xprt *xprt, struct rpc_task *task); +void			xprt_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task); +void			xprt_lock_and_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task);  int			xprt_prepare_transmit(struct rpc_task *task);  void			xprt_transmit(struct rpc_task *task);  void			xprt_end_transmit(struct rpc_task *task); diff --git a/include/linux/time.h b/include/linux/time.h index c81c5e40fcb..b51e664c83e 100644 --- a/include/linux/time.h +++ b/include/linux/time.h @@ -107,11 +107,36 @@ static inline struct timespec timespec_sub(struct timespec lhs,  	return ts_delta;  } +#define KTIME_MAX			((s64)~((u64)1 << 63)) +#if (BITS_PER_LONG == 64) +# define KTIME_SEC_MAX			(KTIME_MAX / NSEC_PER_SEC) +#else +# define KTIME_SEC_MAX			LONG_MAX +#endif +  /*   * Returns true if the timespec is norm, false if denorm:   */ -#define timespec_valid(ts) \ -	(((ts)->tv_sec >= 0) && (((unsigned long) (ts)->tv_nsec) < NSEC_PER_SEC)) +static inline bool timespec_valid(const struct timespec *ts) +{ +	/* Dates before 1970 are bogus */ +	if (ts->tv_sec < 0) +		return false; +	/* Can't have more nanoseconds then a second */ +	if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC) +		return false; +	return true; +} + +static inline bool timespec_valid_strict(const struct timespec *ts) +{ +	if (!timespec_valid(ts)) +		return false; +	/* Disallow values that could overflow ktime_t */ +	if ((unsigned long long)ts->tv_sec >= KTIME_SEC_MAX) +		return false; +	return true; +}  extern void read_persistent_clock(struct timespec *ts);  extern void read_boot_clock(struct timespec *ts); diff --git a/include/linux/timex.h b/include/linux/timex.h index 99bc88b1fc0..7c5ceb20e03 100644 --- a/include/linux/timex.h +++ b/include/linux/timex.h @@ -232,7 +232,7 @@ struct timex {   * estimated error = NTP dispersion.   */  extern unsigned long tick_usec;		/* USER_HZ period (usec) */ -extern unsigned long tick_nsec;		/* ACTHZ          period (nsec) */ +extern unsigned long tick_nsec;		/* SHIFTED_HZ period (nsec) */  extern void ntp_init(void);  extern void ntp_clear(void); diff --git a/include/linux/topology.h b/include/linux/topology.h index e91cd43394d..fec12d66721 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h @@ -164,6 +164,7 @@ int arch_update_cpu_topology(void);  				| 0*SD_SHARE_CPUPOWER			\  				| 0*SD_SHARE_PKG_RESOURCES		\  				| 0*SD_SERIALIZE			\ +				| 1*SD_PREFER_SIBLING			\  				,					\  	.last_balance		= jiffies,				\  	.balance_interval	= 1,					\ diff --git a/include/linux/writeback.h b/include/linux/writeback.h index c66fe3332d8..50c3e8fa06a 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h @@ -104,7 +104,6 @@ static inline void wait_on_inode(struct inode *inode)  	wait_on_bit(&inode->i_state, __I_NEW, inode_wait, TASK_UNINTERRUPTIBLE);  } -  /*   * mm/page-writeback.c   */ diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h index 22e61fdf75a..28e493b5b94 100644 --- a/include/linux/xfrm.h +++ b/include/linux/xfrm.h @@ -84,6 +84,8 @@ struct xfrm_replay_state {  	__u32	bitmap;  }; +#define XFRMA_REPLAY_ESN_MAX	4096 +  struct xfrm_replay_state_esn {  	unsigned int	bmp_len;  	__u32		oseq; diff --git a/include/net/bluetooth/smp.h b/include/net/bluetooth/smp.h index ca356a73492..8b27927b2a5 100644 --- a/include/net/bluetooth/smp.h +++ b/include/net/bluetooth/smp.h @@ -136,7 +136,7 @@ struct smp_chan {  };  /* SMP Commands */ -int smp_conn_security(struct l2cap_conn *conn, __u8 sec_level); +int smp_conn_security(struct hci_conn *hcon, __u8 sec_level);  int smp_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb);  int smp_distribute_keys(struct l2cap_conn *conn, __u8 force);  int smp_user_confirm_reply(struct hci_conn *conn, u16 mgmt_op, __le32 passkey); diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 493fa0c7900..3d254e10ff3 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -96,6 +96,7 @@ enum ieee80211_band {   * 	is not permitted.   * @IEEE80211_CHAN_NO_HT40MINUS: extension channel below this channel   * 	is not permitted. + * @IEEE80211_CHAN_NO_OFDM: OFDM is not allowed on this channel.   */  enum ieee80211_channel_flags {  	IEEE80211_CHAN_DISABLED		= 1<<0, @@ -104,6 +105,7 @@ enum ieee80211_channel_flags {  	IEEE80211_CHAN_RADAR		= 1<<3,  	IEEE80211_CHAN_NO_HT40PLUS	= 1<<4,  	IEEE80211_CHAN_NO_HT40MINUS	= 1<<5, +	IEEE80211_CHAN_NO_OFDM		= 1<<6,  };  #define IEEE80211_CHAN_NO_HT40 \ diff --git a/include/net/codel.h b/include/net/codel.h index 550debfc240..389cf621161 100644 --- a/include/net/codel.h +++ b/include/net/codel.h @@ -305,6 +305,8 @@ static struct sk_buff *codel_dequeue(struct Qdisc *sch,  			}  		}  	} else if (drop) { +		u32 delta; +  		if (params->ecn && INET_ECN_set_ce(skb)) {  			stats->ecn_mark++;  		} else { @@ -320,9 +322,11 @@ static struct sk_buff *codel_dequeue(struct Qdisc *sch,  		 * assume that the drop rate that controlled the queue on the  		 * last cycle is a good starting point to control it now.  		 */ -		if (codel_time_before(now - vars->drop_next, +		delta = vars->count - vars->lastcount; +		if (delta > 1 && +		    codel_time_before(now - vars->drop_next,  				      16 * params->interval)) { -			vars->count = (vars->count - vars->lastcount) | 1; +			vars->count = delta;  			/* we dont care if rec_inv_sqrt approximation  			 * is not very precise :  			 * Next Newton steps will correct it quadratically. diff --git a/include/net/dst.h b/include/net/dst.h index baf59789006..621e3513ef5 100644 --- a/include/net/dst.h +++ b/include/net/dst.h @@ -110,7 +110,7 @@ struct dst_entry {  };  extern u32 *dst_cow_metrics_generic(struct dst_entry *dst, unsigned long old); -extern const u32 dst_default_metrics[RTAX_MAX]; +extern const u32 dst_default_metrics[];  #define DST_METRICS_READ_ONLY	0x1UL  #define __DST_METRICS_PTR(Y)	\ diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h index 5ee66f517b4..ba1d3615acb 100644 --- a/include/net/inet_connection_sock.h +++ b/include/net/inet_connection_sock.h @@ -39,6 +39,7 @@ struct inet_connection_sock_af_ops {  	int	    (*queue_xmit)(struct sk_buff *skb, struct flowi *fl);  	void	    (*send_check)(struct sock *sk, struct sk_buff *skb);  	int	    (*rebuild_header)(struct sock *sk); +	void	    (*sk_rx_dst_set)(struct sock *sk, const struct sk_buff *skb);  	int	    (*conn_request)(struct sock *sk, struct sk_buff *skb);  	struct sock *(*syn_recv_sock)(struct sock *sk, struct sk_buff *skb,  				      struct request_sock *req, diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h index 83b567fe194..613cfa40167 100644 --- a/include/net/inet_sock.h +++ b/include/net/inet_sock.h @@ -249,13 +249,4 @@ static inline __u8 inet_sk_flowi_flags(const struct sock *sk)  	return flags;  } -static inline void inet_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) -{ -	struct dst_entry *dst = skb_dst(skb); - -	dst_hold(dst); -	sk->sk_rx_dst = dst; -	inet_sk(sk)->rx_dst_ifindex = skb->skb_iif; -} -  #endif	/* _INET_SOCK_H */ diff --git a/include/net/ip.h b/include/net/ip.h index bd5e444a19c..5a5d84d3d2c 100644 --- a/include/net/ip.h +++ b/include/net/ip.h @@ -120,7 +120,7 @@ extern struct sk_buff  *__ip_make_skb(struct sock *sk,  				      struct flowi4 *fl4,  				      struct sk_buff_head *queue,  				      struct inet_cork *cork); -extern int		ip_send_skb(struct sk_buff *skb); +extern int		ip_send_skb(struct net *net, struct sk_buff *skb);  extern int		ip_push_pending_frames(struct sock *sk, struct flowi4 *fl4);  extern void		ip_flush_pending_frames(struct sock *sk);  extern struct sk_buff  *ip_make_skb(struct sock *sk, diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index 0fedbd8d747..9fc7114159e 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h @@ -111,9 +111,8 @@ struct rt6_info {  	struct inet6_dev		*rt6i_idev;  	unsigned long			_rt6i_peer; -#ifdef CONFIG_XFRM -	u32				rt6i_flow_cache_genid; -#endif +	u32				rt6i_genid; +  	/* more non-fragment space at head required */  	unsigned short			rt6i_nfheader_len; diff --git a/include/net/llc.h b/include/net/llc.h index 226c846cab0..f2d0fc57052 100644 --- a/include/net/llc.h +++ b/include/net/llc.h @@ -133,7 +133,7 @@ extern int llc_build_and_send_ui_pkt(struct llc_sap *sap, struct sk_buff *skb,  extern void llc_sap_handler(struct llc_sap *sap, struct sk_buff *skb);  extern void llc_conn_handler(struct llc_sap *sap, struct sk_buff *skb); -extern int llc_station_init(void); +extern void llc_station_init(void);  extern void llc_station_exit(void);  #ifdef CONFIG_PROC_FS diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index ae1cd6c9ba5..fd87963a0ea 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h @@ -102,6 +102,7 @@ struct net {  #endif  	struct netns_ipvs	*ipvs;  	struct sock		*diag_nlsk; +	atomic_t		rt_genid;  }; @@ -300,5 +301,14 @@ static inline void unregister_net_sysctl_table(struct ctl_table_header *header)  }  #endif +static inline int rt_genid(struct net *net) +{ +	return atomic_read(&net->rt_genid); +} + +static inline void rt_genid_bump(struct net *net) +{ +	atomic_inc(&net->rt_genid); +}  #endif /* __NET_NET_NAMESPACE_H */ diff --git a/include/net/netfilter/nf_conntrack_ecache.h b/include/net/netfilter/nf_conntrack_ecache.h index e1ce1048fe5..4a045cda9c6 100644 --- a/include/net/netfilter/nf_conntrack_ecache.h +++ b/include/net/netfilter/nf_conntrack_ecache.h @@ -18,6 +18,7 @@ struct nf_conntrack_ecache {  	u16 ctmask;		/* bitmask of ct events to be delivered */  	u16 expmask;		/* bitmask of expect events to be delivered */  	u32 pid;		/* netlink pid of destroyer */ +	struct timer_list timeout;  };  static inline struct nf_conntrack_ecache * diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h index 1474dd65c66..eb24dbccd81 100644 --- a/include/net/netns/ipv4.h +++ b/include/net/netns/ipv4.h @@ -65,7 +65,6 @@ struct netns_ipv4 {  	unsigned int sysctl_ping_group_range[2];  	long sysctl_tcp_mem[3]; -	atomic_t rt_genid;  	atomic_t dev_addr_genid;  #ifdef CONFIG_IP_MROUTE diff --git a/include/net/route.h b/include/net/route.h index 776a27f1ab7..da22243d276 100644 --- a/include/net/route.h +++ b/include/net/route.h @@ -108,7 +108,7 @@ extern struct ip_rt_acct __percpu *ip_rt_acct;  struct in_device;  extern int		ip_rt_init(void); -extern void		rt_cache_flush(struct net *net, int how); +extern void		rt_cache_flush(struct net *net);  extern void		rt_flush_dev(struct net_device *dev);  extern struct rtable *__ip_route_output_key(struct net *, struct flowi4 *flp);  extern struct rtable *ip_route_output_flow(struct net *, struct flowi4 *flp, diff --git a/include/net/scm.h b/include/net/scm.h index 079d7887dac..7dc0854f0b3 100644 --- a/include/net/scm.h +++ b/include/net/scm.h @@ -70,9 +70,11 @@ static __inline__ void scm_destroy(struct scm_cookie *scm)  }  static __inline__ int scm_send(struct socket *sock, struct msghdr *msg, -			       struct scm_cookie *scm) +			       struct scm_cookie *scm, bool forcecreds)  {  	memset(scm, 0, sizeof(*scm)); +	if (forcecreds) +		scm_set_cred(scm, task_tgid(current), current_cred());  	unix_get_peersec_dgram(sock, scm);  	if (msg->msg_controllen <= 0)  		return 0; diff --git a/include/net/sock.h b/include/net/sock.h index b3730239bf1..adb7da20b5a 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -218,6 +218,7 @@ struct cg_proto;    *	@sk_route_nocaps: forbidden route capabilities (e.g NETIF_F_GSO_MASK)    *	@sk_gso_type: GSO type (e.g. %SKB_GSO_TCPV4)    *	@sk_gso_max_size: Maximum GSO segment size to build +  *	@sk_gso_max_segs: Maximum number of GSO segments    *	@sk_lingertime: %SO_LINGER l_linger setting    *	@sk_backlog: always used with the per-socket spinlock held    *	@sk_callback_lock: used with the callbacks in the end of this struct @@ -338,6 +339,7 @@ struct sock {  	netdev_features_t	sk_route_nocaps;  	int			sk_gso_type;  	unsigned int		sk_gso_max_size; +	u16			sk_gso_max_segs;  	int			sk_rcvlowat;  	unsigned long	        sk_lingertime;  	struct sk_buff_head	sk_error_queue; @@ -1330,7 +1332,7 @@ static inline bool sk_wmem_schedule(struct sock *sk, int size)  }  static inline bool -sk_rmem_schedule(struct sock *sk, struct sk_buff *skb, unsigned int size) +sk_rmem_schedule(struct sock *sk, struct sk_buff *skb, int size)  {  	if (!sk_has_account(sk))  		return true; diff --git a/include/net/tcp.h b/include/net/tcp.h index e19124b84cd..1f000ffe707 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -464,6 +464,7 @@ extern int tcp_disconnect(struct sock *sk, int flags);  void tcp_connect_init(struct sock *sk);  void tcp_finish_connect(struct sock *sk, struct sk_buff *skb);  int tcp_send_rcvq(struct sock *sk, struct msghdr *msg, size_t size); +void inet_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb);  /* From syncookies.c */  extern __u32 syncookie_secret[2][16-4+SHA_DIGEST_WORDS]; diff --git a/include/net/xfrm.h b/include/net/xfrm.h index d9509eb29b8..639dd1316d3 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -213,6 +213,9 @@ struct xfrm_state {  	struct xfrm_lifetime_cur curlft;  	struct tasklet_hrtimer	mtimer; +	/* used to fix curlft->add_time when changing date */ +	long		saved_tmo; +  	/* Last used time */  	unsigned long		lastused; @@ -238,6 +241,7 @@ static inline struct net *xs_net(struct xfrm_state *x)  /* xflags - make enum if more show up */  #define XFRM_TIME_DEFER	1 +#define XFRM_SOFT_EXPIRE 2  enum {  	XFRM_STATE_VOID, @@ -269,6 +273,9 @@ struct xfrm_replay {  	int	(*check)(struct xfrm_state *x,  			 struct sk_buff *skb,  			 __be32 net_seq); +	int	(*recheck)(struct xfrm_state *x, +			   struct sk_buff *skb, +			   __be32 net_seq);  	void	(*notify)(struct xfrm_state *x, int event);  	int	(*overflow)(struct xfrm_state *x, struct sk_buff *skb);  }; @@ -288,6 +295,8 @@ struct xfrm_policy_afinfo {  						  struct flowi *fl,  						  int reverse);  	int			(*get_tos)(const struct flowi *fl); +	void			(*init_dst)(struct net *net, +					    struct xfrm_dst *dst);  	int			(*init_path)(struct xfrm_dst *path,  					     struct dst_entry *dst,  					     int nfheader_len); diff --git a/include/sound/pcm.h b/include/sound/pcm.h index c75c0d1a85e..cdca2ab1e71 100644 --- a/include/sound/pcm.h +++ b/include/sound/pcm.h @@ -1075,7 +1075,8 @@ static inline void snd_pcm_limit_isa_dma_size(int dma, size_t *max)  const char *snd_pcm_format_name(snd_pcm_format_t format);  /** - * Get a string naming the direction of a stream + * snd_pcm_stream_str - Get a string naming the direction of a stream + * @substream: the pcm substream instance   */  static inline const char *snd_pcm_stream_str(struct snd_pcm_substream *substream)  { diff --git a/include/target/target_core_backend.h b/include/target/target_core_backend.h index f1405d335a9..941c84bf106 100644 --- a/include/target/target_core_backend.h +++ b/include/target/target_core_backend.h @@ -23,7 +23,9 @@ struct se_subsystem_api {  	struct se_device *(*create_virtdevice)(struct se_hba *,  				struct se_subsystem_dev *, void *);  	void (*free_device)(void *); -	int (*transport_complete)(struct se_cmd *cmd, struct scatterlist *); +	void (*transport_complete)(struct se_cmd *cmd, +				   struct scatterlist *, +				   unsigned char *);  	int (*parse_cdb)(struct se_cmd *cmd);  	ssize_t (*check_configfs_dev_params)(struct se_hba *, diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h index 128ce46fa48..5be89373cea 100644 --- a/include/target/target_core_base.h +++ b/include/target/target_core_base.h @@ -121,6 +121,7 @@  #define SE_INQUIRY_BUF				512  #define SE_MODE_PAGE_BUF			512 +#define SE_SENSE_BUF				96  /* struct se_hba->hba_flags */  enum hba_flags_table { @@ -503,8 +504,6 @@ struct se_cmd {  	u32			se_ordered_id;  	/* Total size in bytes associated with command */  	u32			data_length; -	/* SCSI Presented Data Transfer Length */ -	u32			cmd_spdtl;  	u32			residual_count;  	u32			orig_fe_lun;  	/* Persistent Reservation key */ diff --git a/include/trace/events/kmem.h b/include/trace/events/kmem.h index 5f889f16b0c..08fa27244da 100644 --- a/include/trace/events/kmem.h +++ b/include/trace/events/kmem.h @@ -214,7 +214,7 @@ TRACE_EVENT(mm_page_alloc,  	TP_printk("page=%p pfn=%lu order=%d migratetype=%d gfp_flags=%s",  		__entry->page, -		page_to_pfn(__entry->page), +		__entry->page ? page_to_pfn(__entry->page) : 0,  		__entry->order,  		__entry->migratetype,  		show_gfp_flags(__entry->gfp_flags)) @@ -240,7 +240,7 @@ DECLARE_EVENT_CLASS(mm_page,  	TP_printk("page=%p pfn=%lu order=%u migratetype=%d percpu_refill=%d",  		__entry->page, -		page_to_pfn(__entry->page), +		__entry->page ? page_to_pfn(__entry->page) : 0,  		__entry->order,  		__entry->migratetype,  		__entry->order == 0) diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h index ea7a2035456..5a8671e8a67 100644 --- a/include/trace/events/sched.h +++ b/include/trace/events/sched.h @@ -73,6 +73,9 @@ DECLARE_EVENT_CLASS(sched_wakeup_template,  		__entry->prio		= p->prio;  		__entry->success	= success;  		__entry->target_cpu	= task_cpu(p); +	) +	TP_perf_assign( +		__perf_task(p);  	),  	TP_printk("comm=%s pid=%d prio=%d success=%d target_cpu=%03d", @@ -325,6 +328,7 @@ DECLARE_EVENT_CLASS(sched_stat_template,  	)  	TP_perf_assign(  		__perf_count(delay); +		__perf_task(tsk);  	),  	TP_printk("comm=%s pid=%d delay=%Lu [ns]", diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h index c6bc2faaf26..a763888a36f 100644 --- a/include/trace/ftrace.h +++ b/include/trace/ftrace.h @@ -712,6 +712,9 @@ __attribute__((section("_ftrace_events"))) *__event_##call = &event_##call  #undef __perf_count  #define __perf_count(c) __count = (c) +#undef __perf_task +#define __perf_task(t) __task = (t) +  #undef TP_perf_assign  #define TP_perf_assign(args...) args @@ -725,6 +728,7 @@ perf_trace_##call(void *__data, proto)					\  	struct ftrace_raw_##call *entry;				\  	struct pt_regs __regs;						\  	u64 __addr = 0, __count = 1;					\ +	struct task_struct *__task = NULL;				\  	struct hlist_head *head;					\  	int __entry_size;						\  	int __data_size;						\ @@ -752,7 +756,7 @@ perf_trace_##call(void *__data, proto)					\  									\  	head = this_cpu_ptr(event_call->perf_events);			\  	perf_trace_buf_submit(entry, __entry_size, rctx, __addr,	\ -		__count, &__regs, head);				\ +		__count, &__regs, head, __task);			\  }  /* diff --git a/include/xen/events.h b/include/xen/events.h index 9c641deb65d..04399b28e82 100644 --- a/include/xen/events.h +++ b/include/xen/events.h @@ -58,8 +58,6 @@ void notify_remote_via_irq(int irq);  void xen_irq_resume(void); -void xen_hvm_prepare_kexec(struct shared_info *sip, unsigned long pfn); -  /* Clear an irq's pending state, in preparation for polling on it */  void xen_clear_irq_pending(int irq);  void xen_set_irq_pending(int irq); diff --git a/include/xen/grant_table.h b/include/xen/grant_table.h index 11e27c3af3c..f19fff8650e 100644 --- a/include/xen/grant_table.h +++ b/include/xen/grant_table.h @@ -187,6 +187,7 @@ int gnttab_map_refs(struct gnttab_map_grant_ref *map_ops,  		    struct gnttab_map_grant_ref *kmap_ops,  		    struct page **pages, unsigned int count);  int gnttab_unmap_refs(struct gnttab_unmap_grant_ref *unmap_ops, -		      struct page **pages, unsigned int count, bool clear_pte); +		      struct gnttab_map_grant_ref *kunmap_ops, +		      struct page **pages, unsigned int count);  #endif /* __ASM_GNTTAB_H__ */  |