Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block into for-3.18
This is to receive 0a30288da1 ("blk-mq, percpu_ref: implement a
kludge for SCSI blk-mq stall during probe") which implements
__percpu_ref_kill_expedited() to work around SCSI blk-mq stall. The
commit reverted and patches to implement proper fix will be added.
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Kent Overstreet <kmo@daterainc.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Christoph Hellwig <hch@lst.de>
This commit is contained in:
commit
d06efebf0c
1301 changed files with 15947 additions and 7921 deletions
|
|
@ -127,10 +127,9 @@ enum {
|
|||
BLK_MQ_RQ_QUEUE_ERROR = 2, /* end IO with error */
|
||||
|
||||
BLK_MQ_F_SHOULD_MERGE = 1 << 0,
|
||||
BLK_MQ_F_SHOULD_SORT = 1 << 1,
|
||||
BLK_MQ_F_TAG_SHARED = 1 << 2,
|
||||
BLK_MQ_F_SG_MERGE = 1 << 3,
|
||||
BLK_MQ_F_SYSFS_UP = 1 << 4,
|
||||
BLK_MQ_F_TAG_SHARED = 1 << 1,
|
||||
BLK_MQ_F_SG_MERGE = 1 << 2,
|
||||
BLK_MQ_F_SYSFS_UP = 1 << 3,
|
||||
|
||||
BLK_MQ_S_STOPPED = 0,
|
||||
BLK_MQ_S_TAG_ACTIVE = 1,
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
#define PHY_ID_BCM7366 0x600d8490
|
||||
#define PHY_ID_BCM7439 0x600d8480
|
||||
#define PHY_ID_BCM7445 0x600d8510
|
||||
#define PHY_ID_BCM7XXX_28 0x600d8400
|
||||
|
||||
#define PHY_BCM_OUI_MASK 0xfffffc00
|
||||
#define PHY_BCM_OUI_1 0x00206000
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ struct qstr {
|
|||
#define QSTR_INIT(n,l) { { { .len = l } }, .name = n }
|
||||
#define hashlen_hash(hashlen) ((u32) (hashlen))
|
||||
#define hashlen_len(hashlen) ((u32)((hashlen) >> 32))
|
||||
#define hashlen_create(hash,len) (((u64)(len)<<32)|(u32)(hash))
|
||||
|
||||
struct dentry_stat_t {
|
||||
long nr_dentry;
|
||||
|
|
|
|||
|
|
@ -194,6 +194,9 @@ static inline char *mc_event_error_type(const unsigned int err_type)
|
|||
* @MEM_DDR3: DDR3 RAM
|
||||
* @MEM_RDDR3: Registered DDR3 RAM
|
||||
* This is a variant of the DDR3 memories.
|
||||
* @MEM_DDR4: DDR4 RAM
|
||||
* @MEM_RDDR4: Registered DDR4 RAM
|
||||
* This is a variant of the DDR4 memories.
|
||||
*/
|
||||
enum mem_type {
|
||||
MEM_EMPTY = 0,
|
||||
|
|
@ -213,6 +216,8 @@ enum mem_type {
|
|||
MEM_XDR,
|
||||
MEM_DDR3,
|
||||
MEM_RDDR3,
|
||||
MEM_DDR4,
|
||||
MEM_RDDR4,
|
||||
};
|
||||
|
||||
#define MEM_FLAG_EMPTY BIT(MEM_EMPTY)
|
||||
|
|
|
|||
|
|
@ -24,6 +24,9 @@
|
|||
#define NULL_ADDR ((block_t)0) /* used as block_t addresses */
|
||||
#define NEW_ADDR ((block_t)-1) /* used as block_t addresses */
|
||||
|
||||
/* 0, 1(node nid), 2(meta nid) are reserved node id */
|
||||
#define F2FS_RESERVED_NODE_NUM 3
|
||||
|
||||
#define F2FS_ROOT_INO(sbi) (sbi->root_ino_num)
|
||||
#define F2FS_NODE_INO(sbi) (sbi->node_ino_num)
|
||||
#define F2FS_META_INO(sbi) (sbi->meta_ino_num)
|
||||
|
|
@ -87,6 +90,8 @@ struct f2fs_super_block {
|
|||
#define CP_ORPHAN_PRESENT_FLAG 0x00000002
|
||||
#define CP_UMOUNT_FLAG 0x00000001
|
||||
|
||||
#define F2FS_CP_PACKS 2 /* # of checkpoint packs */
|
||||
|
||||
struct f2fs_checkpoint {
|
||||
__le64 checkpoint_ver; /* checkpoint block version number */
|
||||
__le64 user_block_count; /* # of user blocks */
|
||||
|
|
@ -123,6 +128,9 @@ struct f2fs_checkpoint {
|
|||
*/
|
||||
#define F2FS_ORPHANS_PER_BLOCK 1020
|
||||
|
||||
#define GET_ORPHAN_BLOCKS(n) ((n + F2FS_ORPHANS_PER_BLOCK - 1) / \
|
||||
F2FS_ORPHANS_PER_BLOCK)
|
||||
|
||||
struct f2fs_orphan_block {
|
||||
__le32 ino[F2FS_ORPHANS_PER_BLOCK]; /* inode numbers */
|
||||
__le32 reserved; /* reserved */
|
||||
|
|
@ -144,6 +152,7 @@ struct f2fs_extent {
|
|||
#define F2FS_NAME_LEN 255
|
||||
#define F2FS_INLINE_XATTR_ADDRS 50 /* 200 bytes for inline xattrs */
|
||||
#define DEF_ADDRS_PER_INODE 923 /* Address Pointers in an Inode */
|
||||
#define DEF_NIDS_PER_INODE 5 /* Node IDs in an Inode */
|
||||
#define ADDRS_PER_INODE(fi) addrs_per_inode(fi)
|
||||
#define ADDRS_PER_BLOCK 1018 /* Address Pointers in a Direct Block */
|
||||
#define NIDS_PER_BLOCK 1018 /* Node IDs in an Indirect Block */
|
||||
|
|
@ -163,8 +172,9 @@ struct f2fs_extent {
|
|||
#define MAX_INLINE_DATA (sizeof(__le32) * (DEF_ADDRS_PER_INODE - \
|
||||
F2FS_INLINE_XATTR_ADDRS - 1))
|
||||
|
||||
#define INLINE_DATA_OFFSET (PAGE_CACHE_SIZE - sizeof(struct node_footer) \
|
||||
- sizeof(__le32) * (DEF_ADDRS_PER_INODE + 5 - 1))
|
||||
#define INLINE_DATA_OFFSET (PAGE_CACHE_SIZE - sizeof(struct node_footer) -\
|
||||
sizeof(__le32) * (DEF_ADDRS_PER_INODE + \
|
||||
DEF_NIDS_PER_INODE - 1))
|
||||
|
||||
struct f2fs_inode {
|
||||
__le16 i_mode; /* file mode */
|
||||
|
|
@ -194,7 +204,7 @@ struct f2fs_inode {
|
|||
|
||||
__le32 i_addr[DEF_ADDRS_PER_INODE]; /* Pointers to data blocks */
|
||||
|
||||
__le32 i_nid[5]; /* direct(2), indirect(2),
|
||||
__le32 i_nid[DEF_NIDS_PER_INODE]; /* direct(2), indirect(2),
|
||||
double_indirect(1) node id */
|
||||
} __packed;
|
||||
|
||||
|
|
|
|||
|
|
@ -102,6 +102,15 @@ enum {
|
|||
FTRACE_OPS_FL_DELETED = 1 << 8,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||
/* The hash used to know what functions callbacks trace */
|
||||
struct ftrace_ops_hash {
|
||||
struct ftrace_hash *notrace_hash;
|
||||
struct ftrace_hash *filter_hash;
|
||||
struct mutex regex_lock;
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Note, ftrace_ops can be referenced outside of RCU protection.
|
||||
* (Although, for perf, the control ops prevent that). If ftrace_ops is
|
||||
|
|
@ -121,10 +130,9 @@ struct ftrace_ops {
|
|||
int __percpu *disabled;
|
||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||
int nr_trampolines;
|
||||
struct ftrace_hash *notrace_hash;
|
||||
struct ftrace_hash *filter_hash;
|
||||
struct ftrace_ops_hash local_hash;
|
||||
struct ftrace_ops_hash *func_hash;
|
||||
struct ftrace_hash *tramp_hash;
|
||||
struct mutex regex_lock;
|
||||
unsigned long trampoline;
|
||||
#endif
|
||||
};
|
||||
|
|
|
|||
|
|
@ -16,8 +16,6 @@ struct device;
|
|||
*/
|
||||
struct gpio_desc;
|
||||
|
||||
#ifdef CONFIG_GPIOLIB
|
||||
|
||||
#define GPIOD_FLAGS_BIT_DIR_SET BIT(0)
|
||||
#define GPIOD_FLAGS_BIT_DIR_OUT BIT(1)
|
||||
#define GPIOD_FLAGS_BIT_DIR_VAL BIT(2)
|
||||
|
|
@ -34,64 +32,38 @@ enum gpiod_flags {
|
|||
GPIOD_FLAGS_BIT_DIR_VAL,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_GPIOLIB
|
||||
|
||||
/* Acquire and dispose GPIOs */
|
||||
struct gpio_desc *__must_check __gpiod_get(struct device *dev,
|
||||
const char *con_id,
|
||||
enum gpiod_flags flags);
|
||||
#define __gpiod_get(dev, con_id, flags, ...) __gpiod_get(dev, con_id, flags)
|
||||
#define gpiod_get(varargs...) __gpiod_get(varargs, 0)
|
||||
struct gpio_desc *__must_check __gpiod_get_index(struct device *dev,
|
||||
const char *con_id,
|
||||
unsigned int idx,
|
||||
enum gpiod_flags flags);
|
||||
#define __gpiod_get_index(dev, con_id, index, flags, ...) \
|
||||
__gpiod_get_index(dev, con_id, index, flags)
|
||||
#define gpiod_get_index(varargs...) __gpiod_get_index(varargs, 0)
|
||||
struct gpio_desc *__must_check __gpiod_get_optional(struct device *dev,
|
||||
const char *con_id,
|
||||
enum gpiod_flags flags);
|
||||
#define __gpiod_get_optional(dev, con_id, flags, ...) \
|
||||
__gpiod_get_optional(dev, con_id, flags)
|
||||
#define gpiod_get_optional(varargs...) __gpiod_get_optional(varargs, 0)
|
||||
struct gpio_desc *__must_check __gpiod_get_index_optional(struct device *dev,
|
||||
const char *con_id,
|
||||
unsigned int index,
|
||||
enum gpiod_flags flags);
|
||||
#define __gpiod_get_index_optional(dev, con_id, index, flags, ...) \
|
||||
__gpiod_get_index_optional(dev, con_id, index, flags)
|
||||
#define gpiod_get_index_optional(varargs...) \
|
||||
__gpiod_get_index_optional(varargs, 0)
|
||||
|
||||
void gpiod_put(struct gpio_desc *desc);
|
||||
|
||||
struct gpio_desc *__must_check __devm_gpiod_get(struct device *dev,
|
||||
const char *con_id,
|
||||
enum gpiod_flags flags);
|
||||
#define __devm_gpiod_get(dev, con_id, flags, ...) \
|
||||
__devm_gpiod_get(dev, con_id, flags)
|
||||
#define devm_gpiod_get(varargs...) __devm_gpiod_get(varargs, 0)
|
||||
struct gpio_desc *__must_check __devm_gpiod_get_index(struct device *dev,
|
||||
const char *con_id,
|
||||
unsigned int idx,
|
||||
enum gpiod_flags flags);
|
||||
#define __devm_gpiod_get_index(dev, con_id, index, flags, ...) \
|
||||
__devm_gpiod_get_index(dev, con_id, index, flags)
|
||||
#define devm_gpiod_get_index(varargs...) __devm_gpiod_get_index(varargs, 0)
|
||||
struct gpio_desc *__must_check __devm_gpiod_get_optional(struct device *dev,
|
||||
const char *con_id,
|
||||
enum gpiod_flags flags);
|
||||
#define __devm_gpiod_get_optional(dev, con_id, flags, ...) \
|
||||
__devm_gpiod_get_optional(dev, con_id, flags)
|
||||
#define devm_gpiod_get_optional(varargs...) \
|
||||
__devm_gpiod_get_optional(varargs, 0)
|
||||
struct gpio_desc *__must_check
|
||||
__devm_gpiod_get_index_optional(struct device *dev, const char *con_id,
|
||||
unsigned int index, enum gpiod_flags flags);
|
||||
#define __devm_gpiod_get_index_optional(dev, con_id, index, flags, ...) \
|
||||
__devm_gpiod_get_index_optional(dev, con_id, index, flags)
|
||||
#define devm_gpiod_get_index_optional(varargs...) \
|
||||
__devm_gpiod_get_index_optional(varargs, 0)
|
||||
|
||||
void devm_gpiod_put(struct device *dev, struct gpio_desc *desc);
|
||||
|
||||
int gpiod_get_direction(const struct gpio_desc *desc);
|
||||
|
|
@ -124,27 +96,31 @@ int desc_to_gpio(const struct gpio_desc *desc);
|
|||
|
||||
#else /* CONFIG_GPIOLIB */
|
||||
|
||||
static inline struct gpio_desc *__must_check gpiod_get(struct device *dev,
|
||||
const char *con_id)
|
||||
static inline struct gpio_desc *__must_check __gpiod_get(struct device *dev,
|
||||
const char *con_id,
|
||||
enum gpiod_flags flags)
|
||||
{
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
static inline struct gpio_desc *__must_check gpiod_get_index(struct device *dev,
|
||||
const char *con_id,
|
||||
unsigned int idx)
|
||||
static inline struct gpio_desc *__must_check
|
||||
__gpiod_get_index(struct device *dev,
|
||||
const char *con_id,
|
||||
unsigned int idx,
|
||||
enum gpiod_flags flags)
|
||||
{
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
|
||||
static inline struct gpio_desc *__must_check
|
||||
gpiod_get_optional(struct device *dev, const char *con_id)
|
||||
__gpiod_get_optional(struct device *dev, const char *con_id,
|
||||
enum gpiod_flags flags)
|
||||
{
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
|
||||
static inline struct gpio_desc *__must_check
|
||||
gpiod_get_index_optional(struct device *dev, const char *con_id,
|
||||
unsigned int index)
|
||||
__gpiod_get_index_optional(struct device *dev, const char *con_id,
|
||||
unsigned int index, enum gpiod_flags flags)
|
||||
{
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
|
|
@ -157,28 +133,33 @@ static inline void gpiod_put(struct gpio_desc *desc)
|
|||
WARN_ON(1);
|
||||
}
|
||||
|
||||
static inline struct gpio_desc *__must_check devm_gpiod_get(struct device *dev,
|
||||
const char *con_id)
|
||||
static inline struct gpio_desc *__must_check
|
||||
__devm_gpiod_get(struct device *dev,
|
||||
const char *con_id,
|
||||
enum gpiod_flags flags)
|
||||
{
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
static inline
|
||||
struct gpio_desc *__must_check devm_gpiod_get_index(struct device *dev,
|
||||
const char *con_id,
|
||||
unsigned int idx)
|
||||
struct gpio_desc *__must_check
|
||||
__devm_gpiod_get_index(struct device *dev,
|
||||
const char *con_id,
|
||||
unsigned int idx,
|
||||
enum gpiod_flags flags)
|
||||
{
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
|
||||
static inline struct gpio_desc *__must_check
|
||||
devm_gpiod_get_optional(struct device *dev, const char *con_id)
|
||||
__devm_gpiod_get_optional(struct device *dev, const char *con_id,
|
||||
enum gpiod_flags flags)
|
||||
{
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
|
||||
static inline struct gpio_desc *__must_check
|
||||
devm_gpiod_get_index_optional(struct device *dev, const char *con_id,
|
||||
unsigned int index)
|
||||
__devm_gpiod_get_index_optional(struct device *dev, const char *con_id,
|
||||
unsigned int index, enum gpiod_flags flags)
|
||||
{
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
|
|
@ -303,9 +284,43 @@ static inline int desc_to_gpio(const struct gpio_desc *desc)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
#endif /* CONFIG_GPIOLIB */
|
||||
|
||||
/*
|
||||
* Vararg-hacks! This is done to transition the kernel to always pass
|
||||
* the options flags argument to the below functions. During a transition
|
||||
* phase these vararg macros make both old-and-newstyle code compile,
|
||||
* but when all calls to the elder API are removed, these should go away
|
||||
* and the __gpiod_get() etc functions above be renamed just gpiod_get()
|
||||
* etc.
|
||||
*/
|
||||
#define __gpiod_get(dev, con_id, flags, ...) __gpiod_get(dev, con_id, flags)
|
||||
#define gpiod_get(varargs...) __gpiod_get(varargs, 0)
|
||||
#define __gpiod_get_index(dev, con_id, index, flags, ...) \
|
||||
__gpiod_get_index(dev, con_id, index, flags)
|
||||
#define gpiod_get_index(varargs...) __gpiod_get_index(varargs, 0)
|
||||
#define __gpiod_get_optional(dev, con_id, flags, ...) \
|
||||
__gpiod_get_optional(dev, con_id, flags)
|
||||
#define gpiod_get_optional(varargs...) __gpiod_get_optional(varargs, 0)
|
||||
#define __gpiod_get_index_optional(dev, con_id, index, flags, ...) \
|
||||
__gpiod_get_index_optional(dev, con_id, index, flags)
|
||||
#define gpiod_get_index_optional(varargs...) \
|
||||
__gpiod_get_index_optional(varargs, 0)
|
||||
#define __devm_gpiod_get(dev, con_id, flags, ...) \
|
||||
__devm_gpiod_get(dev, con_id, flags)
|
||||
#define devm_gpiod_get(varargs...) __devm_gpiod_get(varargs, 0)
|
||||
#define __devm_gpiod_get_index(dev, con_id, index, flags, ...) \
|
||||
__devm_gpiod_get_index(dev, con_id, index, flags)
|
||||
#define devm_gpiod_get_index(varargs...) __devm_gpiod_get_index(varargs, 0)
|
||||
#define __devm_gpiod_get_optional(dev, con_id, flags, ...) \
|
||||
__devm_gpiod_get_optional(dev, con_id, flags)
|
||||
#define devm_gpiod_get_optional(varargs...) \
|
||||
__devm_gpiod_get_optional(varargs, 0)
|
||||
#define __devm_gpiod_get_index_optional(dev, con_id, index, flags, ...) \
|
||||
__devm_gpiod_get_index_optional(dev, con_id, index, flags)
|
||||
#define devm_gpiod_get_index_optional(varargs...) \
|
||||
__devm_gpiod_get_index_optional(varargs, 0)
|
||||
|
||||
#if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS)
|
||||
|
||||
int gpiod_export(struct gpio_desc *desc, bool direction_may_change);
|
||||
|
|
|
|||
|
|
@ -37,6 +37,9 @@ static __always_inline u64 hash_64(u64 val, unsigned int bits)
|
|||
{
|
||||
u64 hash = val;
|
||||
|
||||
#if defined(CONFIG_ARCH_HAS_FAST_MULTIPLIER) && BITS_PER_LONG == 64
|
||||
hash = hash * GOLDEN_RATIO_PRIME_64;
|
||||
#else
|
||||
/* Sigh, gcc can't optimise this alone like it does for 32 bits. */
|
||||
u64 n = hash;
|
||||
n <<= 18;
|
||||
|
|
@ -51,6 +54,7 @@ static __always_inline u64 hash_64(u64 val, unsigned int bits)
|
|||
hash += n;
|
||||
n <<= 2;
|
||||
hash += n;
|
||||
#endif
|
||||
|
||||
/* High bits are more random, so use them. */
|
||||
return hash >> (64 - bits);
|
||||
|
|
|
|||
|
|
@ -577,16 +577,20 @@ static inline struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node
|
|||
}
|
||||
#endif /* CONFIG_OF */
|
||||
|
||||
#ifdef CONFIG_I2C_ACPI
|
||||
int acpi_i2c_install_space_handler(struct i2c_adapter *adapter);
|
||||
void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter);
|
||||
#ifdef CONFIG_ACPI
|
||||
void acpi_i2c_register_devices(struct i2c_adapter *adap);
|
||||
#else
|
||||
static inline void acpi_i2c_register_devices(struct i2c_adapter *adap) { }
|
||||
#endif /* CONFIG_ACPI */
|
||||
|
||||
#ifdef CONFIG_ACPI_I2C_OPREGION
|
||||
int acpi_i2c_install_space_handler(struct i2c_adapter *adapter);
|
||||
void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter);
|
||||
#else
|
||||
static inline void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter)
|
||||
{ }
|
||||
static inline int acpi_i2c_install_space_handler(struct i2c_adapter *adapter)
|
||||
{ return 0; }
|
||||
#endif
|
||||
#endif /* CONFIG_ACPI_I2C_OPREGION */
|
||||
|
||||
#endif /* _LINUX_I2C_H */
|
||||
|
|
|
|||
|
|
@ -84,10 +84,12 @@ static inline void iio_trigger_put(struct iio_trigger *trig)
|
|||
put_device(&trig->dev);
|
||||
}
|
||||
|
||||
static inline void iio_trigger_get(struct iio_trigger *trig)
|
||||
static inline struct iio_trigger *iio_trigger_get(struct iio_trigger *trig)
|
||||
{
|
||||
get_device(&trig->dev);
|
||||
__module_get(trig->ops->owner);
|
||||
|
||||
return trig;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ void input_mt_report_slot_state(struct input_dev *dev,
|
|||
|
||||
void input_mt_report_finger_count(struct input_dev *dev, int count);
|
||||
void input_mt_report_pointer_emulation(struct input_dev *dev, bool use_count);
|
||||
void input_mt_drop_unused(struct input_dev *dev);
|
||||
|
||||
void input_mt_sync_frame(struct input_dev *dev);
|
||||
|
||||
|
|
|
|||
|
|
@ -159,7 +159,11 @@ typedef struct journal_header_s
|
|||
* journal_block_tag (in the descriptor). The other h_chksum* fields are
|
||||
* not used.
|
||||
*
|
||||
* Checksum v1 and v2 are mutually exclusive features.
|
||||
* If FEATURE_INCOMPAT_CSUM_V3 is set, the descriptor block uses
|
||||
* journal_block_tag3_t to store a full 32-bit checksum. Everything else
|
||||
* is the same as v2.
|
||||
*
|
||||
* Checksum v1, v2, and v3 are mutually exclusive features.
|
||||
*/
|
||||
struct commit_header {
|
||||
__be32 h_magic;
|
||||
|
|
@ -179,6 +183,14 @@ struct commit_header {
|
|||
* raw struct shouldn't be used for pointer math or sizeof() - use
|
||||
* journal_tag_bytes(journal) instead to compute this.
|
||||
*/
|
||||
typedef struct journal_block_tag3_s
|
||||
{
|
||||
__be32 t_blocknr; /* The on-disk block number */
|
||||
__be32 t_flags; /* See below */
|
||||
__be32 t_blocknr_high; /* most-significant high 32bits. */
|
||||
__be32 t_checksum; /* crc32c(uuid+seq+block) */
|
||||
} journal_block_tag3_t;
|
||||
|
||||
typedef struct journal_block_tag_s
|
||||
{
|
||||
__be32 t_blocknr; /* The on-disk block number */
|
||||
|
|
@ -187,9 +199,6 @@ typedef struct journal_block_tag_s
|
|||
__be32 t_blocknr_high; /* most-significant high 32bits. */
|
||||
} journal_block_tag_t;
|
||||
|
||||
#define JBD2_TAG_SIZE32 (offsetof(journal_block_tag_t, t_blocknr_high))
|
||||
#define JBD2_TAG_SIZE64 (sizeof(journal_block_tag_t))
|
||||
|
||||
/* Tail of descriptor block, for checksumming */
|
||||
struct jbd2_journal_block_tail {
|
||||
__be32 t_checksum; /* crc32c(uuid+descr_block) */
|
||||
|
|
@ -284,6 +293,7 @@ typedef struct journal_superblock_s
|
|||
#define JBD2_FEATURE_INCOMPAT_64BIT 0x00000002
|
||||
#define JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT 0x00000004
|
||||
#define JBD2_FEATURE_INCOMPAT_CSUM_V2 0x00000008
|
||||
#define JBD2_FEATURE_INCOMPAT_CSUM_V3 0x00000010
|
||||
|
||||
/* Features known to this kernel version: */
|
||||
#define JBD2_KNOWN_COMPAT_FEATURES JBD2_FEATURE_COMPAT_CHECKSUM
|
||||
|
|
@ -291,7 +301,8 @@ typedef struct journal_superblock_s
|
|||
#define JBD2_KNOWN_INCOMPAT_FEATURES (JBD2_FEATURE_INCOMPAT_REVOKE | \
|
||||
JBD2_FEATURE_INCOMPAT_64BIT | \
|
||||
JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT | \
|
||||
JBD2_FEATURE_INCOMPAT_CSUM_V2)
|
||||
JBD2_FEATURE_INCOMPAT_CSUM_V2 | \
|
||||
JBD2_FEATURE_INCOMPAT_CSUM_V3)
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
|
|
@ -1296,6 +1307,15 @@ static inline int tid_geq(tid_t x, tid_t y)
|
|||
extern int jbd2_journal_blocks_per_page(struct inode *inode);
|
||||
extern size_t journal_tag_bytes(journal_t *journal);
|
||||
|
||||
static inline int jbd2_journal_has_csum_v2or3(journal_t *journal)
|
||||
{
|
||||
if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_CSUM_V2) ||
|
||||
JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_CSUM_V3))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* We reserve t_outstanding_credits >> JBD2_CONTROL_BLOCKS_SHIFT for
|
||||
* transaction control blocks.
|
||||
|
|
|
|||
|
|
@ -258,23 +258,11 @@ extern unsigned long preset_lpj;
|
|||
#define SEC_JIFFIE_SC (32 - SHIFT_HZ)
|
||||
#endif
|
||||
#define NSEC_JIFFIE_SC (SEC_JIFFIE_SC + 29)
|
||||
#define USEC_JIFFIE_SC (SEC_JIFFIE_SC + 19)
|
||||
#define SEC_CONVERSION ((unsigned long)((((u64)NSEC_PER_SEC << SEC_JIFFIE_SC) +\
|
||||
TICK_NSEC -1) / (u64)TICK_NSEC))
|
||||
|
||||
#define NSEC_CONVERSION ((unsigned long)((((u64)1 << NSEC_JIFFIE_SC) +\
|
||||
TICK_NSEC -1) / (u64)TICK_NSEC))
|
||||
#define USEC_CONVERSION \
|
||||
((unsigned long)((((u64)NSEC_PER_USEC << USEC_JIFFIE_SC) +\
|
||||
TICK_NSEC -1) / (u64)TICK_NSEC))
|
||||
/*
|
||||
* USEC_ROUND is used in the timeval to jiffie conversion. See there
|
||||
* for more details. It is the scaled resolution rounding value. Note
|
||||
* that it is a 64-bit value. Since, when it is applied, we are already
|
||||
* in jiffies (albit scaled), it is nothing but the bits we will shift
|
||||
* off.
|
||||
*/
|
||||
#define USEC_ROUND (u64)(((u64)1 << USEC_JIFFIE_SC) - 1)
|
||||
/*
|
||||
* The maximum jiffie value is (MAX_INT >> 1). Here we translate that
|
||||
* into seconds. The 64-bit case will overflow if we are not careful,
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#include <linux/list.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/rwsem.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
struct device;
|
||||
|
|
@ -68,7 +69,7 @@ struct led_classdev {
|
|||
const char *default_trigger; /* Trigger to use */
|
||||
|
||||
unsigned long blink_delay_on, blink_delay_off;
|
||||
struct delayed_work blink_work;
|
||||
struct timer_list blink_timer;
|
||||
int blink_brightness;
|
||||
|
||||
struct work_struct set_brightness_work;
|
||||
|
|
|
|||
|
|
@ -209,6 +209,7 @@ enum {
|
|||
MLX4_BMME_FLAG_TYPE_2_WIN = 1 << 9,
|
||||
MLX4_BMME_FLAG_RESERVED_LKEY = 1 << 10,
|
||||
MLX4_BMME_FLAG_FAST_REG_WR = 1 << 11,
|
||||
MLX4_BMME_FLAG_VSD_INIT2RTR = 1 << 28,
|
||||
};
|
||||
|
||||
enum mlx4_event {
|
||||
|
|
@ -1196,6 +1197,9 @@ int mlx4_map_sw_to_hw_steering_id(struct mlx4_dev *dev,
|
|||
enum mlx4_net_trans_rule_id id);
|
||||
int mlx4_hw_rule_sz(struct mlx4_dev *dev, enum mlx4_net_trans_rule_id id);
|
||||
|
||||
int mlx4_tunnel_steer_add(struct mlx4_dev *dev, unsigned char *addr,
|
||||
int port, int qpn, u16 prio, u64 *reg_id);
|
||||
|
||||
void mlx4_sync_pkey_table(struct mlx4_dev *dev, int slave, int port,
|
||||
int i, int val);
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,8 @@ enum mlx4_qp_optpar {
|
|||
MLX4_QP_OPTPAR_RNR_RETRY = 1 << 13,
|
||||
MLX4_QP_OPTPAR_ACK_TIMEOUT = 1 << 14,
|
||||
MLX4_QP_OPTPAR_SCHED_QUEUE = 1 << 16,
|
||||
MLX4_QP_OPTPAR_COUNTER_INDEX = 1 << 20
|
||||
MLX4_QP_OPTPAR_COUNTER_INDEX = 1 << 20,
|
||||
MLX4_QP_OPTPAR_VLAN_STRIPPING = 1 << 21,
|
||||
};
|
||||
|
||||
enum mlx4_qp_state {
|
||||
|
|
@ -423,13 +424,20 @@ struct mlx4_wqe_inline_seg {
|
|||
|
||||
enum mlx4_update_qp_attr {
|
||||
MLX4_UPDATE_QP_SMAC = 1 << 0,
|
||||
MLX4_UPDATE_QP_VSD = 1 << 2,
|
||||
MLX4_UPDATE_QP_SUPPORTED_ATTRS = (1 << 2) - 1
|
||||
};
|
||||
|
||||
enum mlx4_update_qp_params_flags {
|
||||
MLX4_UPDATE_QP_PARAMS_FLAGS_VSD_ENABLE = 1 << 0,
|
||||
};
|
||||
|
||||
struct mlx4_update_qp_params {
|
||||
u8 smac_index;
|
||||
u32 flags;
|
||||
};
|
||||
|
||||
int mlx4_update_qp(struct mlx4_dev *dev, struct mlx4_qp *qp,
|
||||
int mlx4_update_qp(struct mlx4_dev *dev, u32 qpn,
|
||||
enum mlx4_update_qp_attr attr,
|
||||
struct mlx4_update_qp_params *params);
|
||||
int mlx4_qp_modify(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
|
||||
|
|
|
|||
|
|
@ -949,7 +949,7 @@ static inline int jedec_feature(struct nand_chip *chip)
|
|||
: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* struct nand_sdr_timings - SDR NAND chip timings
|
||||
*
|
||||
* This struct defines the timing requirements of a SDR NAND chip.
|
||||
|
|
|
|||
|
|
@ -3176,7 +3176,7 @@ static inline int __dev_uc_sync(struct net_device *dev,
|
|||
}
|
||||
|
||||
/**
|
||||
* __dev_uc_unsync - Remove synchonized addresses from device
|
||||
* __dev_uc_unsync - Remove synchronized addresses from device
|
||||
* @dev: device to sync
|
||||
* @unsync: function to call if address should be removed
|
||||
*
|
||||
|
|
@ -3220,7 +3220,7 @@ static inline int __dev_mc_sync(struct net_device *dev,
|
|||
}
|
||||
|
||||
/**
|
||||
* __dev_mc_unsync - Remove synchonized addresses from device
|
||||
* __dev_mc_unsync - Remove synchronized addresses from device
|
||||
* @dev: device to sync
|
||||
* @unsync: function to call if address should be removed
|
||||
*
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
#include <linux/in6.h>
|
||||
#include <linux/wait.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/static_key.h>
|
||||
#include <uapi/linux/netfilter.h>
|
||||
#ifdef CONFIG_NETFILTER
|
||||
static inline int NF_DROP_GETERR(int verdict)
|
||||
|
|
@ -99,9 +100,9 @@ void nf_unregister_sockopt(struct nf_sockopt_ops *reg);
|
|||
|
||||
extern struct list_head nf_hooks[NFPROTO_NUMPROTO][NF_MAX_HOOKS];
|
||||
|
||||
#if defined(CONFIG_JUMP_LABEL)
|
||||
#include <linux/static_key.h>
|
||||
#ifdef HAVE_JUMP_LABEL
|
||||
extern struct static_key nf_hooks_needed[NFPROTO_NUMPROTO][NF_MAX_HOOKS];
|
||||
|
||||
static inline bool nf_hooks_active(u_int8_t pf, unsigned int hook)
|
||||
{
|
||||
if (__builtin_constant_p(pf) &&
|
||||
|
|
|
|||
|
|
@ -123,6 +123,7 @@ extern int nfs_wait_on_request(struct nfs_page *);
|
|||
extern void nfs_unlock_request(struct nfs_page *req);
|
||||
extern void nfs_unlock_and_release_request(struct nfs_page *);
|
||||
extern int nfs_page_group_lock(struct nfs_page *, bool);
|
||||
extern void nfs_page_group_lock_wait(struct nfs_page *);
|
||||
extern void nfs_page_group_unlock(struct nfs_page *);
|
||||
extern bool nfs_page_group_sync_on_bit(struct nfs_page *, unsigned int);
|
||||
|
||||
|
|
|
|||
|
|
@ -303,6 +303,7 @@ struct pci_dev {
|
|||
D3cold, not set for devices
|
||||
powered on/off by the
|
||||
corresponding bridge */
|
||||
unsigned int ignore_hotplug:1; /* Ignore hotplug events */
|
||||
unsigned int d3_delay; /* D3->D0 transition time in ms */
|
||||
unsigned int d3cold_delay; /* D3cold->D0 transition time in ms */
|
||||
|
||||
|
|
@ -1021,6 +1022,11 @@ bool pci_dev_run_wake(struct pci_dev *dev);
|
|||
bool pci_check_pme_status(struct pci_dev *dev);
|
||||
void pci_pme_wakeup_bus(struct pci_bus *bus);
|
||||
|
||||
static inline void pci_ignore_hotplug(struct pci_dev *dev)
|
||||
{
|
||||
dev->ignore_hotplug = 1;
|
||||
}
|
||||
|
||||
static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state,
|
||||
bool enable)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ void percpu_ref_reinit(struct percpu_ref *ref);
|
|||
void percpu_ref_exit(struct percpu_ref *ref);
|
||||
void percpu_ref_kill_and_confirm(struct percpu_ref *ref,
|
||||
percpu_ref_func_t *confirm_kill);
|
||||
void __percpu_ref_kill_expedited(struct percpu_ref *ref);
|
||||
|
||||
/**
|
||||
* percpu_ref_kill - drop the initial ref
|
||||
|
|
|
|||
|
|
@ -21,8 +21,17 @@ enum nand_io {
|
|||
};
|
||||
|
||||
enum omap_ecc {
|
||||
/* 1-bit ECC calculation by GPMC, Error detection by Software */
|
||||
OMAP_ECC_HAM1_CODE_HW = 0,
|
||||
/*
|
||||
* 1-bit ECC: calculation and correction by SW
|
||||
* ECC stored at end of spare area
|
||||
*/
|
||||
OMAP_ECC_HAM1_CODE_SW = 0,
|
||||
|
||||
/*
|
||||
* 1-bit ECC: calculation by GPMC, Error detection by Software
|
||||
* ECC layout compatible with ROM code layout
|
||||
*/
|
||||
OMAP_ECC_HAM1_CODE_HW,
|
||||
/* 4-bit ECC calculation by GPMC, Error detection by Software */
|
||||
OMAP_ECC_BCH4_CODE_HW_DETECTION_SW,
|
||||
/* 4-bit ECC calculation by GPMC, Error detection by ELM */
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ struct generic_pm_domain {
|
|||
struct mutex lock;
|
||||
struct dev_power_governor *gov;
|
||||
struct work_struct power_off_work;
|
||||
char *name;
|
||||
const char *name;
|
||||
unsigned int in_progress; /* Number of devices being suspended now */
|
||||
atomic_t sd_count; /* Number of subdomains with power "on" */
|
||||
enum gpd_status status; /* Current state of the domain */
|
||||
|
|
|
|||
|
|
@ -218,6 +218,8 @@ enum regulator_type {
|
|||
* @linear_min_sel: Minimal selector for starting linear mapping
|
||||
* @fixed_uV: Fixed voltage of rails.
|
||||
* @ramp_delay: Time to settle down after voltage change (unit: uV/us)
|
||||
* @linear_ranges: A constant table of possible voltage ranges.
|
||||
* @n_linear_ranges: Number of entries in the @linear_ranges table.
|
||||
* @volt_table: Voltage mapping table (if table based mapping)
|
||||
*
|
||||
* @vsel_reg: Register for selector when using regulator_regmap_X_voltage_
|
||||
|
|
|
|||
|
|
@ -85,6 +85,7 @@ struct regulator_state {
|
|||
* bootloader then it will be enabled when the constraints are
|
||||
* applied.
|
||||
* @apply_uV: Apply the voltage constraint when initialising.
|
||||
* @ramp_disable: Disable ramp delay when initialising or when setting voltage.
|
||||
*
|
||||
* @input_uV: Input voltage for regulator when supplied by another regulator.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@ to_seqno_fence(struct fence *fence)
|
|||
* @context: the execution context this fence is a part of
|
||||
* @seqno_ofs: the offset within @sync_buf
|
||||
* @seqno: the sequence # to signal on
|
||||
* @cond: fence wait condition
|
||||
* @ops: the fence_ops for operations on this seqno fence
|
||||
*
|
||||
* This function initializes a struct seqno_fence with passed parameters,
|
||||
|
|
|
|||
|
|
@ -253,6 +253,7 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv)
|
|||
* the device whose settings are being modified.
|
||||
* @transfer: adds a message to the controller's transfer queue.
|
||||
* @cleanup: frees controller-specific state
|
||||
* @can_dma: determine whether this master supports DMA
|
||||
* @queued: whether this master is providing an internal message queue
|
||||
* @kworker: thread struct for message pump
|
||||
* @kworker_task: pointer to task for message pump kworker thread
|
||||
|
|
@ -262,6 +263,7 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv)
|
|||
* @cur_msg: the currently in-flight message
|
||||
* @cur_msg_prepared: spi_prepare_message was called for the currently
|
||||
* in-flight message
|
||||
* @cur_msg_mapped: message has been mapped for DMA
|
||||
* @xfer_completion: used by core transfer_one_message()
|
||||
* @busy: message pump is busy
|
||||
* @running: message pump is running
|
||||
|
|
@ -299,6 +301,10 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv)
|
|||
* @cs_gpios: Array of GPIOs to use as chip select lines; one per CS
|
||||
* number. Any individual value may be -ENOENT for CS lines that
|
||||
* are not GPIOs (driven by the SPI controller itself).
|
||||
* @dma_tx: DMA transmit channel
|
||||
* @dma_rx: DMA receive channel
|
||||
* @dummy_rx: dummy receive buffer for full-duplex devices
|
||||
* @dummy_tx: dummy transmit buffer for full-duplex devices
|
||||
*
|
||||
* Each SPI master controller can communicate with one or more @spi_device
|
||||
* children. These make a small bus, sharing MOSI, MISO and SCK signals
|
||||
|
|
@ -632,6 +638,7 @@ struct spi_transfer {
|
|||
* addresses for each transfer buffer
|
||||
* @complete: called to report transaction completions
|
||||
* @context: the argument to complete() when it's called
|
||||
* @frame_length: the total number of bytes in the message
|
||||
* @actual_length: the total number of bytes that were transferred in all
|
||||
* successful segments
|
||||
* @status: zero for success, else negative errno
|
||||
|
|
|
|||
|
|
@ -183,13 +183,8 @@ static inline bool tick_nohz_full_cpu(int cpu)
|
|||
|
||||
extern void tick_nohz_init(void);
|
||||
extern void __tick_nohz_full_check(void);
|
||||
extern void tick_nohz_full_kick(void);
|
||||
extern void tick_nohz_full_kick_cpu(int cpu);
|
||||
|
||||
static inline void tick_nohz_full_kick(void)
|
||||
{
|
||||
tick_nohz_full_kick_cpu(smp_processor_id());
|
||||
}
|
||||
|
||||
extern void tick_nohz_full_kick_all(void);
|
||||
extern void __tick_nohz_task_switch(struct task_struct *tsk);
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ int vga_switcheroo_get_client_state(struct pci_dev *dev);
|
|||
void vga_switcheroo_set_dynamic_switch(struct pci_dev *pdev, enum vga_switcheroo_state dynamic);
|
||||
|
||||
int vga_switcheroo_init_domain_pm_ops(struct device *dev, struct dev_pm_domain *domain);
|
||||
void vga_switcheroo_fini_domain_pm_ops(struct device *dev);
|
||||
int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, struct dev_pm_domain *domain);
|
||||
#else
|
||||
|
||||
|
|
@ -82,6 +83,7 @@ static inline int vga_switcheroo_get_client_state(struct pci_dev *dev) { return
|
|||
static inline void vga_switcheroo_set_dynamic_switch(struct pci_dev *pdev, enum vga_switcheroo_state dynamic) {}
|
||||
|
||||
static inline int vga_switcheroo_init_domain_pm_ops(struct device *dev, struct dev_pm_domain *domain) { return -EINVAL; }
|
||||
static inline void vga_switcheroo_fini_domain_pm_ops(struct device *dev) {}
|
||||
static inline int vga_switcheroo_init_domain_pm_optimus_hdmi_audio(struct device *dev, struct dev_pm_domain *domain) { return -EINVAL; }
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -182,7 +182,6 @@ extern void vga_put(struct pci_dev *pdev, unsigned int rsrc);
|
|||
* vga_get()...
|
||||
*/
|
||||
|
||||
#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE
|
||||
#ifdef CONFIG_VGA_ARB
|
||||
extern struct pci_dev *vga_default_device(void);
|
||||
extern void vga_set_default_device(struct pci_dev *pdev);
|
||||
|
|
@ -190,7 +189,6 @@ extern void vga_set_default_device(struct pci_dev *pdev);
|
|||
static inline struct pci_dev *vga_default_device(void) { return NULL; };
|
||||
static inline void vga_set_default_device(struct pci_dev *pdev) { };
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* vga_conflicts
|
||||
|
|
|
|||
|
|
@ -419,7 +419,7 @@ __alloc_workqueue_key(const char *fmt, unsigned int flags, int max_active,
|
|||
alloc_workqueue("%s", WQ_FREEZABLE | WQ_UNBOUND | WQ_MEM_RECLAIM, \
|
||||
1, (name))
|
||||
#define create_singlethread_workqueue(name) \
|
||||
alloc_workqueue("%s", WQ_UNBOUND | WQ_MEM_RECLAIM, 1, (name))
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, name)
|
||||
|
||||
extern void destroy_workqueue(struct workqueue_struct *wq);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue