mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 14:42:37 +02:00
Merge branch 'linaro-android-3.10-lsk' of git://android.git.linaro.org/kernel/linaro-android into lsk-v3.10-aosp
This commit is contained in:
commit
d88f67b844
|
|
@ -20,6 +20,7 @@ LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name)
|
|||
KBUILD_DEFCONFIG := defconfig
|
||||
|
||||
KBUILD_CFLAGS += -mgeneral-regs-only
|
||||
KBUILD_CFLAGS += -fno-pic
|
||||
KBUILD_CPPFLAGS += -mlittle-endian
|
||||
AS += -EL
|
||||
LD += -EL
|
||||
|
|
|
|||
|
|
@ -107,6 +107,7 @@ struct cpufreq_interactive_tunables {
|
|||
int boostpulse_duration_val;
|
||||
/* End time of boost pulse in ktime converted to usecs */
|
||||
u64 boostpulse_endtime;
|
||||
bool boosted;
|
||||
/*
|
||||
* Max additional time to wait in idle, beyond timer_rate, at speeds
|
||||
* above minimum before wakeup to reduce speed, or -1 if unnecessary.
|
||||
|
|
@ -384,7 +385,6 @@ static void cpufreq_interactive_timer(unsigned long data)
|
|||
unsigned int loadadjfreq;
|
||||
unsigned int index;
|
||||
unsigned long flags;
|
||||
bool boosted;
|
||||
|
||||
if (!down_read_trylock(&pcpu->enable_sem))
|
||||
return;
|
||||
|
|
@ -404,9 +404,9 @@ static void cpufreq_interactive_timer(unsigned long data)
|
|||
do_div(cputime_speedadj, delta_time);
|
||||
loadadjfreq = (unsigned int)cputime_speedadj * 100;
|
||||
cpu_load = loadadjfreq / pcpu->target_freq;
|
||||
boosted = tunables->boost_val || now < tunables->boostpulse_endtime;
|
||||
tunables->boosted = tunables->boost_val || now < tunables->boostpulse_endtime;
|
||||
|
||||
if (cpu_load >= tunables->go_hispeed_load || boosted) {
|
||||
if (cpu_load >= tunables->go_hispeed_load || tunables->boosted) {
|
||||
if (pcpu->target_freq < tunables->hispeed_freq) {
|
||||
new_freq = tunables->hispeed_freq;
|
||||
} else {
|
||||
|
|
@ -467,12 +467,13 @@ static void cpufreq_interactive_timer(unsigned long data)
|
|||
* (or the indefinite boost is turned off).
|
||||
*/
|
||||
|
||||
if (!boosted || new_freq > tunables->hispeed_freq) {
|
||||
if (!tunables->boosted || new_freq > tunables->hispeed_freq) {
|
||||
pcpu->floor_freq = new_freq;
|
||||
pcpu->floor_validate_time = now;
|
||||
}
|
||||
|
||||
if (pcpu->target_freq == new_freq) {
|
||||
if (pcpu->target_freq == new_freq &&
|
||||
pcpu->target_freq <= pcpu->policy->cur) {
|
||||
trace_cpufreq_interactive_already(
|
||||
data, cpu_load, pcpu->target_freq,
|
||||
pcpu->policy->cur, new_freq);
|
||||
|
|
@ -624,19 +625,21 @@ static int cpufreq_interactive_speedchange_task(void *data)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void cpufreq_interactive_boost(void)
|
||||
static void cpufreq_interactive_boost(struct cpufreq_interactive_tunables *tunables)
|
||||
{
|
||||
int i;
|
||||
int anyboost = 0;
|
||||
unsigned long flags[2];
|
||||
struct cpufreq_interactive_cpuinfo *pcpu;
|
||||
struct cpufreq_interactive_tunables *tunables;
|
||||
|
||||
tunables->boosted = true;
|
||||
|
||||
spin_lock_irqsave(&speedchange_cpumask_lock, flags[0]);
|
||||
|
||||
for_each_online_cpu(i) {
|
||||
pcpu = &per_cpu(cpuinfo, i);
|
||||
tunables = pcpu->policy->governor_data;
|
||||
if (tunables != pcpu->policy->governor_data)
|
||||
continue;
|
||||
|
||||
spin_lock_irqsave(&pcpu->target_freq_lock, flags[1]);
|
||||
if (pcpu->target_freq < tunables->hispeed_freq) {
|
||||
|
|
@ -949,7 +952,8 @@ static ssize_t store_boost(struct cpufreq_interactive_tunables *tunables,
|
|||
|
||||
if (tunables->boost_val) {
|
||||
trace_cpufreq_interactive_boost("on");
|
||||
cpufreq_interactive_boost();
|
||||
if (!tunables->boosted)
|
||||
cpufreq_interactive_boost(tunables);
|
||||
} else {
|
||||
tunables->boostpulse_endtime = ktime_to_us(ktime_get());
|
||||
trace_cpufreq_interactive_unboost("off");
|
||||
|
|
@ -971,7 +975,8 @@ static ssize_t store_boostpulse(struct cpufreq_interactive_tunables *tunables,
|
|||
tunables->boostpulse_endtime = ktime_to_us(ktime_get()) +
|
||||
tunables->boostpulse_duration_val;
|
||||
trace_cpufreq_interactive_boost("pulse");
|
||||
cpufreq_interactive_boost();
|
||||
if (!tunables->boosted)
|
||||
cpufreq_interactive_boost(tunables);
|
||||
return count;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
#include <linux/miscdevice.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/rtmutex.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/nsproxy.h>
|
||||
#include <linux/poll.h>
|
||||
|
|
@ -42,7 +43,7 @@
|
|||
#include "binder.h"
|
||||
#include "binder_trace.h"
|
||||
|
||||
static DEFINE_MUTEX(binder_main_lock);
|
||||
static DEFINE_RT_MUTEX(binder_main_lock);
|
||||
static DEFINE_MUTEX(binder_deferred_lock);
|
||||
static DEFINE_MUTEX(binder_mmap_lock);
|
||||
|
||||
|
|
@ -420,14 +421,14 @@ static long task_close_fd(struct binder_proc *proc, unsigned int fd)
|
|||
static inline void binder_lock(const char *tag)
|
||||
{
|
||||
trace_binder_lock(tag);
|
||||
mutex_lock(&binder_main_lock);
|
||||
rt_mutex_lock(&binder_main_lock);
|
||||
trace_binder_locked(tag);
|
||||
}
|
||||
|
||||
static inline void binder_unlock(const char *tag)
|
||||
{
|
||||
trace_binder_unlock(tag);
|
||||
mutex_unlock(&binder_main_lock);
|
||||
rt_mutex_unlock(&binder_main_lock);
|
||||
}
|
||||
|
||||
static void binder_set_nice(long nice)
|
||||
|
|
|
|||
|
|
@ -136,13 +136,13 @@ void adf_modeinfo_to_fb_videomode(const struct drm_mode_modeinfo *mode,
|
|||
vmode->vsync_len = mode->vsync_end - mode->vsync_start;
|
||||
|
||||
vmode->sync = 0;
|
||||
if (mode->flags | DRM_MODE_FLAG_PHSYNC)
|
||||
if (mode->flags & DRM_MODE_FLAG_PHSYNC)
|
||||
vmode->sync |= FB_SYNC_HOR_HIGH_ACT;
|
||||
if (mode->flags | DRM_MODE_FLAG_PVSYNC)
|
||||
if (mode->flags & DRM_MODE_FLAG_PVSYNC)
|
||||
vmode->sync |= FB_SYNC_VERT_HIGH_ACT;
|
||||
if (mode->flags | DRM_MODE_FLAG_PCSYNC)
|
||||
if (mode->flags & DRM_MODE_FLAG_PCSYNC)
|
||||
vmode->sync |= FB_SYNC_COMP_HIGH_ACT;
|
||||
if (mode->flags | DRM_MODE_FLAG_BCAST)
|
||||
if (mode->flags & DRM_MODE_FLAG_BCAST)
|
||||
vmode->sync |= FB_SYNC_BROADCAST;
|
||||
|
||||
vmode->vmode = 0;
|
||||
|
|
|
|||
|
|
@ -34,7 +34,9 @@ static int try_to_freeze_tasks(bool user_only)
|
|||
unsigned int elapsed_msecs;
|
||||
bool wakeup = false;
|
||||
int sleep_usecs = USEC_PER_MSEC;
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
char suspend_abort[MAX_SUSPEND_ABORT_LEN];
|
||||
#endif
|
||||
|
||||
do_gettimeofday(&start);
|
||||
|
||||
|
|
@ -64,9 +66,11 @@ static int try_to_freeze_tasks(bool user_only)
|
|||
break;
|
||||
|
||||
if (pm_wakeup_pending()) {
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
pm_get_active_wakeup_sources(suspend_abort,
|
||||
MAX_SUSPEND_ABORT_LEN);
|
||||
log_suspend_abort_reason(suspend_abort);
|
||||
#endif
|
||||
wakeup = true;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -214,6 +214,8 @@ static struct sock *ping_lookup(struct net *net, struct sk_buff *skb, u16 ident)
|
|||
&ipv6_hdr(skb)->daddr))
|
||||
continue;
|
||||
#endif
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (sk->sk_bound_dev_if && sk->sk_bound_dev_if != dif)
|
||||
|
|
|
|||
|
|
@ -1525,7 +1525,9 @@ int ipv6_chk_addr(struct net *net, const struct in6_addr *addr,
|
|||
if (!net_eq(dev_net(ifp->idev->dev), net))
|
||||
continue;
|
||||
if (ipv6_addr_equal(&ifp->addr, addr) &&
|
||||
!(ifp->flags&IFA_F_TENTATIVE) &&
|
||||
(!(ifp->flags&IFA_F_TENTATIVE) ||
|
||||
(ipv6_use_optimistic_addr(ifp->idev) &&
|
||||
ifp->flags&IFA_F_OPTIMISTIC)) &&
|
||||
(dev == NULL || ifp->idev->dev == dev ||
|
||||
!(ifp->scope&(IFA_LINK|IFA_HOST) || strict))) {
|
||||
rcu_read_unlock_bh();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user