[PATCH V0 1/1] bootconfig: Increase max size of bootconfig from 32 KB to 256 KB for DCC support

Masami Hiramatsu (Google) mhiramat at kernel.org
Thu Jan 19 15:37:28 PST 2023


On Thu, 19 Jan 2023 22:21:27 +0530
Souradeep Chowdhury <quic_schowdhu at quicinc.com> wrote:

> 
> 
> On 1/12/2023 12:31 PM, Masami Hiramatsu (Google) wrote:
> > On Tue, 10 Jan 2023 20:38:54 +0530
> > Souradeep Chowdhury <quic_schowdhu at quicinc.com> wrote:
> > 
> >>
> >>
> >> On 1/10/2023 8:16 PM, Masami Hiramatsu (Google) wrote:
> >>> On Tue, 10 Jan 2023 17:26:07 +0530
> >>> Souradeep Chowdhury <quic_schowdhu at quicinc.com> wrote:
> >>>
> >>>>
> >>>>
> >>>> On 1/9/2023 8:48 PM, Masami Hiramatsu (Google) wrote:
> >>>>> On Mon, 9 Jan 2023 20:01:05 +0530
> >>>>> Souradeep Chowdhury <quic_schowdhu at quicinc.com> wrote:
> >>>>>
> >>>>>> Increasing the memory size of bootconfig to be able to handle a max number of
> >>>>>> 8192 nodes to be fitted in memory size of 256KB.
> >>>>>
> >>>>> Sorry, but you missed the 'xbc_node::data' stores the index of the data and
> >>>>> that is uint16_t. So the XBC_DATA_MAX is fixed limitation.
> >>>>>
> >>>>> The number of nodes (XBC_NODE_MAX) can be expanded because I just decided it
> >>>>> to keep the pre-compiled array size ~8KB. Maybe expanding it to 64KB just
> >>>>> increase the size of kernel on init memory (and freed after boot).
> >>>>>
> >>>>> Could you tell me why you need such a big data for your DCC?
> >>>>>
> >>>>> Thank you,
> >>>>
> >>>> DCC is a debugging tool used in qcom which is needed to debug crashes
> >>>> that can happen at boot-time. For debugging purposes a large number of
> >>>> registers need to be configured in DCC driver which is to be fed via the
> >>>> bootconfig file. For that we need to expand the nodes as well as memory
> >>>> for using bootconfig.
> >>>
> >>> Hmm, how many registers does DCC usually use? And how big the bootconfig
> >>> file is usually? I have no idea about that.
> >>
> >> So a typical bootconfig file for consumption of DCC looks like as follows
> >>
> >> dcc_config {
> >>           link_list_0 {
> >>                   qcom-curr-link-list = 6
> >>                   qcom-link-list = R_0x1781005c_1_apb,
> >>                                    R_0x1782005c_1_apb
> >>           }
> >>           link_list_1 {
> >>                   qcom-curr-link-list = 5
> >>                   qcom-link-list = R_0x1784005c_1_apb
> >>           }
> >> }
> >>
> >> The "qcom-link-list" field can have 1000s of register , based on that
> >> max nodes is increased to 8192.
> > 
> > OK, then the number of fields can be larger than 1000. I got it.
> > 
> >>
> >>>
> >>>> Can you let us know the changes that you suggest for doing the same? Is
> >>>> it fine to just increase the XBC_NODE_MAX, do we also need to
> >>>> change the uint16_t to u32 for proper storing of index values?
> >>>
> >>> Expanding the number of max nodes is easy, just increase the XBC_NODE_MAX
> >>> (must be less than 64k). That will also increase the memory consumption
> >>> during the boot time even if the bootconfig is small. Anyway, it will be
> >>> freed after boot, so it maybe OK.
> >>
> >> So since the limit is 64K, 8192 is a valid value for max nodes.
> > 
> > Yes. Expanding the number of node is OK to me.
> > 
> >>
> >>>
> >>> But expanding the size of max bootconfig needs to change the type of
> >>> the 'data' field to uint32_t (since that will be used for building
> >>> bootconfig tool) and you also must confirm that `tools/bootconfig/bootconfig`
> >>> can be built and pass the test-bootconfig.sh.
> >>> Hmm, comparing with expanding the max number of XBC node, changing the
> >>> 'data' type to uint32_t may not have much impact on memory consumption point
> >>> of view, because it may increase only 20% of memory, but expanding the
> >>> MAX_XBC_NODE always increases more than double.
> >>>
> >>> Thus, if we can accept increasing the number of node, it should be OK to
> >>> change the 'data' type.
> >>
> >> That means from DCC point of view only increasing the max nodes is
> >> enough as increasing the data size is unrelated to increasing the max nodes?
> > 
> > Yes, if it is less than 32KB, you just need to increase the XBC_NODE_MAX.
> > But if you think the size of bootconfig, we have to change the type of
> > xbc_node::data field.
> > 
> > Can you check the DCC also need to expand the size of bootconfig limitation?
> > 
> > Thank you!
> 
> Yes, I don't think the index needs to be increased from u16 to u32 for 
> dcc. Will be sending out the next version accordingly.

OK, thanks for the confirmation!



-- 
Masami Hiramatsu (Google) <mhiramat at kernel.org>



More information about the linux-arm-kernel mailing list