mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-26 06:33:19 -04:00
Merge branch 'android11-5.4' into 'android11-5.4-lts'
Sync up with android11-5.4 for the following commits:0821bcfb48UPSTREAM: mm/cma.c: remove redundant cma_mutex lock2d5e3ef632ANDROID: ABI: update allowed list for galaxye3e60153a4BACKPORT: remoteproc: core: Remove casting to rproc_handle_resource_t046c52c95bUPSTREAM: scsi: ufs: ufs-mediatek: Correct operator & -> &&0475956802UPSTREAM: kbuild: do not include include/config/auto.conf from adjust_autoksyms.sh24797c44c3UPSTREAM: udp: ipv4: manipulate network header of NATed UDP GRO fraglist550b2c0dceUPSTREAM: net: fix use-after-free when UDP GRO with shared fragliste7e2f8329cUPSTREAM: scsi: ufs: Fix possible power drain during system suspend2e09274b7cUPSTREAM: scsi: ufs: Re-enable WriteBooster after device resetb55ed54016UPSTREAM: driver: core: Fix list corruption after device_del()d9d13f4b76UPSTREAM: f2fs: fix double free of unicode mapbe192b51bfUPSTREAM: sched/fair: Prefer prev cpu in asymmetric wakeup path3f54d632a6UPSTREAM: scsi: ufshcd: Fix missing destroy_workqueue()e6d3c97bacUPSTREAM: xfrm/compat: Translate by copying XFRMA_UNSPEC attribute957e971ed9UPSTREAM: xfrm/compat: memset(0) 64-bit padding at right placeee97d20c7eUPSTREAM: xfrm/compat: Don't allocate memory with __GFP_ZEROa9cedd3032BACKPORT: scsi: ufs: Fix missing brace warning for old compilersdee5558ec9UPSTREAM: net: xfrm: fix memory leak in xfrm_user_policy()7db1c96c2dBACKPORT: net: ethtool: add missing NETIF_F_GSO_FRAGLIST feature string305c5f5486UPSTREAM: mac80211_hwsim: use GFP_ATOMIC under spin lock48ffcbf0b9FROMGIT: kbuild: update config_data.gz only when the content of .config is changedc8cd528e75ANDROID: ABI: add pm_system_cancel_wakeup symbolff320df3e0ANDROID: power: export pm_system_cancel_wakeupdd2e0a80f1ANDROID: ABI: Update allowed list for QCOMfad2655cb7ANDROID: Incremental fs: Set credentials before reading/writinga035201d12Revert "ANDROID: Incremental fs: Fix memory leak on closing file"dbee4e7bc4Revert "ANDROID: Incremental fs: Set credentials before reading/writing"b6221e3495Revert "ANDROID: Incremental fs: Fix selinux issues"0ade8c4105ANDROID: ABI: update allowed list for QCOMccdcd307cfANDROID: Update the KMI for virtual platform modulesb3f4130630ANDROID: ABI: Update symbol list for imx67e9dbddb5ANDROID: clang: update to 12.0.591d8a13f43FROMGIT: virt_wifi: Return micros for BSS TSF values Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I30c2b4a86d0dfc93b4db35b9c135d0c25c4b5acb
This commit is contained in:
commit
f240fdcff5
28 changed files with 3313 additions and 3226 deletions
1
kernel/.gitignore
vendored
1
kernel/.gitignore
vendored
|
|
@ -1,6 +1,7 @@
|
|||
#
|
||||
# Generated files
|
||||
#
|
||||
config_data
|
||||
kheaders.md5
|
||||
timeconst.h
|
||||
hz.bc
|
||||
|
|
|
|||
|
|
@ -127,10 +127,15 @@ KCOV_INSTRUMENT_stackleak.o := n
|
|||
|
||||
$(obj)/configs.o: $(obj)/config_data.gz
|
||||
|
||||
targets += config_data.gz
|
||||
$(obj)/config_data.gz: $(KCONFIG_CONFIG) FORCE
|
||||
targets += config_data config_data.gz
|
||||
$(obj)/config_data.gz: $(obj)/config_data FORCE
|
||||
$(call if_changed,gzip)
|
||||
|
||||
filechk_cat = cat $<
|
||||
|
||||
$(obj)/config_data: $(KCONFIG_CONFIG) FORCE
|
||||
$(call filechk,cat)
|
||||
|
||||
$(obj)/kheaders.o: $(obj)/kheaders_data.tar.xz
|
||||
|
||||
quiet_cmd_genikh = CHK $(obj)/kheaders_data.tar.xz
|
||||
|
|
|
|||
|
|
@ -6085,21 +6085,21 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int t
|
|||
static int
|
||||
select_idle_capacity(struct task_struct *p, struct sched_domain *sd, int target)
|
||||
{
|
||||
unsigned long best_cap = 0;
|
||||
unsigned long task_util, best_cap = 0;
|
||||
int cpu, best_cpu = -1;
|
||||
struct cpumask *cpus;
|
||||
|
||||
sync_entity_load_avg(&p->se);
|
||||
|
||||
cpus = this_cpu_cpumask_var_ptr(select_idle_mask);
|
||||
cpumask_and(cpus, sched_domain_span(sd), p->cpus_ptr);
|
||||
|
||||
task_util = uclamp_task_util(p);
|
||||
|
||||
for_each_cpu_wrap(cpu, cpus, target) {
|
||||
unsigned long cpu_cap = capacity_of(cpu);
|
||||
|
||||
if (!available_idle_cpu(cpu) && !sched_idle_cpu(cpu))
|
||||
continue;
|
||||
if (task_fits_capacity(p, cpu_cap))
|
||||
if (fits_capacity(task_util, cpu_cap))
|
||||
return cpu;
|
||||
|
||||
if (cpu_cap > best_cap) {
|
||||
|
|
@ -6111,14 +6111,60 @@ select_idle_capacity(struct task_struct *p, struct sched_domain *sd, int target)
|
|||
return best_cpu;
|
||||
}
|
||||
|
||||
static inline bool asym_fits_capacity(int task_util, int cpu)
|
||||
{
|
||||
if (static_branch_unlikely(&sched_asym_cpucapacity))
|
||||
return fits_capacity(task_util, capacity_of(cpu));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Try and locate an idle core/thread in the LLC cache domain.
|
||||
*/
|
||||
static int select_idle_sibling(struct task_struct *p, int prev, int target)
|
||||
{
|
||||
struct sched_domain *sd;
|
||||
unsigned long task_util;
|
||||
int i, recent_used_cpu;
|
||||
|
||||
/*
|
||||
* On asymmetric system, update task utilization because we will check
|
||||
* that the task fits with cpu's capacity.
|
||||
*/
|
||||
if (static_branch_unlikely(&sched_asym_cpucapacity)) {
|
||||
sync_entity_load_avg(&p->se);
|
||||
task_util = uclamp_task_util(p);
|
||||
}
|
||||
|
||||
if ((available_idle_cpu(target) || sched_idle_cpu(target)) &&
|
||||
asym_fits_capacity(task_util, target))
|
||||
return target;
|
||||
|
||||
/*
|
||||
* If the previous CPU is cache affine and idle, don't be stupid:
|
||||
*/
|
||||
if (prev != target && cpus_share_cache(prev, target) &&
|
||||
(available_idle_cpu(prev) || sched_idle_cpu(prev)) &&
|
||||
asym_fits_capacity(task_util, prev))
|
||||
return prev;
|
||||
|
||||
/* Check a recently used CPU as a potential idle candidate: */
|
||||
recent_used_cpu = p->recent_used_cpu;
|
||||
if (recent_used_cpu != prev &&
|
||||
recent_used_cpu != target &&
|
||||
cpus_share_cache(recent_used_cpu, target) &&
|
||||
(available_idle_cpu(recent_used_cpu) || sched_idle_cpu(recent_used_cpu)) &&
|
||||
cpumask_test_cpu(p->recent_used_cpu, p->cpus_ptr) &&
|
||||
asym_fits_capacity(task_util, recent_used_cpu)) {
|
||||
/*
|
||||
* Replace recent_used_cpu with prev as it is a potential
|
||||
* candidate for the next wake:
|
||||
*/
|
||||
p->recent_used_cpu = prev;
|
||||
return recent_used_cpu;
|
||||
}
|
||||
|
||||
/*
|
||||
* For asymmetric CPU capacity systems, our domain of interest is
|
||||
* sd_asym_cpucapacity rather than sd_llc.
|
||||
|
|
@ -6133,37 +6179,10 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target)
|
|||
* SD_ASYM_CPUCAPACITY. These should follow the usual symmetric
|
||||
* capacity path.
|
||||
*/
|
||||
if (!sd)
|
||||
goto symmetric;
|
||||
|
||||
i = select_idle_capacity(p, sd, target);
|
||||
return ((unsigned)i < nr_cpumask_bits) ? i : target;
|
||||
}
|
||||
|
||||
symmetric:
|
||||
if (available_idle_cpu(target) || sched_idle_cpu(target))
|
||||
return target;
|
||||
|
||||
/*
|
||||
* If the previous CPU is cache affine and idle, don't be stupid:
|
||||
*/
|
||||
if (prev != target && cpus_share_cache(prev, target) &&
|
||||
(available_idle_cpu(prev) || sched_idle_cpu(prev)))
|
||||
return prev;
|
||||
|
||||
/* Check a recently used CPU as a potential idle candidate: */
|
||||
recent_used_cpu = p->recent_used_cpu;
|
||||
if (recent_used_cpu != prev &&
|
||||
recent_used_cpu != target &&
|
||||
cpus_share_cache(recent_used_cpu, target) &&
|
||||
(available_idle_cpu(recent_used_cpu) || sched_idle_cpu(recent_used_cpu)) &&
|
||||
cpumask_test_cpu(p->recent_used_cpu, p->cpus_ptr)) {
|
||||
/*
|
||||
* Replace recent_used_cpu with prev as it is a potential
|
||||
* candidate for the next wake:
|
||||
*/
|
||||
p->recent_used_cpu = prev;
|
||||
return recent_used_cpu;
|
||||
if (sd) {
|
||||
i = select_idle_capacity(p, sd, target);
|
||||
return ((unsigned)i < nr_cpumask_bits) ? i : target;
|
||||
}
|
||||
}
|
||||
|
||||
sd = rcu_dereference(per_cpu(sd_llc, target));
|
||||
|
|
|
|||
Loading…
Reference in a new issue