[Pdbg] [PATCH v2 03/12] libpdbg: Add api to get/dump ffdc data from sbefifo

Alistair Popple alistair at popple.id.au
Thu Jul 11 15:17:08 AEST 2019


Hi Amitay,

I'm not very familiar with the way FFDC data is passed from the kernel, so for 
my own education what is the difference between getting ffdc data and dumping 
ffdc data? Thanks.

- Alistair

On Thursday, 4 July 2019 6:05:16 PM AEST Amitay Isaacs wrote:
> Signed-off-by: Amitay Isaacs <amitay at ozlabs.org>
> ---
>  libpdbg/libpdbg.h |  2 ++
>  libpdbg/target.c  | 20 ++++++++++++++++++++
>  2 files changed, 22 insertions(+)
> 
> diff --git a/libpdbg/libpdbg.h b/libpdbg/libpdbg.h
> index 711c817..b9b271f 100644
> --- a/libpdbg/libpdbg.h
> +++ b/libpdbg/libpdbg.h
> @@ -239,6 +239,8 @@ int opb_read(struct pdbg_target *target, uint32_t addr,
> uint32_t *data); int opb_write(struct pdbg_target *target, uint32_t addr,
> uint32_t data);
> 
>  int sbe_istep(struct pdbg_target *target, uint32_t major, uint32_t minor);
> +uint32_t sbe_ffdc_get(struct pdbg_target *target, const uint8_t **ffdc,
> uint32_t *ffdc_len); +void sbe_ffdc_dump(struct pdbg_target *target);
> 
>  typedef void (*pdbg_progress_tick_t)(uint64_t cur, uint64_t end);
> 
> diff --git a/libpdbg/target.c b/libpdbg/target.c
> index e193e7e..9495d61 100644
> --- a/libpdbg/target.c
> +++ b/libpdbg/target.c
> @@ -275,6 +275,26 @@ int sbe_istep(struct pdbg_target *target, uint32_t
> major, uint32_t minor) return sbefifo->istep(sbefifo, major, minor);
>  }
> 
> +uint32_t sbe_ffdc_get(struct pdbg_target *target, const uint8_t **ffdc,
> uint32_t *ffdc_len) +{
> +	struct sbefifo *sbefifo;
> +
> +	assert(pdbg_target_is_class(target, "sbefifo"));
> +
> +	sbefifo = target_to_sbefifo(target);
> +	return sbefifo->ffdc_get(sbefifo, ffdc, ffdc_len);
> +}
> +
> +void sbe_ffdc_dump(struct pdbg_target *target)
> +{
> +	struct sbefifo *sbefifo;
> +
> +	assert(pdbg_target_is_class(target, "sbefifo"));
> +
> +	sbefifo = target_to_sbefifo(target);
> +	sbefifo->ffdc_dump(sbefifo);
> +}
> +
>  struct pdbg_target *require_target_parent(struct pdbg_target *target)
>  {
>  	assert(target->parent);






More information about the Pdbg mailing list