Thread (24 messages) 24 messages, 2 authors, 2020-08-04

Re: [PATCH v4 2/2] soc: mediatek: add mtk-devapc driver

From: Neal Liu <hidden>
Date: 2020-08-04 02:08:21
Also in: linux-devicetree, linux-mediatek, lkml

On Tue, 2020-08-04 at 00:04 +0800, Chun-Kuang Hu wrote:
Hi, Neal:

Neal Liu [off-list ref] 於 2020年8月3日 週一 下午12:01寫道:
quoted
Hi Chun-Kuang,

On Sat, 2020-08-01 at 08:12 +0800, Chun-Kuang Hu wrote:
quoted
Hi, Neal:

This patch is for "mediatek,mt6779-devapc", so I think commit title
should show the SoC ID.
Okay, I'll change title to 'soc:mediatek: add mt6779 devapc driver'.
quoted
Neal Liu [off-list ref] 於 2020年7月29日 週三 下午4:29寫道:
quoted
MediaTek bus fabric provides TrustZone security support and data
protection to prevent slaves from being accessed by unexpected
masters.
The security violation is logged and sent to the processor for
further analysis or countermeasures.

Any occurrence of security violation would raise an interrupt, and
it will be handled by mtk-devapc driver. The violation
information is printed in order to find the murderer.

Signed-off-by: Neal Liu <redacted>
---
[snip]
quoted
+
+struct mtk_devapc_context {
+       struct device *dev;
+       u32 vio_idx_num;
+       void __iomem *devapc_pd_base;
+       struct mtk_devapc_vio_info *vio_info;
+       const struct mtk_devapc_pd_offset *offset;
+       const struct mtk_devapc_vio_dbgs *vio_dbgs;
+};
I think this structure should separate the constant part. The constant part is:

struct mtk_devapc_data {
    const u32 vio_idx_num;
    const struct mtk_devapc_pd_offset *offset; /* I would like to
remove struct mtk_devapc_pd_offset and directly put its member into
this structure */
    const struct mtk_devapc_vio_dbgs *vio_dbgs; /* This may disappear */
};

And the context is:

struct mtk_devapc_context {
    struct device *dev;
    void __iomem *devapc_pd_base;
    const struct mtk_devapc_data *data;
};

So when you define this, you would not waste memory to store non-constant data.

static const struct mtk_devapc_data devapc_mt6779 = {
 .vio_idx_num = 510,
 .offset = &mt6779_pd_offset,
 .vio_dbgs = &mt6779_vio_dbgs,
};
Sorry, I still don't understand why this refactoring will not waste
memory to store non-constant data. Could you explain more details?
To my understanding, we still also have to allocate memory to store dev
& devapc_pd_base.
In some situation, it is. You make the non-constant data a global
variable. I think the context data should be dynamic allocated. If
this driver is not probed, the non-constant data occupy the memory.
I got your point! In this case, we can save these 2 data structure
space, right?

struct device *dev;
void __iomem *devapc_pd_base;

I'll refactoring this data structures on next patch. Thanks !
Regards,
Chun-Kuang.
quoted
quoted
Regards,
Chun-Kuang.
quoted
+
+#endif /* __MTK_DEVAPC_H__ */
--
1.7.9.5
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help