Linux 3.19-rc2
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJUoKU4AAoJEHm+PkMAQRiGvzYIAJOrjgTaf/vK2sSGH0398656 wkUomtfmIqDxTGr+DB5OEf59rYODcMYjnVOWwhto9lGtu49MKor35DV0/0J5gQJb l4FE+UA8p2sE22RIAqGB2992pbRVtGpAB0q4PlCGnaYl8vyP8lRe/lozL3/lwPK8 lR7dDOsix5LU75mxqLUTmVXTSwyLW4tIHLt8qwLzJWRqJEAk1Ip1MNf9RnoSSI4C clL5FMEWj3D62a5kVvgguFypqGLnLSvNALqk2RwL3u3SMBDvwnIQD9fTpg8tCihX 2MVNP3IS2KDlPg93p8lzWk8KBTbwWRJCxLT44LexPhhHUTquZTnTg7oJeJdrRy0= =p+ym -----END PGP SIGNATURE----- Merge tag 'v3.19-rc2' into for-3.20/core Linux 3.19-rc2
This commit is contained in:
commit
5d7bf4d8f6
278 changed files with 7906 additions and 4324 deletions
|
|
@ -47,6 +47,7 @@ struct sk_buff;
|
|||
|
||||
struct audit_krule {
|
||||
int vers_ops;
|
||||
u32 pflags;
|
||||
u32 flags;
|
||||
u32 listnr;
|
||||
u32 action;
|
||||
|
|
@ -64,6 +65,9 @@ struct audit_krule {
|
|||
u64 prio;
|
||||
};
|
||||
|
||||
/* Flag to indicate legacy AUDIT_LOGINUID unset usage */
|
||||
#define AUDIT_LOGINUID_LEGACY 0x1
|
||||
|
||||
struct audit_field {
|
||||
u32 type;
|
||||
union {
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ struct clk_ops {
|
|||
unsigned long *parent_rate);
|
||||
long (*determine_rate)(struct clk_hw *hw, unsigned long rate,
|
||||
unsigned long *best_parent_rate,
|
||||
struct clk **best_parent_clk);
|
||||
struct clk_hw **best_parent_hw);
|
||||
int (*set_parent)(struct clk_hw *hw, u8 index);
|
||||
u8 (*get_parent)(struct clk_hw *hw);
|
||||
int (*set_rate)(struct clk_hw *hw, unsigned long rate,
|
||||
|
|
@ -544,16 +544,14 @@ u8 __clk_get_num_parents(struct clk *clk);
|
|||
struct clk *__clk_get_parent(struct clk *clk);
|
||||
struct clk *clk_get_parent_by_index(struct clk *clk, u8 index);
|
||||
unsigned int __clk_get_enable_count(struct clk *clk);
|
||||
unsigned int __clk_get_prepare_count(struct clk *clk);
|
||||
unsigned long __clk_get_rate(struct clk *clk);
|
||||
unsigned long __clk_get_accuracy(struct clk *clk);
|
||||
unsigned long __clk_get_flags(struct clk *clk);
|
||||
bool __clk_is_prepared(struct clk *clk);
|
||||
bool __clk_is_enabled(struct clk *clk);
|
||||
struct clk *__clk_lookup(const char *name);
|
||||
long __clk_mux_determine_rate(struct clk_hw *hw, unsigned long rate,
|
||||
unsigned long *best_parent_rate,
|
||||
struct clk **best_parent_p);
|
||||
struct clk_hw **best_parent_p);
|
||||
|
||||
/*
|
||||
* FIXME clock api without lock protection
|
||||
|
|
@ -652,7 +650,7 @@ static inline void clk_writel(u32 val, u32 __iomem *reg)
|
|||
#endif /* platform dependent I/O accessors */
|
||||
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
struct dentry *clk_debugfs_add_file(struct clk *clk, char *name, umode_t mode,
|
||||
struct dentry *clk_debugfs_add_file(struct clk_hw *hw, char *name, umode_t mode,
|
||||
void *data, const struct file_operations *fops);
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -264,7 +264,7 @@ int omap3_noncore_dpll_set_rate_and_parent(struct clk_hw *hw,
|
|||
long omap3_noncore_dpll_determine_rate(struct clk_hw *hw,
|
||||
unsigned long rate,
|
||||
unsigned long *best_parent_rate,
|
||||
struct clk **best_parent_clk);
|
||||
struct clk_hw **best_parent_clk);
|
||||
unsigned long omap4_dpll_regm4xen_recalc(struct clk_hw *hw,
|
||||
unsigned long parent_rate);
|
||||
long omap4_dpll_regm4xen_round_rate(struct clk_hw *hw,
|
||||
|
|
@ -273,7 +273,7 @@ long omap4_dpll_regm4xen_round_rate(struct clk_hw *hw,
|
|||
long omap4_dpll_regm4xen_determine_rate(struct clk_hw *hw,
|
||||
unsigned long rate,
|
||||
unsigned long *best_parent_rate,
|
||||
struct clk **best_parent_clk);
|
||||
struct clk_hw **best_parent_clk);
|
||||
u8 omap2_init_dpll_parent(struct clk_hw *hw);
|
||||
unsigned long omap3_dpll_recalc(struct clk_hw *hw, unsigned long parent_rate);
|
||||
long omap2_dpll_round_rate(struct clk_hw *hw, unsigned long target_rate,
|
||||
|
|
|
|||
|
|
@ -186,6 +186,80 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
|
|||
# define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __LINE__)
|
||||
#endif
|
||||
|
||||
#include <uapi/linux/types.h>
|
||||
|
||||
static __always_inline void data_access_exceeds_word_size(void)
|
||||
#ifdef __compiletime_warning
|
||||
__compiletime_warning("data access exceeds word size and won't be atomic")
|
||||
#endif
|
||||
;
|
||||
|
||||
static __always_inline void data_access_exceeds_word_size(void)
|
||||
{
|
||||
}
|
||||
|
||||
static __always_inline void __read_once_size(volatile void *p, void *res, int size)
|
||||
{
|
||||
switch (size) {
|
||||
case 1: *(__u8 *)res = *(volatile __u8 *)p; break;
|
||||
case 2: *(__u16 *)res = *(volatile __u16 *)p; break;
|
||||
case 4: *(__u32 *)res = *(volatile __u32 *)p; break;
|
||||
#ifdef CONFIG_64BIT
|
||||
case 8: *(__u64 *)res = *(volatile __u64 *)p; break;
|
||||
#endif
|
||||
default:
|
||||
barrier();
|
||||
__builtin_memcpy((void *)res, (const void *)p, size);
|
||||
data_access_exceeds_word_size();
|
||||
barrier();
|
||||
}
|
||||
}
|
||||
|
||||
static __always_inline void __assign_once_size(volatile void *p, void *res, int size)
|
||||
{
|
||||
switch (size) {
|
||||
case 1: *(volatile __u8 *)p = *(__u8 *)res; break;
|
||||
case 2: *(volatile __u16 *)p = *(__u16 *)res; break;
|
||||
case 4: *(volatile __u32 *)p = *(__u32 *)res; break;
|
||||
#ifdef CONFIG_64BIT
|
||||
case 8: *(volatile __u64 *)p = *(__u64 *)res; break;
|
||||
#endif
|
||||
default:
|
||||
barrier();
|
||||
__builtin_memcpy((void *)p, (const void *)res, size);
|
||||
data_access_exceeds_word_size();
|
||||
barrier();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 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
|
||||
* 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.
|
||||
*
|
||||
* 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
|
||||
* compile-time warning.
|
||||
*
|
||||
* Their two major use cases are: (1) Mediating communication between
|
||||
* process-level code and irq/NMI handlers, all running on the same CPU,
|
||||
* and (2) Ensuring that the compiler does not fold, spindle, or otherwise
|
||||
* mutilate accesses that either do not require ordering or that interact
|
||||
* with an explicit memory barrier or atomic instruction that provides the
|
||||
* required ordering.
|
||||
*/
|
||||
|
||||
#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; })
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ extern struct devfreq *devm_devfreq_add_device(struct device *dev,
|
|||
extern void devm_devfreq_remove_device(struct device *dev,
|
||||
struct devfreq *devfreq);
|
||||
|
||||
/* Supposed to be called by PM_SLEEP/PM_RUNTIME callbacks */
|
||||
/* Supposed to be called by PM callbacks */
|
||||
extern int devfreq_suspend_device(struct devfreq *devfreq);
|
||||
extern int devfreq_resume_device(struct devfreq *devfreq);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue