Re: [PATCH V4 2/3] soc: qcom: boot_stat: Add Driver Support for Boot Stats

From: Caleb Connolly
Date: Wed May 03 2023 - 18:53:43 EST




On 17/04/2023 16:08, Souradeep Chowdhury wrote:
> All of Qualcomm's proprietary Android boot-loaders capture boot time
> stats, like the time when the bootloader started execution and at what
> point the bootloader handed over control to the kernel etc. in the IMEM
> region. This information is captured in a specific format by this driver
> by mapping a structure to the IMEM memory region and then accessing the
> members of the structure to show the information within debugfs file.
> This information is useful in verifying if the existing boot KPIs have
> regressed or not. The information is shown in milliseconds, a sample
> log from sm8450(waipio) device is as follows:-
>
> /sys/kernel/debug/146aa6b0.boot_stats # cat abl_time
> 17898 ms
> /sys/kernel/debug/146aa6b0.boot_stats # cat pre_abl_time
> 2879 ms
>
> The Module Power Manager(MPM) sleep counter starts ticking at the PBL
> stage and the timestamp generated by the sleep counter is logged by
> the Qualcomm proprietary bootloader(ABL) at two points-> First when it
> starts execution which is logged here as "pre_abl_time" and the second
> when it is about to load the kernel logged as "abl_time". Documentation
> details are also added in Documentation/ABI/testing/debugfs-driver-bootstat
>
> Signed-off-by: Souradeep Chowdhury <quic_schowdhu@xxxxxxxxxxx>

Hi,

[...]
> +
> +static int boot_stats_probe(struct platform_device *pdev)
> +{
> + struct device *bootstat_dev = &pdev->dev;
> + struct bs_data *drvdata;
> +
> + drvdata = devm_kzalloc(bootstat_dev, sizeof(*drvdata), GFP_KERNEL);
> + platform_set_drvdata(pdev, drvdata);
> +
> + drvdata->dbg_dir = debugfs_create_dir(dev_name(bootstat_dev), NULL);

This might be better as just "qcom_boot_stats", rather than including
the address.

[...]
> +
> +static const struct of_device_id boot_stats_dt_match[] = {
> + { .compatible = "qcom,sm8450-bootstats" },

This driver doesn't only support sm8450, I've tested this on sdm845 and
it works just fine. Can we use a generic compatible here instead?
> + { }
> +};
> +MODULE_DEVICE_TABLE(of, boot_stats_dt_match);
> +
> +static struct platform_driver boot_stat_driver = {
> + .probe = boot_stats_probe,
> + .remove_new = boot_stats_remove,
> + .driver = {
> + .name = "qcom-boot-stats",
> + .of_match_table = boot_stats_dt_match,
> + },
> +};
> +module_platform_driver(boot_stat_driver);
> +
> +MODULE_DESCRIPTION("Qualcomm Technologies Inc. Boot Stat driver");
> +MODULE_LICENSE("GPL");
> --
> 2.7.4
>

--
Kind Regards,
Caleb (they/them)