[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <040a1992-baff-c3e4-69a9-ff3110de62e7@linaro.org>
Date: Fri, 14 Apr 2023 11:40:12 +0100
From: Srinivas Kandagatla <srinivas.kandagatla@...aro.org>
To: Mukesh Ojha <quic_mojha@...cinc.com>, agross@...nel.org,
andersson@...nel.org, konrad.dybcio@...aro.org, corbet@....net,
keescook@...omium.org, tony.luck@...el.com, gpiccoli@...lia.com,
catalin.marinas@....com, will@...nel.org
Cc: linux-arm-msm@...r.kernel.org, linux-remoteproc@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-hardening@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-doc@...r.kernel.org
Subject: Re: [PATCH v2 2/6] remoteproc: qcom: Move minidump specific data to
qcom_minidump.h
On 14/04/2023 08:05, Mukesh Ojha wrote:
> Thanks again for coming back on this.
>
> On 4/14/2023 4:02 AM, Srinivas Kandagatla wrote:
>>
>>
>> On 22/03/2023 13:30, Mukesh Ojha wrote:
>>> Move minidump specific data types and macros to a separate internal
>>> header(qcom_minidump.h) so that it can be shared among different
>>
>> minidump.h should be good as we are already in include/soc/qcom/
>
>
> Initially, i wanted to protect the content of qcom_minidump.h between
> qcom_minidump.c and qcom_common.c
>
> Ideally, here qcom_minidump.h should be supplier/provider header and can
Am not sure if I understand the supplier concept correctly.
AFAIU, we have a 2 sets of apis
1. get hold of minidump descriptor based on minidump_id fro gtoc using
qcom_minidump_subsystem_desc(). Am assuming which ever driver uses this
api will set there segments and regions in there respective drivers.
2. setting regions/segments in APSS minidump descriptors which are done
via qcom_minidump_region_register(). TBH this should be renamed to
qcom_apss_minidump_region_register().
mixing of thsee apis makes it bit confusing, specially we have these two
category of apis that deal with different things.
Does it make sense to spit and abstract them properly by doing?
1. minidump driver to deal with handling gtoc and providing descriptors
to the consumers like remoteproc or apss, This can probably live within
smem driver as loc for this support is very minimal and proabably rename
the api accordingly.
2. apss_minidump driver to allow other qcom drivers to
register/unregister regions within apss minidump descriptor.
did I miss something?
thanks,
Srini
> be shared among above qcom_minidump.c and qcom_common.c but since they
> are not in same directory, moved it inside include/soc/qcom/ as separate
> header than consumer header minidump.h . >
> -Mukesh
>>
>> --srini
>>
>>> Qualcomm drivers.
>>>
>>> There is no change in functional behavior after this.
>>>
>>> Signed-off-by: Mukesh Ojha <quic_mojha@...cinc.com>
>>> ---
>>> drivers/remoteproc/qcom_common.c | 56
>>> +---------------------------------
>>> include/soc/qcom/qcom_minidump.h | 66
>>> ++++++++++++++++++++++++++++++++++++++++
>>> 2 files changed, 67 insertions(+), 55 deletions(-)
>>> create mode 100644 include/soc/qcom/qcom_minidump.h
>>>
>>> diff --git a/drivers/remoteproc/qcom_common.c
>>> b/drivers/remoteproc/qcom_common.c
>>> index 805e525..88fc984 100644
>>> --- a/drivers/remoteproc/qcom_common.c
>>> +++ b/drivers/remoteproc/qcom_common.c
>>> @@ -18,6 +18,7 @@
>>> #include <linux/slab.h>
>>> #include <linux/soc/qcom/mdt_loader.h>
>>> #include <linux/soc/qcom/smem.h>
>>> +#include <soc/qcom/qcom_minidump.h>
>>> #include "remoteproc_internal.h"
>>> #include "qcom_common.h"
>>> @@ -26,61 +27,6 @@
>>> #define to_smd_subdev(d) container_of(d, struct qcom_rproc_subdev,
>>> subdev)
>>> #define to_ssr_subdev(d) container_of(d, struct qcom_rproc_ssr,
>>> subdev)
>>> -#define MAX_NUM_OF_SS 10
>>> -#define MAX_REGION_NAME_LENGTH 16
>>> -#define SBL_MINIDUMP_SMEM_ID 602
>>> -#define MINIDUMP_REGION_VALID ('V' << 24 | 'A' << 16 | 'L' <<
>>> 8 | 'I' << 0)
>>> -#define MINIDUMP_SS_ENCR_DONE ('D' << 24 | 'O' << 16 | 'N' <<
>>> 8 | 'E' << 0)
>>> -#define MINIDUMP_SS_ENABLED ('E' << 24 | 'N' << 16 | 'B' << 8
>>> | 'L' << 0)
>>> -
>>> -/**
>>> - * struct minidump_region - Minidump region
>>> - * @name : Name of the region to be dumped
>>> - * @seq_num: : Use to differentiate regions with same name.
>>> - * @valid : This entry to be dumped (if set to 1)
>>> - * @address : Physical address of region to be dumped
>>> - * @size : Size of the region
>>> - */
>>> -struct minidump_region {
>>> - char name[MAX_REGION_NAME_LENGTH];
>>> - __le32 seq_num;
>>> - __le32 valid;
>>> - __le64 address;
>>> - __le64 size;
>>> -};
>>> -
>>> -/**
>>> - * struct minidump_subsystem - Subsystem's SMEM Table of content
>>> - * @status : Subsystem toc init status
>>> - * @enabled : if set to 1, this region would be copied during coredump
>>> - * @encryption_status: Encryption status for this subsystem
>>> - * @encryption_required : Decides to encrypt the subsystem regions
>>> or not
>>> - * @region_count : Number of regions added in this subsystem toc
>>> - * @regions_baseptr : regions base pointer of the subsystem
>>> - */
>>> -struct minidump_subsystem {
>>> - __le32 status;
>>> - __le32 enabled;
>>> - __le32 encryption_status;
>>> - __le32 encryption_required;
>>> - __le32 region_count;
>>> - __le64 regions_baseptr;
>>> -};
>>> -
>>> -/**
>>> - * struct minidump_global_toc - Global Table of Content
>>> - * @status : Global Minidump init status
>>> - * @md_revision : Minidump revision
>>> - * @enabled : Minidump enable status
>>> - * @subsystems : Array of subsystems toc
>>> - */
>>> -struct minidump_global_toc {
>>> - __le32 status;
>>> - __le32 md_revision;
>>> - __le32 enabled;
>>> - struct minidump_subsystem subsystems[MAX_NUM_OF_SS];
>>> -};
>>> -
>>> struct qcom_ssr_subsystem {
>>> const char *name;
>>> struct srcu_notifier_head notifier_list;
>>> diff --git a/include/soc/qcom/qcom_minidump.h
>>> b/include/soc/qcom/qcom_minidump.h
>>> new file mode 100644
>>> index 0000000..84c8605
>>> --- /dev/null
>>> +++ b/include/soc/qcom/qcom_minidump.h
>>> @@ -0,0 +1,66 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-only */
>>> +/*
>>> + * Qualcomm minidump shared data structures and macros
>>> + *
>>> + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights
>>> reserved.
>>> + */
>>> +
>>> +#ifndef _QCOM_MINIDUMP_H_
>>> +#define _QCOM_MINIDUMP_H_
>>> +
>>> +#define MAX_NUM_OF_SS 10
>>> +#define MAX_REGION_NAME_LENGTH 16
>>> +#define SBL_MINIDUMP_SMEM_ID 602
>>> +#define MINIDUMP_REGION_VALID ('V' << 24 | 'A' << 16 | 'L' <<
>>> 8 | 'I' << 0)
>>> +#define MINIDUMP_SS_ENCR_DONE ('D' << 24 | 'O' << 16 | 'N' <<
>>> 8 | 'E' << 0)
>>> +#define MINIDUMP_SS_ENABLED ('E' << 24 | 'N' << 16 | 'B' << 8
>>> | 'L' << 0)
>>> +
>>> +/**
>>> + * struct minidump_region - Minidump region
>>> + * @name : Name of the region to be dumped
>>> + * @seq_num: : Use to differentiate regions with same name.
>>> + * @valid : This entry to be dumped (if set to 1)
>>> + * @address : Physical address of region to be dumped
>>> + * @size : Size of the region
>>> + */
>>> +struct minidump_region {
>>> + char name[MAX_REGION_NAME_LENGTH];
>>> + __le32 seq_num;
>>> + __le32 valid;
>>> + __le64 address;
>>> + __le64 size;
>>> +};
>>> +
>>> +/**
>>> + * struct minidump_subsystem - Subsystem's SMEM Table of content
>>> + * @status : Subsystem toc init status
>>> + * @enabled : if set to 1, this region would be copied during coredump
>>> + * @encryption_status: Encryption status for this subsystem
>>> + * @encryption_required : Decides to encrypt the subsystem regions
>>> or not
>>> + * @region_count : Number of regions added in this subsystem toc
>>> + * @regions_baseptr : regions base pointer of the subsystem
>>> + */
>>> +struct minidump_subsystem {
>>> + __le32 status;
>>> + __le32 enabled;
>>> + __le32 encryption_status;
>>> + __le32 encryption_required;
>>> + __le32 region_count;
>>> + __le64 regions_baseptr;
>>> +};
>>> +
>>> +/**
>>> + * struct minidump_global_toc - Global Table of Content
>>> + * @status : Global Minidump init status
>>> + * @md_revision : Minidump revision
>>> + * @enabled : Minidump enable status
>>> + * @subsystems : Array of subsystems toc
>>> + */
>>> +struct minidump_global_toc {
>>> + __le32 status;
>>> + __le32 md_revision;
>>> + __le32 enabled;
>>> + struct minidump_subsystem subsystems[MAX_NUM_OF_SS];
>>> +};
>>> +
>>> +#endif /* _QCOM_MINIDUMP_H_ */
Powered by blists - more mailing lists