All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Fix imx6ull/6ulz boot crash
@ 2019-12-10 21:49 Leonard Crestez
  2019-12-10 21:49 ` [PATCH 1/2] ARM: imx: Fix boot crash if ocotp is not found Leonard Crestez
  2019-12-10 21:49 ` [PATCH 2/2] ARM: imx: Fix ocotp_compat for 6ull/6ulz Leonard Crestez
  0 siblings, 2 replies; 9+ messages in thread
From: Leonard Crestez @ 2019-12-10 21:49 UTC (permalink / raw)
  To: Shawn Guo, Anson Huang
  Cc: Dong Aisheng, Fabio Estevam, linux-imx, kernel, linux-arm-kernel

These chips currently crash on boot while attempting to read SOC serial
number. Fix in two stages:

* Fix ocotp lookup crash on failure
* Fix ocotp lookup failure

Leonard Crestez (2):
  ARM: imx: Fix boot crash if ocotp is not found
  ARM: imx: Fix ocotp_compat for 6ull/6ulz

 arch/arm/mach-imx/cpu.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/2] ARM: imx: Fix boot crash if ocotp is not found
  2019-12-10 21:49 [PATCH 0/2] Fix imx6ull/6ulz boot crash Leonard Crestez
@ 2019-12-10 21:49 ` Leonard Crestez
  2019-12-11 10:25   ` Christoph Niedermaier
  2019-12-12  2:44   ` Shawn Guo
  2019-12-10 21:49 ` [PATCH 2/2] ARM: imx: Fix ocotp_compat for 6ull/6ulz Leonard Crestez
  1 sibling, 2 replies; 9+ messages in thread
From: Leonard Crestez @ 2019-12-10 21:49 UTC (permalink / raw)
  To: Shawn Guo, Anson Huang
  Cc: Dong Aisheng, Fabio Estevam, linux-imx, kernel, linux-arm-kernel

The imx_soc_device_init functions tries to fetch the ocotp regmap in
order to soc serial number. If regmap fetch fails then a message is
printed but regmap_read is called anyway and the system crashes.

Failing to lookup ocotp regmap shouldn't be a fatal boot error so check
that the pointer is valid.

Only side-effect of ocotp lookup failure now is that serial number will
be reported as all-zeros which is acceptable.

Cc: stable@vger.kernel.org
Fixes: 8267ff89b713 ("ARM: imx: Add serial number support for i.MX6/7 SoCs")
Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
---
 arch/arm/mach-imx/cpu.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
