diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/acpi.h | 4 | ||||
| -rw-r--r-- | include/linux/blk-mq.h | 8 | ||||
| -rw-r--r-- | include/linux/blk_types.h | 2 | ||||
| -rw-r--r-- | include/linux/ceph/osd_client.h | 4 | ||||
| -rw-r--r-- | include/linux/compiler.h | 12 | ||||
| -rw-r--r-- | include/linux/fs.h | 2 | ||||
| -rw-r--r-- | include/linux/kdb.h | 62 | ||||
| -rw-r--r-- | include/linux/mm.h | 2 | ||||
| -rw-r--r-- | include/linux/mmc/sdhci.h | 1 | ||||
| -rw-r--r-- | include/linux/netdevice.h | 6 | ||||
| -rw-r--r-- | include/linux/nfs_fs_sb.h | 3 | ||||
| -rw-r--r-- | include/linux/perf_event.h | 12 | ||||
| -rw-r--r-- | include/linux/perf_regs.h | 16 | ||||
| -rw-r--r-- | include/linux/phy/omap_control_phy.h | 6 | ||||
| -rw-r--r-- | include/linux/rmap.h | 10 | ||||
| -rw-r--r-- | include/linux/writeback.h | 1 | 
16 files changed, 116 insertions, 35 deletions
| diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 856d381b1d5b..d459cd17b477 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -147,8 +147,8 @@ void acpi_numa_arch_fixup(void);  #ifdef CONFIG_ACPI_HOTPLUG_CPU  /* Arch dependent functions for cpu hotplug support */ -int acpi_map_lsapic(acpi_handle handle, int physid, int *pcpu); -int acpi_unmap_lsapic(int cpu); +int acpi_map_cpu(acpi_handle handle, int physid, int *pcpu); +int acpi_unmap_cpu(int cpu);  #endif /* CONFIG_ACPI_HOTPLUG_CPU */  int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base); diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index 8aded9ab2e4e..5735e7130d63 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h @@ -34,7 +34,6 @@ struct blk_mq_hw_ctx {  	unsigned long		flags;		/* BLK_MQ_F_* flags */  	struct request_queue	*queue; -	unsigned int		queue_num;  	struct blk_flush_queue	*fq;  	void			*driver_data; @@ -54,7 +53,7 @@ struct blk_mq_hw_ctx {  	unsigned long		dispatched[BLK_MQ_MAX_DISPATCH_ORDER];  	unsigned int		numa_node; -	unsigned int		cmd_size;	/* per-request extra data */ +	unsigned int		queue_num;  	atomic_t		nr_active; @@ -195,13 +194,16 @@ static inline u16 blk_mq_unique_tag_to_tag(u32 unique_tag)  struct blk_mq_hw_ctx *blk_mq_map_queue(struct request_queue *, const int ctx_index);  struct blk_mq_hw_ctx *blk_mq_alloc_single_hw_queue(struct blk_mq_tag_set *, unsigned int, int); +int blk_mq_request_started(struct request *rq);  void blk_mq_start_request(struct request *rq);  void blk_mq_end_request(struct request *rq, int error);  void __blk_mq_end_request(struct request *rq, int error);  void blk_mq_requeue_request(struct request *rq);  void blk_mq_add_to_requeue_list(struct request *rq, bool at_head); +void blk_mq_cancel_requeue_work(struct request_queue *q);  void blk_mq_kick_requeue_list(struct request_queue *q); +void blk_mq_abort_requeue_list(struct request_queue *q);  void blk_mq_complete_request(struct request *rq);  void blk_mq_stop_hw_queue(struct blk_mq_hw_ctx *hctx); @@ -212,6 +214,8 @@ void blk_mq_start_stopped_hw_queues(struct request_queue *q, bool async);  void blk_mq_delay_queue(struct blk_mq_hw_ctx *hctx, unsigned long msecs);  void blk_mq_tag_busy_iter(struct blk_mq_hw_ctx *hctx, busy_iter_fn *fn,  		void *priv); +void blk_mq_unfreeze_queue(struct request_queue *q); +void blk_mq_freeze_queue_start(struct request_queue *q);  /*   * Driver command data is immediately after the request. So subtract request diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index 445d59231bc4..c294e3e25e37 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h @@ -190,6 +190,7 @@ enum rq_flag_bits {  	__REQ_PM,		/* runtime pm request */  	__REQ_HASHED,		/* on IO scheduler merge hash */  	__REQ_MQ_INFLIGHT,	/* track inflight for MQ */ +	__REQ_NO_TIMEOUT,	/* requests may never expire */  	__REQ_NR_BITS,		/* stops here */  }; @@ -243,5 +244,6 @@ enum rq_flag_bits {  #define REQ_PM			(1ULL << __REQ_PM)  #define REQ_HASHED		(1ULL << __REQ_HASHED)  #define REQ_MQ_INFLIGHT		(1ULL << __REQ_MQ_INFLIGHT) +#define REQ_NO_TIMEOUT		(1ULL << __REQ_NO_TIMEOUT)  #endif /* __LINUX_BLK_TYPES_H */ diff --git a/include/linux/ceph/osd_client.h b/include/linux/ceph/osd_client.h index 5d86416d35f2..61b19c46bdb3 100644 --- a/include/linux/ceph/osd_client.h +++ b/include/linux/ceph/osd_client.h @@ -87,8 +87,8 @@ struct ceph_osd_req_op {  			struct ceph_osd_data osd_data;  		} extent;  		struct { -			__le32 name_len; -			__le32 value_len; +			u32 name_len; +			u32 value_len;  			__u8 cmp_op;       /* CEPH_OSD_CMPXATTR_OP_* */  			__u8 cmp_mode;     /* CEPH_OSD_CMPXATTR_MODE_* */  			struct ceph_osd_data osd_data; diff --git a/include/linux/compiler.h b/include/linux/compiler.h index a1c81f80978e..33063f872ee3 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -215,7 +215,7 @@ static __always_inline void __read_once_size(volatile void *p, void *res, int si  	}  } -static __always_inline void __assign_once_size(volatile void *p, void *res, int size) +static __always_inline void __write_once_size(volatile void *p, void *res, int size)  {  	switch (size) {  	case 1: *(volatile __u8 *)p = *(__u8 *)res; break; @@ -235,15 +235,15 @@ static __always_inline void __assign_once_size(volatile void *p, void *res, int  /*   * Prevent the compiler from merging or refetching reads or writes. The   * compiler is also forbidden from reordering successive instances of - * READ_ONCE, ASSIGN_ONCE and ACCESS_ONCE (see below), but only when the + * READ_ONCE, WRITE_ONCE and ACCESS_ONCE (see below), but only when the   * compiler is aware of some particular ordering.  One way to make the   * compiler aware of ordering is to put the two invocations of READ_ONCE, - * ASSIGN_ONCE or ACCESS_ONCE() in different C statements. + * WRITE_ONCE or ACCESS_ONCE() in different C statements.   *   * In contrast to ACCESS_ONCE these two macros will also work on aggregate   * data types like structs or unions. If the size of the accessed data   * type exceeds the word size of the machine (e.g., 32 bits or 64 bits) - * READ_ONCE() and ASSIGN_ONCE()  will fall back to memcpy and print a + * READ_ONCE() and WRITE_ONCE()  will fall back to memcpy and print a   * compile-time warning.   *   * Their two major use cases are: (1) Mediating communication between @@ -257,8 +257,8 @@ static __always_inline void __assign_once_size(volatile void *p, void *res, int  #define READ_ONCE(x) \  	({ typeof(x) __val; __read_once_size(&x, &__val, sizeof(__val)); __val; }) -#define ASSIGN_ONCE(val, x) \ -	({ typeof(x) __val; __val = val; __assign_once_size(&x, &__val, sizeof(__val)); __val; }) +#define WRITE_ONCE(x, val) \ +	({ typeof(x) __val; __val = val; __write_once_size(&x, &__val, sizeof(__val)); __val; })  #endif /* __KERNEL__ */ diff --git a/include/linux/fs.h b/include/linux/fs.h index f90c0282c114..42efe13077b6 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -135,7 +135,7 @@ typedef void (dio_iodone_t)(struct kiocb *iocb, loff_t offset,  #define FMODE_CAN_WRITE         ((__force fmode_t)0x40000)  /* File was opened by fanotify and shouldn't generate fanotify events */ -#define FMODE_NONOTIFY		((__force fmode_t)0x1000000) +#define FMODE_NONOTIFY		((__force fmode_t)0x4000000)  /*   * Flag for rw_copy_check_uvector and compat_rw_copy_check_uvector diff --git a/include/linux/kdb.h b/include/linux/kdb.h index 290db1269c4c..75ae2e2631fc 100644 --- a/include/linux/kdb.h +++ b/include/linux/kdb.h @@ -13,11 +13,54 @@   * Copyright (C) 2009 Jason Wessel <jason.wessel@windriver.com>   */ +/* Shifted versions of the command enable bits are be used if the command + * has no arguments (see kdb_check_flags). This allows commands, such as + * go, to have different permissions depending upon whether it is called + * with an argument. + */ +#define KDB_ENABLE_NO_ARGS_SHIFT 10 +  typedef enum { -	KDB_REPEAT_NONE = 0,	/* Do not repeat this command */ -	KDB_REPEAT_NO_ARGS,	/* Repeat the command without arguments */ -	KDB_REPEAT_WITH_ARGS,	/* Repeat the command including its arguments */ -} kdb_repeat_t; +	KDB_ENABLE_ALL = (1 << 0), /* Enable everything */ +	KDB_ENABLE_MEM_READ = (1 << 1), +	KDB_ENABLE_MEM_WRITE = (1 << 2), +	KDB_ENABLE_REG_READ = (1 << 3), +	KDB_ENABLE_REG_WRITE = (1 << 4), +	KDB_ENABLE_INSPECT = (1 << 5), +	KDB_ENABLE_FLOW_CTRL = (1 << 6), +	KDB_ENABLE_SIGNAL = (1 << 7), +	KDB_ENABLE_REBOOT = (1 << 8), +	/* User exposed values stop here, all remaining flags are +	 * exclusively used to describe a commands behaviour. +	 */ + +	KDB_ENABLE_ALWAYS_SAFE = (1 << 9), +	KDB_ENABLE_MASK = (1 << KDB_ENABLE_NO_ARGS_SHIFT) - 1, + +	KDB_ENABLE_ALL_NO_ARGS = KDB_ENABLE_ALL << KDB_ENABLE_NO_ARGS_SHIFT, +	KDB_ENABLE_MEM_READ_NO_ARGS = KDB_ENABLE_MEM_READ +				      << KDB_ENABLE_NO_ARGS_SHIFT, +	KDB_ENABLE_MEM_WRITE_NO_ARGS = KDB_ENABLE_MEM_WRITE +				       << KDB_ENABLE_NO_ARGS_SHIFT, +	KDB_ENABLE_REG_READ_NO_ARGS = KDB_ENABLE_REG_READ +				      << KDB_ENABLE_NO_ARGS_SHIFT, +	KDB_ENABLE_REG_WRITE_NO_ARGS = KDB_ENABLE_REG_WRITE +				       << KDB_ENABLE_NO_ARGS_SHIFT, +	KDB_ENABLE_INSPECT_NO_ARGS = KDB_ENABLE_INSPECT +				     << KDB_ENABLE_NO_ARGS_SHIFT, +	KDB_ENABLE_FLOW_CTRL_NO_ARGS = KDB_ENABLE_FLOW_CTRL +				       << KDB_ENABLE_NO_ARGS_SHIFT, +	KDB_ENABLE_SIGNAL_NO_ARGS = KDB_ENABLE_SIGNAL +				    << KDB_ENABLE_NO_ARGS_SHIFT, +	KDB_ENABLE_REBOOT_NO_ARGS = KDB_ENABLE_REBOOT +				    << KDB_ENABLE_NO_ARGS_SHIFT, +	KDB_ENABLE_ALWAYS_SAFE_NO_ARGS = KDB_ENABLE_ALWAYS_SAFE +					 << KDB_ENABLE_NO_ARGS_SHIFT, +	KDB_ENABLE_MASK_NO_ARGS = KDB_ENABLE_MASK << KDB_ENABLE_NO_ARGS_SHIFT, + +	KDB_REPEAT_NO_ARGS = 0x40000000, /* Repeat the command w/o arguments */ +	KDB_REPEAT_WITH_ARGS = 0x80000000, /* Repeat the command with args */ +} kdb_cmdflags_t;  typedef int (*kdb_func_t)(int, const char **); @@ -62,6 +105,7 @@ extern atomic_t kdb_event;  #define KDB_BADLENGTH	(-19)  #define KDB_NOBP	(-20)  #define KDB_BADADDR	(-21) +#define KDB_NOPERM	(-22)  /*   * kdb_diemsg @@ -146,17 +190,17 @@ static inline const char *kdb_walk_kallsyms(loff_t *pos)  /* Dynamic kdb shell command registration */  extern int kdb_register(char *, kdb_func_t, char *, char *, short); -extern int kdb_register_repeat(char *, kdb_func_t, char *, char *, -			       short, kdb_repeat_t); +extern int kdb_register_flags(char *, kdb_func_t, char *, char *, +			      short, kdb_cmdflags_t);  extern int kdb_unregister(char *);  #else /* ! CONFIG_KGDB_KDB */  static inline __printf(1, 2) int kdb_printf(const char *fmt, ...) { return 0; }  static inline void kdb_init(int level) {}  static inline int kdb_register(char *cmd, kdb_func_t func, char *usage,  			       char *help, short minlen) { return 0; } -static inline int kdb_register_repeat(char *cmd, kdb_func_t func, char *usage, -				      char *help, short minlen, -				      kdb_repeat_t repeat) { return 0; } +static inline int kdb_register_flags(char *cmd, kdb_func_t func, char *usage, +				     char *help, short minlen, +				     kdb_cmdflags_t flags) { return 0; }  static inline int kdb_unregister(char *cmd) { return 0; }  #endif	/* CONFIG_KGDB_KDB */  enum { diff --git a/include/linux/mm.h b/include/linux/mm.h index f80d0194c9bc..80fc92a49649 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1952,7 +1952,7 @@ extern int expand_downwards(struct vm_area_struct *vma,  #if VM_GROWSUP  extern int expand_upwards(struct vm_area_struct *vma, unsigned long address);  #else -  #define expand_upwards(vma, address) do { } while (0) +  #define expand_upwards(vma, address) (0)  #endif  /* Look up the first VMA which satisfies  addr < vm_end,  NULL if none. */ diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h index 375af80bde7d..f767a0de611f 100644 --- a/include/linux/mmc/sdhci.h +++ b/include/linux/mmc/sdhci.h @@ -137,6 +137,7 @@ struct sdhci_host {  #define SDHCI_SDR104_NEEDS_TUNING (1<<10)	/* SDR104/HS200 needs tuning */  #define SDHCI_USING_RETUNING_TIMER (1<<11)	/* Host is using a retuning timer for the card */  #define SDHCI_USE_64_BIT_DMA	(1<<12)	/* Use 64-bit DMA */ +#define SDHCI_HS400_TUNING	(1<<13)	/* Tuning for HS400 */  	unsigned int version;	/* SDHCI spec. version */ diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 679e6e90aa4c..52fd8e8694cf 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -852,11 +852,11 @@ typedef u16 (*select_queue_fallback_t)(struct net_device *dev,   *	3. Update dev->stats asynchronously and atomically, and define   *	   neither operation.   * - * int (*ndo_vlan_rx_add_vid)(struct net_device *dev, __be16 proto, u16t vid); + * int (*ndo_vlan_rx_add_vid)(struct net_device *dev, __be16 proto, u16 vid);   *	If device support VLAN filtering this function is called when a   *	VLAN id is registered.   * - * int (*ndo_vlan_rx_kill_vid)(struct net_device *dev, unsigned short vid); + * int (*ndo_vlan_rx_kill_vid)(struct net_device *dev, __be16 proto, u16 vid);   *	If device support VLAN filtering this function is called when a   *	VLAN id is unregistered.   * @@ -2085,7 +2085,7 @@ extern rwlock_t				dev_base_lock;		/* Device list lock */  	list_for_each_entry_continue_rcu(d, &(net)->dev_base_head, dev_list)  #define for_each_netdev_in_bond_rcu(bond, slave)	\  		for_each_netdev_rcu(&init_net, slave)	\ -			if (netdev_master_upper_dev_get_rcu(slave) == bond) +			if (netdev_master_upper_dev_get_rcu(slave) == (bond))  #define net_device_entry(lh)	list_entry(lh, struct net_device, dev_list)  static inline struct net_device *next_net_device(struct net_device *dev) diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h index 1e37fbb78f7a..ddea982355f3 100644 --- a/include/linux/nfs_fs_sb.h +++ b/include/linux/nfs_fs_sb.h @@ -74,6 +74,9 @@ struct nfs_client {  	/* idmapper */  	struct idmap *		cl_idmap; +	/* Client owner identifier */ +	const char *		cl_owner_id; +  	/* Our own IP address, as a null-terminated string.  	 * This is used to generate the mv0 callback address.  	 */ diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 486e84ccb1f9..4f7a61ca4b39 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -79,11 +79,6 @@ struct perf_branch_stack {  	struct perf_branch_entry	entries[0];  }; -struct perf_regs { -	__u64		abi; -	struct pt_regs	*regs; -}; -  struct task_struct;  /* @@ -610,7 +605,14 @@ struct perf_sample_data {  		u32	reserved;  	}				cpu_entry;  	struct perf_callchain_entry	*callchain; + +	/* +	 * regs_user may point to task_pt_regs or to regs_user_copy, depending +	 * on arch details. +	 */  	struct perf_regs		regs_user; +	struct pt_regs			regs_user_copy; +  	struct perf_regs		regs_intr;  	u64				stack_user_size;  } ____cacheline_aligned; diff --git a/include/linux/perf_regs.h b/include/linux/perf_regs.h index 3c73d5fe18be..a5f98d53d732 100644 --- a/include/linux/perf_regs.h +++ b/include/linux/perf_regs.h @@ -1,11 +1,19 @@  #ifndef _LINUX_PERF_REGS_H  #define _LINUX_PERF_REGS_H +struct perf_regs { +	__u64		abi; +	struct pt_regs	*regs; +}; +  #ifdef CONFIG_HAVE_PERF_REGS  #include <asm/perf_regs.h>  u64 perf_reg_value(struct pt_regs *regs, int idx);  int perf_reg_validate(u64 mask);  u64 perf_reg_abi(struct task_struct *task); +void perf_get_regs_user(struct perf_regs *regs_user, +			struct pt_regs *regs, +			struct pt_regs *regs_user_copy);  #else  static inline u64 perf_reg_value(struct pt_regs *regs, int idx)  { @@ -21,5 +29,13 @@ static inline u64 perf_reg_abi(struct task_struct *task)  {  	return PERF_SAMPLE_REGS_ABI_NONE;  } + +static inline void perf_get_regs_user(struct perf_regs *regs_user, +				      struct pt_regs *regs, +				      struct pt_regs *regs_user_copy) +{ +	regs_user->regs = task_pt_regs(current); +	regs_user->abi = perf_reg_abi(current); +}  #endif /* CONFIG_HAVE_PERF_REGS */  #endif /* _LINUX_PERF_REGS_H */ diff --git a/include/linux/phy/omap_control_phy.h b/include/linux/phy/omap_control_phy.h index e9e6cfbfbb58..eb7d4a135a9e 100644 --- a/include/linux/phy/omap_control_phy.h +++ b/include/linux/phy/omap_control_phy.h @@ -66,7 +66,7 @@ enum omap_control_usb_mode {  #define	OMAP_CTRL_PIPE3_PHY_TX_RX_POWEROFF	0x0  #define	OMAP_CTRL_PCIE_PCS_MASK			0xff -#define	OMAP_CTRL_PCIE_PCS_DELAY_COUNT_SHIFT	0x8 +#define	OMAP_CTRL_PCIE_PCS_DELAY_COUNT_SHIFT	16  #define OMAP_CTRL_USB2_PHY_PD		BIT(28) @@ -79,7 +79,7 @@ enum omap_control_usb_mode {  void omap_control_phy_power(struct device *dev, int on);  void omap_control_usb_set_mode(struct device *dev,  			       enum omap_control_usb_mode mode); -void omap_control_pcie_pcs(struct device *dev, u8 id, u8 delay); +void omap_control_pcie_pcs(struct device *dev, u8 delay);  #else  static inline void omap_control_phy_power(struct device *dev, int on) @@ -91,7 +91,7 @@ static inline void omap_control_usb_set_mode(struct device *dev,  {  } -static inline void omap_control_pcie_pcs(struct device *dev, u8 id, u8 delay) +static inline void omap_control_pcie_pcs(struct device *dev, u8 delay)  {  }  #endif diff --git a/include/linux/rmap.h b/include/linux/rmap.h index c0c2bce6b0b7..d9d7e7e56352 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h @@ -37,6 +37,16 @@ struct anon_vma {  	atomic_t refcount;  	/* +	 * Count of child anon_vmas and VMAs which points to this anon_vma. +	 * +	 * This counter is used for making decision about reusing anon_vma +	 * instead of forking new one. See comments in function anon_vma_clone. +	 */ +	unsigned degree; + +	struct anon_vma *parent;	/* Parent of this anon_vma */ + +	/*  	 * NOTE: the LSB of the rb_root.rb_node is set by  	 * mm_take_all_locks() _after_ taking the above lock. So the  	 * rb_root must only be read/written after taking the above lock diff --git a/include/linux/writeback.h b/include/linux/writeback.h index a219be961c0a..00048339c23e 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h @@ -177,7 +177,6 @@ int write_cache_pages(struct address_space *mapping,  		      struct writeback_control *wbc, writepage_t writepage,  		      void *data);  int do_writepages(struct address_space *mapping, struct writeback_control *wbc); -void set_page_dirty_balance(struct page *page);  void writeback_set_ratelimit(void);  void tag_pages_for_writeback(struct address_space *mapping,  			     pgoff_t start, pgoff_t end); | 
