[Crash-utility] [PATCH 2/3] crash: ARM: get online CPUs from cpu_active_mask

Liu hua sdu.liu at huawei.com
Sat Apr 26 04:16:34 UTC 2014


On 2014/4/26 3:20, Dave Anderson wrote:
> 
> 
> ----- Original Message -----
>> For ARM32 platfrom, The system will "offline" all CPUs except the
>> crashing one, by clear the cpu_online_mask. So we need to find
>> another way to get online-CPUs number for crash utility.
>>
>> This patch uses cpu_active_mask to get that value.
>>
>> Signed-off-by: Liu Hua <sdu.liu at huawei.com>
>> ---
>>  arm.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/arm.c b/arm.c
>> index 3c38cd5..c94d7bf 100644
>> --- a/arm.c
>> +++ b/arm.c
>> @@ -1518,7 +1518,7 @@ arm_display_machine_stats(void)
>>  static int
>>  arm_get_smp_cpus(void)
>>  {
>> -	return get_cpus_online();
>> +	return get_cpus_active();
>>  }
>>  
>>  /*
> 
> When did this start happening?  I ask because no other ARM users have 
> reported this until now.  I've only got one sample SMP vmcore, and 
> clearly the non-crashing cpu was not offlined:
> 


Hi Dave,

 commit 36a2e5010fe87 "kexec: offline non panic CPUs on Kdump panic "
 introduces this change. <v3.10.27-1-g36a2e50>

 The following messges come from the ARM boards on my hand. The crash
 utility has added my patchs.

(1) ARM A15 16 CPUs

  crash> sys

      KERNEL: vmlinux
    DUMPFILE: vmcore_my  [PARTIAL DUMP]
        CPUS: 16
        DATE: Fri Feb 28 10:07:55 2014
      UPTIME: 00:03:57
LOAD AVERAGE: 0.03, 0.01, 0.01
       TASKS: 140
    NODENAME: arma15el
     RELEASE: 3.10.37+
     VERSION: #2 SMP Thu Apr 24 21:13:28 CST 2014
     MACHINE: armv7l  (unknown Mhz)
      MEMORY: 3.1 GB
       PANIC: "Internal error: Oops: a07 [#1] SMP ARM" (check log for details

  crash> help -k
       ....
       cpu_possible_map: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
       cpu_present_map: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
       cpu_online_map: 0
       ...


(2) ARM A9 4 CPUs

crash> sys
      KERNEL: vmlinux
    DUMPFILE: vmcore
        CPUS: 2
        DATE: Mon Apr 14 11:09:10 2014
      UPTIME: 00:06:17
LOAD AVERAGE: 0.16, 0.05, 0.02
       TASKS: 45
    NODENAME: arma9el
     RELEASE: 3.10.37+
     VERSION: #6 SMP Tue Apr 22 13:23:30 CST 2014
     MACHINE: armv7l  (unknown Mhz)
      MEMORY: 1.5 GB
       PANIC: "Internal error: Oops: 817 [#1] SMP ARM" (check log for details)

  crash> help -k
       ....
	cpu_possible_map: 0 1
        cpu_present_map: 0 1
        cpu_online_map: 1


   crash> p per_cpu__runqueues

   PER-CPU DATA TYPE:
   struct rq runqueues;
   PER-CPU ADDRESSES:
   [0]: c069a680
   [1]: c06a2680

With my patches, "sys" command is ok. And I can get per_cpu variables correctly.
But something should be done for "help -k". May be I should add fully support
for cpu_active_mask. If necessory, I will resend this patch series.

>   crash> sys
...
> 
> Also, backwards-compatibility must be maintained, and it appears that
> the cpu_active mask was only first introduced in 2.6.27.  So perhaps it
> should be something like:

Absolutely, I will repost this one.

> 
> --- arm.c.orig	2014-04-25 14:44:23.557665220 -0400
> +++ arm.c	2014-04-25 15:13:46.709594145 -0400
> @@ -1518,7 +1518,7 @@
>  static int
>  arm_get_smp_cpus(void)
>  {
> -	return get_cpus_online();
> +	return MAX(get_cpus_active(), get_cpus_online());
>  }
>  
> Dave
> 
> 





More information about the Crash-utility mailing list