On Wed, Jul 01, 2020 at 08:06:51PM +0100, Valentin Schneider wrote:

> @@ -29,6 +29,7 @@ static int sched_domain_debug_one(struct sched_domain *sd, 
> int cpu, int level,
>                                 struct cpumask *groupmask)
>  {
>       struct sched_group *group = sd->groups;
> +     int flags = sd->flags;

        unsigned long flags = sd->flags;

>  
>       cpumask_clear(groupmask);
>  
> @@ -43,6 +44,22 @@ static int sched_domain_debug_one(struct sched_domain *sd, 
> int cpu, int level,
>               printk(KERN_ERR "ERROR: domain->groups does not contain 
> CPU%d\n", cpu);
>       }
>  
> +     for (; flags; flags &= flags - 1) {
> +             unsigned int idx = __ffs(flags);

        for_each_set_bit(idx, &flags, SD_MAX_BIT) {

Yes, it's a bit yuck, but far more readable imo.

> +             unsigned int flag = BIT(idx);
> +             unsigned int meta_flags = sd_flag_debug[idx].meta_flags;
> +
> +             if ((meta_flags & SDF_SHARED_CHILD) && sd->child &&
> +                 !(sd->child->flags & flag))
> +                     printk(KERN_ERR "ERROR: flag %s set here but not in 
> child\n",
> +                            sd_flag_debug[idx].name);
> +
> +             if ((meta_flags & SDF_SHARED_PARENT) && sd->parent &&
> +                 !(sd->parent->flags & flag))
> +                     printk(KERN_ERR "ERROR: flag %s set here but not in 
> parent\n",
> +                            sd_flag_debug[idx].name);
> +     }
> +
>       printk(KERN_DEBUG "%*s groups:", level + 1, "");
>       do {
>               if (!group) {
> -- 
> 2.27.0
> 

Reply via email to