[Skiboot] [PATCH] hdata: Fix ibm,pa-features for all CPU types
Russell Currey
ruscur at russell.cc
Thu Jan 12 15:10:08 AEDT 2017
On Wed, 2017-01-11 at 17:33 -0600, Benjamin Herrenschmidt wrote:
> Hopefully the values are all right ;-) A future TODO is to
> use some nice macro to make it clearer who is what.
>
> Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> ---
This patch fails a test (found by snowpatch):
In file included from hdata/test/hdata_to_dt.c:92:0:
hdata/test/../cpu-common.c: In function "add_core_common":
hdata/test/../cpu-common.c:102:3: error: implicit declaration of function
"PVR_VERS_MAJ" [-Werror=implicit-function-declaration]
if (PVR_VERS_MAJ(version) == 1) {
^
cc1: all warnings being treated as errors
make: *** [hdata/test/hdata_to_dt] Error 1
Not sure about this one, given cpu-common.c includes cpu.h which includes
processor.h which defines PVR_VERS_MAJ.
> hdata/cpu-common.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++--
> ---
> 1 file changed, 57 insertions(+), 5 deletions(-)
>
> diff --git a/hdata/cpu-common.c b/hdata/cpu-common.c
> index 528f008..603d8af 100644
> --- a/hdata/cpu-common.c
> +++ b/hdata/cpu-common.c
> @@ -30,8 +30,43 @@ struct dt_node * add_core_common(struct dt_node *cpus,
> struct dt_node *cpu;
> uint32_t version;
> uint64_t freq;
> - const uint8_t pa_features[] = {
> - 6, 0, 0xf6, 0x3f, 0xc7, 0x00, 0x80, 0xc0 };
> + const uint8_t pa_features_p7[] = {
> + 6, 0,
> + 0xf6, 0x3f, 0xc7, 0x00, 0x80, 0xc0 };
> + const uint8_t pa_features_p7p[] = {
> + 6, 0,
> + 0xf6, 0x3f, 0xc7, 0xc0, 0x80, 0xc0 };
> + const uint8_t pa_features_p8[] = {
> + 24, 0,
> + 0xf6, 0x3f, 0xc7, 0xc0, 0x80, 0xd0, 0x80, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> + 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
> + };
> + const uint8_t pa_features_p9_dd1[] = {
> + 64, 0,
> + 0xf6, 0x3f, 0xc7, 0xc0, 0x80, 0xd0, 0x80, 0x00, /* 0 .. 7 */
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 8 .. 15 */
> + 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, /* 16 .. 23 */
> + 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, /* 24 .. 31 */
> + 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, /* 32 .. 39 */
> + 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, /* 40 .. 47 */
> + 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, /* 48 .. 55 */
> + 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, /* 56 .. 63 */
> + };
> + const uint8_t pa_features_p9_dd2[] = {
> + 64, 0,
> + 0xf6, 0x3f, 0xc7, 0xc0, 0x80, 0xd0, 0x80, 0x00, /* 0 .. 7 */
> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 8 .. 15 */
> + 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, /* 16 .. 23 */
> + 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, /* 24 .. 31 */
> + 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, /* 32 .. 39 */
> + 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, /* 40 .. 47 */
> + 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, /* 48 .. 55 */
> + 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, /* 56 .. 63 */
> + };
> +
> + const uint8_t *pa_features;
> + uint32_t pa_features_size;
>
> prlog(PR_INFO, " Cache: I=%u D=%u/%u/%u/%u\n",
> be32_to_cpu(cache->icache_size_kb),
> @@ -47,20 +82,34 @@ struct dt_node * add_core_common(struct dt_node *cpus,
> switch(PVR_TYPE(version)) {
> case PVR_TYPE_P7:
> name = "PowerPC,POWER7";
> + pa_features = pa_features_p7;
> + pa_features_size = sizeof(pa_features_p7);
> break;
> case PVR_TYPE_P7P:
> name = "PowerPC,POWER7+";
> + pa_features = pa_features_p7p;
> + pa_features_size = sizeof(pa_features_p7p);
> break;
> case PVR_TYPE_P8E:
> case PVR_TYPE_P8:
> case PVR_TYPE_P8NVL:
> name = "PowerPC,POWER8";
> + pa_features = pa_features_p8;
> + pa_features_size = sizeof(pa_features_p8);
> break;
> case PVR_TYPE_P9:
> name = "PowerPC,POWER9";
> + if (PVR_VERS_MAJ(version) == 1) {
> + pa_features = pa_features_p9_dd1;
> + pa_features_size = sizeof(pa_features_p9_dd1);
> + } else {
> + pa_features = pa_features_p9_dd2;
> + pa_features_size = sizeof(pa_features_p9_dd2);
> + }
> break;
> default:
> name = "PowerPC,Unknown";
> + pa_features = NULL;
> }
>
> cpu = dt_new_addr(cpus, name, int_server);
> @@ -91,9 +140,12 @@ struct dt_node * add_core_common(struct dt_node *cpus,
> 0x18, 0x0008, /* 64K seg 16M pages */
> 0x18, 0x100, 1, 0x18, 0x0000, /* 16M seg 16M pages */
> 0x22, 0x120, 1, 0x22, 0x0003); /* 16G seg 16G pages */
> -
> - dt_add_property(cpu, "ibm,pa-features",
> - pa_features, sizeof(pa_features));
> +
> +
> + if (pa_features) {
> + dt_add_property(cpu, "ibm,pa-features",
> + pa_features, pa_features_size);
> + }
> dt_add_property_cells(cpu, "ibm,slb-size", 0x20);
>
> dt_add_property_cells(cpu, "ibm,vmx", 0x2);
>
>
> _______________________________________________
> Skiboot mailing list
> Skiboot at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/skiboot
More information about the Skiboot
mailing list