linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] spi: Fix error code checking in spi_mem_exec_op()
@ 2024-03-13 17:10 Florian Fainelli
  2024-03-13 17:33 ` Michael Walle
  2024-03-15 17:13 ` Mark Brown
  0 siblings, 2 replies; 13+ messages in thread
From: Florian Fainelli @ 2024-03-13 17:10 UTC (permalink / raw)
  To: linux-spi
  Cc: Florian Fainelli, Mark Brown, Miquel Raynal, Mika Westerberg,
	Michael Walle, Chia-Lin Kao (AceLan),
	open list

After commit cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP with
-EOPNOTSUPP"), our SPI NOR flashes would stop probing with the following
visible in the kernel log:

[    2.196300] brcmstb_qspi f0440920.qspi: using bspi-mspi mode
[    2.210295] spi-nor: probe of spi1.0 failed with error -95

It turns out that the check in spi_mem_exec_op() was changed to check
for -ENOTSUPP (old error code) or -EOPNOTSUPP (new error code), but this
means that for drivers that were converted, the second condition is now
true, and we stop falling through like we used to. Fix the error to
check for neither error being neither -ENOTSUPP *nor* -EOPNOTSUPP.

Fixes: cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP with -EOPNOTSUPP")
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
Change-Id: I4159811f6c582c4de2143382473d2000b8755872
---
 drivers/spi/spi-mem.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/spi/spi-mem.c b/drivers/spi/spi-mem.c
index 2dc8ceb85374..10b5fa003693 100644
--- a/drivers/spi/spi-mem.c
+++ b/drivers/spi/spi-mem.c
@@ -339,7 +339,7 @@ int spi_mem_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
 		 * read path) and expect the core to use the regular SPI
 		 * interface in other cases.
 		 */
-		if (!ret || ret != -ENOTSUPP || ret != -EOPNOTSUPP)
+		if (!ret || (ret != -ENOTSUPP && ret != -EOPNOTSUPP))
 			return ret;
 	}
 
-- 
2.34.1


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

* Re: [PATCH] spi: Fix error code checking in spi_mem_exec_op()
  2024-03-13 17:10 [PATCH] spi: Fix error code checking in spi_mem_exec_op() Florian Fainelli
@ 2024-03-13 17:33 ` Michael Walle
  2024-03-13 17:40   ` Mark Brown
  2024-03-13 18:28   ` Pratyush Yadav
  2024-03-15 17:13 ` Mark Brown
  1 sibling, 2 replies; 13+ messages in thread
From: Michael Walle @ 2024-03-13 17:33 UTC (permalink / raw)
  To: Florian Fainelli, linux-spi
  Cc: Mark Brown, Miquel Raynal, Mika Westerberg, Chia-Lin Kao (AceLan),
	open list

On Wed Mar 13, 2024 at 6:10 PM CET, Florian Fainelli wrote:
> After commit cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP with
> -EOPNOTSUPP"), our SPI NOR flashes would stop probing with the following
> visible in the kernel log:
>
> [    2.196300] brcmstb_qspi f0440920.qspi: using bspi-mspi mode
> [    2.210295] spi-nor: probe of spi1.0 failed with error -95
>
> It turns out that the check in spi_mem_exec_op() was changed to check
> for -ENOTSUPP (old error code) or -EOPNOTSUPP (new error code), but this
> means that for drivers that were converted, the second condition is now
> true, and we stop falling through like we used to. Fix the error to
> check for neither error being neither -ENOTSUPP *nor* -EOPNOTSUPP.
>
> Fixes: cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP with -EOPNOTSUPP")
> Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
> Change-Id: I4159811f6c582c4de2143382473d2000b8755872

Ha, thank you!

Reviewed-by: Michael Walle <mwalle@kernel.org>

FWIW in next, there is commit
e63aef9c9121e ("spi: spi-mem: add statistics support to ->exec_op() calls")
that probably will conflict with this one.

Also, - not for this patch - but with that logic, spi_mem_exec_op()
might return EOPNOTSUPP *or* ENOTSUPP, even for drivers which might
still return ENOTSUPP, because there is one condition in
spi_mem_exec_op() which will always return EOPNOTSUPP. That is
somewhat confusing, no?

-michael

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

