[Crash-utility] [PATCH v2 2/3] [ppc] Support for platform based Virtual address translation

Toshikazu Nakayama nakayama.ts at ncos.nec.co.jp
Mon Feb 6 02:51:34 UTC 2012


Suzuki-San,

>>> +	for (; tmp->name!= NULL; tmp++)
>>> +		if (!strcmp(tmp->name, platform))
>>> +			return tmp;
>>
>> Is there any reasons to distinct "ppc440gp"?
>>
> No specific reasons, apart from just the name difference.
> 
>> Since I see that there are no "ppc440" prefix platform other than PPC40
>> in latest cpu_specs[], and all of ppc440gp's values in ppc_boards[] are the
>> same as ppc440.
>> Can it be summarized by using STRNEQ("ppc440") or strncmp("ppc440")?
> The problem is, this is generic code. And there could be a different platforms
> which start with the same prefix and having different settings for the page
> bits, (e.g, freescale processors). So generalizing this would be a problem.

I can understand your careful thought, thanks.
 
> One option I could think of is defining a function rather than a 'name' for each
> platform to identify the 'running platform' as its variant.
> 
> i.e,
> 
> struct platform {
> 	int (*check_platform) (char *s);
> 	const char *name;
> 	...
> }
> 
> Where we could invoke the check_platform() for each platform, instead of
> doing a check ourselves. The check_platform() could be implemented by each
> distinct platforms and could use one board definition for multiple platform
> values. This would also help us to reduce the 'platform' definitions as different
> non-related platforms may also have the same set of definitions.
> 
> So the loop would look like :
> 
> 	for (; tmp->name!= NULL; tmp++)
> 		if (tmpe->check_platform(platform))
> 			return tmp;
> 
> What do you think about this approach ?

I can imagine that ppc_boards[] own least entries "default", "ppc440", "ppc??",
                                            (or declare as "ibm", "freescale", ..)
and call check_ppc440_platform("platform"), check_ppc??_platform("platform")
to check or update page bits.

The check_ppc440_platform() can do with SRTEQ("platform", "ppc440(gp)") easily
but check_ppc??_platform() has to check more conditions if prefixed name
has different settings for the page bits.
Finaly check_platform sometimes update page talbe bit members in struct platform.

This is interesting so I wait for your updates
even though my imagination is different from yours.

Thanks,
Toshi




More information about the Crash-utility mailing list