Re: [PATCH] arm64: defconfig: Enable Qualcomm remoteproc dependencies

From: Alex Elder
Date: Thu Oct 10 2019 - 09:07:16 EST


On 10/8/19 7:14 PM, Bjorn Andersson wrote:
> Enable the the power domains, reset controllers and remote block device
> memory access drivers necessary to boot the Audio, Compute and Modem
> DSPs on Qualcomm SDM845.
>
> None of the power domains are system critical, but needs to be builtin
> as the driver core prohibits probe deferal past late initcall.

I asked Bjorn privately about the need for these to be built in,
and he clarified:

> However, Rob Herring introduced a nice feature last year that means that
> if you request a power-domain from a driver that has not yet probed at
> late_initcall that request will fail instead of returning EPROBE_DEFER.
> So compiling these as modules will, based on kernel module load order,
> cause intermittent failures to probe the consumer drivers.

So that's what "the driver core prohibits probe deferral past late
initcall" means, and better explains the issue that requires some of
these to be built-in rather than be built as kernel modules.

I was able to test with and without this applied, and I find that without
the patch the modem won't boot, and it boots successfully when used.

Tested-by: Alex Elder <elder@xxxxxxxxxx>

> Signed-off-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx>
> ---
> arch/arm64/configs/defconfig | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
> index c9a867ac32d4..42f042ba1039 100644
> --- a/arch/arm64/configs/defconfig
> +++ b/arch/arm64/configs/defconfig
> @@ -732,10 +732,13 @@ CONFIG_RPMSG_QCOM_GLINK_SMEM=m
> CONFIG_RPMSG_QCOM_SMD=y
> CONFIG_RASPBERRYPI_POWER=y
> CONFIG_IMX_SCU_SOC=y
> +CONFIG_QCOM_AOSS_QMP=y
> CONFIG_QCOM_COMMAND_DB=y
> CONFIG_QCOM_GENI_SE=y
> CONFIG_QCOM_GLINK_SSR=m
> +CONFIG_QCOM_RMTFS_MEM=m
> CONFIG_QCOM_RPMH=y
> +CONFIG_QCOM_RPMHPD=y
> CONFIG_QCOM_SMEM=y
> CONFIG_QCOM_SMD_RPM=y
> CONFIG_QCOM_SMP2P=y
> @@ -780,6 +783,8 @@ CONFIG_PWM_ROCKCHIP=y
> CONFIG_PWM_SAMSUNG=y
> CONFIG_PWM_SUN4I=m
> CONFIG_PWM_TEGRA=m
> +CONFIG_RESET_QCOM_AOSS=y
> +CONFIG_RESET_QCOM_PDC=m
> CONFIG_RESET_TI_SCI=y
> CONFIG_PHY_XGENE=y
> CONFIG_PHY_SUN4I_USB=y
>