From patchwork Mon May 5 15:48:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hiago De Franco X-Patchwork-Id: 887699 Received: from mail-oo1-f48.google.com (mail-oo1-f48.google.com [209.85.161.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C9848261571; Mon, 5 May 2025 15:49:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746460196; cv=none; b=UA1wjlyNp/X0WT+hvlbeX82Gww/O9wGjVxNRqbe/MN7vkVKwQjDI83vZE8QDA4kVHPVwyNdV4yPHkkY3oONJB+dFPNwS5oJ8w+6mbNI2nIjEs1U5cB7uPPtI9S/yNoOrq9uZO06RbHfCa+mjPO+UzI8hM4hUC63dtVf4tFpI7yk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746460196; c=relaxed/simple; bh=sBz0S7IFIbK4ZEXgBhD2c8M5U9d3QySQf/FYHBNgH4s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nlOz/l7e5g2l8vLIupJMjIjb6RlGWSzjg61fkRfwDkbpqCCmdhprNX4REo401qGzGVksRI6tWnJFAonFcRrHzdmvpinREKYuOeUQmri1RD515YJaUiVa1vAFZgPpe7RlzNJKH+2h2tMbMxRYUwYxkdGrXgf1Q41B5oD3Bgh3BEo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=J1VphmUL; arc=none smtp.client-ip=209.85.161.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="J1VphmUL" Received: by mail-oo1-f48.google.com with SMTP id 006d021491bc7-6065803ef35so919839eaf.1; Mon, 05 May 2025 08:49:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746460194; x=1747064994; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jrh837RVy54Gg6Y+qeX+8goZwlDp8QNNPgp6OA+KrOY=; b=J1VphmULFjrPMbsO+aBu+8QAqV3krNICPaxJ5kLnEryug2JaMi6BGBzYnva/WzJQRE 01rsmdm6KQC1N3Uy0Ikzp3T2sJL6z8nDl1KyVsVNzQ/bdo7fL255kyj1JPbFfceAwddl UxqJJbH9A1l6QWanq8bRbAxZOjTE6wSKb6vU6LjYPUamrKvfksRN5HNNYc6z+zPd/zAO bkzbK5/a4T/d0JIVpW5Sl6wHs2E8kayaf73P5tolDWPbwYO/XTcNZjoX0mtiWCaXIaQ2 CG33NE+QJaU3eziadwiUQpB3c3fdgshEE+0LUEor5lmfwbS0JZPFbvsn7z0CJgLgEZ91 hXtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746460194; x=1747064994; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jrh837RVy54Gg6Y+qeX+8goZwlDp8QNNPgp6OA+KrOY=; b=Im3z6V4vNfknnsTv6xFgRc+FAl1NocCi3S9wdRdn6hxONll42upU9CSMDiRi70aIzZ FaftY7bRIXpCsJ/eh3+76YUDyG95zca8VzaP+Vx0opSOjNNzhQllgNqLQHz8ku7ijfAq sq4nx0H6izCLkIsqMY6KAEZe+tH4df6QboTHfdHgEMCXt+tTwY5U4L+0GgCGPm+rfEWW UVWbUA717pJPVXbkyNtINOt5B5q9PHbsBPtacCi5OGXSTxKFbnHLc/+8aXyKZE+oYAyN frDrjXYwTPPUKXgJRsh5cvhevDviiHwgE++kUztqG2OGflgclWPVzHX2YI2ZI95SLBz9 1l6w== X-Forwarded-Encrypted: i=1; AJvYcCUMgL0SHS/LOF9kL9QSJLEqKjFClQcKh1WGlABw6vsQpMiBp+f7v1mFk3WuUDwOtettQxSVgyb/Jn/mDTE=@vger.kernel.org, AJvYcCXITt18JOaaoSY20hfFZ8Y73TYZEcCmIV9sL4Vc4oW2Hd9iFJt43T2HRJQleoM1HU5MHLfmhecH8os=@vger.kernel.org, AJvYcCXpHsqWlR9czOaz3TS7C3YRs4/t88tKNyB7f9xU5BYHhvSfR1NiK9GReqAFaQ9vemR1LBQr3EqJdHR+teOYtylauA==@vger.kernel.org X-Gm-Message-State: AOJu0YxK92jK4Skn4Cn5wpldcdgliONu4pWWPMpkNB7LxtdRyjwrHxeW NBYba2pSgXLRAoVEePEp/n/QStHJxrdg4T1hDeR47zYSEcu+r5W6 X-Gm-Gg: ASbGncuTzu2WwP6dcBHeQURkDR+gPvbRlUS/73Euim7+jMrV2XOt+9ynkBDabVYnUpf HPpzS3aYhekifo6n5/8Qcl9dEoFv0qFsTWnStaTW4J4dhO5gfuxZyECJ1WXR+eyRIAcqF3t6Eru s1Wh9HxNUsjgGrwZCXCcO1yZVrxkMf2zLYelZQJoTLZ+q3NgcOBtLEl7UHdZ6X9Orl6AGDHaFMP jkaNSZgPSFRV4wtWBgosnnqkbIjfc4pkphvBou2BQ2JabwkHoYo7pnmVOQ/e2qgns227KwZ+qIw ZHBQKLzkTgAOxvT8UNIJ9DVDvo1hMwk2aqbi6BTFKY5eOj0v21PtD4jqTpAT6tA= X-Google-Smtp-Source: AGHT+IHzxBFSeMM74yjOto3P7ALY8hiN3bLZVvyyH/Nc6q5335Rn3C/QA8sNLRqmd/RLKdgG+WebEA== X-Received: by 2002:a05:6820:1391:b0:607:cc1a:572f with SMTP id 006d021491bc7-6080030f9b9mr4884601eaf.6.1746460193770; Mon, 05 May 2025 08:49:53 -0700 (PDT) Received: from hiagof-nb.corp.toradex.com ([67.159.246.222]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-607e7fe84a8sm1606217eaf.36.2025.05.05.08.49.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 May 2025 08:49:52 -0700 (PDT) From: Hiago De Franco To: Mathieu Poirier , Ulf Hansson , linux-pm@vger.kernel.org, linux-remoteproc@vger.kernel.org Cc: Shawn Guo , Sascha Hauer , Bjorn Andersson , Hiago De Franco , imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peng Fan , daniel.baluta@nxp.com, iuliana.prodan@oss.nxp.com, Fabio Estevam , Pengutronix Kernel Team Subject: [PATCH 1/3] remoteproc: imx_rproc: skip clock enable when M-core is managed by the SCU Date: Mon, 5 May 2025 12:48:47 -0300 Message-Id: <20250505154849.64889-2-hiagofranco@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250505154849.64889-1-hiagofranco@gmail.com> References: <20250505154849.64889-1-hiagofranco@gmail.com> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Hiago De Franco For the i.MX8X and i.MX8 family SoCs, when the M-core is powered up before Linux starts (e.g., by the bootloader) and it is being managed by the SCU, the SCFW will not allow the kernel to enable the clock again. This currently causes an SCU fault reset when the M-core is up and running and the kernel boots, resetting the system. Therefore, add a check in the clock enable function to not execute it if the M-core is being managed by the SCU. This change affects only the i.MX8X and i.MX8 family SoCs, as this is under the IMX_RPROC_SCU_API method. Signed-off-by: Hiago De Franco Suggested-by: Peng Fan --- drivers/remoteproc/imx_rproc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index 74299af1d7f1..627e57a88db2 100644 --- a/drivers/remoteproc/imx_rproc.c +++ b/drivers/remoteproc/imx_rproc.c @@ -1029,8 +1029,8 @@ static int imx_rproc_clk_enable(struct imx_rproc *priv) struct device *dev = priv->dev; int ret; - /* Remote core is not under control of Linux */ - if (dcfg->method == IMX_RPROC_NONE) + /* Remote core is not under control of Linux or it is managed by SCU API */ + if (dcfg->method == IMX_RPROC_NONE || dcfg->method == IMX_RPROC_SCU_API) return 0; priv->clk = devm_clk_get(dev, NULL); From patchwork Mon May 5 15:48:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hiago De Franco X-Patchwork-Id: 887698 Received: from mail-oo1-f54.google.com (mail-oo1-f54.google.com [209.85.161.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5666B264FA6; Mon, 5 May 2025 15:50:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746460205; cv=none; b=FoTEEyHxZJI/RIe857mrOX4vHoit1pmLFANV1Q3+ZJaOJSz8ilL4vbRhczTXuOF9qa7S0ysMVZF4WJEnlm2T9YeiFYsVTFayf2pajt6QoDQLSh6DiyxomGljlgQ6gue52i3Ds4wmAs8lffz1bHOgtQsjwiI8s8y32wRYdHaVROA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746460205; c=relaxed/simple; bh=kYiHN+nVO56jpSLDAYAFIb8zFBmSTO/Xrj6sX4vDXQ4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=n1dDOCefOaOuCWqnjz1VMpIO2zJJfKxQlzrpcoJUcO8Bn3MryBn8HXDCj/qoaZIinmq/8cLwZs9YNiauTUglGSacmmMnlAhHm7gNzNHBua2u58cZrkqyXtC6O8otcB9YWx37x3dDPgOQSAHmLdn1f9aDfp9lv0rpcvNNgLaNT3k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=WHRWY+f5; arc=none smtp.client-ip=209.85.161.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WHRWY+f5" Received: by mail-oo1-f54.google.com with SMTP id 006d021491bc7-60634f82d1aso1259313eaf.3; Mon, 05 May 2025 08:50:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746460203; x=1747065003; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QzxoNjX13i4eG31sNq5COpLdWdwplkA/ut9vzb6w+YA=; b=WHRWY+f5hDH7Ku+c+S2VKu2igtVUB+TfhDs2F3G/5tQNlpBwfQiu0Mywjps2hAlvcT +mPgEnlhI59qRQPxmk7d/0GG7sS+AGnkHtwyKUepLuIBcBt12tYEI0vIBhcsvndH8ahE n78i8WxHZiugErvicRkXr0FbahNfQ1SANFmh+asV84U4tbf0ZEF35yietjdFmTI/H+Ep bEOytD2K/ntzPcVE0P5LNuJSBY2LKb5pFevKTwc0jFHXq4FpnQSpSVIUS2vkfvDrlwtN HfciZ4wq1MgLRenNPlDzXveD++hT7L/S/IBM6oj2376NXbl9NBIQSSwQaHKBBIsnpRd2 XQpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746460203; x=1747065003; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QzxoNjX13i4eG31sNq5COpLdWdwplkA/ut9vzb6w+YA=; b=X4pjdIestnd/XW/1ChUteGzxioX4ObpDxFdKp1KLC9vQMWWV6MYCZAhkM2ue8C4/XH AVWGarzpV6Ja8MVje62NfP5kii5+JIzX+6XZux3Pre2QgaVA7cssvRGiJb4Hd5ISN2VK 0yLy/pfFPvnBkjd8RgEwkka6ik5k4NF0p87o3By66PZJq8RTOQ3IfdksqgmdWu5ivgxb w/SZ96oE1F4s13NELE/y9yk71rMO1vJ7Y18+z/stDFzfM9tHJ3o2E+99pyfqobqK1VzL Nf/yCT8grJU9Tjn2MnDORUgvWFtmtdBboWe/MRwD3jBP1IZOXifezJR9Yafkk8Cvdkhn E66A== X-Forwarded-Encrypted: i=1; AJvYcCW5K8CrXbVxz9Ux34pw6Ymt1RNaiD7qBOO3s10Lc5myRJTkcviOY9D41UOv80FhqSgLHfWhs7wqCoipOXo=@vger.kernel.org, AJvYcCWo+HX/rzo1Gtr+IiEmLpfxkl97MU6DvTPCQ85AuREJRzhK1C+52UEYgU+qqGNMQYuj9Ns89ULxVG4=@vger.kernel.org, AJvYcCXgnKHepCYxqgKVTss4HRsqIwvaK2HMJCj2Lns+nnJja1iuow3UUg5CwDFCjohXIILXWVd7kQUp7LIcqwtdIT+pzw==@vger.kernel.org X-Gm-Message-State: AOJu0YwdDTuWNz3ClP3R+RadwlWgnZ4wU0HkCCDvBKrNfzhAL31OQSya JSAK0BhgHA1AYvUVQWjl9CaeR7KiM+INJrwfHV8IddfTbh6vMnUO X-Gm-Gg: ASbGncvrdLUhTu+7e0KHV8jX46Qc0AM83EgbQGnupQE8MJIqT7gs0u+l28GHwPGAh/b Mcw0VN6P6pGnYk/S+JiUQ/cKZdkn8OnRRCenEVgTJoqhdEqZ0l4iITcbD6tTmCrPDvklbTkXVux 2vLfUiigH5VF+36Av7ktcoWwmMT7oU1AYUfvSfIpNx6IlrwgIPgCeLFz0npvc9WNu3Zl2nEDxvX IEO9az0YTb2kikh0il+3FPYKjH8spjSyO9ttaY3GEMZP/+4RKwvVyRct/MBIivpVZZIACCMgyWg LRsjWFj/fKpxgf/xUKqoH1nY893r/fexE+q5gjF5FHYRYn7vxea4staYGzuFHsU= X-Google-Smtp-Source: AGHT+IFmXHRAfXFJOCHFZobnyaZvTqkwxSNtmF5ex7yON9mHi0l4M2n37VTw9ZY8eHmQoifZiTSQ/g== X-Received: by 2002:a4a:ec44:0:b0:607:e293:95b2 with SMTP id 006d021491bc7-607fab26b1emr5755194eaf.8.1746460203351; Mon, 05 May 2025 08:50:03 -0700 (PDT) Received: from hiagof-nb.corp.toradex.com ([67.159.246.222]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-607e7fe84a8sm1606217eaf.36.2025.05.05.08.49.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 May 2025 08:50:02 -0700 (PDT) From: Hiago De Franco To: Mathieu Poirier , Ulf Hansson , linux-pm@vger.kernel.org, linux-remoteproc@vger.kernel.org Cc: Shawn Guo , Sascha Hauer , Bjorn Andersson , Hiago De Franco , imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peng Fan , daniel.baluta@nxp.com, iuliana.prodan@oss.nxp.com, Fabio Estevam , Pengutronix Kernel Team Subject: [PATCH 3/3] remoteproc: imx_rproc: add power mode check for remote core attachment Date: Mon, 5 May 2025 12:48:49 -0300 Message-Id: <20250505154849.64889-4-hiagofranco@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250505154849.64889-1-hiagofranco@gmail.com> References: <20250505154849.64889-1-hiagofranco@gmail.com> Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Hiago De Franco When the remote core is started before Linux boots (e.g., by the bootloader), the driver currently is not able to attach because it only checks for cores running in different partitions. If the core was kicked by the bootloader, it is in the same partition as Linux and it is already up and running. This adds power mode verification through the SCU interface, enabling the driver to detect when the remote core is already running and properly attach to it. Signed-off-by: Hiago De Franco Suggested-by: Peng Fan --- drivers/remoteproc/imx_rproc.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c index 627e57a88db2..86541d9d8640 100644 --- a/drivers/remoteproc/imx_rproc.c +++ b/drivers/remoteproc/imx_rproc.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -906,6 +907,21 @@ static int imx_rproc_attach_pd(struct imx_rproc *priv) return ret < 0 ? ret : 0; } +static bool imx_rproc_is_on(struct device *dev, struct imx_sc_ipc *ipc, + u32 resource) +{ + int ret; + + ret = imx_sc_pm_get_resource_power_mode(ipc, resource); + if (ret < 0) { + dev_err(dev, "failed to get power resource %d mode, ret %d\n", + resource, ret); + return false; + } + + return ret == IMX_SC_PM_PW_MODE_ON; +} + static int imx_rproc_detect_mode(struct imx_rproc *priv) { struct regmap_config config = { .name = "imx-rproc" }; @@ -949,6 +965,13 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv) if (of_property_read_u32(dev->of_node, "fsl,entry-address", &priv->entry)) return -EINVAL; + /* + * If remote core is already running (e.g. kicked by + * the bootloader), attach to it. + */ + if (imx_rproc_is_on(dev, priv->ipc_handle, priv->rsrc_id)) + priv->rproc->state = RPROC_DETACHED; + return imx_rproc_attach_pd(priv); }