On 2019-07-16 17:04:08 Tue, Hari Bathini wrote:
> From: Hari Bathini <hbath...@linux.vnet.ibm.com>
> 
> Firmware provides architected register state data at the time of crash.
> Process this data and build CPU notes to append to ELF core.
> 
> Signed-off-by: Hari Bathini <hbath...@linux.vnet.ibm.com>
> Signed-off-by: Vasant Hegde <hegdevas...@linux.vnet.ibm.com>
> ---
>  arch/powerpc/kernel/fadump-common.h          |    4 +
>  arch/powerpc/platforms/powernv/opal-fadump.c |  197 
> ++++++++++++++++++++++++--
>  arch/powerpc/platforms/powernv/opal-fadump.h |   39 +++++
>  3 files changed, 228 insertions(+), 12 deletions(-)
> 
[...]
> @@ -430,6 +577,32 @@ int __init opal_fadump_dt_scan(struct fw_dump 
> *fadump_conf, ulong node)
>                       return 1;
>               }
>  
> +             ret = opal_mpipl_query_tag(OPAL_MPIPL_TAG_CPU, &addr);
> +             if ((ret != OPAL_SUCCESS) || !addr) {
> +                     pr_err("Failed to get CPU metadata (%lld)\n", ret);
> +                     return 1;
> +             }
> +
> +             addr = be64_to_cpu(addr);
> +             pr_debug("CPU metadata addr: %llx\n", addr);
> +
> +             opal_cpu_metadata = __va(addr);
> +             r_opal_cpu_metadata = (void *)addr;
> +             fadump_conf->cpu_state_data_version =
> +                     be32_to_cpu(r_opal_cpu_metadata->cpu_data_version);
> +             if (fadump_conf->cpu_state_data_version !=
> +                 HDAT_FADUMP_CPU_DATA_VERSION) {
> +                     pr_err("CPU data format version (%lu) mismatch!\n",
> +                            fadump_conf->cpu_state_data_version);
> +                     return 1;
> +             }
> +             fadump_conf->cpu_state_entry_size =
> +                     be32_to_cpu(r_opal_cpu_metadata->cpu_data_size);
> +             fadump_conf->cpu_state_destination_addr =
> +                     be64_to_cpu(r_opal_cpu_metadata->region[0].dest);
> +             fadump_conf->cpu_state_data_size =
> +                     be64_to_cpu(r_opal_cpu_metadata->region[0].size);
> +

opal_fadump_dt_scan isn't the right place to do this. Can you please move above
cpu related data processing to opal_fadump_build_cpu_notes() ?

Thanks,
-Mahesh.

>               pr_info("Firmware-assisted dump is active.\n");
>               fadump_conf->dump_active = 1;
>               opal_fadump_get_config(fadump_conf, r_opal_fdm_active);

Reply via email to