[Crash-utility] [PATCH v2 07/17] MIPS64: Fix display memory size issue

Youling Tang tangyouling at loongson.cn
Wed Apr 21 06:32:36 UTC 2021


On 04/21/2021 02:07 PM, HAGIO KAZUHITO(萩尾 一仁) wrote:
> -----Original Message-----
>> "__node_data" instead of "node_data" is used in the MIPS64 architecture,
>> so "__node_data" is used to replace "node_data" to improve the use of
>> next_online_pgdat() functions in the MIPS64 architecture.
>>
>> E.g. Without this patch:
>> ...
>> MEMORY: 0
>> ...
>>
>> With this patch:
>> ...
>> MEMORY: 7.5 GB
>> ...
>>
>> Signed-off-by: Huacai Chen <chenhuacai at loongson.cn>
>> Signed-off-by: Youling Tang <tangyouling at loongson.cn>
>> ---
>> v1 -> v2:
>>   - Add corresponding comments.
>>
>>   memory.c | 31 +++++++++++++++++++++----------
>>   1 file changed, 21 insertions(+), 10 deletions(-)
>>
>> diff --git a/memory.c b/memory.c
>> index 33b0ca7..cea49da 100644
>> --- a/memory.c
>> +++ b/memory.c
>> @@ -17819,23 +17819,32 @@ next_online_pgdat(int node)
>>   {
>>           char buf[BUFSIZE];
>>   	ulong pgdat;
>>
> Note: This emply line needs to be removed to apply the patch..
Thank you for removing.

Thanks,
Youling
> Thanks,
> Kazu
>
>> +/*
>> + * "__node_data" is used in the mips64 architecture,
>> + * and "node_data" is used in other architectures.
>> + */
>> +#ifndef __mips64
>> +#define NODE_DATA_VAR "node_data"
>> +#else
>> +#define NODE_DATA_VAR "__node_data"
>> +#endif
>>
>>   	/*
>> -  	 *  Default -- look for type: struct pglist_data node_data[]
>> +	 *  Default -- look for type:  node_data[]/__node_data[]
>>   	 */
>>   	if (LKCD_KERNTYPES()) {
>> -		if (!kernel_symbol_exists("node_data"))
>> +		if (!kernel_symbol_exists(NODE_DATA_VAR))
>>   			goto pgdat2;
>>   		/*
>> -		 *  Just index into node_data[] without checking that it is
>> -		 *  an array; kerntypes have no such symbol information.
>> +		 *  Just index into node_data[]/__node_data[] without checking that
>> +		 *  it is an array; kerntypes have no such symbol information.
>>   	 	 */
>>   	} else {
>> -		if (get_symbol_type("node_data", NULL, NULL) != TYPE_CODE_ARRAY)
>> +		if (get_symbol_type(NODE_DATA_VAR, NULL, NULL) != TYPE_CODE_ARRAY)
>>   			goto pgdat2;
>>
>>   	        open_tmpfile();
>> -	        sprintf(buf, "whatis node_data");
>> +	        sprintf(buf, "whatis " NODE_DATA_VAR);
>>   	        if (!gdb_pass_through(buf, fp, GNU_RETURN_ON_ERROR)) {
>>   	                close_tmpfile();
>>   			goto pgdat2;
>> @@ -17848,14 +17857,15 @@ next_online_pgdat(int node)
>>   	        close_tmpfile();
>>
>>   		if ((!strstr(buf, "struct pglist_data *") &&
>> -		     !strstr(buf, "pg_data_t *")) ||
>> +		     !strstr(buf, "pg_data_t *") &&
>> +		     !strstr(buf, "struct node_data *")) ||
>>   		    (count_chars(buf, '[') != 1) ||
>>   		    (count_chars(buf, ']') != 1))
>>   			goto pgdat2;
>>   	}
>>
>> -	if (!readmem(symbol_value("node_data") + (node * sizeof(void *)),
>> -	    KVADDR, &pgdat, sizeof(void *), "node_data", RETURN_ON_ERROR) ||
>> +	if (!readmem(symbol_value(NODE_DATA_VAR) + (node * sizeof(void *)),
>> +	    KVADDR, &pgdat, sizeof(void *), NODE_DATA_VAR, RETURN_ON_ERROR) ||
>>   	    !IS_KVADDR(pgdat))
>>   		goto pgdat2;
>>
>> @@ -17883,7 +17893,8 @@ pgdat2:
>>   	        close_tmpfile();
>>
>>   		if ((!strstr(buf, "struct pglist_data *") &&
>> -		     !strstr(buf, "pg_data_t *")) ||
>> +		     !strstr(buf, "pg_data_t *") &&
>> +		     !strstr(buf, "struct node_data *")) ||
>>   		    (count_chars(buf, '[') != 1) ||
>>   		    (count_chars(buf, ']') != 1))
>>   			goto pgdat3;
>> --
>> 2.1.0

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20210421/d1842670/attachment.htm>


More information about the Crash-utility mailing list