index d70b6fc72b35..484bf6cdb363 100644
--- a/arch/arm/mach-imx/cpu.c
+++ b/arch/arm/mach-imx/cpu.c
@@ -87,11 +87,11 @@ struct device * __init imx_soc_device_init(void)
 {
 	struct soc_device_attribute *soc_dev_attr;
 	const char *ocotp_compat = NULL;
 	struct soc_device *soc_dev;
 	struct device_node *root;
-	struct regmap *ocotp;
+	struct regmap *ocotp = NULL;
 	const char *soc_id;
 	u64 soc_uid = 0;
 	u32 val;
 	int ret;
 
@@ -179,11 +179,13 @@ struct device * __init imx_soc_device_init(void)
 
 	if (ocotp_compat) {
 		ocotp = syscon_regmap_lookup_by_compatible(ocotp_compat);
 		if (IS_ERR(ocotp))
 			pr_err("%s: failed to find %s regmap!\n", __func__, ocotp_compat);
+	}
 
+	if (!IS_ERR_OR_NULL(ocotp)) {
 		if (__mxc_cpu_type == MXC_CPU_IMX7ULP) {
 			regmap_read(ocotp, OCOTP_ULP_UID_4, &val);
 			soc_uid = val & 0xffff;
 			regmap_read(ocotp, OCOTP_ULP_UID_3, &val);
 			soc_uid <<= 16;
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/2] ARM: imx: Fix ocotp_compat for 6ull/6ulz
  2019-12-10 21:49 [PATCH 0/2] Fix imx6ull/6ulz boot crash Leonard Crestez
  2019-12-10 21:49 ` [PATCH 1/2] ARM: imx: Fix boot crash if ocotp is not found Leonard Crestez
@ 2019-12-10 21:49 ` Leonard Crestez
  2019-12-10 21:53   ` Fabio Estevam
  2019-12-11 10:34   ` Christoph Niedermaier
  1 sibling, 2 replies; 9+ messages in thread
From: Leonard Crestez @ 2019-12-10 21:49 UTC (permalink / raw)
  To: Shawn Guo, Anson Huang
  Cc: Dong Aisheng, Fabio Estevam, linux-imx, kernel, linux-arm-kernel

The ocotp compatible string on imx6ull and imx6ulz is currently
"fsl,imx6ull-ocotp" but the imx_soc_device_init function attempts to
lookup for "fsl,imx6ul-ocotp" (single L).

Fix the constant and make cat /sys/devices/soc0/serial_number print
useful information instead of all-zeros.

Fixes: 8267ff89b713 ("ARM: imx: Add serial number support for i.MX6/7 SoCs")
Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
---
 arch/arm/mach-imx/cpu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
index 484bf6cdb363..06f8d64b65af 100644
--- a/arch/arm/mach-imx/cpu.c
+++ b/arch/arm/mach-imx/cpu.c
@@ -151,15 +151,15 @@ struct device * __init imx_soc_device_init(void)
 	case MXC_CPU_IMX6UL:
 		ocotp_compat = "fsl,imx6ul-ocotp";
 		soc_id = "i.MX6UL";
 		break;
 	case MXC_CPU_IMX6ULL:
-		ocotp_compat = "fsl,imx6ul-ocotp";
+		ocotp_compat = "fsl,imx6ull-ocotp";
 		soc_id = "i.MX6ULL";
 		break;
 	case MXC_CPU_IMX6ULZ:
-		ocotp_compat = "fsl,imx6ul-ocotp";
+		ocotp_compat = "fsl,imx6ull-ocotp";
 		soc_id = "i.MX6ULZ";
 		break;
 	case MXC_CPU_IMX6SLL:
 		ocotp_compat = "fsl,imx6sll-ocotp";
 		soc_id = "i.MX6SLL";
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] ARM: imx: Fix ocotp_compat for 6ull/6ulz
  2019-12-10 21:49 ` [PATCH 2/2] ARM: imx: Fix ocotp_compat for 6ull/6ulz Leonard Crestez
@ 2019-12-10 21:53   ` Fabio Estevam
  2019-12-10 23:00     ` Leonard Crestez
  2019-12-11 10:34   ` Christoph Niedermaier
  1 sibling, 1 reply; 9+ messages in thread
From: Fabio Estevam @ 2019-12-10 21:53 UTC (permalink / raw)
  To: Leonard Crestez, Christoph Niedermaier
  Cc: Dong Aisheng, Anson Huang, NXP Linux Team, Sascha Hauer,
	Fabio Estevam, Shawn Guo,
	moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE

On Tue, Dec 10, 2019 at 6:50 PM Leonard Crestez <leonard.crestez@nxp.com> wrote:
>
> The ocotp compatible string on imx6ull and imx6ulz is currently
> "fsl,imx6ull-ocotp" but the imx_soc_device_init function attempts to
> lookup for "fsl,imx6ul-ocotp" (single L).
>
> Fix the constant and make cat /sys/devices/soc0/serial_number print
> useful information instead of all-zeros.
>
> Fixes: 8267ff89b713 ("ARM: imx: Add serial number support for i.MX6/7 SoCs")
> Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>

This fix has already been submitted by Christoph:
http://lists.infradead.org/pipermail/linux-arm-kernel/2019-December/697761.html

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] ARM: imx: Fix ocotp_compat for 6ull/6ulz
  2019-12-10 21:53   ` Fabio Estevam
@ 2019-12-10 23:00     ` Leonard Crestez
  0 siblings, 0 replies; 9+ messages in thread
