Skip to content
Snippets Groups Projects
Select Git revision
  • 467c996c1e1910633fa8e7adc9b052aa3ed5f97c
  • vme-testing default
  • ci-test
  • master
  • remoteproc
  • am625-sk-ov5640
  • pcal6534-upstreaming
  • lps22df-upstreaming
  • msc-upstreaming
  • imx8mp
  • iio/noa1305
  • vme-next
  • vme-next-4.14-rc4
  • v4.14-rc4
  • v4.14-rc3
  • v4.14-rc2
  • v4.14-rc1
  • v4.13
  • vme-next-4.13-rc7
  • v4.13-rc7
  • v4.13-rc6
  • v4.13-rc5
  • v4.13-rc4
  • v4.13-rc3
  • v4.13-rc2
  • v4.13-rc1
  • v4.12
  • v4.12-rc7
  • v4.12-rc6
  • v4.12-rc5
  • v4.12-rc4
  • v4.12-rc3
32 results

page_alloc.c

Blame
  • topology.c 57.85 KiB
    // SPDX-License-Identifier: GPL-2.0
    /*
     * Scheduler topology setup/handling methods
     */
    #include "sched.h"
    
    DEFINE_MUTEX(sched_domains_mutex);
    
    /* Protected by sched_domains_mutex: */
    static cpumask_var_t sched_domains_tmpmask;
    static cpumask_var_t sched_domains_tmpmask2;
    
    #ifdef CONFIG_SCHED_DEBUG
    
    static int __init sched_debug_setup(char *str)
    {
    	sched_debug_enabled = true;
    
    	return 0;
    }
    early_param("sched_debug", sched_debug_setup);
    
    static inline bool sched_debug(void)
    {
    	return sched_debug_enabled;
    }
    
    static int sched_domain_debug_one(struct sched_domain *sd, int cpu, int level,
    				  struct cpumask *groupmask)
    {
    	struct sched_group *group = sd->groups;
    
    	cpumask_clear(groupmask);
    
    	printk(KERN_DEBUG "%*s domain-%d: ", level, "", level);
    
    	if (!(sd->flags & SD_LOAD_BALANCE)) {
    		printk("does not load-balance\n");
    		if (sd->parent)
    			printk(KERN_ERR "ERROR: !SD_LOAD_BALANCE domain has parent");
    		return -1;
    	}
    
    	printk(KERN_CONT "span=%*pbl level=%s\n",
    	       cpumask_pr_args(sched_domain_span(sd)), sd->name);
    
    	if (!cpumask_test_cpu(cpu, sched_domain_span(sd))) {
    		printk(KERN_ERR "ERROR: domain->span does not contain CPU%d\n", cpu);
    	}
    	if (group && !cpumask_test_cpu(cpu, sched_group_span(group))) {
    		printk(KERN_ERR "ERROR: domain->groups does not contain CPU%d\n", cpu);
    	}
    
    	printk(KERN_DEBUG "%*s groups:", level + 1, "");
    	do {
    		if (!group) {
    			printk("\n");
    			printk(KERN_ERR "ERROR: group is NULL\n");
    			break;
    		}
    
    		if (!cpumask_weight(sched_group_span(group))) {
    			printk(KERN_CONT "\n");
    			printk(KERN_ERR "ERROR: empty group\n");
    			break;
    		}
    
    		if (!(sd->flags & SD_OVERLAP) &&
    		    cpumask_intersects(groupmask, sched_group_span(group))) {
    			printk(KERN_CONT "\n");