Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1071719pxf; Thu, 1 Apr 2021 23:59:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwZ5rae0IWyoY/Fw3P7kyXx++g3pivyurcHgwmW4+mjpqv6h4iUAdOJYXubIydWDhS74cEz X-Received: by 2002:aa7:dc56:: with SMTP id g22mr14095610edu.219.1617346785581; Thu, 01 Apr 2021 23:59:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617346785; cv=none; d=google.com; s=arc-20160816; b=FsQNE0X4fcj4UQJ7BiWU0qF5550cMIQl8PW4EEW7vrRLb33S2XAxNjaTgqKCdgUouP F9dvg+YzVhAEYkWmkbXxDKFLchFlIJp4rLhxmEOEfSx4juGOWgTtEdsuf42lqCCTMWOU N8r3HtqyJ6bJ3YhfOyCl0/6wcXli9KQrRNJQ3o5ByG32jCOs3e1bZwzbkyx+bYG1s5R9 HfkChyOOir91Yl5mP+QTAMSbxQdPPAQFm9+NmYKs45J2pIamCcnz9EwiI157HgEtsUpx agoqAauEd0zTiLcvXcmtxaD/YIBzzebrMFcwUslhagCgYCChd+0G9zAkM45lUZrSELKR MMMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:message-id:date:to:cc:from:subject :references:in-reply-to:content-transfer-encoding:mime-version :dkim-signature; bh=XZRZT667Wid4HC57Mpu8NBkTc3AaOv656vjU18nDRHw=; b=GzGugFO7R9bLscZoHnrETk/CTfCAwHA2oP4yOd9MH+sc1Pmu3+mGvY3mtP/xx7kU0i Uj2LmReBq9ZRMqzBIHRIYR2CAbBWTT7+n8Cbqjw3i2oXtXBYbIJVBRpTCOvgdRqjMw06 s65EDgAaon3zrOl2mgGN0Vsq/ZzMIIDr7S9P1P8gDtgmHiXyPjZZMmM+TlsvQBX1sbY/ Cz4oincGq55FYDU+t4FdAA6p9r0IMYGK5nGR4CDT/igwDZC0kLlSAdGmX5EXrTStc2mI z0exRvpaBQ3+PM8itKAx87r3oAdQXPtIGc/3r6gynBDkNzCsyjGGm54vpK8kMtvuYp2u I5FA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=BUlYZClb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id eb8si6730069edb.353.2021.04.01.23.59.20; Thu, 01 Apr 2021 23:59:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=BUlYZClb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229594AbhDBG6x (ORCPT + 99 others); Fri, 2 Apr 2021 02:58:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33152 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229599AbhDBG6w (ORCPT ); Fri, 2 Apr 2021 02:58:52 -0400 Received: from mail-pf1-x42a.google.com (mail-pf1-x42a.google.com [IPv6:2607:f8b0:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 45829C061788 for ; Thu, 1 Apr 2021 23:58:51 -0700 (PDT) Received: by mail-pf1-x42a.google.com with SMTP id x126so3038545pfc.13 for ; Thu, 01 Apr 2021 23:58:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:content-transfer-encoding:in-reply-to:references :subject:from:cc:to:date:message-id:user-agent; bh=XZRZT667Wid4HC57Mpu8NBkTc3AaOv656vjU18nDRHw=; b=BUlYZClbeEGqrEVrcqqqA1M4m9HriUGNVpMdA/UGitBCrU66v6s2DsgkOvimOcBe8C a5tsbYuGCvxMgN8OFMpxDhpqxKY9Alc06P7o/8IvOjVwznvl+LjdT+1s6yCCYWVTzyaM z2dscvHDDCakjPCLNgJUqp1RCyCEMqXQDztAM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:content-transfer-encoding :in-reply-to:references:subject:from:cc:to:date:message-id :user-agent; bh=XZRZT667Wid4HC57Mpu8NBkTc3AaOv656vjU18nDRHw=; b=gcqzl4NOS9JKwNxCC0R5wcT/85onoiIfTaUZFmaqx1gy0iyJLbakECkEsvAuG5MQke kKD0DQwmApoEc7tOxK1Tt0MW4L6TkP5pv2F6YvsvsG1vSSn1fKxK+1TIg3hVokiQQmO3 lDk5WKa+Eav07pR+qxyqkXaIfhj+7KG70w4nhPX4TS6QSdQ5pPqrzwN1xy0V3IHgYEJ+ ZKeHSqo6GoKf8zb9pzYMfvU+J9ByshEsPvIqNxTddzOs+g03T2dAk0UcmwPzO0HOQVYe MCyrlG53GSyOK2wK6WHXa5KIJcimvorRK+emKs+cCrB8Cevb9RkQTEMBrLrBf6h+2L6y iE0w== X-Gm-Message-State: AOAM531+aYHdnebP5nm1S+RqGldrAcAccEet7HfUYZ5lye62FPIe1r56 WN+Bcv0M+aYNekALXBZlpcyClpDGNFJAcw== X-Received: by 2002:a62:ee09:0:b029:211:1113:2e7c with SMTP id e9-20020a62ee090000b029021111132e7cmr10839774pfi.49.1617346730567; Thu, 01 Apr 2021 23:58:50 -0700 (PDT) Received: from chromium.org ([2620:15c:202:201:450:f2a9:b3ca:879f]) by smtp.gmail.com with ESMTPSA id e3sm7242297pfm.43.2021.04.01.23.58.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Apr 2021 23:58:49 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable In-Reply-To: <6ec0ca8d-85c7-53d6-acf2-22c4ac13e805@codeaurora.org> References: <20210323224336.1311783-1-swboyd@chromium.org> <6ec0ca8d-85c7-53d6-acf2-22c4ac13e805@codeaurora.org> Subject: Re: [PATCH v2] firmware: qcom_scm: Only compile legacy calls on ARM From: Stephen Boyd Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Brian Masney , Stephan Gerhold , Jeffrey Hugo , Douglas Anderson To: Andy Gross , Bjorn Andersson , Elliot Berman Date: Thu, 01 Apr 2021 23:58:48 -0700 Message-ID: <161734672825.2260335.8472441215895199196@swboyd.mtv.corp.google.com> User-Agent: alot/0.9.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Quoting Elliot Berman (2021-04-01 18:12:14) >=20 > It might be a good idea to wrap these lines from qcom_scm_call with #if=20 > IS_ENABLED(CONFIG_ARM), and the corresponding ones in qcom_scm_call_atomi= c: >=20 > case SMC_CONVENTION_LEGACY: > return scm_legacy_call(dev, desc, res); >=20 > If something is wrong with loaded firmware and LEGACY convention is=20 > incorrectly selected, you would get a better hint about the problem:=20 > "Unknown current SCM calling convention." You would still get the hint=20 > earlier from __get_convention, but that may not be obvious to someone=20 > unfamiliar with the SCM driver. >=20 > I'll defer to your/Bjorn's preference: >=20 > Acked-by: Elliot Berman >=20 > with or without modifying qcom_scm_call{_atomic}. >=20 Maybe it would be better to catch that problem at the source and force arm64 calling convention to be safe? I'm thinking of this patch, but it could be even more fine tuned and probably the sc7180 check could be removed in the process if the rest of this email makes sense. If I understand correctly CONFIG_ARM64=3Dy should never use legacy convention (and never the 32-bit one either?), so we can figure that out pretty easily and just force it to use 64-bit if the architecture is arm64. If only the 64-bit convention is supported on arm64 then we really don't even need to call into the firmware to figure it out on arm64. We can do this convention detection stuff on arm32 (CONFIG_ARM) and always assume 64-bit convention on CONFIG_ARM64. Is that right? ---8<--- diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c index 747808a8ddf4..22187ebc1678 100644 --- a/drivers/firmware/qcom_scm.c +++ b/drivers/firmware/qcom_scm.c @@ -140,7 +140,13 @@ static enum qcom_scm_convention __get_convention(void) if (!ret && res.result[0] =3D=3D 1) goto found; =20 - probed_convention =3D SMC_CONVENTION_LEGACY; + if (IS_ENABLED(CONFIG_ARM)) { + probed_convention =3D SMC_CONVENTION_LEGACY; + } else { + probed_convention =3D SMC_CONVENTION_ARM_64; + forced =3D true; + WARN(1, "qcom_scm: Detected legacy convention on arm64; firmware is brok= en\n"); + } found: spin_lock_irqsave(&scm_query_lock, flags); if (probed_convention !=3D qcom_scm_convention) {