From: Leonard Crestez @ 2019-12-10 23:00 UTC (permalink / raw)
  To: Fabio Estevam, Christoph Niedermaier
  Cc: Aisheng Dong, Anson Huang, dl-linux-imx, Sascha Hauer,
	Fabio Estevam, Shawn Guo,
	moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE

On 10.12.2019 23:53, Fabio Estevam wrote:
> On Tue, Dec 10, 2019 at 6:50 PM Leonard Crestez <leonard.crestez@nxp.com> wrote:
>>
>> The ocotp compatible string on imx6ull and imx6ulz is currently
>> "fsl,imx6ull-ocotp" but the imx_soc_device_init function attempts to
>> lookup for "fsl,imx6ul-ocotp" (single L).
>>
>> Fix the constant and make cat /sys/devices/soc0/serial_number print
>> useful information instead of all-zeros.
>>
>> Fixes: 8267ff89b713 ("ARM: imx: Add serial number support for i.MX6/7 SoCs")
>> Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
> 
> This fix has already been submitted by Christoph:

Sorry, didn't notice.

My [PATCH 1/2] is still relevant though: for example the kernel could 
run against a very old DTB or maybe there's some other scenario where 
ocotp regmap lookup could fail.

--
Regards,
Leonard

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] ARM: imx: Fix boot crash if ocotp is not found
  2019-12-10 21:49 ` [PATCH 1/2] ARM: imx: Fix boot crash if ocotp is not found Leonard Crestez
@ 2019-12-11 10:25   ` Christoph Niedermaier
  2019-12-12  2:44   ` Shawn Guo
  1 sibling, 0 replies; 9+ messages in thread
From: Christoph Niedermaier @ 2019-12-11 10:25 UTC (permalink / raw)
  To: Leonard Crestez, Shawn Guo, Anson Huang
  Cc: Dong Aisheng, Fabio Estevam, linux-imx, kernel, linux-arm-kernel

From: Leonard Crestez <leonard.crestez@nxp.com>
Sent: Tuesday, December 10, 2019 10:49 PM
> The imx_soc_device_init functions tries to fetch the ocotp regmap in
> order to soc serial number. If regmap fetch fails then a message is
> printed but regmap_read is called anyway and the system crashes.
>
> Failing to lookup ocotp regmap shouldn't be a fatal boot error so check
> that the pointer is valid.
>
> Only side-effect of ocotp lookup failure now is that serial number will
> be reported as all-zeros which is acceptable.
>
> Cc: stable@vger.kernel.org
> Fixes: 8267ff89b713 ("ARM: imx: Add serial number support for i.MX6/7 SoCs")
> Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
> ---
>  arch/arm/mach-imx/cpu.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
> index d70b6fc72b35..484bf6cdb363 100644
> --- a/arch/arm/mach-imx/cpu.c
> +++ b/arch/arm/mach-imx/cpu.c
> @@ -87,11 +87,11 @@ struct device * __init imx_soc_device_init(void)
>  {
>  	struct soc_device_attribute *soc_dev_attr;
>  	const char *ocotp_compat = NULL;
>  	struct soc_device *soc_dev;
>  	struct device_node *root;
> -	struct regmap *ocotp;
> +	struct regmap *ocotp = NULL;
>  	const char *soc_id;
>  	u64 soc_uid = 0;
>  	u32 val;
>  	int ret;
>  
> @@ -179,11 +179,13 @@ struct device * __init imx_soc_device_init(void)
>  
>  	if (ocotp_compat) {
>  		ocotp = syscon_regmap_lookup_by_compatible(ocotp_compat);
>  		if (IS_ERR(ocotp))
>  			pr_err("%s: failed to find %s regmap!\n", __func__, ocotp_compat);
> +	}
>  
> +	if (!IS_ERR_OR_NULL(ocotp)) {
>  		if (__mxc_cpu_type == MXC_CPU_IMX7ULP) {
>  			regmap_read(ocotp, OCOTP_ULP_UID_4, &val);
>  			soc_uid = val & 0xffff;
>  			regmap_read(ocotp, OCOTP_ULP_UID_3, &val);
>  			soc_uid <<= 16;
> 

Tested-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>

Best regards,
Christoph

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: [PATCH 2/2] ARM: imx: Fix ocotp_compat for 6ull/6ulz
  2019-12-10 21:49 ` [PATCH 2/2] ARM: imx: Fix ocotp_compat for 6ull/6ulz Leonard Crestez
  2019-12-10 21:53   ` Fabio Estevam
@ 2019-12-11 10:34   ` Christoph Niedermaier
  2019-12-11 12:19     ` Leonard Crestez
  1 sibling, 1 reply; 9+ messages in thread
From: Christoph Niedermaier @ 2019-12-11 10:34 UTC (permalink / raw)
  To: Leonard Crestez, Shawn Guo, Anson Huang
  Cc: Dong Aisheng, Fabio Estevam, linux-imx, kernel, linux-arm-kernel

From: Leonard Crestez <leonard.crestez@nxp.com>
Sent: Tuesday, December 10, 2019 10:49 PM
> The ocotp compatible string on imx6ull and imx6ulz is currently
> "fsl,imx6ull-ocotp" but the imx_soc_device_init function attempts to
> lookup for "fsl,imx6ul-ocotp" (single L).
>
> Fix the constant and make cat /sys/devices/soc0/serial_number print
> useful information instead of all-zeros.
>
> Fixes: 8267ff89b713 ("ARM: imx: Add serial number support for i.MX6/7 SoCs")
> Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
> ---
>  arch/arm/mach-imx/cpu.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
> index 484bf6cdb363..06f8d64b65af 100644
> --- a/arch/arm/mach-imx/cpu.c
> +++ b/arch/arm/mach-imx/cpu.c
> @@ -151,15 +151,15 @@ struct device * __init imx_soc_device_init(void)
>  	case MXC_CPU_IMX6UL:
>  		ocotp_compat = "fsl,imx6ul-ocotp";
>  		soc_id = "i.MX6UL";
>  		break;
>  	case MXC_CPU_IMX6ULL:
> -		ocotp_compat = "fsl,imx6ul-ocotp";
> +		ocotp_compat = "fsl,imx6ull-ocotp";
>  		soc_id = "i.MX6ULL";
>  		break;
>  	case MXC_CPU_IMX6ULZ:
> -		ocotp_compat = "fsl,imx6ul-ocotp";
> +		ocotp_compat = "fsl,imx6ull-ocotp";
>  		soc_id = "i.MX6ULZ";
>  		break;
>  	case MXC_CPU_IMX6SLL:
>  		ocotp_compat = "fsl,imx6sll-ocotp";
>  		soc_id = "i.MX6SLL";
>

I also had this problem and therefore already submitted a patch
("ARM: imx: Correct ocotp id for serial number support of i.MX6ULL/ULZ SoCs").
I hope this isn't a problem.

Best regards,
Christoph

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/2] ARM: imx: Fix ocotp_compat for 6ull/6ulz
  2019-12-11 10:34   ` Christoph Niedermaier
