----- Original Message -----
> CONFIG_FAIR_GROUP_SCHED (which provides task_group.cfs_rq) and
> CONFIG_RT_GROUP_SCHED (which provides task_group.rt_rq) need not be both
> enabled in a kernel.  Let's support runq -g even if only one of them is
> enabled.

Rabin,

The patch is queued for crash-7.1.2:

  
https://github.com/crash-utility/crash/commit/0ab34ff030db468c219740cac8f94ae623e7cf81

Thanks,
  Dave


  

  
> ---
>  task.c |   46 ++++++++++++++++++++++++++++------------------
>  1 file changed, 28 insertions(+), 18 deletions(-)
> 
> diff --git a/task.c b/task.c
> index 3a88d68..3e6aff4 100644
> --- a/task.c
> +++ b/task.c
> @@ -7747,8 +7747,8 @@ cmd_runq(void)
>                       dump_milliseconds_flag = 1;
>                       break;
>               case 'g':
> -                     if (INVALID_MEMBER(task_group_cfs_rq) ||
> -                         INVALID_MEMBER(task_group_rt_rq) ||
> +                     if ((INVALID_MEMBER(task_group_cfs_rq) &&
> +                          INVALID_MEMBER(task_group_rt_rq)) ||
>                           INVALID_MEMBER(task_group_parent))
>                               option_not_supported(c);
>                       dump_task_group_flag = 1;
> @@ -9134,8 +9134,8 @@ static void
>  dump_tasks_by_task_group(void)
>  {
>       int cpu, displayed;
> -     ulong root_task_group, cfs_rq, cfs_rq_p;
> -     ulong rt_rq, rt_rq_p;
> +     ulong root_task_group, cfs_rq = 0, cfs_rq_p;
> +     ulong rt_rq = 0, rt_rq_p;
>       char *buf;
>       struct task_context *tc;
>       char *task_group_name;
> @@ -9161,8 +9161,10 @@ dump_tasks_by_task_group(void)
>       buf = GETBUF(SIZE(task_group));
>       readmem(root_task_group, KVADDR, buf, SIZE(task_group),
>               "task_group", FAULT_ON_ERROR);
> -     rt_rq = ULONG(buf + OFFSET(task_group_rt_rq));
> -     cfs_rq = ULONG(buf + OFFSET(task_group_cfs_rq));
> +     if (VALID_MEMBER(task_group_rt_rq))
> +             rt_rq = ULONG(buf + OFFSET(task_group_rt_rq));
> +     if (VALID_MEMBER(task_group_cfs_rq))
> +             cfs_rq = ULONG(buf + OFFSET(task_group_cfs_rq));
>  
>       fill_task_group_info_array(0, root_task_group, buf, -1);
>       sort_task_group_info_array();
> @@ -9178,10 +9180,14 @@ dump_tasks_by_task_group(void)
>               if (cpus && !NUM_IN_BITMAP(cpus, cpu))
>                       continue;
>  
> -             readmem(rt_rq + cpu * sizeof(ulong), KVADDR, &rt_rq_p,
> -                     sizeof(ulong), "task_group rt_rq", FAULT_ON_ERROR);
> -             readmem(cfs_rq + cpu * sizeof(ulong), KVADDR, &cfs_rq_p,
> -                     sizeof(ulong), "task_group cfs_rq", FAULT_ON_ERROR);
> +             if (rt_rq)
> +                     readmem(rt_rq + cpu * sizeof(ulong), KVADDR,
> +                             &rt_rq_p, sizeof(ulong), "task_group rt_rq",
> +                             FAULT_ON_ERROR);
> +             if (cfs_rq)
> +                     readmem(cfs_rq + cpu * sizeof(ulong), KVADDR,
> +                             &cfs_rq_p, sizeof(ulong), "task_group cfs_rq",
> +                             FAULT_ON_ERROR);
>               fprintf(fp, "%sCPU %d", displayed++ ? "\n" : "", cpu);
>  
>               if (hide_offline_cpu(cpu)) {
> @@ -9197,15 +9203,19 @@ dump_tasks_by_task_group(void)
>               else
>                       fprintf(fp, "%lx\n", tt->active_set[cpu]);
>  
> -             fprintf(fp, "  %s_TASK_GROUP: %lx  RT_RQ: %lx\n",
> -                     task_group_name, root_task_group, rt_rq_p);
> -             reuse_task_group_info_array();
> -             dump_tasks_in_task_group_rt_rq(0, rt_rq_p, cpu);
> +             if (rt_rq) {
> +                     fprintf(fp, "  %s_TASK_GROUP: %lx  RT_RQ: %lx\n",
> +                             task_group_name, root_task_group, rt_rq_p);
> +                     reuse_task_group_info_array();
> +                     dump_tasks_in_task_group_rt_rq(0, rt_rq_p, cpu);
> +             }
>  
> -             fprintf(fp, "  %s_TASK_GROUP: %lx  CFS_RQ: %lx\n",
> -                     task_group_name, root_task_group, cfs_rq_p);
> -             reuse_task_group_info_array();
> -             dump_tasks_in_task_group_cfs_rq(0, cfs_rq_p, cpu, tc);
> +             if (cfs_rq) {
> +                     fprintf(fp, "  %s_TASK_GROUP: %lx  CFS_RQ: %lx\n",
> +                             task_group_name, root_task_group, cfs_rq_p);
> +                     reuse_task_group_info_array();
> +                     dump_tasks_in_task_group_cfs_rq(0, cfs_rq_p, cpu, tc);
> +             }
>       }
>  
>       FREEBUF(buf);
> --
> 1.7.10.4
> 
> --
> Crash-utility mailing list
> [email protected]
> https://www.redhat.com/mailman/listinfo/crash-utility
> 

--
Crash-utility mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/crash-utility

Reply via email to