mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 13:44:26 -04:00
Merge branch 'linus' into tracing/ftrace
This commit is contained in:
commit
e1e302d8a9
371 changed files with 5975 additions and 2447 deletions
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
enum die_val {
|
||||
DIE_UNUSED,
|
||||
DIE_OOPS=1
|
||||
};
|
||||
|
||||
#endif /* _ASM_GENERIC_KDEBUG_H */
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ struct cgroup;
|
|||
|
||||
extern int cgroup_init_early(void);
|
||||
extern int cgroup_init(void);
|
||||
extern void cgroup_init_smp(void);
|
||||
extern void cgroup_lock(void);
|
||||
extern bool cgroup_lock_live_group(struct cgroup *cgrp);
|
||||
extern void cgroup_unlock(void);
|
||||
|
|
@ -348,8 +347,6 @@ struct cgroup_subsys {
|
|||
struct cgroupfs_root *root;
|
||||
|
||||
struct list_head sibling;
|
||||
|
||||
void *private;
|
||||
};
|
||||
|
||||
#define SUBSYS(_x) extern struct cgroup_subsys _x ## _subsys;
|
||||
|
|
@ -410,7 +407,6 @@ void cgroup_mm_owner_callbacks(struct task_struct *old,
|
|||
|
||||
static inline int cgroup_init_early(void) { return 0; }
|
||||
static inline int cgroup_init(void) { return 0; }
|
||||
static inline void cgroup_init_smp(void) {}
|
||||
static inline void cgroup_fork(struct task_struct *p) {}
|
||||
static inline void cgroup_fork_callbacks(struct task_struct *p) {}
|
||||
static inline void cgroup_post_fork(struct task_struct *p) {}
|
||||
|
|
|
|||
|
|
@ -44,11 +44,6 @@ static inline bool should_send_signal(struct task_struct *p)
|
|||
return !(p->flags & PF_FREEZER_NOSIG);
|
||||
}
|
||||
|
||||
/*
|
||||
* Wake up a frozen process
|
||||
*/
|
||||
extern int __thaw_process(struct task_struct *p);
|
||||
|
||||
/* Takes and releases task alloc lock using task_lock() */
|
||||
extern int thaw_process(struct task_struct *p);
|
||||
|
||||
|
|
|
|||
|
|
@ -489,13 +489,6 @@ struct address_space_operations {
|
|||
int (*readpages)(struct file *filp, struct address_space *mapping,
|
||||
struct list_head *pages, unsigned nr_pages);
|
||||
|
||||
/*
|
||||
* ext3 requires that a successful prepare_write() call be followed
|
||||
* by a commit_write() call - they must be balanced
|
||||
*/
|
||||
int (*prepare_write)(struct file *, struct page *, unsigned, unsigned);
|
||||
int (*commit_write)(struct file *, struct page *, unsigned, unsigned);
|
||||
|
||||
int (*write_begin)(struct file *, struct address_space *mapping,
|
||||
loff_t pos, unsigned len, unsigned flags,
|
||||
struct page **pagep, void **fsdata);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
#include <linux/types.h>
|
||||
#include <linux/kallsyms.h>
|
||||
|
||||
#ifdef CONFIG_FTRACE
|
||||
#ifdef CONFIG_FUNCTION_TRACER
|
||||
|
||||
extern int ftrace_enabled;
|
||||
extern int
|
||||
|
|
@ -36,16 +36,14 @@ void clear_ftrace_function(void);
|
|||
|
||||
extern void ftrace_stub(unsigned long a0, unsigned long a1);
|
||||
|
||||
#else /* !CONFIG_FTRACE */
|
||||
#else /* !CONFIG_FUNCTION_TRACER */
|
||||
# define register_ftrace_function(ops) do { } while (0)
|
||||
# define unregister_ftrace_function(ops) do { } while (0)
|
||||
# define clear_ftrace_function(ops) do { } while (0)
|
||||
static inline void ftrace_kill_atomic(void) { }
|
||||
#endif /* CONFIG_FTRACE */
|
||||
static inline void ftrace_kill(void) { }
|
||||
#endif /* CONFIG_FUNCTION_TRACER */
|
||||
|
||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||
# define FTRACE_HASHBITS 10
|
||||
# define FTRACE_HASHSIZE (1<<FTRACE_HASHBITS)
|
||||
|
||||
enum {
|
||||
FTRACE_FL_FREE = (1 << 0),
|
||||
|
|
@ -58,9 +56,9 @@ enum {
|
|||
};
|
||||
|
||||
struct dyn_ftrace {
|
||||
struct hlist_node node;
|
||||
unsigned long ip; /* address of mcount call-site */
|
||||
unsigned long flags;
|
||||
struct list_head list;
|
||||
unsigned long ip; /* address of mcount call-site */
|
||||
unsigned long flags;
|
||||
};
|
||||
|
||||
int ftrace_force_update(void);
|
||||
|
|
@ -71,14 +69,33 @@ extern int ftrace_ip_converted(unsigned long ip);
|
|||
extern unsigned char *ftrace_nop_replace(void);
|
||||
extern unsigned char *ftrace_call_replace(unsigned long ip, unsigned long addr);
|
||||
extern int ftrace_dyn_arch_init(void *data);
|
||||
extern int ftrace_mcount_set(unsigned long *data);
|
||||
extern int ftrace_modify_code(unsigned long ip, unsigned char *old_code,
|
||||
unsigned char *new_code);
|
||||
extern int ftrace_update_ftrace_func(ftrace_func_t func);
|
||||
extern void ftrace_caller(void);
|
||||
extern void ftrace_call(void);
|
||||
extern void mcount_call(void);
|
||||
|
||||
/**
|
||||
* ftrace_modify_code - modify code segment
|
||||
* @ip: the address of the code segment
|
||||
* @old_code: the contents of what is expected to be there
|
||||
* @new_code: the code to patch in
|
||||
*
|
||||
* This is a very sensitive operation and great care needs
|
||||
* to be taken by the arch. The operation should carefully
|
||||
* read the location, check to see if what is read is indeed
|
||||
* what we expect it to be, and then on success of the compare,
|
||||
* it should write to the location.
|
||||
*
|
||||
* Return must be:
|
||||
* 0 on success
|
||||
* -EFAULT on error reading the location
|
||||
* -EINVAL on a failed compare of the contents
|
||||
* -EPERM on error writing to the location
|
||||
* Any other value will be considered a failure.
|
||||
*/
|
||||
extern int ftrace_modify_code(unsigned long ip, unsigned char *old_code,
|
||||
unsigned char *new_code);
|
||||
|
||||
extern int skip_trace(unsigned long ip);
|
||||
|
||||
extern void ftrace_release(void *start, unsigned long size);
|
||||
|
|
@ -97,11 +114,10 @@ static inline void ftrace_release(void *start, unsigned long size) { }
|
|||
|
||||
/* totally disable ftrace - can not re-enable after this */
|
||||
void ftrace_kill(void);
|
||||
void ftrace_kill_atomic(void);
|
||||
|
||||
static inline void tracer_disable(void)
|
||||
{
|
||||
#ifdef CONFIG_FTRACE
|
||||
#ifdef CONFIG_FUNCTION_TRACER
|
||||
ftrace_enabled = 0;
|
||||
#endif
|
||||
}
|
||||
|
|
@ -113,7 +129,7 @@ static inline void tracer_disable(void)
|
|||
*/
|
||||
static inline int __ftrace_enabled_save(void)
|
||||
{
|
||||
#ifdef CONFIG_FTRACE
|
||||
#ifdef CONFIG_FUNCTION_TRACER
|
||||
int saved_ftrace_enabled = ftrace_enabled;
|
||||
ftrace_enabled = 0;
|
||||
return saved_ftrace_enabled;
|
||||
|
|
@ -124,7 +140,7 @@ static inline int __ftrace_enabled_save(void)
|
|||
|
||||
static inline void __ftrace_enabled_restore(int enabled)
|
||||
{
|
||||
#ifdef CONFIG_FTRACE
|
||||
#ifdef CONFIG_FUNCTION_TRACER
|
||||
ftrace_enabled = enabled;
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -410,6 +410,7 @@ struct hid_output_fifo {
|
|||
#define HID_SUSPENDED 5
|
||||
#define HID_CLEAR_HALT 6
|
||||
#define HID_DISCONNECTED 7
|
||||
#define HID_STARTED 8
|
||||
|
||||
struct hid_input {
|
||||
struct list_head list;
|
||||
|
|
|
|||
|
|
@ -116,6 +116,8 @@ extern int _cond_resched(void);
|
|||
# define might_resched() do { } while (0)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DEBUG_SPINLOCK_SLEEP
|
||||
void __might_sleep(char *file, int line);
|
||||
/**
|
||||
* might_sleep - annotation for functions that can sleep
|
||||
*
|
||||
|
|
@ -126,8 +128,6 @@ extern int _cond_resched(void);
|
|||
* be bitten later when the calling function happens to sleep when it is not
|
||||
* supposed to.
|
||||
*/
|
||||
#ifdef CONFIG_DEBUG_SPINLOCK_SLEEP
|
||||
void __might_sleep(char *file, int line);
|
||||
# define might_sleep() \
|
||||
do { __might_sleep(__FILE__, __LINE__); might_resched(); } while (0)
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -489,6 +489,9 @@ struct kvm_assigned_pci_dev {
|
|||
__u32 busnr;
|
||||
__u32 devfn;
|
||||
__u32 flags;
|
||||
union {
|
||||
__u32 reserved[12];
|
||||
};
|
||||
};
|
||||
|
||||
struct kvm_assigned_irq {
|
||||
|
|
@ -496,6 +499,9 @@ struct kvm_assigned_irq {
|
|||
__u32 host_irq;
|
||||
__u32 guest_irq;
|
||||
__u32 flags;
|
||||
union {
|
||||
__u32 reserved[12];
|
||||
};
|
||||
};
|
||||
|
||||
#define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
|
||||
|
|
|
|||
|
|
@ -37,6 +37,8 @@
|
|||
#define KVM_REQ_UNHALT 6
|
||||
#define KVM_REQ_MMU_SYNC 7
|
||||
|
||||
#define KVM_USERSPACE_IRQ_SOURCE_ID 0
|
||||
|
||||
struct kvm_vcpu;
|
||||
extern struct kmem_cache *kvm_vcpu_cache;
|
||||
|
||||
|
|
@ -306,15 +308,18 @@ struct kvm_assigned_dev_kernel {
|
|||
int host_irq;
|
||||
int guest_irq;
|
||||
int irq_requested;
|
||||
int irq_source_id;
|
||||
struct pci_dev *dev;
|
||||
struct kvm *kvm;
|
||||
};
|
||||
void kvm_set_irq(struct kvm *kvm, int irq, int level);
|
||||
void kvm_set_irq(struct kvm *kvm, int irq_source_id, int irq, int level);
|
||||
void kvm_notify_acked_irq(struct kvm *kvm, unsigned gsi);
|
||||
void kvm_register_irq_ack_notifier(struct kvm *kvm,
|
||||
struct kvm_irq_ack_notifier *kian);
|
||||
void kvm_unregister_irq_ack_notifier(struct kvm *kvm,
|
||||
struct kvm_irq_ack_notifier *kian);
|
||||
int kvm_request_irq_source_id(struct kvm *kvm);
|
||||
void kvm_free_irq_source_id(struct kvm *kvm, int irq_source_id);
|
||||
|
||||
#ifdef CONFIG_DMAR
|
||||
int kvm_iommu_map_pages(struct kvm *kvm, gfn_t base_gfn,
|
||||
|
|
|
|||
|
|
@ -135,6 +135,7 @@ struct usb_device_id {
|
|||
|
||||
struct hid_device_id {
|
||||
__u16 bus;
|
||||
__u16 pad1;
|
||||
__u32 vendor;
|
||||
__u32 product;
|
||||
kernel_ulong_t driver_data
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ struct phonetmsg {
|
|||
} pn_msg_u;
|
||||
};
|
||||
#define PN_COMMON_MESSAGE 0xF0
|
||||
#define PN_COMMGR 0x10
|
||||
#define PN_PREFIX 0xE0 /* resource for extended messages */
|
||||
#define pn_submsg_id pn_msg_u.base.pn_submsg_id
|
||||
#define pn_e_submsg_id pn_msg_u.ext.pn_e_submsg_id
|
||||
|
|
|
|||
|
|
@ -59,10 +59,10 @@ struct rlimit {
|
|||
#define _STK_LIM (8*1024*1024)
|
||||
|
||||
/*
|
||||
* GPG wants 32kB of mlocked memory, to make sure pass phrases
|
||||
* GPG2 wants 64kB of mlocked memory, to make sure pass phrases
|
||||
* and other sensitive information are never written to disk.
|
||||
*/
|
||||
#define MLOCK_LIMIT (8 * PAGE_SIZE)
|
||||
#define MLOCK_LIMIT ((PAGE_SIZE > 64*1024) ? PAGE_SIZE : 64*1024)
|
||||
|
||||
/*
|
||||
* Due to binary compatibility, the actual resource numbers
|
||||
|
|
|
|||
|
|
@ -936,7 +936,6 @@ struct sched_class {
|
|||
void (*enqueue_task) (struct rq *rq, struct task_struct *p, int wakeup);
|
||||
void (*dequeue_task) (struct rq *rq, struct task_struct *p, int sleep);
|
||||
void (*yield_task) (struct rq *rq);
|
||||
int (*select_task_rq)(struct task_struct *p, int sync);
|
||||
|
||||
void (*check_preempt_curr) (struct rq *rq, struct task_struct *p, int sync);
|
||||
|
||||
|
|
@ -944,6 +943,8 @@ struct sched_class {
|
|||
void (*put_prev_task) (struct rq *rq, struct task_struct *p);
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
int (*select_task_rq)(struct task_struct *p, int sync);
|
||||
|
||||
unsigned long (*load_balance) (struct rq *this_rq, int this_cpu,
|
||||
struct rq *busiest, unsigned long max_load_move,
|
||||
struct sched_domain *sd, enum cpu_idle_type idle,
|
||||
|
|
@ -955,16 +956,17 @@ struct sched_class {
|
|||
void (*pre_schedule) (struct rq *this_rq, struct task_struct *task);
|
||||
void (*post_schedule) (struct rq *this_rq);
|
||||
void (*task_wake_up) (struct rq *this_rq, struct task_struct *task);
|
||||
#endif
|
||||
|
||||
void (*set_curr_task) (struct rq *rq);
|
||||
void (*task_tick) (struct rq *rq, struct task_struct *p, int queued);
|
||||
void (*task_new) (struct rq *rq, struct task_struct *p);
|
||||
void (*set_cpus_allowed)(struct task_struct *p,
|
||||
const cpumask_t *newmask);
|
||||
|
||||
void (*rq_online)(struct rq *rq);
|
||||
void (*rq_offline)(struct rq *rq);
|
||||
#endif
|
||||
|
||||
void (*set_curr_task) (struct rq *rq);
|
||||
void (*task_tick) (struct rq *rq, struct task_struct *p, int queued);
|
||||
void (*task_new) (struct rq *rq, struct task_struct *p);
|
||||
|
||||
void (*switched_from) (struct rq *this_rq, struct task_struct *task,
|
||||
int running);
|
||||
|
|
|
|||
|
|
@ -1585,6 +1585,7 @@ int security_syslog(int type);
|
|||
int security_settime(struct timespec *ts, struct timezone *tz);
|
||||
int security_vm_enough_memory(long pages);
|
||||
int security_vm_enough_memory_mm(struct mm_struct *mm, long pages);
|
||||
int security_vm_enough_memory_kern(long pages);
|
||||
int security_bprm_alloc(struct linux_binprm *bprm);
|
||||
void security_bprm_free(struct linux_binprm *bprm);
|
||||
void security_bprm_apply_creds(struct linux_binprm *bprm, int unsafe);
|
||||
|
|
@ -1820,6 +1821,11 @@ static inline int security_vm_enough_memory(long pages)
|
|||
return cap_vm_enough_memory(current->mm, pages);
|
||||
}
|
||||
|
||||
static inline int security_vm_enough_memory_kern(long pages)
|
||||
{
|
||||
return cap_vm_enough_memory(current->mm, pages);
|
||||
}
|
||||
|
||||
static inline int security_vm_enough_memory_mm(struct mm_struct *mm, long pages)
|
||||
{
|
||||
return cap_vm_enough_memory(mm, pages);
|
||||
|
|
|
|||
|
|
@ -18,6 +18,9 @@
|
|||
* duplex (MicroWire) controllers. Provide chipslect() and txrx_bufs(),
|
||||
* and custom setup()/cleanup() methods.
|
||||
*/
|
||||
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
struct spi_bitbang {
|
||||
struct workqueue_struct *workqueue;
|
||||
struct work_struct work;
|
||||
|
|
|
|||
|
|
@ -1474,7 +1474,6 @@ void ieee80211_tx_status_irqsafe(struct ieee80211_hw *hw,
|
|||
* ieee80211_beacon_get - beacon generation function
|
||||
* @hw: pointer obtained from ieee80211_alloc_hw().
|
||||
* @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf.
|
||||
* @control: will be filled with information needed to send this beacon.
|
||||
*
|
||||
* If the beacon frames are generated by the host system (i.e., not in
|
||||
* hardware/firmware), the low-level driver uses this function to receive
|
||||
|
|
@ -1575,7 +1574,6 @@ __le16 ieee80211_generic_frame_duration(struct ieee80211_hw *hw,
|
|||
* ieee80211_get_buffered_bc - accessing buffered broadcast and multicast frames
|
||||
* @hw: pointer as obtained from ieee80211_alloc_hw().
|
||||
* @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf.
|
||||
* @control: will be filled with information needed to send returned frame.
|
||||
*
|
||||
* Function for accessing buffered broadcast and multicast frames. If
|
||||
* hardware/firmware does not implement buffering of broadcast/multicast
|
||||
|
|
@ -1623,9 +1621,8 @@ unsigned int ieee80211_hdrlen(__le16 fc);
|
|||
*
|
||||
* @keyconf: the parameter passed with the set key
|
||||
* @skb: the skb for which the key is needed
|
||||
* @rc4key: a buffer to which the key will be written
|
||||
* @type: TBD
|
||||
* @key: TBD
|
||||
* @key: a buffer to which the key will be written
|
||||
*/
|
||||
void ieee80211_get_tkip_key(struct ieee80211_key_conf *keyconf,
|
||||
struct sk_buff *skb,
|
||||
|
|
@ -1726,7 +1723,8 @@ void ieee80211_iterate_active_interfaces_atomic(struct ieee80211_hw *hw,
|
|||
* @hw: pointer as obtained from ieee80211_alloc_hw().
|
||||
* @ra: receiver address of the BA session recipient
|
||||
* @tid: the TID to BA on.
|
||||
* @return: success if addBA request was sent, failure otherwise
|
||||
*
|
||||
* Return: success if addBA request was sent, failure otherwise
|
||||
*
|
||||
* Although mac80211/low level driver/user space application can estimate
|
||||
* the need to start aggregation on a certain RA/TID, the session level
|
||||
|
|
@ -1764,7 +1762,8 @@ void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra,
|
|||
* @ra: receiver address of the BA session recipient
|
||||
* @tid: the TID to stop BA.
|
||||
* @initiator: if indicates initiator DELBA frame will be sent.
|
||||
* @return: error if no sta with matching da found, success otherwise
|
||||
*
|
||||
* Return: error if no sta with matching da found, success otherwise
|
||||
*
|
||||
* Although mac80211/low level driver/user space application can estimate
|
||||
* the need to stop aggregation on a certain RA/TID, the session level
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
* The lower layers may not require more space, ever. Make sure it's
|
||||
* enough.
|
||||
*/
|
||||
#define MAX_PHONET_HEADER 8
|
||||
#define MAX_PHONET_HEADER (8 + MAX_HEADER)
|
||||
|
||||
/*
|
||||
* Every Phonet* socket has this structure first in its
|
||||
|
|
|
|||
|
|
@ -140,8 +140,18 @@ static inline struct scsi_cmnd *scsi_find_tag(struct scsi_device *sdev, int tag)
|
|||
*/
|
||||
static inline int scsi_init_shared_tag_map(struct Scsi_Host *shost, int depth)
|
||||
{
|
||||
shost->bqt = blk_init_tags(depth);
|
||||
return shost->bqt ? 0 : -ENOMEM;
|
||||
/*
|
||||
* If the shared tag map isn't already initialized, do it now.
|
||||
* This saves callers from having to check ->bqt when setting up
|
||||
* devices on the shared host (for libata)
|
||||
*/
|
||||
if (!shost->bqt) {
|
||||
shost->bqt = blk_init_tags(depth);
|
||||
if (!shost->bqt)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -28,7 +28,8 @@
|
|||
*/
|
||||
#define SOC_SINGLE_VALUE(xreg, xshift, xmax, xinvert) \
|
||||
((unsigned long)&(struct soc_mixer_control) \
|
||||
{.reg = xreg, .shift = xshift, .max = xmax, .invert = xinvert})
|
||||
{.reg = xreg, .shift = xshift, .rshift = xshift, .max = xmax, \
|
||||
.invert = xinvert})
|
||||
#define SOC_SINGLE_VALUE_EXT(xreg, xmax, xinvert) \
|
||||
((unsigned long)&(struct soc_mixer_control) \
|
||||
{.reg = xreg, .max = xmax, .invert = xinvert})
|
||||
|
|
|
|||
Loading…
Reference in a new issue