Skip to contentSkip to conversation

FAILED: patch "[PATCH] soc: qcom: llcc: Do not create EDAC platform device on SDM845" failed to apply to 5.10-stable tree

PATCH [email protected] 1 participant 1 message May 7, 2023

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

To reproduce the conflict and resubmit, you may use the following commands:

git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.10.y
git checkout FETCH_HEAD
git cherry-pick -x cca94f1dd6d0a4c7e5c8190672f5747e3c00ddde
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2023050745-condone-irk-8899@gregkh' --subject-prefix 'PATCH 5.10.y' HEAD^..

Possible dependencies:

cca94f1dd6d0 ("soc: qcom: llcc: Do not create EDAC platform device on SDM845") 721d3e91bfc9 ("qcom: llcc/edac: Support polling mode for ECC handling") c882c899ead3 ("soc: qcom: llcc: make irq truly optional")
c13d7d261e36 ("soc: qcom: llcc: Pass LLCC version based register offsets to EDAC driver") 5365cea199c7 ("soc: qcom: llcc: Rename reg_offset structs to reflect LLCC version") ec69dfbdc426 ("soc: qcom: llcc: Add sc8180x and sc8280xp configurations") a6e9d7ef252c ("soc: qcom: llcc: Add configuration data for SM8450 SoC") 424ad93c23e2 ("soc: qcom: llcc: Update register offsets for newer LLCC HW") bc88a42075cd ("soc: qcom: llcc: Add missing llcc configuration data") 8008e7902f28 ("soc: qcom: llcc: Update the logic for version info extraction") 6fc61c39ee1a ("soc: qcom: llcc: Add configuration data for SM8350") 1f7b2b6327ff ("soc: qcom: llcc: Add configuration data for SM6350") f6a07be63301 ("soc: qcom: llcc: Add configuration data for SC7280") c4df37fe186d ("soc: qcom: llcc-qcom: Add support for SM8250 SoC") 916c0c05521a ("soc: qcom: llcc-qcom: Extract major hardware version") ded5ed04d85e ("soc: qcom: llcc: Add configuration data for SM8150") c14e64b46944 ("soc: qcom: llcc: Support chipsets that can write to llcc") af7244c07637 ("soc: qcom: llcc: Move llcc configuration to its own function")

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From cca94f1dd6d0a4c7e5c8190672f5747e3c00ddde Mon Sep 17 00:00:00 2001
From: Manivannan Sadhasivam <[email protected]>
Date: Tue, 14 Mar 2023 13:34:43 +0530
Subject: [PATCH] soc: qcom: llcc: Do not create EDAC platform device on SDM845

The platforms based on SDM845 SoC locks the access to EDAC registers in the bootloader. So probing the EDAC driver will result in a crash. Hence, disable the creation of EDAC platform device on all SDM845 devices.

The issue has been observed on Lenovo Yoga C630 and DB845c.

While at it, also sort the members of struct qcom_llcc_config to avoid any holes in-between.

drivers/soc/qcom/llcc-qcom.c +17 -7
index 7b7c5a38bac6..a5140f19f200 100644
@@ -120,10 +120,11 @@ struct llcc_slice_config {
 
 struct qcom_llcc_config {
 	const struct llcc_slice_config *sct_data;
-	int size;
-	bool need_llcc_cfg;
 	const u32 *reg_offset;
 	const struct llcc_edac_reg_offset *edac_reg_offset;
+	int size;
+	bool need_llcc_cfg;
+	bool no_edac;
 };
 
 enum llcc_reg_offset {
@@ -452,6 +453,7 @@ static const struct qcom_llcc_config sdm845_cfg = {
 	.need_llcc_cfg	= false,
 	.reg_offset	= llcc_v1_reg_offset,
 	.edac_reg_offset = &llcc_v1_edac_reg_offset,
+	.no_edac	= true,
 };
 
 static const struct qcom_llcc_config sm6350_cfg = {
@@ -1012,11 +1014,19 @@ static int qcom_llcc_probe(struct platform_device *pdev)
 
 	drv_data->ecc_irq = platform_get_irq_optional(pdev, 0);
 
-	llcc_edac = platform_device_register_data(&pdev->dev,
-					"qcom_llcc_edac", -1, drv_data,
-					sizeof(*drv_data));
-	if (IS_ERR(llcc_edac))
-		dev_err(dev, "Failed to register llcc edac driver\n");
+	/*
+	 * On some platforms, the access to EDAC registers will be locked by
+	 * the bootloader. So probing the EDAC driver will result in a crash.
+	 * Hence, disable the creation of EDAC platform device for the
+	 * problematic platforms.
+	 */
+	if (!cfg->no_edac) {
+		llcc_edac = platform_device_register_data(&pdev->dev,
+						"qcom_llcc_edac", -1, drv_data,
+						sizeof(*drv_data));
+		if (IS_ERR(llcc_edac))
+			dev_err(dev, "Failed to register llcc edac driver\n");
+	}
 
 	return 0;
 err: