Linux 3.19-rc6
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJUxbzlAAoJEHm+PkMAQRiGtqYIAJ8YlKX9cXKYmXx8/FncINH+ 2erj94KyHG080R1uwSq1+7zXWCZUUlxiJnDnsup5rG0dImcicqgOE48oHax1aN6b yHfPONkTjNJ1HYepuGC3YWCG9wIjPZQ5S8KHrwRjyVoE+ddhe9gWgvArA3jl/fW/ 2fYNWekoRoMcRiNb4/w2weyOOBywdSVpmj0WYiwdztysG2ymw5hUXRHJhvSf1AFm RQJfUHkhCOYpQGY7XFba/1uGhTJfOgDmYAfspAOLzmrXE/DJcCutsVdBZO+12fAL nhGpM/PkRYxMvwzDKIUoG35qsymYOMqo54oXhr0S2JjyXTGdGmB6qHxIfqnV5Tk= =O/Lr -----END PGP SIGNATURE----- Merge tag 'v3.19-rc6' into devel Linux 3.19-rc6
This commit is contained in:
commit
b6afdbe8e8
838 changed files with 8658 additions and 6591 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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__ */
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ static inline struct thermal_cooling_device *
|
|||
of_cpufreq_cooling_register(struct device_node *np,
|
||||
const struct cpumask *clip_cpus)
|
||||
{
|
||||
return NULL;
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -65,13 +65,13 @@ unsigned long cpufreq_cooling_get_level(unsigned int cpu, unsigned int freq);
|
|||
static inline struct thermal_cooling_device *
|
||||
cpufreq_cooling_register(const struct cpumask *clip_cpus)
|
||||
{
|
||||
return NULL;
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
static inline struct thermal_cooling_device *
|
||||
of_cpufreq_cooling_register(struct device_node *np,
|
||||
const struct cpumask *clip_cpus)
|
||||
{
|
||||
return NULL;
|
||||
return ERR_PTR(-ENOSYS);
|
||||
}
|
||||
static inline
|
||||
void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev)
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@ struct cpuidle_state {
|
|||
};
|
||||
|
||||
/* Idle State Flags */
|
||||
#define CPUIDLE_FLAG_TIME_INVALID (0x01) /* is residency time measurable? */
|
||||
#define CPUIDLE_FLAG_COUPLED (0x02) /* state applies to multiple cpus */
|
||||
#define CPUIDLE_FLAG_TIMER_STOP (0x04) /* timer is stopped on this state */
|
||||
|
||||
|
|
@ -89,8 +88,6 @@ DECLARE_PER_CPU(struct cpuidle_device, cpuidle_dev);
|
|||
/**
|
||||
* cpuidle_get_last_residency - retrieves the last state's residency time
|
||||
* @dev: the target CPU
|
||||
*
|
||||
* NOTE: this value is invalid if CPUIDLE_FLAG_TIME_INVALID is set
|
||||
*/
|
||||
static inline int cpuidle_get_last_residency(struct cpuidle_device *dev)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -11,6 +11,10 @@ extern void genl_unlock(void);
|
|||
extern int lockdep_genl_is_held(void);
|
||||
#endif
|
||||
|
||||
/* for synchronisation between af_netlink and genetlink */
|
||||
extern atomic_t genl_sk_destructing_cnt;
|
||||
extern wait_queue_head_t genl_sk_destructing_waitq;
|
||||
|
||||
/**
|
||||
* rcu_dereference_genl - rcu_dereference with debug checking
|
||||
* @p: The pointer to read, prior to dereferencing
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -231,6 +231,7 @@ enum {
|
|||
ATA_FLAG_SW_ACTIVITY = (1 << 22), /* driver supports sw activity
|
||||
* led */
|
||||
ATA_FLAG_NO_DIPM = (1 << 23), /* host not happy with DIPM */
|
||||
ATA_FLAG_LOWTAG = (1 << 24), /* host wants lowest available tag */
|
||||
|
||||
/* bits 24:31 of ap->flags are reserved for LLD specific flags */
|
||||
|
||||
|
|
@ -422,6 +423,7 @@ enum {
|
|||
ATA_HORKAGE_NO_NCQ_TRIM = (1 << 19), /* don't use queued TRIM */
|
||||
ATA_HORKAGE_NOLPM = (1 << 20), /* don't use LPM */
|
||||
ATA_HORKAGE_WD_BROKEN_LPM = (1 << 21), /* some WDs have broken LPM */
|
||||
ATA_HORKAGE_ZERO_AFTER_TRIM = (1 << 22),/* guarantees zero after trim */
|
||||
|
||||
/* DMA mask for user DMA control: User visible values; DO NOT
|
||||
renumber */
|
||||
|
|
|
|||
|
|
@ -50,6 +50,8 @@ enum {
|
|||
STMPE_IDX_GPEDR_MSB,
|
||||
STMPE_IDX_GPRER_LSB,
|
||||
STMPE_IDX_GPFER_LSB,
|
||||
STMPE_IDX_GPPUR_LSB,
|
||||
STMPE_IDX_GPPDR_LSB,
|
||||
STMPE_IDX_GPAFR_U_MSB,
|
||||
STMPE_IDX_IEGPIOR_LSB,
|
||||
STMPE_IDX_ISGPIOR_LSB,
|
||||
|
|
@ -113,24 +115,6 @@ extern int stmpe_set_altfunc(struct stmpe *stmpe, u32 pins,
|
|||
extern int stmpe_enable(struct stmpe *stmpe, unsigned int blocks);
|
||||
extern int stmpe_disable(struct stmpe *stmpe, unsigned int blocks);
|
||||
|
||||
struct matrix_keymap_data;
|
||||
|
||||
/**
|
||||
* struct stmpe_keypad_platform_data - STMPE keypad platform data
|
||||
* @keymap_data: key map table and size
|
||||
* @debounce_ms: debounce interval, in ms. Maximum is
|
||||
* %STMPE_KEYPAD_MAX_DEBOUNCE.
|
||||
* @scan_count: number of key scanning cycles to confirm key data.
|
||||
* Maximum is %STMPE_KEYPAD_MAX_SCAN_COUNT.
|
||||
* @no_autorepeat: disable key autorepeat
|
||||
*/
|
||||
struct stmpe_keypad_platform_data {
|
||||
const struct matrix_keymap_data *keymap_data;
|
||||
unsigned int debounce_ms;
|
||||
unsigned int scan_count;
|
||||
bool no_autorepeat;
|
||||
};
|
||||
|
||||
#define STMPE_GPIO_NOREQ_811_TOUCH (0xf0)
|
||||
|
||||
/**
|
||||
|
|
@ -199,7 +183,6 @@ struct stmpe_ts_platform_data {
|
|||
* @irq_gpio: gpio number over which irq will be requested (significant only if
|
||||
* irq_over_gpio is true)
|
||||
* @gpio: GPIO-specific platform data
|
||||
* @keypad: keypad-specific platform data
|
||||
* @ts: touchscreen-specific platform data
|
||||
*/
|
||||
struct stmpe_platform_data {
|
||||
|
|
@ -212,7 +195,6 @@ struct stmpe_platform_data {
|
|||
int autosleep_timeout;
|
||||
|
||||
struct stmpe_gpio_platform_data *gpio;
|
||||
struct stmpe_keypad_platform_data *keypad;
|
||||
struct stmpe_ts_platform_data *ts;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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. */
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
||||
|
|
|
|||
|
|
@ -444,7 +444,7 @@ extern void __module_put_and_exit(struct module *mod, long code)
|
|||
#define module_put_and_exit(code) __module_put_and_exit(THIS_MODULE, code)
|
||||
|
||||
#ifdef CONFIG_MODULE_UNLOAD
|
||||
unsigned long module_refcount(struct module *mod);
|
||||
int module_refcount(struct module *mod);
|
||||
void __symbol_put(const char *symbol);
|
||||
#define symbol_put(x) __symbol_put(VMLINUX_SYMBOL_STR(x))
|
||||
void symbol_put_addr(void *addr);
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ unsigned int arch_mod_section_prepend(struct module *mod, unsigned int section);
|
|||
void *module_alloc(unsigned long size);
|
||||
|
||||
/* Free memory returned from module_alloc. */
|
||||
void module_free(struct module *mod, void *module_region);
|
||||
void module_memfree(void *module_region);
|
||||
|
||||
/*
|
||||
* Apply the given relocation to the (simplified) ELF. Return -error
|
||||
|
|
@ -82,4 +82,6 @@ int module_finalize(const Elf_Ehdr *hdr,
|
|||
/* Any cleanup needed when module leaves. */
|
||||
void module_arch_cleanup(struct module *mod);
|
||||
|
||||
/* Any cleanup before freeing mod->module_init */
|
||||
void module_arch_freeing_init(struct module *mod);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
*
|
||||
|
|
@ -1012,12 +1012,15 @@ typedef u16 (*select_queue_fallback_t)(struct net_device *dev,
|
|||
* Callback to use for xmit over the accelerated station. This
|
||||
* is used in place of ndo_start_xmit on accelerated net
|
||||
* devices.
|
||||
* bool (*ndo_gso_check) (struct sk_buff *skb,
|
||||
* struct net_device *dev);
|
||||
* netdev_features_t (*ndo_features_check) (struct sk_buff *skb,
|
||||
* struct net_device *dev
|
||||
* netdev_features_t features);
|
||||
* Called by core transmit path to determine if device is capable of
|
||||
* performing GSO on a packet. The device returns true if it is
|
||||
* able to GSO the packet, false otherwise. If the return value is
|
||||
* false the stack will do software GSO.
|
||||
* performing offload operations on a given packet. This is to give
|
||||
* the device an opportunity to implement any restrictions that cannot
|
||||
* be otherwise expressed by feature flags. The check is called with
|
||||
* the set of features that the stack has calculated and it returns
|
||||
* those the driver believes to be appropriate.
|
||||
*
|
||||
* int (*ndo_switch_parent_id_get)(struct net_device *dev,
|
||||
* struct netdev_phys_item_id *psid);
|
||||
|
|
@ -1178,8 +1181,9 @@ struct net_device_ops {
|
|||
struct net_device *dev,
|
||||
void *priv);
|
||||
int (*ndo_get_lock_subclass)(struct net_device *dev);
|
||||
bool (*ndo_gso_check) (struct sk_buff *skb,
|
||||
struct net_device *dev);
|
||||
netdev_features_t (*ndo_features_check) (struct sk_buff *skb,
|
||||
struct net_device *dev,
|
||||
netdev_features_t features);
|
||||
#ifdef CONFIG_NET_SWITCHDEV
|
||||
int (*ndo_switch_parent_id_get)(struct net_device *dev,
|
||||
struct netdev_phys_item_id *psid);
|
||||
|
|
@ -2081,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)
|
||||
|
|
@ -3611,8 +3615,6 @@ static inline bool netif_needs_gso(struct net_device *dev, struct sk_buff *skb,
|
|||
netdev_features_t features)
|
||||
{
|
||||
return skb_is_gso(skb) && (!skb_gso_ok(skb, features) ||
|
||||
(dev->netdev_ops->ndo_gso_check &&
|
||||
!dev->netdev_ops->ndo_gso_check(skb, dev)) ||
|
||||
unlikely((skb->ip_summed != CHECKSUM_PARTIAL) &&
|
||||
(skb->ip_summed != CHECKSUM_UNNECESSARY)));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,8 +46,8 @@ struct netlink_kernel_cfg {
|
|||
unsigned int flags;
|
||||
void (*input)(struct sk_buff *skb);
|
||||
struct mutex *cb_mutex;
|
||||
int (*bind)(int group);
|
||||
void (*unbind)(int group);
|
||||
int (*bind)(struct net *net, int group);
|
||||
void (*unbind)(struct net *net, int group);
|
||||
bool (*compare)(struct net *net, struct sock *sk);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -251,7 +251,7 @@ pgoff_t page_cache_prev_hole(struct address_space *mapping,
|
|||
#define FGP_NOWAIT 0x00000020
|
||||
|
||||
struct page *pagecache_get_page(struct address_space *mapping, pgoff_t offset,
|
||||
int fgp_flags, gfp_t cache_gfp_mask, gfp_t radix_gfp_mask);
|
||||
int fgp_flags, gfp_t cache_gfp_mask);
|
||||
|
||||
/**
|
||||
* find_get_page - find and get a page reference
|
||||
|
|
@ -266,13 +266,13 @@ struct page *pagecache_get_page(struct address_space *mapping, pgoff_t offset,
|
|||
static inline struct page *find_get_page(struct address_space *mapping,
|
||||
pgoff_t offset)
|
||||
{
|
||||
return pagecache_get_page(mapping, offset, 0, 0, 0);
|
||||
return pagecache_get_page(mapping, offset, 0, 0);
|
||||
}
|
||||
|
||||
static inline struct page *find_get_page_flags(struct address_space *mapping,
|
||||
pgoff_t offset, int fgp_flags)
|
||||
{
|
||||
return pagecache_get_page(mapping, offset, fgp_flags, 0, 0);
|
||||
return pagecache_get_page(mapping, offset, fgp_flags, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -292,7 +292,7 @@ static inline struct page *find_get_page_flags(struct address_space *mapping,
|
|||
static inline struct page *find_lock_page(struct address_space *mapping,
|
||||
pgoff_t offset)
|
||||
{
|
||||
return pagecache_get_page(mapping, offset, FGP_LOCK, 0, 0);
|
||||
return pagecache_get_page(mapping, offset, FGP_LOCK, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -319,7 +319,7 @@ static inline struct page *find_or_create_page(struct address_space *mapping,
|
|||
{
|
||||
return pagecache_get_page(mapping, offset,
|
||||
FGP_LOCK|FGP_ACCESSED|FGP_CREAT,
|
||||
gfp_mask, gfp_mask & GFP_RECLAIM_MASK);
|
||||
gfp_mask);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -340,8 +340,7 @@ static inline struct page *grab_cache_page_nowait(struct address_space *mapping,
|
|||
{
|
||||
return pagecache_get_page(mapping, index,
|
||||
FGP_LOCK|FGP_CREAT|FGP_NOFS|FGP_NOWAIT,
|
||||
mapping_gfp_mask(mapping),
|
||||
GFP_NOFS);
|
||||
mapping_gfp_mask(mapping));
|
||||
}
|
||||
|
||||
struct page *find_get_entry(struct address_space *mapping, pgoff_t offset);
|
||||
|
|
|
|||
|
|
@ -175,6 +175,8 @@ enum pci_dev_flags {
|
|||
PCI_DEV_FLAGS_DMA_ALIAS_DEVFN = (__force pci_dev_flags_t) (1 << 4),
|
||||
/* Use a PCIe-to-PCI bridge alias even if !pci_is_pcie */
|
||||
PCI_DEV_FLAG_PCIE_BRIDGE_ALIAS = (__force pci_dev_flags_t) (1 << 5),
|
||||
/* Do not use bus resets for device */
|
||||
PCI_DEV_FLAGS_NO_BUS_RESET = (__force pci_dev_flags_t) (1 << 6),
|
||||
};
|
||||
|
||||
enum pci_irq_reroute_variant {
|
||||
|
|
@ -1065,6 +1067,7 @@ resource_size_t pcibios_retrieve_fw_addr(struct pci_dev *dev, int idx);
|
|||
void pci_bus_assign_resources(const struct pci_bus *bus);
|
||||
void pci_bus_size_bridges(struct pci_bus *bus);
|
||||
int pci_claim_resource(struct pci_dev *, int);
|
||||
int pci_claim_bridge_resource(struct pci_dev *bridge, int i);
|
||||
void pci_assign_unassigned_resources(void);
|
||||
void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge);
|
||||
void pci_assign_unassigned_bus_resources(struct pci_bus *bus);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -271,6 +271,8 @@ typedef struct generic_pm_domain *(*genpd_xlate_t)(struct of_phandle_args *args,
|
|||
int __of_genpd_add_provider(struct device_node *np, genpd_xlate_t xlate,
|
||||
void *data);
|
||||
void of_genpd_del_provider(struct device_node *np);
|
||||
struct generic_pm_domain *of_genpd_get_from_provider(
|
||||
struct of_phandle_args *genpdspec);
|
||||
|
||||
struct generic_pm_domain *__of_genpd_xlate_simple(
|
||||
struct of_phandle_args *genpdspec,
|
||||
|
|
@ -288,6 +290,12 @@ static inline int __of_genpd_add_provider(struct device_node *np,
|
|||
}
|
||||
static inline void of_genpd_del_provider(struct device_node *np) {}
|
||||
|
||||
static inline struct generic_pm_domain *of_genpd_get_from_provider(
|
||||
struct of_phandle_args *genpdspec)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#define __of_genpd_xlate_simple NULL
|
||||
#define __of_genpd_xlate_onecell NULL
|
||||
|
||||
|
|
|
|||
|
|
@ -36,6 +36,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
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
#define THERMAL_CSTATE_INVALID -1UL
|
||||
|
||||
/* No upper/lower limit requirement */
|
||||
#define THERMAL_NO_LIMIT THERMAL_CSTATE_INVALID
|
||||
#define THERMAL_NO_LIMIT ((u32)~0)
|
||||
|
||||
/* Unit conversion macros */
|
||||
#define KELVIN_TO_CELSIUS(t) (long)(((long)t-2732 >= 0) ? \
|
||||
|
|
|
|||
|
|
@ -110,6 +110,19 @@ static inline bool timespec_valid_strict(const struct timespec *ts)
|
|||
return true;
|
||||
}
|
||||
|
||||
static inline bool timeval_valid(const struct timeval *tv)
|
||||
{
|
||||
/* Dates before 1970 are bogus */
|
||||
if (tv->tv_sec < 0)
|
||||
return false;
|
||||
|
||||
/* Can't have more microseconds then a second */
|
||||
if (tv->tv_usec < 0 || tv->tv_usec >= USEC_PER_SEC)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
extern struct timespec timespec_trunc(struct timespec t, unsigned gran);
|
||||
|
||||
#define CURRENT_TIME (current_kernel_time())
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue