mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler updates from Ingo Molnar:
"The main changes in this cycle were:
- another round of rq-clock handling debugging, robustization and
fixes
- PELT accounting improvements
- CPU hotplug related ->cpus_allowed affinity handling fixes all
around the tree
- ... plus misc fixes, cleanups and updates"
* 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (35 commits)
sched/x86: Update reschedule warning text
crypto: N2 - Replace racy task affinity logic
cpufreq/sparc-us2e: Replace racy task affinity logic
cpufreq/sparc-us3: Replace racy task affinity logic
cpufreq/sh: Replace racy task affinity logic
cpufreq/ia64: Replace racy task affinity logic
ACPI/processor: Replace racy task affinity logic
ACPI/processor: Fix error handling in __acpi_processor_start()
sparc/sysfs: Replace racy task affinity logic
powerpc/smp: Replace open coded task affinity logic
ia64/sn/hwperf: Replace racy task affinity logic
ia64/salinfo: Replace racy task affinity logic
workqueue: Provide work_on_cpu_safe()
ia64/topology: Remove cpus_allowed manipulation
sched/fair: Move the PELT constants into a generated header
sched/fair: Increase PELT accuracy for small tasks
sched/fair: Fix comments
sched/Documentation: Add 'sched-pelt' tool
sched/fair: Fix corner case in __accumulate_sum()
sched/core: Remove 'task' parameter and rename tsk_restore_flags() to current_restore_flags()
...
This commit is contained in:
commit
3527d3e951
29 changed files with 847 additions and 544 deletions
|
|
@ -65,6 +65,11 @@ struct spu_queue {
|
|||
struct list_head list;
|
||||
};
|
||||
|
||||
struct spu_qreg {
|
||||
struct spu_queue *queue;
|
||||
unsigned long type;
|
||||
};
|
||||
|
||||
static struct spu_queue **cpu_to_cwq;
|
||||
static struct spu_queue **cpu_to_mau;
|
||||
|
||||
|
|
@ -1631,31 +1636,27 @@ static void queue_cache_destroy(void)
|
|||
kmem_cache_destroy(queue_cache[HV_NCS_QTYPE_CWQ - 1]);
|
||||
}
|
||||
|
||||
static int spu_queue_register(struct spu_queue *p, unsigned long q_type)
|
||||
static long spu_queue_register_workfn(void *arg)
|
||||
{
|
||||
cpumask_var_t old_allowed;
|
||||
struct spu_qreg *qr = arg;
|
||||
struct spu_queue *p = qr->queue;
|
||||
unsigned long q_type = qr->type;
|
||||
unsigned long hv_ret;
|
||||
|
||||
if (cpumask_empty(&p->sharing))
|
||||
return -EINVAL;
|
||||
|
||||
if (!alloc_cpumask_var(&old_allowed, GFP_KERNEL))
|
||||
return -ENOMEM;
|
||||
|
||||
cpumask_copy(old_allowed, ¤t->cpus_allowed);
|
||||
|
||||
set_cpus_allowed_ptr(current, &p->sharing);
|
||||
|
||||
hv_ret = sun4v_ncs_qconf(q_type, __pa(p->q),
|
||||
CWQ_NUM_ENTRIES, &p->qhandle);
|
||||
if (!hv_ret)
|
||||
sun4v_ncs_sethead_marker(p->qhandle, 0);
|
||||
|
||||
set_cpus_allowed_ptr(current, old_allowed);
|
||||
return hv_ret ? -EINVAL : 0;
|
||||
}
|
||||
|
||||
free_cpumask_var(old_allowed);
|
||||
static int spu_queue_register(struct spu_queue *p, unsigned long q_type)
|
||||
{
|
||||
int cpu = cpumask_any_and(&p->sharing, cpu_online_mask);
|
||||
struct spu_qreg qr = { .queue = p, .type = q_type };
|
||||
|
||||
return (hv_ret ? -EINVAL : 0);
|
||||
return work_on_cpu_safe(cpu, spu_queue_register_workfn, &qr);
|
||||
}
|
||||
|
||||
static int spu_queue_setup(struct spu_queue *p)
|
||||
|
|
|
|||
Loading…
Reference in a new issue