* Re: [PATCH] spi: Fix error code checking in spi_mem_exec_op()
  2024-03-13 17:33 ` Michael Walle
@ 2024-03-13 17:40   ` Mark Brown
  2024-03-13 17:45     ` Florian Fainelli
  2024-03-13 19:03     ` Florian Fainelli
  2024-03-13 18:28   ` Pratyush Yadav
  1 sibling, 2 replies; 13+ messages in thread
From: Mark Brown @ 2024-03-13 17:40 UTC (permalink / raw)
  To: Michael Walle
  Cc: Florian Fainelli, linux-spi, Miquel Raynal, Mika Westerberg,
	Chia-Lin Kao (AceLan),
	open list

[-- Attachment #1: Type: text/plain, Size: 272 bytes --]

On Wed, Mar 13, 2024 at 06:33:43PM +0100, Michael Walle wrote:

> FWIW in next, there is commit
> e63aef9c9121e ("spi: spi-mem: add statistics support to ->exec_op() calls")
> that probably will conflict with this one.

Indeed, this doesn't apply - please fix and resend.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* Re: [PATCH] spi: Fix error code checking in spi_mem_exec_op()
  2024-03-13 17:40   ` Mark Brown
@ 2024-03-13 17:45     ` Florian Fainelli
  2024-03-13 19:03     ` Florian Fainelli
  1 sibling, 0 replies; 13+ messages in thread
From: Florian Fainelli @ 2024-03-13 17:45 UTC (permalink / raw)
  To: Mark Brown, Michael Walle
  Cc: linux-spi, Miquel Raynal, Mika Westerberg, Chia-Lin Kao (AceLan),
	open list

[-- Attachment #1: Type: text/plain, Size: 402 bytes --]

On 3/13/24 10:40, Mark Brown wrote:
> On Wed, Mar 13, 2024 at 06:33:43PM +0100, Michael Walle wrote:
> 
>> FWIW in next, there is commit
>> e63aef9c9121e ("spi: spi-mem: add statistics support to ->exec_op() calls")
>> that probably will conflict with this one.
> 
> Indeed, this doesn't apply - please fix and resend.

Will do, and will also strip the Change-Id tag that sneaked through.
-- 
Florian


[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4221 bytes --]

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

* Re: [PATCH] spi: Fix error code checking in spi_mem_exec_op()
  2024-03-13 17:33 ` Michael Walle
  2024-03-13 17:40   ` Mark Brown
@ 2024-03-13 18:28   ` Pratyush Yadav
  2024-03-13 18:37     ` Florian Fainelli
  1 sibling, 1 reply; 13+ messages in thread
From: Pratyush Yadav @ 2024-03-13 18:28 UTC (permalink / raw)
  To: Michael Walle
  Cc: Florian Fainelli, linux-spi, Mark Brown, Miquel Raynal,
	Mika Westerberg, Chia-Lin Kao (AceLan),
	open list

On Wed, Mar 13 2024, Michael Walle wrote:

> On Wed Mar 13, 2024 at 6:10 PM CET, Florian Fainelli wrote:
>> After commit cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP with
>> -EOPNOTSUPP"), our SPI NOR flashes would stop probing with the following
>> visible in the kernel log:
>>
>> [    2.196300] brcmstb_qspi f0440920.qspi: using bspi-mspi mode
>> [    2.210295] spi-nor: probe of spi1.0 failed with error -95
>>
>> It turns out that the check in spi_mem_exec_op() was changed to check
>> for -ENOTSUPP (old error code) or -EOPNOTSUPP (new error code), but this
>> means that for drivers that were converted, the second condition is now
>> true, and we stop falling through like we used to. Fix the error to
>> check for neither error being neither -ENOTSUPP *nor* -EOPNOTSUPP.
>>
>> Fixes: cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP with -EOPNOTSUPP")
>> Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
>> Change-Id: I4159811f6c582c4de2143382473d2000b8755872
>
> Ha, thank you!
>
> Reviewed-by: Michael Walle <mwalle@kernel.org>
>
> FWIW in next, there is commit
> e63aef9c9121e ("spi: spi-mem: add statistics support to ->exec_op() calls")
> that probably will conflict with this one.
>
> Also, - not for this patch - but with that logic, spi_mem_exec_op()
> might return EOPNOTSUPP *or* ENOTSUPP, even for drivers which might
> still return ENOTSUPP, because there is one condition in
> spi_mem_exec_op() which will always return EOPNOTSUPP. That is
> somewhat confusing, no?

I agree. I suppose it would be better to do:

    if (!ret)
       return 0;

    if (ret == -ENOTSUPP || ret == -EOPNOTSUPP)
       return -EOPNOTSUPP;

-- 
Regards,
Pratyush Yadav

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

* Re: [PATCH] spi: Fix error code checking in spi_mem_exec_op()
  2024-03-13 18:28   ` Pratyush Yadav
@ 2024-03-13 18:37     ` Florian Fainelli
  2024-03-13 19:29       ` Pratyush Yadav
  0 siblings, 1 reply; 13+ messages in thread
From: Florian Fainelli @ 2024-03-13 18:37 UTC (permalink / raw)
  To: Pratyush Yadav, Michael Walle
  Cc: linux-spi, Mark Brown, Miquel Raynal, Mika Westerberg,
	Chia-Lin Kao (AceLan),
	open list

[-- Attachment #1: Type: text/plain, Size: 2018 bytes --]

On 3/13/24 11:28, Pratyush Yadav wrote:
> On Wed, Mar 13 2024, Michael Walle wrote:
> 
>> On Wed Mar 13, 2024 at 6:10 PM CET, Florian Fainelli wrote:
>>> After commit cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP with
>>> -EOPNOTSUPP"), our SPI NOR flashes would stop probing with the following
>>> visible in the kernel log:
>>>
>>> [    2.196300] brcmstb_qspi f0440920.qspi: using bspi-mspi mode
>>> [    2.210295] spi-nor: probe of spi1.0 failed with error -95
>>>
>>> It turns out that the check in spi_mem_exec_op() was changed to check
>>> for -ENOTSUPP (old error code) or -EOPNOTSUPP (new error code), but this
>>> means that for drivers that were converted, the second condition is now
>>> true, and we stop falling through like we used to. Fix the error to
>>> check for neither error being neither -ENOTSUPP *nor* -EOPNOTSUPP.
>>>
>>> Fixes: cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP with -EOPNOTSUPP")
>>> Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
>>> Change-Id: I4159811f6c582c4de2143382473d2000b8755872
>>
>> Ha, thank you!
>>
>> Reviewed-by: Michael Walle <mwalle@kernel.org>
>>
>> FWIW in next, there is commit
>> e63aef9c9121e ("spi: spi-mem: add statistics support to ->exec_op() calls")
>> that probably will conflict with this one.
>>
>> Also, - not for this patch - but with that logic, spi_mem_exec_op()
>> might return EOPNOTSUPP *or* ENOTSUPP, even for drivers which might
>> still return ENOTSUPP, because there is one condition in
>> spi_mem_exec_op() which will always return EOPNOTSUPP. That is
>> somewhat confusing, no?
> 
> I agree. I suppose it would be better to do:
> 
>      if (!ret)
>         return 0;
> 
>      if (ret == -ENOTSUPP || ret == -EOPNOTSUPP)
>         return -EOPNOTSUPP;
> 

But with e63aef9c9121e ("spi: spi-mem: add statistics support to 
->exec_op() calls") applied, would not that mean duplicating the 
statistics gathering, or were the statistics gathering only intended for 
when ret == 0?
-- 
Florian


[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4221 bytes --]

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

* Re: [PATCH] spi: Fix error code checking in spi_mem_exec_op()
  2024-03-13 17:40   ` Mark Brown
  2024-03-13 17:45     ` Florian Fainelli
@ 2024-03-13 19:03     ` Florian Fainelli
  2024-03-14 12:58       ` Mark Brown
  1 sibling, 1 reply; 13+ messages in thread
From: Florian Fainelli @ 2024-03-13 19:03 UTC (permalink / raw)
  To: Mark Brown, Michael Walle
  Cc: Florian Fainelli, linux-spi, Miquel Raynal, Mika Westerberg,
	Chia-Lin Kao (AceLan),
	open list

[-- Attachment #1: Type: text/plain, Size: 457 bytes --]

On 3/13/24 10:40, Mark Brown wrote:
> On Wed, Mar 13, 2024 at 06:33:43PM +0100, Michael Walle wrote:
> 
>> FWIW in next, there is commit
>> e63aef9c9121e ("spi: spi-mem: add statistics support to ->exec_op() calls")
>> that probably will conflict with this one.
> 
> Indeed, this doesn't apply - please fix and resend.

But this is affecting v6.8 this would have to be fast tracked as a bug 
fix, do you still want me to be based off for-next?
-- 
Florian


[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4221 bytes --]

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

* Re: [PATCH] spi: Fix error code checking in spi_mem_exec_op()
  2024-03-13 18:37     ` Florian Fainelli
@ 2024-03-13 19:29       ` Pratyush Yadav
  2024-03-13 19:34         ` Florian Fainelli
  0 siblings, 1 reply; 13+ messages in thread
From: Pratyush Yadav @ 2024-03-13 19:29 UTC (permalink / raw)
  To: Florian Fainelli
  Cc: Pratyush Yadav, Michael Walle, linux-spi, Mark Brown,
	Miquel Raynal, Mika Westerberg, Chia-Lin Kao (AceLan),
	open list

On Wed, Mar 13 2024, Florian Fainelli wrote:

> On 3/13/24 11:28, Pratyush Yadav wrote:
>> On Wed, Mar 13 2024, Michael Walle wrote:
>>
>>> On Wed Mar 13, 2024 at 6:10 PM CET, Florian Fainelli wrote:
>>>> After commit cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP with
>>>> -EOPNOTSUPP"), our SPI NOR flashes would stop probing with the following
>>>> visible in the kernel log:
>>>>
>>>> [    2.196300] brcmstb_qspi f0440920.qspi: using bspi-mspi mode
>>>> [    2.210295] spi-nor: probe of spi1.0 failed with error -95
>>>>
>>>> It turns out that the check in spi_mem_exec_op() was changed to check
>>>> for -ENOTSUPP (old error code) or -EOPNOTSUPP (new error code), but this
>>>> means that for drivers that were converted, the second condition is now
>>>> true, and we stop falling through like we used to. Fix the error to
>>>> check for neither error being neither -ENOTSUPP *nor* -EOPNOTSUPP.
>>>>
>>>> Fixes: cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP with -EOPNOTSUPP")
>>>> Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
>>>> Change-Id: I4159811f6c582c4de2143382473d2000b8755872
>>>
>>> Ha, thank you!
>>>
>>> Reviewed-by: Michael Walle <mwalle@kernel.org>
>>>
>>> FWIW in next, there is commit
>>> e63aef9c9121e ("spi: spi-mem: add statistics support to ->exec_op() calls")
>>> that probably will conflict with this one.
>>>
>>> Also, - not for this patch - but with that logic, spi_mem_exec_op()
>>> might return EOPNOTSUPP *or* ENOTSUPP, even for drivers which might
>>> still return ENOTSUPP, because there is one condition in
>>> spi_mem_exec_op() which will always return EOPNOTSUPP. That is
>>> somewhat confusing, no?
>> I agree. I suppose it would be better to do:
>>      if (!ret)
>>         return 0;
>>      if (ret == -ENOTSUPP || ret == -EOPNOTSUPP)
>>         return -EOPNOTSUPP;
>>
>
> But with e63aef9c9121e ("spi: spi-mem: add statistics support to ->exec_op()
> calls") applied, would not that mean duplicating the statistics gathering, or
> were the statistics gathering only intended for when ret == 0?

Hmm, I didn't properly understand this. Ignore my suggestion. Your patch
does the right thing.

In this case we should return ret when:

    ret is 0
    OR
    when ret is not -EOPNOTSUPP or -ENOTSUPP.

So if we get either of the two we _won't_ return and continue forward.

From looking at just this, spi_mem_exec_op() only returns -EOPNOTSUPP so
far since it has:

	if (!spi_mem_internal_supports_op(mem, op))
		return -EOPNOTSUPP;

But then looking further, it has:

	ret = spi_sync(mem->spi, &msg);

	if (ret)
		return ret;

spi_sync() can return -ENOTSUPP if it goes via __spi_async(). I suppose
we would need to fix that if we want consistent return codes. But that
isn't a problem this patch should fix. So with the merge conflict fixed
up,

Reviewed-by: Pratyush Yadav <pratyush@kernel.org>

-- 
Regards,
Pratyush Yadav

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

* Re: [PATCH] spi: Fix error code checking in spi_mem_exec_op()
  2024-03-13 19:29       ` Pratyush Yadav
@ 2024-03-13 19:34         ` Florian Fainelli
  2024-03-13 20:06           ` Florian Fainelli
  0 siblings, 1 reply; 13+ messages in thread
From: Florian Fainelli @ 2024-03-13 19:34 UTC (permalink / raw)
  To: Pratyush Yadav
  Cc: Michael Walle, linux-spi, Mark Brown, Miquel Raynal,
	Mika Westerberg, Chia-Lin Kao (AceLan),
	open list

[-- Attachment #1: Type: text/plain, Size: 3509 bytes --]

On 3/13/24 12:29, Pratyush Yadav wrote:
> On Wed, Mar 13 2024, Florian Fainelli wrote:
> 
>> On 3/13/24 11:28, Pratyush Yadav wrote:
>>> On Wed, Mar 13 2024, Michael Walle wrote:
>>>
>>>> On Wed Mar 13, 2024 at 6:10 PM CET, Florian Fainelli wrote:
>>>>> After commit cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP with
>>>>> -EOPNOTSUPP"), our SPI NOR flashes would stop probing with the following
>>>>> visible in the kernel log:
>>>>>
>>>>> [    2.196300] brcmstb_qspi f0440920.qspi: using bspi-mspi mode
>>>>> [    2.210295] spi-nor: probe of spi1.0 failed with error -95
>>>>>
>>>>> It turns out that the check in spi_mem_exec_op() was changed to check
>>>>> for -ENOTSUPP (old error code) or -EOPNOTSUPP (new error code), but this
>>>>> means that for drivers that were converted, the second condition is now
>>>>> true, and we stop falling through like we used to. Fix the error to
>>>>> check for neither error being neither -ENOTSUPP *nor* -EOPNOTSUPP.
>>>>>
>>>>> Fixes: cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP with -EOPNOTSUPP")
>>>>> Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
>>>>> Change-Id: I4159811f6c582c4de2143382473d2000b8755872
>>>>
>>>> Ha, thank you!
>>>>
>>>> Reviewed-by: Michael Walle <mwalle@kernel.org>
>>>>
>>>> FWIW in next, there is commit
>>>> e63aef9c9121e ("spi: spi-mem: add statistics support to ->exec_op() calls")
>>>> that probably will conflict with this one.
>>>>
>>>> Also, - not for this patch - but with that logic, spi_mem_exec_op()
>>>> might return EOPNOTSUPP *or* ENOTSUPP, even for drivers which might
>>>> still return ENOTSUPP, because there is one condition in
>>>> spi_mem_exec_op() which will always return EOPNOTSUPP. That is
>>>> somewhat confusing, no?
>>> I agree. I suppose it would be better to do:
>>>       if (!ret)
>>>          return 0;
>>>       if (ret == -ENOTSUPP || ret == -EOPNOTSUPP)
>>>          return -EOPNOTSUPP;
>>>
>>
>> But with e63aef9c9121e ("spi: spi-mem: add statistics support to ->exec_op()
>> calls") applied, would not that mean duplicating the statistics gathering, or
>> were the statistics gathering only intended for when ret == 0?
> 
> Hmm, I didn't properly understand this. Ignore my suggestion. Your patch
> does the right thing.

What I meant is that e63aef9c9121e will increment statistics not just 
when we return 0 from ctlr->mem_ops->exec_op, but also if we return 
-ENOTSUPP or -EOPNOTSUPP, and I am  not sure if this is exactly what is 
intended. But this is somewhat orthogonal.

> 
> In this case we should return ret when:
> 
>      ret is 0
>      OR
>      when ret is not -EOPNOTSUPP or -ENOTSUPP.
> 
> So if we get either of the two we _won't_ return and continue forward.
> 
>  From looking at just this, spi_mem_exec_op() only returns -EOPNOTSUPP so
> far since it has:
> 
> 	if (!spi_mem_internal_supports_op(mem, op))
> 		return -EOPNOTSUPP;
> 
> But then looking further, it has:
> 
> 	ret = spi_sync(mem->spi, &msg);
> 
> 	if (ret)
> 		return ret;
> 
> spi_sync() can return -ENOTSUPP if it goes via __spi_async(). I suppose
> we would need to fix that if we want consistent return codes. But that
> isn't a problem this patch should fix. So with the merge conflict fixed
> up,

Thanks, although as I replied to Mark in the other branch of the thread, 
since this is a regression affecting v6.8, would not we want it to be 
fast tracked, and not based upon for-next?

> 
> Reviewed-by: Pratyush Yadav <pratyush@kernel.org>
> 

-- 
Florian


[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4221 bytes --]

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

* Re: [PATCH] spi: Fix error code checking in spi_mem_exec_op()
  2024-03-13 19:34         ` Florian Fainelli
@ 2024-03-13 20:06           ` Florian Fainelli
  2024-03-13 21:15             ` Pratyush Yadav
  0 siblings, 1 reply; 13+ messages in thread
From: Florian Fainelli @ 2024-03-13 20:06 UTC (permalink / raw)
  To: Pratyush Yadav
  Cc: Michael Walle, linux-spi, Mark Brown, Miquel Raynal,
	Mika Westerberg, Chia-Lin Kao (AceLan),
	open list

[-- Attachment #1: Type: text/plain, Size: 2997 bytes --]

On 3/13/24 12:34, Florian Fainelli wrote:
> On 3/13/24 12:29, Pratyush Yadav wrote:
>> On Wed, Mar 13 2024, Florian Fainelli wrote:
>>
>>> On 3/13/24 11:28, Pratyush Yadav wrote:
>>>> On Wed, Mar 13 2024, Michael Walle wrote:
>>>>
>>>>> On Wed Mar 13, 2024 at 6:10 PM CET, Florian Fainelli wrote:
>>>>>> After commit cff49d58f57e ("spi: Unify error codes by replacing 
>>>>>> -ENOTSUPP with
>>>>>> -EOPNOTSUPP"), our SPI NOR flashes would stop probing with the 
>>>>>> following
>>>>>> visible in the kernel log:
>>>>>>
>>>>>> [    2.196300] brcmstb_qspi f0440920.qspi: using bspi-mspi mode
>>>>>> [    2.210295] spi-nor: probe of spi1.0 failed with error -95
>>>>>>
>>>>>> It turns out that the check in spi_mem_exec_op() was changed to check
>>>>>> for -ENOTSUPP (old error code) or -EOPNOTSUPP (new error code), 
>>>>>> but this
>>>>>> means that for drivers that were converted, the second condition 
>>>>>> is now
>>>>>> true, and we stop falling through like we used to. Fix the error to
>>>>>> check for neither error being neither -ENOTSUPP *nor* -EOPNOTSUPP.
>>>>>>
>>>>>> Fixes: cff49d58f57e ("spi: Unify error codes by replacing 
>>>>>> -ENOTSUPP with -EOPNOTSUPP")
>>>>>> Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
>>>>>> Change-Id: I4159811f6c582c4de2143382473d2000b8755872
>>>>>
>>>>> Ha, thank you!
>>>>>
>>>>> Reviewed-by: Michael Walle <mwalle@kernel.org>
>>>>>
>>>>> FWIW in next, there is commit
>>>>> e63aef9c9121e ("spi: spi-mem: add statistics support to ->exec_op() 
>>>>> calls")
>>>>> that probably will conflict with this one.
>>>>>
>>>>> Also, - not for this patch - but with that logic, spi_mem_exec_op()
>>>>> might return EOPNOTSUPP *or* ENOTSUPP, even for drivers which might
>>>>> still return ENOTSUPP, because there is one condition in
>>>>> spi_mem_exec_op() which will always return EOPNOTSUPP. That is
>>>>> somewhat confusing, no?
>>>> I agree. I suppose it would be better to do:
>>>>       if (!ret)
>>>>          return 0;
>>>>       if (ret == -ENOTSUPP || ret == -EOPNOTSUPP)
>>>>          return -EOPNOTSUPP;
>>>>
>>>
>>> But with e63aef9c9121e ("spi: spi-mem: add statistics support to 
>>> ->exec_op()
>>> calls") applied, would not that mean duplicating the statistics 
>>> gathering, or
>>> were the statistics gathering only intended for when ret == 0?
>>
>> Hmm, I didn't properly understand this. Ignore my suggestion. Your patch
>> does the right thing.
> 
> What I meant is that e63aef9c9121e will increment statistics not just 
> when we return 0 from ctlr->mem_ops->exec_op, but also if we return 
> -ENOTSUPP or -EOPNOTSUPP, and I am  not sure if this is exactly what is 
> intended. But this is somewhat orthogonal.

It looks like the handling of a non-zero return code will fall either in 
the -ETIMEDOUT category, or in the general category of an error. I 
suppose there is a question whether a operation that could not be 
supported should fall in the "error" category.
-- 
Florian


[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4221 bytes --]

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

* Re: [PATCH] spi: Fix error code checking in spi_mem_exec_op()
  2024-03-13 20:06           ` Florian Fainelli
@ 2024-03-13 21:15             ` Pratyush Yadav
  0 siblings, 0 replies; 13+ messages in thread
From: Pratyush Yadav @ 2024-03-13 21:15 UTC (permalink / raw)
  To: Florian Fainelli
  Cc: Pratyush Yadav, Michael Walle, linux-spi, Mark Brown,
	Miquel Raynal, Mika Westerberg, Chia-Lin Kao (AceLan),
	open list

On Wed, Mar 13 2024, Florian Fainelli wrote:

> On 3/13/24 12:34, Florian Fainelli wrote:
>> On 3/13/24 12:29, Pratyush Yadav wrote:
>>> On Wed, Mar 13 2024, Florian Fainelli wrote:
>>>
>>>> On 3/13/24 11:28, Pratyush Yadav wrote:
>>>>> On Wed, Mar 13 2024, Michael Walle wrote:
>>>>>
>>>>>> On Wed Mar 13, 2024 at 6:10 PM CET, Florian Fainelli wrote:
>>>>>>> After commit cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP
>>>>>>> with
>>>>>>> -EOPNOTSUPP"), our SPI NOR flashes would stop probing with the following
>>>>>>> visible in the kernel log:
>>>>>>>
>>>>>>> [    2.196300] brcmstb_qspi f0440920.qspi: using bspi-mspi mode
>>>>>>> [    2.210295] spi-nor: probe of spi1.0 failed with error -95
>>>>>>>
>>>>>>> It turns out that the check in spi_mem_exec_op() was changed to check
>>>>>>> for -ENOTSUPP (old error code) or -EOPNOTSUPP (new error code), but this
>>>>>>> means that for drivers that were converted, the second condition is now
>>>>>>> true, and we stop falling through like we used to. Fix the error to
>>>>>>> check for neither error being neither -ENOTSUPP *nor* -EOPNOTSUPP.
>>>>>>>
>>>>>>> Fixes: cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP with
>>>>>>> -EOPNOTSUPP")
>>>>>>> Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
>>>>>>> Change-Id: I4159811f6c582c4de2143382473d2000b8755872
>>>>>>
>>>>>> Ha, thank you!
>>>>>>
>>>>>> Reviewed-by: Michael Walle <mwalle@kernel.org>
>>>>>>
>>>>>> FWIW in next, there is commit
>>>>>> e63aef9c9121e ("spi: spi-mem: add statistics support to ->exec_op()
>>>>>> calls")
>>>>>> that probably will conflict with this one.
>>>>>>
>>>>>> Also, - not for this patch - but with that logic, spi_mem_exec_op()
>>>>>> might return EOPNOTSUPP *or* ENOTSUPP, even for drivers which might
>>>>>> still return ENOTSUPP, because there is one condition in
>>>>>> spi_mem_exec_op() which will always return EOPNOTSUPP. That is
>>>>>> somewhat confusing, no?
>>>>> I agree. I suppose it would be better to do:
>>>>>       if (!ret)
>>>>>          return 0;
>>>>>       if (ret == -ENOTSUPP || ret == -EOPNOTSUPP)
>>>>>          return -EOPNOTSUPP;
>>>>>
>>>>
>>>> But with e63aef9c9121e ("spi: spi-mem: add statistics support to ->exec_op()
>>>> calls") applied, would not that mean duplicating the statistics gathering,
>>>> or
>>>> were the statistics gathering only intended for when ret == 0?
>>>
>>> Hmm, I didn't properly understand this. Ignore my suggestion. Your patch
>>> does the right thing.
>> What I meant is that e63aef9c9121e will increment statistics not just when we
>> return 0 from ctlr->mem_ops->exec_op, but also if we return -ENOTSUPP or
>> -EOPNOTSUPP, and I am  not sure if this is exactly what is intended. But this
>> is somewhat orthogonal.

No it won't. This is what confused me in my earlier reply as well. If
ret is either of -ENOTSUPP or -EOPNOTSUPP, the expression

    (ret != -ENOTSUPP && ret != -EOPNOTSUPP)

becomes false (along with !ret also being false). In that case, it will
_not_ go in the if statement, and not call spi_mem_add_op_stats().
Instead, it will go via the normal SPI path and that path would do the
accounting based on error or success.

>
> It looks like the handling of a non-zero return code will fall either in the
> -ETIMEDOUT category, or in the general category of an error. I suppose there is
> a question whether a operation that could not be supported should fall in the
> "error" category.

The only questionable thing I see in spi_mem_add_op_stats() is that it
increments bytes_{rx,tx} even in case of failure. It mimics what
spi_statistics_add_transfer_stats() does but perhaps that also is wrong.

-- 
Regards,
Pratyush Yadav

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

* Re: [PATCH] spi: Fix error code checking in spi_mem_exec_op()
  2024-03-13 19:03     ` Florian Fainelli
@ 2024-03-14 12:58       ` Mark Brown
  0 siblings, 0 replies; 13+ messages in thread
From: Mark Brown @ 2024-03-14 12:58 UTC (permalink / raw)
  To: Florian Fainelli
  Cc: Michael Walle, linux-spi, Miquel Raynal, Mika Westerberg,
	Chia-Lin Kao (AceLan),
	open list

[-- Attachment #1: Type: text/plain, Size: 480 bytes --]

On Wed, Mar 13, 2024 at 12:03:25PM -0700, Florian Fainelli wrote:
> On 3/13/24 10:40, Mark Brown wrote:

> > Indeed, this doesn't apply - please fix and resend.

> But this is affecting v6.8 this would have to be fast tracked as a bug fix,
> do you still want me to be based off for-next?

We're in the merge window, nothing is getting applied to v6.8 any more
and Linus has already merged the v6.9 changes.  You need to be testing
against the -rcs to get fixes into the release.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* Re: [PATCH] spi: Fix error code checking in spi_mem_exec_op()
  2024-03-13 17:10 [PATCH] spi: Fix error code checking in spi_mem_exec_op() Florian Fainelli
  2024-03-13 17:33 ` Michael Walle
@ 2024-03-15 17:13 ` Mark Brown
  1 sibling, 0 replies; 13+ messages in thread
From: Mark Brown @ 2024-03-15 17:13 UTC (permalink / raw)
  To: linux-spi, Florian Fainelli
  Cc: Miquel Raynal, Mika Westerberg, Michael Walle,
	Chia-Lin Kao (AceLan),
	linux-kernel

On Wed, 13 Mar 2024 10:10:49 -0700, Florian Fainelli wrote:
> After commit cff49d58f57e ("spi: Unify error codes by replacing -ENOTSUPP with
> -EOPNOTSUPP"), our SPI NOR flashes would stop probing with the following
> visible in the kernel log:
> 
> [    2.196300] brcmstb_qspi f0440920.qspi: using bspi-mspi mode
> [    2.210295] spi-nor: probe of spi1.0 failed with error -95
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next

Thanks!

[1/1] spi: Fix error code checking in spi_mem_exec_op()
      commit: 29895ce18311ddd702973ddb3a6c687db663e0fb

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark


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

end of thread, other threads:[~2024-03-15 17:13 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-13 17:10 [PATCH] spi: Fix error code checking in spi_mem_exec_op() Florian Fainelli
2024-03-13 17:33 ` Michael Walle
2024-03-13 17:40   ` Mark Brown
2024-03-13 17:45     ` Florian Fainelli
2024-03-13 19:03     ` Florian Fainelli
2024-03-14 12:58       ` Mark Brown
2024-03-13 18:28   ` Pratyush Yadav
2024-03-13 18:37     ` Florian Fainelli
2024-03-13 19:29       ` Pratyush Yadav
2024-03-13 19:34         ` Florian Fainelli
2024-03-13 20:06           ` Florian Fainelli
2024-03-13 21:15             ` Pratyush Yadav
2024-03-15 17:13 ` Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).