@ 2019-12-11 12:19     ` Leonard Crestez
  0 siblings, 0 replies; 9+ messages in thread
From: Leonard Crestez @ 2019-12-11 12:19 UTC (permalink / raw)
  To: Christoph Niedermaier, Fabio Estevam
  Cc: Aisheng Dong, Anson Huang, dl-linux-imx, kernel, Shawn Guo,
	linux-arm-kernel

On 2019-12-11 12:34 PM, Christoph Niedermaier wrote:
> From: Leonard Crestez <leonard.crestez@nxp.com>
> Sent: Tuesday, December 10, 2019 10:49 PM
>> The ocotp compatible string on imx6ull and imx6ulz is currently
>> "fsl,imx6ull-ocotp" but the imx_soc_device_init function attempts to
>> lookup for "fsl,imx6ul-ocotp" (single L).
>>
>> Fix the constant and make cat /sys/devices/soc0/serial_number print
>> useful information instead of all-zeros.
>>
>> Fixes: 8267ff89b713 ("ARM: imx: Add serial number support for i.MX6/7 SoCs")
>> Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
>> ---
>>   arch/arm/mach-imx/cpu.c | 4 ++--
>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
>> index 484bf6cdb363..06f8d64b65af 100644
>> --- a/arch/arm/mach-imx/cpu.c
>> +++ b/arch/arm/mach-imx/cpu.c
>> @@ -151,15 +151,15 @@ struct device * __init imx_soc_device_init(void)
>>   	case MXC_CPU_IMX6UL:
>>   		ocotp_compat = "fsl,imx6ul-ocotp";
>>   		soc_id = "i.MX6UL";
>>   		break;
>>   	case MXC_CPU_IMX6ULL:
>> -		ocotp_compat = "fsl,imx6ul-ocotp";
>> +		ocotp_compat = "fsl,imx6ull-ocotp";
>>   		soc_id = "i.MX6ULL";
>>   		break;
>>   	case MXC_CPU_IMX6ULZ:
>> -		ocotp_compat = "fsl,imx6ul-ocotp";
>> +		ocotp_compat = "fsl,imx6ull-ocotp";
>>   		soc_id = "i.MX6ULZ";
>>   		break;
>>   	case MXC_CPU_IMX6SLL:
>>   		ocotp_compat = "fsl,imx6sll-ocotp";
>>   		soc_id = "i.MX6SLL";
>>
> 
> I also had this problem and therefore already submitted a patch
> ("ARM: imx: Correct ocotp id for serial number support of i.MX6ULL/ULZ SoCs").
> I hope this isn't a problem.

No problem; I should have noticed your patch.

--
Regards,
Leonard

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/2] ARM: imx: Fix boot crash if ocotp is not found
  2019-12-10 21:49 ` [PATCH 1/2] ARM: imx: Fix boot crash if ocotp is not found Leonard Crestez
  2019-12-11 10:25   ` Christoph Niedermaier
@ 2019-12-12  2:44   ` Shawn Guo
  1 sibling, 0 replies; 9+ messages in thread
