diff options
Diffstat (limited to 'include')
65 files changed, 519 insertions, 270 deletions
diff --git a/include/asm-generic/unistd.h b/include/asm-generic/unistd.h index 4f76959397f..f4c38d8c667 100644 --- a/include/asm-generic/unistd.h +++ b/include/asm-generic/unistd.h @@ -143,7 +143,7 @@ __SYSCALL(__NR_pivot_root, sys_pivot_root)  /* fs/nfsctl.c */  #define __NR_nfsservctl 42 -__SC_COMP(__NR_nfsservctl, sys_nfsservctl, compat_sys_nfsservctl) +__SYSCALL(__NR_nfsservctl, sys_ni_syscall)  /* fs/open.c */  #define __NR3264_statfs 43 diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index db22d136ad0..b5e2e4c6b01 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -222,7 +222,6 @@  		VMLINUX_SYMBOL(__start___tracepoints_ptrs) = .;		\  		*(__tracepoints_ptrs)	/* Tracepoints: pointer array */\  		VMLINUX_SYMBOL(__stop___tracepoints_ptrs) = .;		\ -		*(__markers_strings)	/* Markers: strings */		\  		*(__tracepoints_strings)/* Tracepoints: strings */	\  	}								\  									\ diff --git a/include/linux/basic_mmio_gpio.h b/include/linux/basic_mmio_gpio.h index 98999cf107c..feb91219674 100644 --- a/include/linux/basic_mmio_gpio.h +++ b/include/linux/basic_mmio_gpio.h @@ -63,15 +63,10 @@ static inline struct bgpio_chip *to_bgpio_chip(struct gpio_chip *gc)  	return container_of(gc, struct bgpio_chip, gc);  } -int __devexit bgpio_remove(struct bgpio_chip *bgc); -int __devinit bgpio_init(struct bgpio_chip *bgc, -			 struct device *dev, -			 unsigned long sz, -			 void __iomem *dat, -			 void __iomem *set, -			 void __iomem *clr, -			 void __iomem *dirout, -			 void __iomem *dirin, -			 bool big_endian); +int bgpio_remove(struct bgpio_chip *bgc); +int bgpio_init(struct bgpio_chip *bgc, struct device *dev, +	       unsigned long sz, void __iomem *dat, void __iomem *set, +	       void __iomem *clr, void __iomem *dirout, void __iomem *dirin, +	       bool big_endian);  #endif /* __BASIC_MMIO_GPIO_H */ diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index 32f0076e844..71fc53bb8f1 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h @@ -124,6 +124,7 @@ enum rq_flag_bits {  	__REQ_SYNC,		/* request is sync (sync write or read) */  	__REQ_META,		/* metadata io request */ +	__REQ_PRIO,		/* boost priority in cfq */  	__REQ_DISCARD,		/* request to discard sectors */  	__REQ_SECURE,		/* secure discard (used with __REQ_DISCARD) */ @@ -161,14 +162,15 @@ enum rq_flag_bits {  #define REQ_FAILFAST_DRIVER	(1 << __REQ_FAILFAST_DRIVER)  #define REQ_SYNC		(1 << __REQ_SYNC)  #define REQ_META		(1 << __REQ_META) +#define REQ_PRIO		(1 << __REQ_PRIO)  #define REQ_DISCARD		(1 << __REQ_DISCARD)  #define REQ_NOIDLE		(1 << __REQ_NOIDLE)  #define REQ_FAILFAST_MASK \  	(REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER)  #define REQ_COMMON_MASK \ -	(REQ_WRITE | REQ_FAILFAST_MASK | REQ_SYNC | REQ_META | REQ_DISCARD | \ -	 REQ_NOIDLE | REQ_FLUSH | REQ_FUA | REQ_SECURE) +	(REQ_WRITE | REQ_FAILFAST_MASK | REQ_SYNC | REQ_META | REQ_PRIO | \ +	 REQ_DISCARD | REQ_NOIDLE | REQ_FLUSH | REQ_FUA | REQ_SECURE)  #define REQ_CLONE_MASK		REQ_COMMON_MASK  #define REQ_RAHEAD		(1 << __REQ_RAHEAD) diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 84b15d54f8c..7fbaa910334 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -873,7 +873,6 @@ struct blk_plug {  	struct list_head list;  	struct list_head cb_list;  	unsigned int should_sort; -	unsigned int count;  };  #define BLK_MAX_REQUEST_COUNT 16 diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h index d7adf151d33..ca768ae729b 100644 --- a/include/linux/ceph/messenger.h +++ b/include/linux/ceph/messenger.h @@ -6,7 +6,6 @@  #include <linux/net.h>  #include <linux/radix-tree.h>  #include <linux/uio.h> -#include <linux/version.h>  #include <linux/workqueue.h>  #include "types.h" diff --git a/include/linux/compat.h b/include/linux/compat.h index 8779405e15a..c6e7523bf76 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h @@ -438,7 +438,6 @@ asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds,  				 struct compat_timespec __user *tsp,  				 const compat_sigset_t __user *sigmask,  				 compat_size_t sigsetsize); -asmlinkage long compat_sys_nfsservctl(int cmd, void *notused, void *notused2);  asmlinkage long compat_sys_signalfd4(int ufd,  				     const compat_sigset_t __user *sigmask,  				     compat_size_t sigsetsize, int flags); diff --git a/include/linux/connector.h b/include/linux/connector.h index 0c69ad825b3..3c9c54fd569 100644 --- a/include/linux/connector.h +++ b/include/linux/connector.h @@ -1,7 +1,7 @@  /*   * 	connector.h   *  - * 2004-2005 Copyright (c) Evgeniy Polyakov <johnpol@2ka.mipt.ru> + * 2004-2005 Copyright (c) Evgeniy Polyakov <zbr@ioremap.net>   * All rights reserved.   *    * This program is free software; you can redistribute it and/or modify diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h index 3fa1f3d90ce..99e3e50b5c5 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h @@ -197,6 +197,11 @@ struct dm_target {  	 * whether or not its underlying devices have support.  	 */  	unsigned discards_supported:1; + +	/* +	 * Set if this target does not return zeroes on discarded blocks. +	 */ +	unsigned discard_zeroes_data_unsupported:1;  };  /* Each target can link one of these into the table */ diff --git a/include/linux/drbd_tag_magic.h b/include/linux/drbd_tag_magic.h index 06954319051..81f52f2c572 100644 --- a/include/linux/drbd_tag_magic.h +++ b/include/linux/drbd_tag_magic.h @@ -28,7 +28,7 @@ enum packet_types {  #define NL_STRING(pn, pr, member, len)	\  	unsigned char member[len]; int member ## _len; \  	int tag_and_len ## member; -#include "linux/drbd_nl.h" +#include <linux/drbd_nl.h>  /* declare tag-list-sizes */  static const int tag_list_sizes[] = { diff --git a/include/linux/evm.h b/include/linux/evm.h new file mode 100644 index 00000000000..9fc13a76092 --- /dev/null +++ b/include/linux/evm.h @@ -0,0 +1,100 @@ +/* + * evm.h + * + * Copyright (c) 2009 IBM Corporation + * Author: Mimi Zohar <zohar@us.ibm.com> + */ + +#ifndef _LINUX_EVM_H +#define _LINUX_EVM_H + +#include <linux/integrity.h> +#include <linux/xattr.h> + +struct integrity_iint_cache; + +#ifdef CONFIG_EVM +extern enum integrity_status evm_verifyxattr(struct dentry *dentry, +					     const char *xattr_name, +					     void *xattr_value, +					     size_t xattr_value_len, +					     struct integrity_iint_cache *iint); +extern int evm_inode_setattr(struct dentry *dentry, struct iattr *attr); +extern void evm_inode_post_setattr(struct dentry *dentry, int ia_valid); +extern int evm_inode_setxattr(struct dentry *dentry, const char *name, +			      const void *value, size_t size); +extern void evm_inode_post_setxattr(struct dentry *dentry, +				    const char *xattr_name, +				    const void *xattr_value, +				    size_t xattr_value_len); +extern int evm_inode_removexattr(struct dentry *dentry, const char *xattr_name); +extern void evm_inode_post_removexattr(struct dentry *dentry, +				       const char *xattr_name); +extern int evm_inode_init_security(struct inode *inode, +				   const struct xattr *xattr_array, +				   struct xattr *evm); +#ifdef CONFIG_FS_POSIX_ACL +extern int posix_xattr_acl(const char *xattrname); +#else +static inline int posix_xattr_acl(const char *xattrname) +{ +	return 0; +} +#endif +#else +#ifdef CONFIG_INTEGRITY +static inline enum integrity_status evm_verifyxattr(struct dentry *dentry, +						    const char *xattr_name, +						    void *xattr_value, +						    size_t xattr_value_len, +					struct integrity_iint_cache *iint) +{ +	return INTEGRITY_UNKNOWN; +} +#endif + +static inline int evm_inode_setattr(struct dentry *dentry, struct iattr *attr) +{ +	return 0; +} + +static inline void evm_inode_post_setattr(struct dentry *dentry, int ia_valid) +{ +	return; +} + +static inline int evm_inode_setxattr(struct dentry *dentry, const char *name, +				     const void *value, size_t size) +{ +	return 0; +} + +static inline void evm_inode_post_setxattr(struct dentry *dentry, +					   const char *xattr_name, +					   const void *xattr_value, +					   size_t xattr_value_len) +{ +	return; +} + +static inline int evm_inode_removexattr(struct dentry *dentry, +					const char *xattr_name) +{ +	return 0; +} + +static inline void evm_inode_post_removexattr(struct dentry *dentry, +					      const char *xattr_name) +{ +	return; +} + +static inline int evm_inode_init_security(struct inode *inode, +					  const struct xattr *xattr_array, +					  struct xattr *evm) +{ +	return 0; +} + +#endif /* CONFIG_EVM_H */ +#endif /* LINUX_EVM_H */ diff --git a/include/linux/fs.h b/include/linux/fs.h index 178cdb4f1d4..277f497923a 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -162,10 +162,8 @@ struct inodes_stat_t {  #define READA			RWA_MASK  #define READ_SYNC		(READ | REQ_SYNC) -#define READ_META		(READ | REQ_META)  #define WRITE_SYNC		(WRITE | REQ_SYNC | REQ_NOIDLE)  #define WRITE_ODIRECT		(WRITE | REQ_SYNC) -#define WRITE_META		(WRITE | REQ_META)  #define WRITE_FLUSH		(WRITE | REQ_SYNC | REQ_NOIDLE | REQ_FLUSH)  #define WRITE_FUA		(WRITE | REQ_SYNC | REQ_NOIDLE | REQ_FUA)  #define WRITE_FLUSH_FUA		(WRITE | REQ_SYNC | REQ_NOIDLE | REQ_FLUSH | REQ_FUA) @@ -2318,6 +2316,11 @@ extern struct inode * iget5_locked(struct super_block *, unsigned long, int (*te  extern struct inode * iget_locked(struct super_block *, unsigned long);  extern int insert_inode_locked4(struct inode *, unsigned long, int (*test)(struct inode *, void *), void *);  extern int insert_inode_locked(struct inode *); +#ifdef CONFIG_DEBUG_LOCK_ALLOC +extern void lockdep_annotate_inode_mutex_key(struct inode *inode); +#else +static inline void lockdep_annotate_inode_mutex_key(struct inode *inode) { }; +#endif  extern void unlock_new_inode(struct inode *);  extern unsigned int get_next_ino(void); diff --git a/include/linux/fuse.h b/include/linux/fuse.h index d464de53db4..464cff52686 100644 --- a/include/linux/fuse.h +++ b/include/linux/fuse.h @@ -47,6 +47,9 @@   *  - FUSE_IOCTL_UNRESTRICTED shall now return with array of 'struct   *    fuse_ioctl_iovec' instead of ambiguous 'struct iovec'   *  - add FUSE_IOCTL_32BIT flag + * + * 7.17 + *  - add FUSE_FLOCK_LOCKS and FUSE_RELEASE_FLOCK_UNLOCK   */  #ifndef _LINUX_FUSE_H @@ -78,7 +81,7 @@  #define FUSE_KERNEL_VERSION 7  /** Minor version number of this interface */ -#define FUSE_KERNEL_MINOR_VERSION 16 +#define FUSE_KERNEL_MINOR_VERSION 17  /** The node ID of the root inode */  #define FUSE_ROOT_ID 1 @@ -153,8 +156,10 @@ struct fuse_file_lock {  /**   * INIT request/reply flags   * + * FUSE_POSIX_LOCKS: remote locking for POSIX file locks   * FUSE_EXPORT_SUPPORT: filesystem handles lookups of "." and ".."   * FUSE_DONT_MASK: don't apply umask to file mode on create operations + * FUSE_FLOCK_LOCKS: remote locking for BSD style file locks   */  #define FUSE_ASYNC_READ		(1 << 0)  #define FUSE_POSIX_LOCKS	(1 << 1) @@ -163,6 +168,7 @@ struct fuse_file_lock {  #define FUSE_EXPORT_SUPPORT	(1 << 4)  #define FUSE_BIG_WRITES		(1 << 5)  #define FUSE_DONT_MASK		(1 << 6) +#define FUSE_FLOCK_LOCKS	(1 << 10)  /**   * CUSE INIT request/reply flags @@ -175,6 +181,7 @@ struct fuse_file_lock {   * Release flags   */  #define FUSE_RELEASE_FLUSH	(1 << 0) +#define FUSE_RELEASE_FLOCK_UNLOCK	(1 << 1)  /**   * Getattr flags diff --git a/include/linux/hid.h b/include/linux/hid.h index 9cf8e7ae745..deed5f9a1e1 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -71,6 +71,7 @@  #include <linux/timer.h>  #include <linux/workqueue.h>  #include <linux/input.h> +#include <linux/semaphore.h>  /*   * We parse each description item into this structure. Short items data @@ -312,6 +313,7 @@ struct hid_item {  #define HID_QUIRK_BADPAD			0x00000020  #define HID_QUIRK_MULTI_INPUT			0x00000040  #define HID_QUIRK_HIDINPUT_FORCE		0x00000080 +#define HID_QUIRK_MULTITOUCH			0x00000100  #define HID_QUIRK_SKIP_OUTPUT_REPORTS		0x00010000  #define HID_QUIRK_FULLSPEED_INTERVAL		0x10000000  #define HID_QUIRK_NO_INIT_REPORTS		0x20000000 @@ -475,6 +477,7 @@ struct hid_device {							/* device report descriptor */  	unsigned country;						/* HID country */  	struct hid_report_enum report_enum[HID_REPORT_TYPES]; +	struct semaphore driver_lock;					/* protects the current driver */  	struct device dev;						/* device */  	struct hid_driver *driver;  	struct hid_ll_driver *ll_driver; diff --git a/include/linux/ima.h b/include/linux/ima.h index 09e6e62f995..6ac8e50c6cf 100644 --- a/include/linux/ima.h +++ b/include/linux/ima.h @@ -15,8 +15,6 @@ struct linux_binprm;  #ifdef CONFIG_IMA  extern int ima_bprm_check(struct linux_binprm *bprm); -extern int ima_inode_alloc(struct inode *inode); -extern void ima_inode_free(struct inode *inode);  extern int ima_file_check(struct file *file, int mask);  extern void ima_file_free(struct file *file);  extern int ima_file_mmap(struct file *file, unsigned long prot); @@ -27,16 +25,6 @@ static inline int ima_bprm_check(struct linux_binprm *bprm)  	return 0;  } -static inline int ima_inode_alloc(struct inode *inode) -{ -	return 0; -} - -static inline void ima_inode_free(struct inode *inode) -{ -	return; -} -  static inline int ima_file_check(struct file *file, int mask)  {  	return 0; @@ -51,6 +39,5 @@ static inline int ima_file_mmap(struct file *file, unsigned long prot)  {  	return 0;  } -  #endif /* CONFIG_IMA_H */  #endif /* _LINUX_IMA_H */ diff --git a/include/linux/integrity.h b/include/linux/integrity.h new file mode 100644 index 00000000000..a0c41256cb9 --- /dev/null +++ b/include/linux/integrity.h @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2009 IBM Corporation + * Author: Mimi Zohar <zohar@us.ibm.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 of the License. + */ + +#ifndef _LINUX_INTEGRITY_H +#define _LINUX_INTEGRITY_H + +#include <linux/fs.h> + +enum integrity_status { +	INTEGRITY_PASS = 0, +	INTEGRITY_FAIL, +	INTEGRITY_NOLABEL, +	INTEGRITY_NOXATTRS, +	INTEGRITY_UNKNOWN, +}; + +/* List of EVM protected security xattrs */ +#ifdef CONFIG_INTEGRITY +extern int integrity_inode_alloc(struct inode *inode); +extern void integrity_inode_free(struct inode *inode); + +#else +static inline int integrity_inode_alloc(struct inode *inode) +{ +	return 0; +} + +static inline void integrity_inode_free(struct inode *inode) +{ +	return; +} +#endif /* CONFIG_INTEGRITY_H */ +#endif /* _LINUX_INTEGRITY_H */ diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h index 8cdcc2a199a..c81ed2ac16b 100644 --- a/include/linux/io-mapping.h +++ b/include/linux/io-mapping.h @@ -27,7 +27,7 @@   * The io_mapping mechanism provides an abstraction for mapping   * individual pages from an io device to the CPU in an efficient fashion.   * - * See Documentation/io_mapping.txt + * See Documentation/io-mapping.txt   */  #ifdef CONFIG_HAVE_ATOMIC_IOMAP diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h index e807ad687a0..3ad553e8eae 100644 --- a/include/linux/irqdomain.h +++ b/include/linux/irqdomain.h @@ -80,6 +80,7 @@ extern void irq_domain_del(struct irq_domain *domain);  #endif /* CONFIG_IRQ_DOMAIN */  #if defined(CONFIG_IRQ_DOMAIN) && defined(CONFIG_OF_IRQ) +extern struct irq_domain_ops irq_domain_simple_ops;  extern void irq_domain_add_simple(struct device_node *controller, int irq_base);  extern void irq_domain_generate_simple(const struct of_device_id *match,  					u64 phys_base, unsigned int irq_start); diff --git a/include/linux/isdn.h b/include/linux/isdn.h index 44cd663c53b..4ccf95d681b 100644 --- a/include/linux/isdn.h +++ b/include/linux/isdn.h @@ -68,7 +68,7 @@  #define ISDN_NET_ENCAP_SYNCPPP    4  #define ISDN_NET_ENCAP_UIHDLC     5  #define ISDN_NET_ENCAP_CISCOHDLCK 6 /* With SLARP and keepalive    */ -#define ISDN_NET_ENCAP_X25IFACE   7 /* Documentation/networking/x25-iface.txt*/ +#define ISDN_NET_ENCAP_X25IFACE   7 /* Documentation/networking/x25-iface.txt */  #define ISDN_NET_ENCAP_MAX_ENCAP  ISDN_NET_ENCAP_X25IFACE  /* Facility which currently uses an ISDN-channel */ diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 46ac9a50528..8eefcf7e95e 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -382,7 +382,7 @@ static inline char *pack_hex_byte(char *buf, u8 byte)  }  extern int hex_to_bin(char ch); -extern void hex2bin(u8 *dst, const char *src, size_t count); +extern int __must_check hex2bin(u8 *dst, const char *src, size_t count);  /*   * General tracing related utility functions - trace_printk(), diff --git a/include/linux/kvm.h b/include/linux/kvm.h index 2c366b52f50..aace6b8691a 100644 --- a/include/linux/kvm.h +++ b/include/linux/kvm.h @@ -553,6 +553,7 @@ struct kvm_ppc_pvinfo {  #define KVM_CAP_SPAPR_TCE 63  #define KVM_CAP_PPC_SMT 64  #define KVM_CAP_PPC_RMA	65 +#define KVM_CAP_S390_GMAP 71  #ifdef KVM_CAP_IRQ_ROUTING diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 3b535db00a9..343bd7661f2 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -39,16 +39,6 @@ extern unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan,  					struct mem_cgroup *mem_cont,  					int active, int file); -struct memcg_scanrecord { -	struct mem_cgroup *mem; /* scanend memory cgroup */ -	struct mem_cgroup *root; /* scan target hierarchy root */ -	int context;		/* scanning context (see memcontrol.c) */ -	unsigned long nr_scanned[2]; /* the number of scanned pages */ -	unsigned long nr_rotated[2]; /* the number of rotated pages */ -	unsigned long nr_freed[2]; /* the number of freed pages */ -	unsigned long elapsed; /* nsec of time elapsed while scanning */ -}; -  #ifdef CONFIG_CGROUP_MEM_RES_CTLR  /*   * All "charge" functions with gfp_mask should use GFP_KERNEL or @@ -127,15 +117,6 @@ mem_cgroup_get_reclaim_stat_from_page(struct page *page);  extern void mem_cgroup_print_oom_info(struct mem_cgroup *memcg,  					struct task_struct *p); -extern unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem, -						  gfp_t gfp_mask, bool noswap, -						  struct memcg_scanrecord *rec); -extern unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem, -						gfp_t gfp_mask, bool noswap, -						struct zone *zone, -						struct memcg_scanrecord *rec, -						unsigned long *nr_scanned); -  #ifdef CONFIG_CGROUP_MEM_RES_CTLR_SWAP  extern int do_swap_account;  #endif diff --git a/include/linux/mfd/wm8994/pdata.h b/include/linux/mfd/wm8994/pdata.h index d12f8d635a8..97cf4f27d64 100644 --- a/include/linux/mfd/wm8994/pdata.h +++ b/include/linux/mfd/wm8994/pdata.h @@ -26,7 +26,7 @@ struct wm8994_ldo_pdata {  	struct regulator_init_data *init_data;  }; -#define WM8994_CONFIGURE_GPIO 0x8000 +#define WM8994_CONFIGURE_GPIO 0x10000  #define WM8994_DRC_REGS 5  #define WM8994_EQ_REGS  20 diff --git a/include/linux/namei.h b/include/linux/namei.h index 76fe2c62ae7..409328d1cbb 100644 --- a/include/linux/namei.h +++ b/include/linux/namei.h @@ -48,11 +48,12 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};   */  #define LOOKUP_FOLLOW		0x0001  #define LOOKUP_DIRECTORY	0x0002 +#define LOOKUP_AUTOMOUNT	0x0004  #define LOOKUP_PARENT		0x0010  #define LOOKUP_REVAL		0x0020  #define LOOKUP_RCU		0x0040 -#define LOOKUP_NO_AUTOMOUNT	0x0080 +  /*   * Intent data   */ diff --git a/include/linux/pci.h b/include/linux/pci.h index 8c230cbcbb4..9fc01226055 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -621,8 +621,9 @@ struct pci_driver {  extern void pcie_bus_configure_settings(struct pci_bus *bus, u8 smpss);  enum pcie_bus_config_types { -	PCIE_BUS_PERFORMANCE, +	PCIE_BUS_TUNE_OFF,  	PCIE_BUS_SAFE, +	PCIE_BUS_PERFORMANCE,  	PCIE_BUS_PEER2PEER,  }; diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 245bafdafd5..c816075c01c 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -944,8 +944,10 @@ extern void perf_pmu_unregister(struct pmu *pmu);  extern int perf_num_counters(void);  extern const char *perf_pmu_name(void); -extern void __perf_event_task_sched_in(struct task_struct *task); -extern void __perf_event_task_sched_out(struct task_struct *task, struct task_struct *next); +extern void __perf_event_task_sched_in(struct task_struct *prev, +				       struct task_struct *task); +extern void __perf_event_task_sched_out(struct task_struct *prev, +					struct task_struct *next);  extern int perf_event_init_task(struct task_struct *child);  extern void perf_event_exit_task(struct task_struct *child);  extern void perf_event_free_task(struct task_struct *task); @@ -1059,17 +1061,20 @@ perf_sw_event(u32 event_id, u64 nr, struct pt_regs *regs, u64 addr)  extern struct jump_label_key perf_sched_events; -static inline void perf_event_task_sched_in(struct task_struct *task) +static inline void perf_event_task_sched_in(struct task_struct *prev, +					    struct task_struct *task)  {  	if (static_branch(&perf_sched_events)) -		__perf_event_task_sched_in(task); +		__perf_event_task_sched_in(prev, task);  } -static inline void perf_event_task_sched_out(struct task_struct *task, struct task_struct *next) +static inline void perf_event_task_sched_out(struct task_struct *prev, +					     struct task_struct *next)  {  	perf_sw_event(PERF_COUNT_SW_CONTEXT_SWITCHES, 1, NULL, 0); -	__perf_event_task_sched_out(task, next); +	if (static_branch(&perf_sched_events)) +		__perf_event_task_sched_out(prev, next);  }  extern void perf_event_mmap(struct vm_area_struct *vma); @@ -1139,10 +1144,11 @@ extern void perf_event_disable(struct perf_event *event);  extern void perf_event_task_tick(void);  #else  static inline void -perf_event_task_sched_in(struct task_struct *task)			{ } +perf_event_task_sched_in(struct task_struct *prev, +			 struct task_struct *task)			{ }  static inline void -perf_event_task_sched_out(struct task_struct *task, -			    struct task_struct *next)			{ } +perf_event_task_sched_out(struct task_struct *prev, +			  struct task_struct *next)			{ }  static inline int perf_event_init_task(struct task_struct *child)	{ return 0; }  static inline void perf_event_exit_task(struct task_struct *child)	{ }  static inline void perf_event_free_task(struct task_struct *task)	{ } diff --git a/include/linux/personality.h b/include/linux/personality.h index eec3bae164d..8fc7dd1a57f 100644 --- a/include/linux/personality.h +++ b/include/linux/personality.h @@ -22,6 +22,7 @@ extern int		__set_personality(unsigned int);   * These occupy the top three bytes.   */  enum { +	UNAME26	=               0x0020000,  	ADDR_NO_RANDOMIZE = 	0x0040000,	/* disable randomization of VA space */  	FDPIC_FUNCPTRS =	0x0080000,	/* userspace function ptrs point to descriptors  						 * (signal handling) diff --git a/include/linux/platform_data/ntc_thermistor.h b/include/linux/platform_data/ntc_thermistor.h index abd28621527..88734e871e3 100644 --- a/include/linux/platform_data/ntc_thermistor.h +++ b/include/linux/platform_data/ntc_thermistor.h @@ -36,7 +36,7 @@ struct ntc_thermistor_platform_data {  	 * read_uV()  	 *  	 * How to setup pullup_ohm, pulldown_ohm, and connect is -	 * described at Documentation/hwmon/ntc +	 * described at Documentation/hwmon/ntc_thermistor  	 *  	 * pullup/down_ohm: 0 for infinite / not-connected  	 */ diff --git a/include/linux/ptp_classify.h b/include/linux/ptp_classify.h index e07e2742a86..1dc420ba213 100644 --- a/include/linux/ptp_classify.h +++ b/include/linux/ptp_classify.h @@ -51,6 +51,7 @@  #define PTP_CLASS_V2_VLAN (PTP_CLASS_V2 | PTP_CLASS_VLAN)  #define PTP_EV_PORT 319 +#define PTP_GEN_BIT 0x08 /* indicates general message, if set in message type */  #define OFF_ETYPE	12  #define OFF_IHL		14 @@ -116,14 +117,20 @@ static inline int ptp_filter_init(struct sock_filter *f, int len)  	{OP_OR,		0,   0, PTP_CLASS_IPV6		}, /*              */ \  	{OP_RETA,	0,   0, 0			}, /*              */ \  /*L3x*/	{OP_RETK,	0,   0, PTP_CLASS_NONE		}, /*              */ \ -/*L40*/	{OP_JEQ,	0,   6, ETH_P_8021Q		}, /* f goto L50   */ \ +/*L40*/	{OP_JEQ,	0,   9, ETH_P_8021Q		}, /* f goto L50   */ \  	{OP_LDH,	0,   0, OFF_ETYPE + 4		}, /*              */ \ -	{OP_JEQ,	0,   9, ETH_P_1588		}, /* f goto L60   */ \ +	{OP_JEQ,	0,  15, ETH_P_1588		}, /* f goto L60   */ \ +	{OP_LDB,	0,   0, ETH_HLEN + VLAN_HLEN	}, /*              */ \ +	{OP_AND,	0,   0, PTP_GEN_BIT		}, /*              */ \ +	{OP_JEQ,	0,  12, 0			}, /* f goto L6x   */ \  	{OP_LDH,	0,   0, ETH_HLEN + VLAN_HLEN	}, /*              */ \  	{OP_AND,	0,   0, PTP_CLASS_VMASK		}, /*              */ \  	{OP_OR,		0,   0, PTP_CLASS_VLAN		}, /*              */ \  	{OP_RETA,	0,   0, 0			}, /*              */ \ -/*L50*/	{OP_JEQ,	0,   4, ETH_P_1588		}, /* f goto L61   */ \ +/*L50*/	{OP_JEQ,	0,   7, ETH_P_1588		}, /* f goto L61   */ \ +	{OP_LDB,	0,   0, ETH_HLEN		}, /*              */ \ +	{OP_AND,	0,   0, PTP_GEN_BIT		}, /*              */ \ +	{OP_JEQ,	0,   4, 0			}, /* f goto L6x   */ \  	{OP_LDH,	0,   0, ETH_HLEN		}, /*              */ \  	{OP_AND,	0,   0, PTP_CLASS_VMASK		}, /*              */ \  	{OP_OR,		0,   0, PTP_CLASS_L2		}, /*              */ \ diff --git a/include/linux/pwm_backlight.h b/include/linux/pwm_backlight.h index 5e3e25a3c9c..63d2df43e61 100644 --- a/include/linux/pwm_backlight.h +++ b/include/linux/pwm_backlight.h @@ -14,6 +14,7 @@ struct platform_pwm_backlight_data {  	unsigned int pwm_period_ns;  	int (*init)(struct device *dev);  	int (*notify)(struct device *dev, int brightness); +	void (*notify_after)(struct device *dev, int brightness);  	void (*exit)(struct device *dev);  	int (*check_fb)(struct device *dev, struct fb_info *info);  }; diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h index 26f6ea4444e..b47771aa571 100644 --- a/include/linux/regulator/consumer.h +++ b/include/linux/regulator/consumer.h @@ -123,7 +123,7 @@ struct regulator_bulk_data {  	const char *supply;  	struct regulator *consumer; -	/* Internal use */ +	/* private: Internal use */  	int ret;  }; diff --git a/include/linux/rio_regs.h b/include/linux/rio_regs.h index 9026b30238f..218168a2b5e 100644 --- a/include/linux/rio_regs.h +++ b/include/linux/rio_regs.h @@ -36,12 +36,12 @@  #define  RIO_PEF_PROCESSOR		0x20000000	/* [I] Processor */  #define  RIO_PEF_SWITCH			0x10000000	/* [I] Switch */  #define  RIO_PEF_MULTIPORT		0x08000000	/* [VI, 2.1] Multiport */ -#define  RIO_PEF_INB_MBOX		0x00f00000	/* [II] Mailboxes */ -#define  RIO_PEF_INB_MBOX0		0x00800000	/* [II] Mailbox 0 */ -#define  RIO_PEF_INB_MBOX1		0x00400000	/* [II] Mailbox 1 */ -#define  RIO_PEF_INB_MBOX2		0x00200000	/* [II] Mailbox 2 */ -#define  RIO_PEF_INB_MBOX3		0x00100000	/* [II] Mailbox 3 */ -#define  RIO_PEF_INB_DOORBELL		0x00080000	/* [II] Doorbells */ +#define  RIO_PEF_INB_MBOX		0x00f00000	/* [II, <= 1.2] Mailboxes */ +#define  RIO_PEF_INB_MBOX0		0x00800000	/* [II, <= 1.2] Mailbox 0 */ +#define  RIO_PEF_INB_MBOX1		0x00400000	/* [II, <= 1.2] Mailbox 1 */ +#define  RIO_PEF_INB_MBOX2		0x00200000	/* [II, <= 1.2] Mailbox 2 */ +#define  RIO_PEF_INB_MBOX3		0x00100000	/* [II, <= 1.2] Mailbox 3 */ +#define  RIO_PEF_INB_DOORBELL		0x00080000	/* [II, <= 1.2] Doorbells */  #define  RIO_PEF_EXT_RT			0x00000200	/* [III, 1.3] Extended route table support */  #define  RIO_PEF_STD_RT			0x00000100	/* [III, 1.3] Standard route table support */  #define  RIO_PEF_CTLS			0x00000010	/* [III] CTLS */ @@ -102,7 +102,7 @@  #define	RIO_SWITCH_RT_LIMIT	0x34	/* [III, 1.3] Switch Route Table Destination ID Limit CAR */  #define	 RIO_RT_MAX_DESTID		0x0000ffff -#define RIO_MBOX_CSR		0x40	/* [II] Mailbox CSR */ +#define RIO_MBOX_CSR		0x40	/* [II, <= 1.2] Mailbox CSR */  #define  RIO_MBOX0_AVAIL		0x80000000	/* [II] Mbox 0 avail */  #define  RIO_MBOX0_FULL			0x40000000	/* [II] Mbox 0 full */  #define  RIO_MBOX0_EMPTY		0x20000000	/* [II] Mbox 0 empty */ @@ -128,8 +128,8 @@  #define  RIO_MBOX3_FAIL			0x00000008	/* [II] Mbox 3 fail */  #define  RIO_MBOX3_ERROR		0x00000004	/* [II] Mbox 3 error */ -#define RIO_WRITE_PORT_CSR	0x44	/* [I] Write Port CSR */ -#define RIO_DOORBELL_CSR	0x44	/* [II] Doorbell CSR */ +#define RIO_WRITE_PORT_CSR	0x44	/* [I, <= 1.2] Write Port CSR */ +#define RIO_DOORBELL_CSR	0x44	/* [II, <= 1.2] Doorbell CSR */  #define  RIO_DOORBELL_AVAIL		0x80000000	/* [II] Doorbell avail */  #define  RIO_DOORBELL_FULL		0x40000000	/* [II] Doorbell full */  #define  RIO_DOORBELL_EMPTY		0x20000000	/* [II] Doorbell empty */ diff --git a/include/linux/sched.h b/include/linux/sched.h index 4ac2c0578e0..41d0237fd44 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1956,7 +1956,6 @@ static inline void disable_sched_clock_irqtime(void) {}  extern unsigned long long  task_sched_runtime(struct task_struct *task); -extern unsigned long long thread_group_sched_runtime(struct task_struct *task);  /* sched_exec is called by processes performing an exec */  #ifdef CONFIG_SMP diff --git a/include/linux/security.h b/include/linux/security.h index ebd2a53a3d0..19d8e04e168 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -36,6 +36,7 @@  #include <linux/key.h>  #include <linux/xfrm.h>  #include <linux/slab.h> +#include <linux/xattr.h>  #include <net/flow.h>  /* Maximum number of letters for an LSM name string */ @@ -147,6 +148,10 @@ extern int mmap_min_addr_handler(struct ctl_table *table, int write,  				 void __user *buffer, size_t *lenp, loff_t *ppos);  #endif +/* security_inode_init_security callback function to write xattrs */ +typedef int (*initxattrs) (struct inode *inode, +			   const struct xattr *xattr_array, void *fs_data); +  #ifdef CONFIG_SECURITY  struct security_mnt_opts { @@ -1367,7 +1372,7 @@ static inline void security_free_mnt_opts(struct security_mnt_opts *opts)   * @inode_getsecctx:   * 	Returns a string containing all relavent security context information   * - * 	@inode we wish to set the security context of. + * 	@inode we wish to get the security context of.   *	@ctx is a pointer in which to place the allocated security context.   *	@ctxlen points to the place to put the length of @ctx.   * This is the main security structure. @@ -1655,6 +1660,8 @@ struct security_operations {  extern int security_init(void);  extern int security_module_enable(struct security_operations *ops);  extern int register_security(struct security_operations *ops); +extern void __init security_fixup_ops(struct security_operations *ops); +  /* Security operations */  int security_ptrace_access_check(struct task_struct *child, unsigned int mode); @@ -1704,8 +1711,11 @@ int security_sb_parse_opts_str(char *options, struct security_mnt_opts *opts);  int security_inode_alloc(struct inode *inode);  void security_inode_free(struct inode *inode);  int security_inode_init_security(struct inode *inode, struct inode *dir, -				 const struct qstr *qstr, char **name, -				 void **value, size_t *len); +				 const struct qstr *qstr, +				 initxattrs initxattrs, void *fs_data); +int security_old_inode_init_security(struct inode *inode, struct inode *dir, +				     const struct qstr *qstr, char **name, +				     void **value, size_t *len);  int security_inode_create(struct inode *dir, struct dentry *dentry, int mode);  int security_inode_link(struct dentry *old_dentry, struct inode *dir,  			 struct dentry *new_dentry); @@ -2034,11 +2044,19 @@ static inline void security_inode_free(struct inode *inode)  static inline int security_inode_init_security(struct inode *inode,  						struct inode *dir,  						const struct qstr *qstr, -						char **name, -						void **value, -						size_t *len) +						initxattrs initxattrs, +						void *fs_data)  { -	return -EOPNOTSUPP; +	return 0; +} + +static inline int security_old_inode_init_security(struct inode *inode, +						   struct inode *dir, +						   const struct qstr *qstr, +						   char **name, void **value, +						   size_t *len) +{ +	return 0;  }  static inline int security_inode_create(struct inode *dir, diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 7b996ed86d5..8bd383caa36 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -524,6 +524,7 @@ static inline struct sk_buff *alloc_skb_fclone(unsigned int size,  extern bool skb_recycle_check(struct sk_buff *skb, int skb_size);  extern struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src); +extern int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask);  extern struct sk_buff *skb_clone(struct sk_buff *skb,  				 gfp_t priority);  extern struct sk_buff *skb_copy(const struct sk_buff *skb, diff --git a/include/linux/snmp.h b/include/linux/snmp.h index 12b2b18e50c..e16557a357e 100644 --- a/include/linux/snmp.h +++ b/include/linux/snmp.h @@ -231,6 +231,8 @@ enum  	LINUX_MIB_TCPDEFERACCEPTDROP,  	LINUX_MIB_IPRPFILTER, /* IP Reverse Path Filter (rp_filter) */  	LINUX_MIB_TCPTIMEWAITOVERFLOW,		/* TCPTimeWaitOverflow */ +	LINUX_MIB_TCPREQQFULLDOCOOKIES,		/* TCPReqQFullDoCookies */ +	LINUX_MIB_TCPREQQFULLDROP,		/* TCPReqQFullDrop */  	__LINUX_MIB_MAX  }; diff --git a/include/linux/swap.h b/include/linux/swap.h index 14d62490922..c71f84bb62e 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -252,6 +252,12 @@ static inline void lru_cache_add_file(struct page *page)  extern unsigned long try_to_free_pages(struct zonelist *zonelist, int order,  					gfp_t gfp_mask, nodemask_t *mask);  extern int __isolate_lru_page(struct page *page, int mode, int file); +extern unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem, +						  gfp_t gfp_mask, bool noswap); +extern unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem, +						gfp_t gfp_mask, bool noswap, +						struct zone *zone, +						unsigned long *nr_scanned);  extern unsigned long shrink_all_memory(unsigned long nr_pages);  extern int vm_swappiness;  extern int remove_mapping(struct address_space *mapping, struct page *page); diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 8c03b98df5f..1ff0ec2a5e8 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -702,9 +702,6 @@ asmlinkage long sys_sysctl(struct __sysctl_args __user *args);  asmlinkage long sys_sysinfo(struct sysinfo __user *info);  asmlinkage long sys_sysfs(int option,  				unsigned long arg1, unsigned long arg2); -asmlinkage long sys_nfsservctl(int cmd, -				struct nfsctl_arg __user *arg, -				void __user *res);  asmlinkage long sys_syslog(int type, char __user *buf, int len);  asmlinkage long sys_uselib(const char __user *library);  asmlinkage long sys_ni_syscall(void); diff --git a/include/linux/ti_wilink_st.h b/include/linux/ti_wilink_st.h index b004e557caa..2ef4385da6b 100644 --- a/include/linux/ti_wilink_st.h +++ b/include/linux/ti_wilink_st.h @@ -410,7 +410,28 @@ struct gps_event_hdr {  	u16 plen;  } __attribute__ ((packed)); -/* platform data */ +/** + * struct ti_st_plat_data - platform data shared between ST driver and + *	platform specific board file which adds the ST device. + * @nshutdown_gpio: Host's GPIO line to which chip's BT_EN is connected. + * @dev_name: The UART/TTY name to which chip is interfaced. (eg: /dev/ttyS1) + * @flow_cntrl: Should always be 1, since UART's CTS/RTS is used for PM + *	purposes. + * @baud_rate: The baud rate supported by the Host UART controller, this will + *	be shared across with the chip via a HCI VS command from User-Space Init + *	Mgr application. + * @suspend: + * @resume: legacy PM routines hooked to platform specific board file, so as + *	to take chip-host interface specific action. + * @chip_enable: + * @chip_disable: Platform/Interface specific mux mode setting, GPIO + *	configuring, Host side PM disabling etc.. can be done here. + * @chip_asleep: + * @chip_awake: Chip specific deep sleep states is communicated to Host + *	specific board-xx.c to take actions such as cut UART clocks when chip + *	asleep or run host faster when chip awake etc.. + * + */  struct ti_st_plat_data {  	long nshutdown_gpio;  	unsigned char dev_name[UART_DEV_NAME_LEN]; /* uart name */ @@ -418,6 +439,10 @@ struct ti_st_plat_data {  	unsigned long baud_rate;  	int (*suspend)(struct platform_device *, pm_message_t);  	int (*resume)(struct platform_device *); +	int (*chip_enable) (struct kim_data_s *); +	int (*chip_disable) (struct kim_data_s *); +	int (*chip_asleep) (struct kim_data_s *); +	int (*chip_awake) (struct kim_data_s *);  };  #endif /* TI_WILINK_ST_H */ diff --git a/include/linux/tty.h b/include/linux/tty.h index 44bc0c5617e..5f2ede82b3d 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -421,6 +421,8 @@ extern void tty_driver_flush_buffer(struct tty_struct *tty);  extern void tty_throttle(struct tty_struct *tty);  extern void tty_unthrottle(struct tty_struct *tty);  extern int tty_do_resize(struct tty_struct *tty, struct winsize *ws); +extern void tty_driver_remove_tty(struct tty_driver *driver, +				  struct tty_struct *tty);  extern void tty_shutdown(struct tty_struct *tty);  extern void tty_free_termios(struct tty_struct *tty);  extern int is_current_pgrp_orphaned(void); diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h index 9deeac85524..ecdaeb98b29 100644 --- a/include/linux/tty_driver.h +++ b/include/linux/tty_driver.h @@ -47,6 +47,9 @@   *   * 	This routine is called synchronously when a particular tty device   *	is closed for the last time freeing up the resources. + *	Note that tty_shutdown() is not called if ops->shutdown is defined. + *	This means one is responsible to take care of calling ops->remove (e.g. + *	via tty_driver_remove_tty) and releasing tty->termios.   *   *   * void (*cleanup)(struct tty_struct * tty); diff --git a/include/linux/writeback.h b/include/linux/writeback.h index f1bfa12ea24..2b8963ff0f3 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h @@ -12,15 +12,6 @@   *   *	(thresh - thresh/DIRTY_FULL_SCOPE, thresh)   * - * The 1/16 region above the global dirty limit will be put to maximum pauses: - * - *	(limit, limit + limit/DIRTY_MAXPAUSE_AREA) - * - * The 1/16 region above the max-pause region, dirty exceeded bdi's will be put - * to loops: - * - *	(limit + limit/DIRTY_MAXPAUSE_AREA, limit + limit/DIRTY_PASSGOOD_AREA) - *   * Further beyond, all dirtier tasks will enter a loop waiting (possibly long   * time) for the dirty pages to drop, unless written enough pages.   * @@ -31,8 +22,6 @@   */  #define DIRTY_SCOPE		8  #define DIRTY_FULL_SCOPE	(DIRTY_SCOPE / 2) -#define DIRTY_MAXPAUSE_AREA		16 -#define DIRTY_PASSGOOD_AREA		8  /*   * 4MB minimal write chunk size diff --git a/include/linux/xattr.h b/include/linux/xattr.h index aed54c50aa6..e5d12203154 100644 --- a/include/linux/xattr.h +++ b/include/linux/xattr.h @@ -30,6 +30,9 @@  #define XATTR_USER_PREFIX_LEN (sizeof (XATTR_USER_PREFIX) - 1)  /* Security namespace */ +#define XATTR_EVM_SUFFIX "evm" +#define XATTR_NAME_EVM XATTR_SECURITY_PREFIX XATTR_EVM_SUFFIX +  #define XATTR_SELINUX_SUFFIX "selinux"  #define XATTR_NAME_SELINUX XATTR_SECURITY_PREFIX XATTR_SELINUX_SUFFIX @@ -49,6 +52,11 @@  #define XATTR_CAPS_SUFFIX "capability"  #define XATTR_NAME_CAPS XATTR_SECURITY_PREFIX XATTR_CAPS_SUFFIX +#define XATTR_POSIX_ACL_ACCESS  "posix_acl_access" +#define XATTR_NAME_POSIX_ACL_ACCESS XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_ACCESS +#define XATTR_POSIX_ACL_DEFAULT  "posix_acl_default" +#define XATTR_NAME_POSIX_ACL_DEFAULT XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_DEFAULT +  #ifdef  __KERNEL__  #include <linux/types.h> @@ -67,6 +75,12 @@ struct xattr_handler {  		   size_t size, int flags, int handler_flags);  }; +struct xattr { +	char *name; +	void *value; +	size_t value_len; +}; +  ssize_t xattr_getsecurity(struct inode *, const char *, void *, size_t);  ssize_t vfs_getxattr(struct dentry *, const char *, void *, size_t);  ssize_t vfs_listxattr(struct dentry *d, char *list, size_t size); @@ -78,7 +92,10 @@ ssize_t generic_getxattr(struct dentry *dentry, const char *name, void *buffer,  ssize_t generic_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size);  int generic_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags);  int generic_removexattr(struct dentry *dentry, const char *name); - +ssize_t vfs_getxattr_alloc(struct dentry *dentry, const char *name, +			   char **xattr_value, size_t size, gfp_t flags); +int vfs_xattr_cmp(struct dentry *dentry, const char *xattr_name, +		  const char *value, size_t size, gfp_t flags);  #endif  /*  __KERNEL__  */  #endif	/* _LINUX_XATTR_H */ diff --git a/include/media/pwc-ioctl.h b/include/media/pwc-ioctl.h index 0f19779c463..1ed1e616fe3 100644 --- a/include/media/pwc-ioctl.h +++ b/include/media/pwc-ioctl.h @@ -53,7 +53,6 @@   */  #include <linux/types.h> -#include <linux/version.h>  /* Enumeration of image sizes */  #define PSZ_SQCIF	0x00 diff --git a/include/media/videobuf-dma-sg.h b/include/media/videobuf-dma-sg.h index 1c647e8148c..d8fb6012c10 100644 --- a/include/media/videobuf-dma-sg.h +++ b/include/media/videobuf-dma-sg.h @@ -34,7 +34,7 @@   *	does memory allocation too using vmalloc_32().   *   * videobuf_dma_*() - *	see Documentation/PCI/PCI-DMA-mapping.txt, these functions to + *	see Documentation/DMA-API-HOWTO.txt, these functions to   *	basically the same.  The map function does also build a   *	scatterlist for the buffer (and unmap frees it ...)   * diff --git a/include/net/9p/9p.h b/include/net/9p/9p.h index 342dcf13d03..a6326ef8ade 100644 --- a/include/net/9p/9p.h +++ b/include/net/9p/9p.h @@ -288,6 +288,35 @@ enum p9_perm_t {  	P9_DMSETVTX = 0x00010000,  }; +/* 9p2000.L open flags */ +#define P9_DOTL_RDONLY        00000000 +#define P9_DOTL_WRONLY        00000001 +#define P9_DOTL_RDWR          00000002 +#define P9_DOTL_NOACCESS      00000003 +#define P9_DOTL_CREATE        00000100 +#define P9_DOTL_EXCL          00000200 +#define P9_DOTL_NOCTTY        00000400 +#define P9_DOTL_TRUNC         00001000 +#define P9_DOTL_APPEND        00002000 +#define P9_DOTL_NONBLOCK      00004000 +#define P9_DOTL_DSYNC         00010000 +#define P9_DOTL_FASYNC        00020000 +#define P9_DOTL_DIRECT        00040000 +#define P9_DOTL_LARGEFILE     00100000 +#define P9_DOTL_DIRECTORY     00200000 +#define P9_DOTL_NOFOLLOW      00400000 +#define P9_DOTL_NOATIME       01000000 +#define P9_DOTL_CLOEXEC       02000000 +#define P9_DOTL_SYNC          04000000 + +/* 9p2000.L at flags */ +#define P9_DOTL_AT_REMOVEDIR		0x200 + +/* 9p2000.L lock type */ +#define P9_LOCK_TYPE_RDLCK 0 +#define P9_LOCK_TYPE_WRLCK 1 +#define P9_LOCK_TYPE_UNLCK 2 +  /**   * enum p9_qid_t - QID types   * @P9_QTDIR: directory diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index d17f47fc9e3..401d73bd151 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -1744,6 +1744,8 @@ struct wiphy_wowlan_support {   *	by default for perm_addr. In this case, the mask should be set to   *	all-zeroes. In this case it is assumed that the device can handle   *	the same number of arbitrary MAC addresses. + * @registered: protects ->resume and ->suspend sysfs callbacks against + *	unregister hardware   * @debugfsdir: debugfs directory used for this wiphy, will be renamed   *	automatically on wiphy renames   * @dev: (virtual) struct device for this wiphy @@ -1865,6 +1867,9 @@ struct wiphy {  	 * you need use set_wiphy_dev() (see below) */  	struct device dev; +	/* protects ->resume, ->suspend sysfs callbacks against unregister hw */ +	bool registered; +  	/* dir in debugfs: ieee80211/<wiphyname> */  	struct dentry *debugfsdir; diff --git a/include/net/flow.h b/include/net/flow.h index 78113daadd6..a09447749e2 100644 --- a/include/net/flow.h +++ b/include/net/flow.h @@ -7,6 +7,7 @@  #ifndef _NET_FLOW_H  #define _NET_FLOW_H +#include <linux/socket.h>  #include <linux/in6.h>  #include <linux/atomic.h> @@ -68,7 +69,7 @@ struct flowi4 {  #define fl4_ipsec_spi		uli.spi  #define fl4_mh_type		uli.mht.type  #define fl4_gre_key		uli.gre_key -}; +} __attribute__((__aligned__(BITS_PER_LONG/8)));  static inline void flowi4_init_output(struct flowi4 *fl4, int oif,  				      __u32 mark, __u8 tos, __u8 scope, @@ -112,7 +113,7 @@ struct flowi6 {  #define fl6_ipsec_spi		uli.spi  #define fl6_mh_type		uli.mht.type  #define fl6_gre_key		uli.gre_key -}; +} __attribute__((__aligned__(BITS_PER_LONG/8)));  struct flowidn {  	struct flowi_common	__fl_common; @@ -127,7 +128,7 @@ struct flowidn {  	union flowi_uli		uli;  #define fld_sport		uli.ports.sport  #define fld_dport		uli.ports.dport -}; +} __attribute__((__aligned__(BITS_PER_LONG/8)));  struct flowi {  	union { @@ -161,6 +162,24 @@ static inline struct flowi *flowidn_to_flowi(struct flowidn *fldn)  	return container_of(fldn, struct flowi, u.dn);  } +typedef unsigned long flow_compare_t; + +static inline size_t flow_key_size(u16 family) +{ +	switch (family) { +	case AF_INET: +		BUILD_BUG_ON(sizeof(struct flowi4) % sizeof(flow_compare_t)); +		return sizeof(struct flowi4) / sizeof(flow_compare_t); +	case AF_INET6: +		BUILD_BUG_ON(sizeof(struct flowi6) % sizeof(flow_compare_t)); +		return sizeof(struct flowi6) / sizeof(flow_compare_t); +	case AF_DECnet: +		BUILD_BUG_ON(sizeof(struct flowidn) % sizeof(flow_compare_t)); +		return sizeof(struct flowidn) / sizeof(flow_compare_t); +	} +	return 0; +} +  #define FLOW_DIR_IN	0  #define FLOW_DIR_OUT	1  #define FLOW_DIR_FWD	2 diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h index 1aaf915656f..8fa4430f99c 100644 --- a/include/net/ip_vs.h +++ b/include/net/ip_vs.h @@ -900,6 +900,7 @@ struct netns_ipvs {  	volatile int		sync_state;  	volatile int		master_syncid;  	volatile int		backup_syncid; +	struct mutex		sync_mutex;  	/* multicast interface name */  	char			master_mcast_ifn[IP_VS_IFNAME_MAXLEN];  	char			backup_mcast_ifn[IP_VS_IFNAME_MAXLEN]; diff --git a/include/net/request_sock.h b/include/net/request_sock.h index 99e6e19b57c..4c0766e201e 100644 --- a/include/net/request_sock.h +++ b/include/net/request_sock.h @@ -96,7 +96,8 @@ extern int sysctl_max_syn_backlog;   */  struct listen_sock {  	u8			max_qlen_log; -	/* 3 bytes hole, try to use */ +	u8			synflood_warned; +	/* 2 bytes hole, try to use */  	int			qlen;  	int			qlen_young;  	int			clock_hand; diff --git a/include/net/sctp/command.h b/include/net/sctp/command.h index 6506458ccd3..712b3bebeda 100644 --- a/include/net/sctp/command.h +++ b/include/net/sctp/command.h @@ -109,6 +109,7 @@ typedef enum {  	SCTP_CMD_SEND_MSG,	 /* Send the whole use message */  	SCTP_CMD_SEND_NEXT_ASCONF, /* Send the next ASCONF after ACK */  	SCTP_CMD_PURGE_ASCONF_QUEUE, /* Purge all asconf queues.*/ +	SCTP_CMD_SET_ASOC,	 /* Restore association context */  	SCTP_CMD_LAST  } sctp_verb_t; diff --git a/include/net/tcp.h b/include/net/tcp.h index 149a415d1e0..acc620a4a45 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -431,17 +431,34 @@ extern int tcp_disconnect(struct sock *sk, int flags);  extern __u32 syncookie_secret[2][16-4+SHA_DIGEST_WORDS];  extern struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,   				    struct ip_options *opt); +#ifdef CONFIG_SYN_COOKIES  extern __u32 cookie_v4_init_sequence(struct sock *sk, struct sk_buff *skb,   				     __u16 *mss); +#else +static inline __u32 cookie_v4_init_sequence(struct sock *sk, +					    struct sk_buff *skb, +					    __u16 *mss) +{ +	return 0; +} +#endif  extern __u32 cookie_init_timestamp(struct request_sock *req);  extern bool cookie_check_timestamp(struct tcp_options_received *opt, bool *);  /* From net/ipv6/syncookies.c */  extern struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb); +#ifdef CONFIG_SYN_COOKIES  extern __u32 cookie_v6_init_sequence(struct sock *sk, struct sk_buff *skb,  				     __u16 *mss); - +#else +static inline __u32 cookie_v6_init_sequence(struct sock *sk, +					    struct sk_buff *skb, +					    __u16 *mss) +{ +	return 0; +} +#endif  /* tcp_output.c */  extern void __tcp_push_pending_frames(struct sock *sk, unsigned int cur_mss, @@ -460,6 +477,9 @@ extern int tcp_write_wakeup(struct sock *);  extern void tcp_send_fin(struct sock *sk);  extern void tcp_send_active_reset(struct sock *sk, gfp_t priority);  extern int tcp_send_synack(struct sock *); +extern int tcp_syn_flood_action(struct sock *sk, +				const struct sk_buff *skb, +				const char *proto);  extern void tcp_push_one(struct sock *, unsigned int mss_now);  extern void tcp_send_ack(struct sock *sk);  extern void tcp_send_delayed_ack(struct sock *sk); diff --git a/include/net/transp_v6.h b/include/net/transp_v6.h index 5271a741c3a..498433dd067 100644 --- a/include/net/transp_v6.h +++ b/include/net/transp_v6.h @@ -39,6 +39,7 @@ extern int			datagram_recv_ctl(struct sock *sk,  						  struct sk_buff *skb);  extern int			datagram_send_ctl(struct net *net, +						  struct sock *sk,  						  struct msghdr *msg,  						  struct flowi6 *fl6,  						  struct ipv6_txoptions *opt, diff --git a/include/net/udplite.h b/include/net/udplite.h index 673a024c6b2..5f097ca7d5c 100644 --- a/include/net/udplite.h +++ b/include/net/udplite.h @@ -66,40 +66,34 @@ static inline int udplite_checksum_init(struct sk_buff *skb, struct udphdr *uh)  	return 0;  } -static inline int udplite_sender_cscov(struct udp_sock *up, struct udphdr *uh) +/* Slow-path computation of checksum. Socket is locked. */ +static inline __wsum udplite_csum_outgoing(struct sock *sk, struct sk_buff *skb)  { +	const struct udp_sock *up = udp_sk(skb->sk);  	int cscov = up->len; +	__wsum csum = 0; -	/* -	 * Sender has set `partial coverage' option on UDP-Lite socket -	 */ -	if (up->pcflag & UDPLITE_SEND_CC)    { +	if (up->pcflag & UDPLITE_SEND_CC) { +		/* +		 * Sender has set `partial coverage' option on UDP-Lite socket. +		 * The special case "up->pcslen == 0" signifies full coverage. +		 */  		if (up->pcslen < up->len) { -		/* up->pcslen == 0 means that full coverage is required, -		 * partial coverage only if  0 < up->pcslen < up->len */ -			if (0 < up->pcslen) { -			       cscov = up->pcslen; -			} -			uh->len = htons(up->pcslen); +			if (0 < up->pcslen) +				cscov = up->pcslen; +			udp_hdr(skb)->len = htons(up->pcslen);  		} -	/* -	 * NOTE: Causes for the error case  `up->pcslen > up->len': -	 *        (i)  Application error (will not be penalized). -	 *       (ii)  Payload too big for send buffer: data is split -	 *             into several packets, each with its own header. -	 *             In this case (e.g. last segment), coverage may -	 *             exceed packet length. -	 *       Since packets with coverage length > packet length are -	 *       illegal, we fall back to the defaults here. -	 */ +		/* +		 * NOTE: Causes for the error case  `up->pcslen > up->len': +		 *        (i)  Application error (will not be penalized). +		 *       (ii)  Payload too big for send buffer: data is split +		 *             into several packets, each with its own header. +		 *             In this case (e.g. last segment), coverage may +		 *             exceed packet length. +		 *       Since packets with coverage length > packet length are +		 *       illegal, we fall back to the defaults here. +		 */  	} -	return cscov; -} - -static inline __wsum udplite_csum_outgoing(struct sock *sk, struct sk_buff *skb) -{ -	int cscov = udplite_sender_cscov(udp_sk(sk), udp_hdr(skb)); -	__wsum csum = 0;  	skb->ip_summed = CHECKSUM_NONE;     /* no HW support for checksumming */ @@ -115,16 +109,21 @@ static inline __wsum udplite_csum_outgoing(struct sock *sk, struct sk_buff *skb)  	return csum;  } +/* Fast-path computation of checksum. Socket may not be locked. */  static inline __wsum udplite_csum(struct sk_buff *skb)  { -	struct sock *sk = skb->sk; -	int cscov = udplite_sender_cscov(udp_sk(sk), udp_hdr(skb)); +	const struct udp_sock *up = udp_sk(skb->sk);  	const int off = skb_transport_offset(skb); -	const int len = skb->len - off; +	int len = skb->len - off; +	if ((up->pcflag & UDPLITE_SEND_CC) && up->pcslen < len) { +		if (0 < up->pcslen) +			len = up->pcslen; +		udp_hdr(skb)->len = htons(up->pcslen); +	}  	skb->ip_summed = CHECKSUM_NONE;     /* no HW support for checksumming */ -	return skb_checksum(skb, off, min(cscov, len), 0); +	return skb_checksum(skb, off, len, 0);  }  extern void	udplite4_register(void); diff --git a/include/target/configfs_macros.h b/include/target/configfs_macros.h index 7fe74608b43..a0fc85bbe2d 100644 --- a/include/target/configfs_macros.h +++ b/include/target/configfs_macros.h @@ -30,8 +30,8 @@   * Added CONFIGFS_EATTR() macros from original configfs.h macros   * Copright (C) 2008-2009 Nicholas A. Bellinger <nab@linux-iscsi.org>   * - * Please read Documentation/filesystems/configfs.txt before using the - * configfs interface, ESPECIALLY the parts about reference counts and + * Please read Documentation/filesystems/configfs/configfs.txt before using + * the configfs interface, ESPECIALLY the parts about reference counts and   * item destructors.   */ diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h index 27040653005..35aa786f93d 100644 --- a/include/target/target_core_base.h +++ b/include/target/target_core_base.h @@ -10,10 +10,7 @@  #include <net/tcp.h>  #define TARGET_CORE_MOD_VERSION		"v4.1.0-rc1-ml" -#define SHUTDOWN_SIGS	(sigmask(SIGKILL)|sigmask(SIGINT)|sigmask(SIGABRT)) -/* Used by transport_generic_allocate_iovecs() */ -#define TRANSPORT_IOV_DATA_BUFFER		5  /* Maximum Number of LUNs per Target Portal Group */  /* Don't raise above 511 or REPORT_LUNS needs to handle >1 page */  #define TRANSPORT_MAX_LUNS_PER_TPG		256 @@ -75,32 +72,26 @@ enum transport_tpg_type_table {  };  /* Used for generate timer flags */ -enum timer_flags_table { -	TF_RUNNING	= 0x01, -	TF_STOP		= 0x02, +enum se_task_flags { +	TF_ACTIVE		= (1 << 0), +	TF_SENT			= (1 << 1), +	TF_REQUEST_STOP		= (1 << 2),  };  /* Special transport agnostic struct se_cmd->t_states */  enum transport_state_table {  	TRANSPORT_NO_STATE	= 0,  	TRANSPORT_NEW_CMD	= 1, -	TRANSPORT_DEFERRED_CMD	= 2,  	TRANSPORT_WRITE_PENDING	= 3,  	TRANSPORT_PROCESS_WRITE	= 4,  	TRANSPORT_PROCESSING	= 5, -	TRANSPORT_COMPLETE_OK	= 6, -	TRANSPORT_COMPLETE_FAILURE = 7, -	TRANSPORT_COMPLETE_TIMEOUT = 8, +	TRANSPORT_COMPLETE	= 6,  	TRANSPORT_PROCESS_TMR	= 9, -	TRANSPORT_TMR_COMPLETE	= 10,  	TRANSPORT_ISTATE_PROCESSING = 11, -	TRANSPORT_ISTATE_PROCESSED = 12, -	TRANSPORT_KILL		= 13, -	TRANSPORT_REMOVE	= 14, -	TRANSPORT_FREE		= 15,  	TRANSPORT_NEW_CMD_MAP	= 16,  	TRANSPORT_FREE_CMD_INTR = 17,  	TRANSPORT_COMPLETE_QF_WP = 18, +	TRANSPORT_COMPLETE_QF_OK = 19,  };  /* Used for struct se_cmd->se_cmd_flags */ @@ -125,7 +116,6 @@ enum se_cmd_flags_table {  	SCF_UNUSED			= 0x00100000,  	SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC = 0x00400000,  	SCF_EMULATE_CDB_ASYNC		= 0x01000000, -	SCF_EMULATE_QUEUE_FULL		= 0x02000000,  };  /* struct se_dev_entry->lun_flags and struct se_lun->lun_access */ @@ -401,34 +391,22 @@ struct se_queue_obj {  } ____cacheline_aligned;  struct se_task { -	unsigned char	task_sense; -	struct scatterlist *task_sg; -	u32		task_sg_nents; -	struct scatterlist *task_sg_bidi; -	u8		task_scsi_status; -	u8		task_flags; -	int		task_error_status; -	int		task_state_flags; -	bool		task_padded_sg;  	unsigned long long	task_lba; -	u32		task_no; -	u32		task_sectors; -	u32		task_size; +	u32			task_sectors; +	u32			task_size; +	struct se_cmd		*task_se_cmd; +	struct scatterlist	*task_sg; +	u32			task_sg_nents; +	u16			task_flags; +	u8			task_sense; +	u8			task_scsi_status; +	int			task_error_status;  	enum dma_data_direction	task_data_direction; -	struct se_cmd *task_se_cmd; -	struct se_device	*se_dev; +	atomic_t		task_state_active; +	struct list_head	t_list; +	struct list_head	t_execute_list; +	struct list_head	t_state_list;  	struct completion	task_stop_comp; -	atomic_t	task_active; -	atomic_t	task_execute_queue; -	atomic_t	task_timeout; -	atomic_t	task_sent; -	atomic_t	task_stop; -	atomic_t	task_state_active; -	struct timer_list	task_timer; -	struct se_device *se_obj_ptr; -	struct list_head t_list; -	struct list_head t_execute_list; -	struct list_head t_state_list;  } ____cacheline_aligned;  struct se_cmd { @@ -446,8 +424,6 @@ struct se_cmd {  	int			sam_task_attr;  	/* Transport protocol dependent state, see transport_state_table */  	enum transport_state_table t_state; -	/* Transport protocol dependent state for out of order CmdSNs */ -	int			deferred_t_state;  	/* Transport specific error status */  	int			transport_error_status;  	/* See se_cmd_flags_table */ @@ -461,7 +437,6 @@ struct se_cmd {  	u32			orig_fe_lun;  	/* Persistent Reservation key */  	u64			pr_res_key; -	atomic_t                transport_sent;  	/* Used for sense data */  	void			*sense_buffer;  	struct list_head	se_delayed_node; @@ -479,10 +454,7 @@ struct se_cmd {  	struct list_head	se_queue_node;  	struct target_core_fabric_ops *se_tfo;  	int (*transport_emulate_cdb)(struct se_cmd *); -	void (*transport_split_cdb)(unsigned long long, u32, unsigned char *); -	void (*transport_wait_for_tasks)(struct se_cmd *, int, int);  	void (*transport_complete_callback)(struct se_cmd *); -	int (*transport_qf_callback)(struct se_cmd *);  	unsigned char		*t_task_cdb;  	unsigned char		__t_task_cdb[TCM_MAX_COMMAND_SIZE]; @@ -495,7 +467,6 @@ struct se_cmd {  	atomic_t		t_se_count;  	atomic_t		t_task_cdbs_left;  	atomic_t		t_task_cdbs_ex_left; -	atomic_t		t_task_cdbs_timeout_left;  	atomic_t		t_task_cdbs_sent;  	atomic_t		t_transport_aborted;  	atomic_t		t_transport_active; @@ -503,7 +474,6 @@ struct se_cmd {  	atomic_t		t_transport_queue_active;  	atomic_t		t_transport_sent;  	atomic_t		t_transport_stop; -	atomic_t		t_transport_timeout;  	atomic_t		transport_dev_active;  	atomic_t		transport_lun_active;  	atomic_t		transport_lun_fe_stop; @@ -514,6 +484,8 @@ struct se_cmd {  	struct completion	transport_lun_stop_comp;  	struct scatterlist	*t_tasks_sg_chained; +	struct work_struct	work; +  	/*  	 * Used for pre-registered fabric SGL passthrough WRITE and READ  	 * with the special SCF_PASSTHROUGH_CONTIG_TO_SG case for TCM_Loop @@ -670,7 +642,6 @@ struct se_dev_attrib {  	u32		optimal_sectors;  	u32		hw_queue_depth;  	u32		queue_depth; -	u32		task_timeout;  	u32		max_unmap_lba_count;  	u32		max_unmap_block_desc_count;  	u32		unmap_granularity; diff --git a/include/target/target_core_fabric_ops.h b/include/target/target_core_fabric_ops.h index 2de8fe90759..126c675f4f1 100644 --- a/include/target/target_core_fabric_ops.h +++ b/include/target/target_core_fabric_ops.h @@ -27,6 +27,12 @@ struct target_core_fabric_ops {  	int (*tpg_check_demo_mode_cache)(struct se_portal_group *);  	int (*tpg_check_demo_mode_write_protect)(struct se_portal_group *);  	int (*tpg_check_prod_mode_write_protect)(struct se_portal_group *); +	/* +	 * Optionally used by fabrics to allow demo-mode login, but not +	 * expose any TPG LUNs, and return 'not connected' in standard +	 * inquiry response +	 */ +	int (*tpg_check_demo_mode_login_only)(struct se_portal_group *);  	struct se_node_acl *(*tpg_alloc_fabric_acl)(  					struct se_portal_group *);  	void (*tpg_release_fabric_acl)(struct se_portal_group *, diff --git a/include/target/target_core_tmr.h b/include/target/target_core_tmr.h index bd559680747..d5876e17d3f 100644 --- a/include/target/target_core_tmr.h +++ b/include/target/target_core_tmr.h @@ -27,7 +27,7 @@ enum tcm_tmrsp_table {  extern struct kmem_cache *se_tmr_req_cache; -extern struct se_tmr_req *core_tmr_alloc_req(struct se_cmd *, void *, u8); +extern struct se_tmr_req *core_tmr_alloc_req(struct se_cmd *, void *, u8, gfp_t);  extern void core_tmr_release_req(struct se_tmr_req *);  extern int core_tmr_lun_reset(struct se_device *, struct se_tmr_req *,  				struct list_head *, struct se_cmd *); diff --git a/include/target/target_core_transport.h b/include/target/target_core_transport.h index 46aae4f94ed..a037a1a6fbb 100644 --- a/include/target/target_core_transport.h +++ b/include/target/target_core_transport.h @@ -22,10 +22,9 @@  #define PYX_TRANSPORT_LU_COMM_FAILURE		-7  #define PYX_TRANSPORT_UNKNOWN_MODE_PAGE		-8  #define PYX_TRANSPORT_WRITE_PROTECTED		-9 -#define PYX_TRANSPORT_TASK_TIMEOUT		-10 -#define PYX_TRANSPORT_RESERVATION_CONFLICT	-11 -#define PYX_TRANSPORT_ILLEGAL_REQUEST		-12 -#define PYX_TRANSPORT_USE_SENSE_REASON		-13 +#define PYX_TRANSPORT_RESERVATION_CONFLICT	-10 +#define PYX_TRANSPORT_ILLEGAL_REQUEST		-11 +#define PYX_TRANSPORT_USE_SENSE_REASON		-12  #ifndef SAM_STAT_RESERVATION_CONFLICT  #define SAM_STAT_RESERVATION_CONFLICT		0x18 @@ -38,16 +37,6 @@  #define TRANSPORT_PLUGIN_VHBA_PDEV		2  #define TRANSPORT_PLUGIN_VHBA_VDEV		3 -/* For SE OBJ Plugins, in seconds */ -#define TRANSPORT_TIMEOUT_TUR			10 -#define TRANSPORT_TIMEOUT_TYPE_DISK		60 -#define TRANSPORT_TIMEOUT_TYPE_ROM		120 -#define TRANSPORT_TIMEOUT_TYPE_TAPE		600 -#define TRANSPORT_TIMEOUT_TYPE_OTHER		300 - -/* For se_task->task_state_flags */ -#define TSF_EXCEPTION_CLEARED			0x01 -  /*   * struct se_subsystem_dev->su_dev_flags  */ @@ -64,8 +53,6 @@  #define DF_SPC2_RESERVATIONS_WITH_ISID		0x00000004  /* struct se_dev_attrib sanity values */ -/* 10 Minutes */ -#define DA_TASK_TIMEOUT_MAX			600  /* Default max_unmap_lba_count */  #define DA_MAX_UNMAP_LBA_COUNT			0  /* Default max_unmap_block_desc_count */ @@ -110,16 +97,13 @@  #define MOD_MAX_SECTORS(ms, bs)			(ms % (PAGE_SIZE / bs)) -struct se_mem;  struct se_subsystem_api; -extern struct kmem_cache *se_mem_cache; -  extern int init_se_kmem_caches(void);  extern void release_se_kmem_caches(void);  extern u32 scsi_get_new_index(scsi_index_t);  extern void transport_init_queue_obj(struct se_queue_obj *); -extern int transport_subsystem_check_init(void); +extern void transport_subsystem_check_init(void);  extern int transport_subsystem_register(struct se_subsystem_api *);  extern void transport_subsystem_release(struct se_subsystem_api *);  extern void transport_load_plugins(void); @@ -134,7 +118,6 @@ extern void transport_free_session(struct se_session *);  extern void transport_deregister_session_configfs(struct se_session *);  extern void transport_deregister_session(struct se_session *);  extern void transport_cmd_finish_abort(struct se_cmd *, int); -extern void transport_cmd_finish_abort_tmr(struct se_cmd *);  extern void transport_complete_sync_cache(struct se_cmd *, int);  extern void transport_complete_task(struct se_task *, int);  extern void transport_add_task_to_execute_queue(struct se_task *, @@ -142,6 +125,8 @@ extern void transport_add_task_to_execute_queue(struct se_task *,  						struct se_device *);  extern void transport_remove_task_from_execute_queue(struct se_task *,  						struct se_device *); +extern void __transport_remove_task_from_execute_queue(struct se_task *, +						struct se_device *);  unsigned char *transport_dump_cmd_direction(struct se_cmd *);  extern void transport_dump_dev_state(struct se_device *, char *, int *);  extern void transport_dump_dev_info(struct se_device *, struct se_lun *, @@ -169,29 +154,24 @@ extern void transport_init_se_cmd(struct se_cmd *,  					unsigned char *);  void *transport_kmap_first_data_page(struct se_cmd *cmd);  void transport_kunmap_first_data_page(struct se_cmd *cmd); -extern void transport_free_se_cmd(struct se_cmd *);  extern int transport_generic_allocate_tasks(struct se_cmd *, unsigned char *); -extern int transport_generic_handle_cdb(struct se_cmd *);  extern int transport_handle_cdb_direct(struct se_cmd *);  extern int transport_generic_handle_cdb_map(struct se_cmd *);  extern int transport_generic_handle_data(struct se_cmd *);  extern void transport_new_cmd_failure(struct se_cmd *);  extern int transport_generic_handle_tmr(struct se_cmd *);  extern void transport_generic_free_cmd_intr(struct se_cmd *); -extern void __transport_stop_task_timer(struct se_task *, unsigned long *); +extern bool target_stop_task(struct se_task *task, unsigned long *flags);  extern int transport_generic_map_mem_to_cmd(struct se_cmd *cmd, struct scatterlist *, u32,  				struct scatterlist *, u32);  extern int transport_clear_lun_from_sessions(struct se_lun *); +extern void transport_wait_for_tasks(struct se_cmd *);  extern int transport_check_aborted_status(struct se_cmd *, int);  extern int transport_send_check_condition_and_sense(struct se_cmd *, u8, int);  extern void transport_send_task_abort(struct se_cmd *);  extern void transport_release_cmd(struct se_cmd *); -extern void transport_generic_free_cmd(struct se_cmd *, int, int); +extern void transport_generic_free_cmd(struct se_cmd *, int);  extern void transport_generic_wait_for_cmds(struct se_cmd *, int); -extern int transport_init_task_sg(struct se_task *, struct se_mem *, u32); -extern int transport_map_mem_to_sg(struct se_task *, struct list_head *, -					struct scatterlist *, struct se_mem *, -					struct se_mem **, u32 *, u32 *);  extern void transport_do_task_sg_chain(struct se_cmd *);  extern void transport_generic_process_write(struct se_cmd *);  extern int transport_generic_new_cmd(struct se_cmd *); @@ -200,6 +180,7 @@ extern int transport_generic_do_tmr(struct se_cmd *);  extern int core_alua_check_nonop_delay(struct se_cmd *);  /* From target_core_cdb.c */  extern int transport_emulate_control_cdb(struct se_task *); +extern void target_get_task_cdb(struct se_task *task, unsigned char *cdb);  /*   * Each se_transport_task_t can have N number of possible struct se_task's @@ -227,6 +208,10 @@ struct se_subsystem_api {  	 * Transport Type.  	 */  	u8 transport_type; + +	unsigned int fua_write_emulated : 1; +	unsigned int write_cache_emulated : 1; +  	/*  	 * struct module for struct se_hba references  	 */ @@ -236,18 +221,6 @@ struct se_subsystem_api {  	 */  	struct list_head sub_api_list;  	/* -	 * For SCF_SCSI_NON_DATA_CDB -	 */ -	int (*cdb_none)(struct se_task *); -	/* -	 * For SCF_SCSI_DATA_SG_IO_CDB -	 */ -	int (*map_data_SG)(struct se_task *); -	/* -	 * For SCF_SCSI_CONTROL_SG_IO_CDB -	 */ -	int (*map_control_SG)(struct se_task *); -	/*  	 * attach_hba():  	 */  	int (*attach_hba)(struct se_hba *, u32); @@ -275,22 +248,6 @@ struct se_subsystem_api {  	void (*free_device)(void *);  	/* -	 * dpo_emulated(): -	 */ -	int (*dpo_emulated)(struct se_device *); -	/* -	 * fua_write_emulated(): -	 */ -	int (*fua_write_emulated)(struct se_device *); -	/* -	 * fua_read_emulated(): -	 */ -	int (*fua_read_emulated)(struct se_device *); -	/* -	 * write_cache_emulated(): -	 */ -	int (*write_cache_emulated)(struct se_device *); -	/*  	 * transport_complete():  	 *  	 * Use transport_generic_complete() for majority of DAS transport @@ -331,10 +288,6 @@ struct se_subsystem_api {  	ssize_t (*show_configfs_dev_params)(struct se_hba *, struct se_subsystem_dev *,  						char *);  	/* -	 * get_cdb(): -	 */ -	unsigned char *(*get_cdb)(struct se_task *); -	/*  	 * get_device_rev():  	 */  	u32 (*get_device_rev)(struct se_device *); diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h index 6bca4cc0063..5f172703eb4 100644 --- a/include/trace/events/writeback.h +++ b/include/trace/events/writeback.h @@ -298,7 +298,7 @@ DECLARE_EVENT_CLASS(writeback_single_inode_template,  		__array(char, name, 32)  		__field(unsigned long, ino)  		__field(unsigned long, state) -		__field(unsigned long, age) +		__field(unsigned long, dirtied_when)  		__field(unsigned long, writeback_index)  		__field(long, nr_to_write)  		__field(unsigned long, wrote) @@ -309,19 +309,19 @@ DECLARE_EVENT_CLASS(writeback_single_inode_template,  			dev_name(inode->i_mapping->backing_dev_info->dev), 32);  		__entry->ino		= inode->i_ino;  		__entry->state		= inode->i_state; -		__entry->age		= (jiffies - inode->dirtied_when) * -								1000 / HZ; +		__entry->dirtied_when	= inode->dirtied_when;  		__entry->writeback_index = inode->i_mapping->writeback_index;  		__entry->nr_to_write	= nr_to_write;  		__entry->wrote		= nr_to_write - wbc->nr_to_write;  	), -	TP_printk("bdi %s: ino=%lu state=%s age=%lu " +	TP_printk("bdi %s: ino=%lu state=%s dirtied_when=%lu age=%lu "  		  "index=%lu to_write=%ld wrote=%lu",  		  __entry->name,  		  __entry->ino,  		  show_inode_state(__entry->state), -		  __entry->age, +		  __entry->dirtied_when, +		  (jiffies - __entry->dirtied_when) / HZ,  		  __entry->writeback_index,  		  __entry->nr_to_write,  		  __entry->wrote diff --git a/include/xen/balloon.h b/include/xen/balloon.h index 76f7538bb33..d29c153705b 100644 --- a/include/xen/balloon.h +++ b/include/xen/balloon.h @@ -25,8 +25,9 @@ extern struct balloon_stats balloon_stats;  void balloon_set_new_target(unsigned long target); -int alloc_xenballooned_pages(int nr_pages, struct page** pages); -void free_xenballooned_pages(int nr_pages, struct page** pages); +int alloc_xenballooned_pages(int nr_pages, struct page **pages, +		bool highmem); +void free_xenballooned_pages(int nr_pages, struct page **pages);  struct sys_device;  #ifdef CONFIG_XEN_SELFBALLOONING diff --git a/include/xen/grant_table.h b/include/xen/grant_table.h index b1fab6b5b3e..6b99bfbd785 100644 --- a/include/xen/grant_table.h +++ b/include/xen/grant_table.h @@ -156,6 +156,7 @@ unsigned int gnttab_max_grant_frames(void);  #define gnttab_map_vaddr(map) ((void *)(map.host_virt_addr))  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); diff --git a/include/xen/interface/io/xs_wire.h b/include/xen/interface/io/xs_wire.h index 99fcffb372d..f0b6890370b 100644 --- a/include/xen/interface/io/xs_wire.h +++ b/include/xen/interface/io/xs_wire.h @@ -26,7 +26,11 @@ enum xsd_sockmsg_type      XS_SET_PERMS,      XS_WATCH_EVENT,      XS_ERROR, -    XS_IS_DOMAIN_INTRODUCED +    XS_IS_DOMAIN_INTRODUCED, +    XS_RESUME, +    XS_SET_TARGET, +    XS_RESTRICT, +    XS_RESET_WATCHES  };  #define XS_WRITE_NONE "NONE" diff --git a/include/xen/interface/physdev.h b/include/xen/interface/physdev.h index 534cac89a77..c1080d9c705 100644 --- a/include/xen/interface/physdev.h +++ b/include/xen/interface/physdev.h @@ -109,6 +109,7 @@ struct physdev_irq {  #define MAP_PIRQ_TYPE_MSI		0x0  #define MAP_PIRQ_TYPE_GSI		0x1  #define MAP_PIRQ_TYPE_UNKNOWN		0x2 +#define MAP_PIRQ_TYPE_MSI_SEG		0x3  #define PHYSDEVOP_map_pirq		13  struct physdev_map_pirq { @@ -119,7 +120,7 @@ struct physdev_map_pirq {      int index;      /* IN or OUT */      int pirq; -    /* IN */ +    /* IN - high 16 bits hold segment for MAP_PIRQ_TYPE_MSI_SEG */      int bus;      /* IN */      int devfn; @@ -198,6 +199,37 @@ struct physdev_get_free_pirq {      uint32_t pirq;  }; +#define XEN_PCI_DEV_EXTFN              0x1 +#define XEN_PCI_DEV_VIRTFN             0x2 +#define XEN_PCI_DEV_PXM                0x4 + +#define PHYSDEVOP_pci_device_add        25 +struct physdev_pci_device_add { +    /* IN */ +    uint16_t seg; +    uint8_t bus; +    uint8_t devfn; +    uint32_t flags; +    struct { +        uint8_t bus; +        uint8_t devfn; +    } physfn; +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +    uint32_t optarr[]; +#elif defined(__GNUC__) +    uint32_t optarr[0]; +#endif +}; + +#define PHYSDEVOP_pci_device_remove     26 +#define PHYSDEVOP_restore_msi_ext       27 +struct physdev_pci_device { +    /* IN */ +    uint16_t seg; +    uint8_t bus; +    uint8_t devfn; +}; +  /*   * Notify that some PIRQ-bound event channels have been unmasked.   * ** This command is obsolete since interface version 0x00030202 and is ** diff --git a/include/xen/page.h b/include/xen/page.h index 0be36b976f4..12765b6f951 100644 --- a/include/xen/page.h +++ b/include/xen/page.h @@ -3,6 +3,16 @@  #include <asm/xen/page.h> -extern phys_addr_t xen_extra_mem_start, xen_extra_mem_size; +struct xen_memory_region { +	phys_addr_t start; +	phys_addr_t size; +}; + +#define XEN_EXTRA_MEM_MAX_REGIONS 128 /* == E820MAX */ + +extern __initdata +struct xen_memory_region xen_extra_mem[XEN_EXTRA_MEM_MAX_REGIONS]; + +extern unsigned long xen_released_pages;  #endif	/* _XEN_PAGE_H */  |