On Thu 07 Nov 12:20 PST 2019, eberman@xxxxxxxxxxxxxx wrote: > On 2019-11-07 11:18, Bjorn Andersson wrote: [..] > > > @@ -583,19 +591,17 @@ int > > > __qcom_scm_qsmmu500_wait_safe_toggle(struct device *dev, bool en) > > > > > > void __qcom_scm_init(void) > > > { > > > - u64 cmd; > > > - struct arm_smccc_res res; > > > - u32 function = SMCCC_FUNCNUM(QCOM_SCM_SVC_INFO, > > > QCOM_SCM_INFO_IS_CALL_AVAIL); > > > - > > > - /* First try a SMC64 call */ > > > - cmd = ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, ARM_SMCCC_SMC_64, > > > - ARM_SMCCC_OWNER_SIP, function); > > > - > > > - arm_smccc_smc(cmd, QCOM_SCM_ARGS(1), cmd & > > > (~BIT(ARM_SMCCC_TYPE_SHIFT)), > > > - 0, 0, 0, 0, 0, &res); > > > - > > > - if (!res.a0 && res.a1) > > > - qcom_smccc_convention = ARM_SMCCC_SMC_64; > > > - else > > > - qcom_smccc_convention = ARM_SMCCC_SMC_32; > > > + qcom_smc_convention = SMC_CONVENTION_ARM_64; > > > + if (__qcom_scm_is_call_available(NULL, QCOM_SCM_SVC_INFO, > > > + QCOM_SCM_INFO_IS_CALL_AVAIL) == 1) > > > + goto out; > > > + > > > + qcom_smc_convention = SMC_CONVENTION_ARM_32; > > > + if (__qcom_scm_is_call_available(NULL, QCOM_SCM_SVC_INFO, > > > + QCOM_SCM_INFO_IS_CALL_AVAIL) == 1) > > > + goto out; > > > + > > > + qcom_smc_convention = SMC_CONVENTION_UNKNOWN; > > > > If above two tests can be considered reliable I would suggest that you > > fail hard here instead. > > Is the suggestion here to BUG out? > We generally do not want that, but leaving it "unknown" feels like the next scm call will have similar outcome to calling BUG() here, but be harder to debug... So I would be willing to accept a BUG() here. Regards, Bjorn