Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp2323503rwd; Fri, 26 May 2023 05:12:22 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6/TecEtJXq7HpsrLzOxZcw0UopZy4BCkL85BNQAMhV01byXr4sn2MZfWdLNlBJrOIrtCNV X-Received: by 2002:a05:6a00:1891:b0:646:1f13:7fce with SMTP id x17-20020a056a00189100b006461f137fcemr3174443pfh.2.1685103142654; Fri, 26 May 2023 05:12:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685103142; cv=none; d=google.com; s=arc-20160816; b=Vz1JW50cOjhCSpjt7S4TidJgHuy9yGt+a+fP9+1hTqgVy3UkIitBT3eIeYmSA3KKNC 5rvrkYWF52MaNCnXQ1S3JzO00tAIKqQuz1tojBYzIrnXK1cwF8rUxGxJl0rHAEgdSha0 ybtg6inorh5Y8wbKmCntM6kBMpDRfB5hY788MJAHGFkebAUVTLAsUXyk+wJcB7xitlJJ PMbCOFxlmtlGgx0yI1dsIoMD9TND17+Z59cIPxWSkQmf7Anz86IXMbkdT1iR3M626nzm 1n9UGxZEmxZmoOXAIitSvYdmJYPtqW2rNFCTvLjuuMWvGH92w+UoyXSpfh7921WCTv/d Mygg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=N4iryfP1qlPbKAm/Yo0Jy1OHqtOanarb9gphCiltoRU=; b=apeyZPrYXdX4hv3iNyvWaBCwNeoPIc9dn8Eg+jbmVZhJ9nd0lW9yDYwKMEe3Rpy3wu ixyi33gSsT+fsBlrm8ID/tls9J7NPg45sr7nG+5TQ4opY2vzkwTSXZn5OV2jx/g0qJS+ upI4RZRI6wtRxeLdwjZ3OIQAk1MiiXVgKahk2xHjid+XPdRYjq0UmZlAYFEFVh7WrOBO X7dgIPNMWifYcMxHpFPrc7qXGC5xzGhRrsKnxYHUSgbo0PlFNAXejF51JIeaSgK87+XN jieDTunXjitegCIBgdfMHqupNWTysG4rxe11aLz+DsreV4fqjE/5TrwXBDjRg8OTp8Jl OV0w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=bhIl2swS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o27-20020a63921b000000b0053f0bfcd4fasi3118022pgd.173.2023.05.26.05.12.08; Fri, 26 May 2023 05:12:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=bhIl2swS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230016AbjEZLzi (ORCPT + 99 others); Fri, 26 May 2023 07:55:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43812 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229610AbjEZLzf (ORCPT ); Fri, 26 May 2023 07:55:35 -0400 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0CEAE95; Fri, 26 May 2023 04:55:34 -0700 (PDT) Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-3f6ef9a928fso2109155e9.3; Fri, 26 May 2023 04:55:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685102132; x=1687694132; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=N4iryfP1qlPbKAm/Yo0Jy1OHqtOanarb9gphCiltoRU=; b=bhIl2swS8lqvTF54tQxrySUcCm2jbP5UPDFvFsUlMsyLDhn1M2Ub3LnAf6p/vBcQjF YV7HWt2Lh+xrUjhuVLIcC/p7+yoCaENHJuzqIPY7H2sYimSQxJ0IGKKvp+GNTHdz3sSG cqil/hgZbj0Pn7SyQ4LJUWcMqjLsnhKlPR7sqB/sqFRKrjmyv7m0iDpFzDozNSnMErwb B4G/DuQM+NbvkL1HPj0q1H7KN+fUgOFY+oMzBqeVENUzE50f5ZSpn9KUMH9qPEAYBULT Gs35bS6XoCi11PGJyVLjg8AtvBYOVUJ0G1Y7fAcsmyZHJM6lgCkK4rGhicdyq/oWu9Wx btLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685102132; x=1687694132; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=N4iryfP1qlPbKAm/Yo0Jy1OHqtOanarb9gphCiltoRU=; b=V1v3lldSvdWbZlbgPDDXHEkNZgX6yz06DjA6LSPK2RGogq5Prq+hQDGh4LJ8examBY /y40EbdzdFBwlTNZK/ulwSd9kSwtWIhVns6fy08ztaTJsIJWuBmWv2/DlOLImg+PkcZp 3+9GNz015yosiZm0324dlpp8d72QehMWQhTYl2U+bSIbj5ChYgylLqx3aDUsBC36dxTw x5/5+v0Mx3thd6Inu2Zd79hQR44vu+Vo6hvqO2mypanP5JaTNHxc6e7r56rllYTttxiZ gkHuMGAPyCyZ88K04vD2NToT5X4eKeqi0u4kTGtK5RMhwV+2ZHT32gq+CkByXDJq9aBS B3UQ== X-Gm-Message-State: AC+VfDyArHI0LoUSDZFzgjZOoqnaYbKHAwMDXuye80euiGGOefgtSXdk z8vKashpT+YI/ZXMSSDfI4IW5x5hpBw= X-Received: by 2002:a05:600c:3653:b0:3f6:13bb:f00b with SMTP id y19-20020a05600c365300b003f613bbf00bmr1283510wmq.8.1685102132099; Fri, 26 May 2023 04:55:32 -0700 (PDT) Received: from localhost.localdomain (93-34-93-173.ip49.fastwebnet.it. [93.34.93.173]) by smtp.googlemail.com with ESMTPSA id b21-20020a05600c4e1500b003f4283f5c1bsm15922064wmq.2.2023.05.26.04.55.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 May 2023 04:55:31 -0700 (PDT) From: Christian Marangi To: Andy Gross , Bjorn Andersson , Konrad Dybcio , Dmitry Baryshkov , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Christian Marangi , Robert Marko , stable@vger.kernel.org Subject: [PATCH] soc: qcom: mdt_loader: Fix unconditional call to scm_pas_mem_setup Date: Fri, 26 May 2023 13:55:11 +0200 Message-Id: <20230526115511.3328-1-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit ebeb20a9cd3f ("soc: qcom: mdt_loader: Always invoke PAS mem_setup") dropped the relocate check and made pas_mem_setup run unconditionally. The code was later moved with commit f4e526ff7e38 ("soc: qcom: mdt_loader: Extract PAS operations") to qcom_mdt_pas_init() effectively losing track of what was actually done. The assumption that PAS mem_setup can be done anytime was effectively wrong, with no good reason and this caused regression on some SoC that use remoteproc to bringup ath11k. One example is IPQ8074 SoC that effectively broke resulting in remoteproc silently die and ath11k not working. On this SoC FW relocate is not enabled and PAS mem_setup was correctly skipped in previous kernel version resulting in correct bringup and function of remoteproc and ath11k. To fix the regression, reintroduce the relocate check in qcom_mdt_pas_init() and correctly skip PAS mem_setup where relocate is not enabled. Fixes: ebeb20a9cd3f ("soc: qcom: mdt_loader: Always invoke PAS mem_setup") Tested-by: Robert Marko Co-developed-by: Robert Marko Signed-off-by: Robert Marko Signed-off-by: Christian Marangi Cc: stable@vger.kernel.org --- drivers/soc/qcom/mdt_loader.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/soc/qcom/mdt_loader.c b/drivers/soc/qcom/mdt_loader.c index 33dd8c315eb7..46820bcdae98 100644 --- a/drivers/soc/qcom/mdt_loader.c +++ b/drivers/soc/qcom/mdt_loader.c @@ -210,6 +210,7 @@ int qcom_mdt_pas_init(struct device *dev, const struct firmware *fw, const struct elf32_hdr *ehdr; phys_addr_t min_addr = PHYS_ADDR_MAX; phys_addr_t max_addr = 0; + bool relocate = false; size_t metadata_len; void *metadata; int ret; @@ -224,6 +225,9 @@ int qcom_mdt_pas_init(struct device *dev, const struct firmware *fw, if (!mdt_phdr_valid(phdr)) continue; + if (phdr->p_flags & QCOM_MDT_RELOCATABLE) + relocate = true; + if (phdr->p_paddr < min_addr) min_addr = phdr->p_paddr; @@ -246,11 +250,13 @@ int qcom_mdt_pas_init(struct device *dev, const struct firmware *fw, goto out; } - ret = qcom_scm_pas_mem_setup(pas_id, mem_phys, max_addr - min_addr); - if (ret) { - /* Unable to set up relocation */ - dev_err(dev, "error %d setting up firmware %s\n", ret, fw_name); - goto out; + if (relocate) { + ret = qcom_scm_pas_mem_setup(pas_id, mem_phys, max_addr - min_addr); + if (ret) { + /* Unable to set up relocation */ + dev_err(dev, "error %d setting up firmware %s\n", ret, fw_name); + goto out; + } } out: -- 2.39.2