From: Shawn Guo @ 2019-12-12  2:44 UTC (permalink / raw)
  To: Leonard Crestez
  Cc: Dong Aisheng, Anson Huang, linux-imx, kernel, Fabio Estevam,
	linux-arm-kernel

On Tue, Dec 10, 2019 at 11:49:28PM +0200, Leonard Crestez wrote:
> The imx_soc_device_init functions tries to fetch the ocotp regmap in
> order to soc serial number. If regmap fetch fails then a message is
> printed but regmap_read is called anyway and the system crashes.
> 
> Failing to lookup ocotp regmap shouldn't be a fatal boot error so check
> that the pointer is valid.
> 
> Only side-effect of ocotp lookup failure now is that serial number will
> be reported as all-zeros which is acceptable.
> 
> Cc: stable@vger.kernel.org
> Fixes: 8267ff89b713 ("ARM: imx: Add serial number support for i.MX6/7 SoCs")
> Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>

As this is a fix we want it in 5.5-rc, it should be generated against
5.5-rc1 rather than -next.  I rebased it and applied, thanks.

Shawn

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-12-12  2:44 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-10 21:49 [PATCH 0/2] Fix imx6ull/6ulz boot crash Leonard Crestez
2019-12-10 21:49 ` [PATCH 1/2] ARM: imx: Fix boot crash if ocotp is not found Leonard Crestez
2019-12-11 10:25   ` Christoph Niedermaier
2019-12-12  2:44   ` Shawn Guo
2019-12-10 21:49 ` [PATCH 2/2] ARM: imx: Fix ocotp_compat for 6ull/6ulz Leonard Crestez
2019-12-10 21:53   ` Fabio Estevam
2019-12-10 23:00     ` Leonard Crestez
2019-12-11 10:34   ` Christoph Niedermaier
2019-12-11 12:19     ` Leonard Crestez

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.